Do the directly migration from QemuOptionParameter to QemuOpts on sheepdog block driver.
Signed-off-by: Leandro Dorileo <l...@dorileo.org> --- block/sheepdog.c | 104 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/block/sheepdog.c b/block/sheepdog.c index f7bd024..4f4945f 100644 --- a/block/sheepdog.c +++ b/block/sheepdog.c @@ -1626,17 +1626,18 @@ static int parse_redundancy(BDRVSheepdogState *s, const char *opt) return 0; } -static int sd_create(const char *filename, QEMUOptionParameter *options, - Error **errp) +static int sd_create(const char *filename, QemuOpts *options, Error **errp) { int ret = 0; uint32_t vid = 0; - char *backing_file = NULL; + const char *backing_file = NULL; BDRVSheepdogState *s; char tag[SD_MAX_VDI_TAG_LEN]; uint32_t snapid; bool prealloc = false; Error *local_err = NULL; + const char *prealloc_opt; + char *redundancy_opt; s = g_malloc0(sizeof(BDRVSheepdogState)); @@ -1650,31 +1651,28 @@ static int sd_create(const char *filename, QEMUOptionParameter *options, goto out; } - while (options && options->name) { - if (!strcmp(options->name, BLOCK_OPT_SIZE)) { - s->inode.vdi_size = options->value.n; - } else if (!strcmp(options->name, BLOCK_OPT_BACKING_FILE)) { - backing_file = options->value.s; - } else if (!strcmp(options->name, BLOCK_OPT_PREALLOC)) { - if (!options->value.s || !strcmp(options->value.s, "off")) { - prealloc = false; - } else if (!strcmp(options->value.s, "full")) { - prealloc = true; - } else { - error_report("Invalid preallocation mode: '%s'", - options->value.s); - ret = -EINVAL; - goto out; - } - } else if (!strcmp(options->name, BLOCK_OPT_REDUNDANCY)) { - if (options->value.s) { - ret = parse_redundancy(s, options->value.s); - if (ret < 0) { - goto out; - } - } + s->inode.vdi_size = qemu_opt_get_size(options, BLOCK_OPT_SIZE, 0); + backing_file = qemu_opt_get(options, BLOCK_OPT_BACKING_FILE); + + prealloc_opt = qemu_opt_get(options, BLOCK_OPT_PREALLOC); + if (prealloc_opt) { + if (!strcmp(prealloc_opt, "off")) { + prealloc = false; + } else if (!strcmp(prealloc_opt, "full")) { + prealloc = true; + } else { + error_report("Invalid preallocation mode: '%s'", prealloc_opt); + ret = -EINVAL; + goto out; + } + } + + redundancy_opt = (char *)qemu_opt_get(options, BLOCK_OPT_REDUNDANCY); + if (redundancy_opt) { + ret = parse_redundancy(s, redundancy_opt); + if (ret < 0) { + goto out; } - options++; } if (s->inode.vdi_size > SD_MAX_VDI_SIZE) { @@ -2490,28 +2488,32 @@ static int64_t sd_get_allocated_file_size(BlockDriverState *bs) return size; } -static QEMUOptionParameter sd_create_options[] = { - { - .name = BLOCK_OPT_SIZE, - .type = OPT_SIZE, - .help = "Virtual disk size" - }, - { - .name = BLOCK_OPT_BACKING_FILE, - .type = OPT_STRING, - .help = "File name of a base image" - }, - { - .name = BLOCK_OPT_PREALLOC, - .type = OPT_STRING, - .help = "Preallocation mode (allowed values: off, full)" - }, - { - .name = BLOCK_OPT_REDUNDANCY, - .type = OPT_STRING, - .help = "Redundancy of the image" +static QemuOptsList sd_create_options = { + .name = "sd_create_options", + .head = QTAILQ_HEAD_INITIALIZER(sd_create_options.head), + .desc = { + { + .name = BLOCK_OPT_SIZE, + .type = QEMU_OPT_SIZE, + .help = "Virtual disk size" + }, + { + .name = BLOCK_OPT_BACKING_FILE, + .type = QEMU_OPT_STRING, + .help = "File name of a base image" + }, + { + .name = BLOCK_OPT_PREALLOC, + .type = QEMU_OPT_STRING, + .help = "Preallocation mode (allowed values: off, full)" + }, + { + .name = BLOCK_OPT_REDUNDANCY, + .type = QEMU_OPT_STRING, + .help = "Redundancy of the image" + }, + { NULL } }, - { NULL } }; static BlockDriver bdrv_sheepdog = { @@ -2541,7 +2543,7 @@ static BlockDriver bdrv_sheepdog = { .bdrv_save_vmstate = sd_save_vmstate, .bdrv_load_vmstate = sd_load_vmstate, - .create_options = sd_create_options, + .create_options = &sd_create_options, }; static BlockDriver bdrv_sheepdog_tcp = { @@ -2571,7 +2573,7 @@ static BlockDriver bdrv_sheepdog_tcp = { .bdrv_save_vmstate = sd_save_vmstate, .bdrv_load_vmstate = sd_load_vmstate, - .create_options = sd_create_options, + .create_options = &sd_create_options, }; static BlockDriver bdrv_sheepdog_unix = { @@ -2601,7 +2603,7 @@ static BlockDriver bdrv_sheepdog_unix = { .bdrv_save_vmstate = sd_save_vmstate, .bdrv_load_vmstate = sd_load_vmstate, - .create_options = sd_create_options, + .create_options = &sd_create_options, }; static void bdrv_sheepdog_init(void) -- 1.9.0