rbd.c: replace QEMUOptionParameter with QemuOpts

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Dong Xu Wang <wdongxu@linux.vnet.ibm.com>
Signed-off-by: Chunyan Liu <cyliu@suse.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
Chunyan Liu 2014-06-05 17:21:04 +08:00 committed by Stefan Hajnoczi
parent cd3a4cf631
commit bd0cf596fd
1 changed files with 30 additions and 33 deletions

View File

@ -289,8 +289,7 @@ static int qemu_rbd_set_conf(rados_t cluster, const char *conf, Error **errp)
return ret; return ret;
} }
static int qemu_rbd_create(const char *filename, QEMUOptionParameter *options, static int qemu_rbd_create(const char *filename, QemuOpts *opts, Error **errp)
Error **errp)
{ {
Error *local_err = NULL; Error *local_err = NULL;
int64_t bytes = 0; int64_t bytes = 0;
@ -315,24 +314,18 @@ static int qemu_rbd_create(const char *filename, QEMUOptionParameter *options,
} }
/* Read out options */ /* Read out options */
while (options && options->name) { bytes = qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0);
if (!strcmp(options->name, BLOCK_OPT_SIZE)) { objsize = qemu_opt_get_size_del(opts, BLOCK_OPT_CLUSTER_SIZE, 0);
bytes = options->value.n; if (objsize) {
} else if (!strcmp(options->name, BLOCK_OPT_CLUSTER_SIZE)) { if ((objsize - 1) & objsize) { /* not a power of 2? */
if (options->value.n) { error_setg(errp, "obj size needs to be power of 2");
objsize = options->value.n; return -EINVAL;
if ((objsize - 1) & objsize) { /* not a power of 2? */
error_setg(errp, "obj size needs to be power of 2");
return -EINVAL;
}
if (objsize < 4096) {
error_setg(errp, "obj size too small");
return -EINVAL;
}
obj_order = ffs(objsize) - 1;
}
} }
options++; if (objsize < 4096) {
error_setg(errp, "obj size too small");
return -EINVAL;
}
obj_order = ffs(objsize) - 1;
} }
clientname = qemu_rbd_parse_clientname(conf, clientname_buf); clientname = qemu_rbd_parse_clientname(conf, clientname_buf);
@ -911,18 +904,22 @@ static BlockDriverAIOCB* qemu_rbd_aio_discard(BlockDriverState *bs,
} }
#endif #endif
static QEMUOptionParameter qemu_rbd_create_options[] = { static QemuOptsList qemu_rbd_create_opts = {
{ .name = "rbd-create-opts",
.name = BLOCK_OPT_SIZE, .head = QTAILQ_HEAD_INITIALIZER(qemu_rbd_create_opts.head),
.type = OPT_SIZE, .desc = {
.help = "Virtual disk size" {
}, .name = BLOCK_OPT_SIZE,
{ .type = QEMU_OPT_SIZE,
.name = BLOCK_OPT_CLUSTER_SIZE, .help = "Virtual disk size"
.type = OPT_SIZE, },
.help = "RBD object size" {
}, .name = BLOCK_OPT_CLUSTER_SIZE,
{NULL} .type = QEMU_OPT_SIZE,
.help = "RBD object size"
},
{ /* end of list */ }
}
}; };
static BlockDriver bdrv_rbd = { static BlockDriver bdrv_rbd = {
@ -931,10 +928,10 @@ static BlockDriver bdrv_rbd = {
.bdrv_needs_filename = true, .bdrv_needs_filename = true,
.bdrv_file_open = qemu_rbd_open, .bdrv_file_open = qemu_rbd_open,
.bdrv_close = qemu_rbd_close, .bdrv_close = qemu_rbd_close,
.bdrv_create = qemu_rbd_create, .bdrv_create2 = qemu_rbd_create,
.bdrv_has_zero_init = bdrv_has_zero_init_1, .bdrv_has_zero_init = bdrv_has_zero_init_1,
.bdrv_get_info = qemu_rbd_getinfo, .bdrv_get_info = qemu_rbd_getinfo,
.create_options = qemu_rbd_create_options, .create_opts = &qemu_rbd_create_opts,
.bdrv_getlength = qemu_rbd_getlength, .bdrv_getlength = qemu_rbd_getlength,
.bdrv_truncate = qemu_rbd_truncate, .bdrv_truncate = qemu_rbd_truncate,
.protocol_name = "rbd", .protocol_name = "rbd",