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,12 +314,9 @@ 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 (options->value.n) {
objsize = options->value.n;
if ((objsize - 1) & objsize) { /* not a power of 2? */ if ((objsize - 1) & objsize) { /* not a power of 2? */
error_setg(errp, "obj size needs to be power of 2"); error_setg(errp, "obj size needs to be power of 2");
return -EINVAL; return -EINVAL;
@ -331,9 +327,6 @@ static int qemu_rbd_create(const char *filename, QEMUOptionParameter *options,
} }
obj_order = ffs(objsize) - 1; obj_order = ffs(objsize) - 1;
} }
}
options++;
}
clientname = qemu_rbd_parse_clientname(conf, clientname_buf); clientname = qemu_rbd_parse_clientname(conf, clientname_buf);
if (rados_create(&cluster, clientname) < 0) { if (rados_create(&cluster, clientname) < 0) {
@ -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",
.head = QTAILQ_HEAD_INITIALIZER(qemu_rbd_create_opts.head),
.desc = {
{ {
.name = BLOCK_OPT_SIZE, .name = BLOCK_OPT_SIZE,
.type = OPT_SIZE, .type = QEMU_OPT_SIZE,
.help = "Virtual disk size" .help = "Virtual disk size"
}, },
{ {
.name = BLOCK_OPT_CLUSTER_SIZE, .name = BLOCK_OPT_CLUSTER_SIZE,
.type = OPT_SIZE, .type = QEMU_OPT_SIZE,
.help = "RBD object size" .help = "RBD object size"
}, },
{NULL} { /* 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",