From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:37828) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WQn6y-000263-Tg for qemu-devel@nongnu.org; Thu, 20 Mar 2014 20:15:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WQn6s-0007jI-5N for qemu-devel@nongnu.org; Thu, 20 Mar 2014 20:15:00 -0400 Received: from mail-yk0-f171.google.com ([209.85.160.171]:60825) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WQn6r-0007jD-Oz for qemu-devel@nongnu.org; Thu, 20 Mar 2014 20:14:53 -0400 Received: by mail-yk0-f171.google.com with SMTP id q9so4379110ykb.2 for ; Thu, 20 Mar 2014 17:14:53 -0700 (PDT) From: Leandro Dorileo Date: Thu, 20 Mar 2014 21:13:25 -0300 Message-Id: <1395360813-2833-19-git-send-email-l@dorileo.org> In-Reply-To: <1395360813-2833-1-git-send-email-l@dorileo.org> References: <1395360813-2833-1-git-send-email-l@dorileo.org> Subject: [Qemu-devel] [PATCH 18/26] sheepdog: migrate sheepdog driver QemuOptionParameter usage List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Kevin Wolf , Fam Zheng , Stefan Hajnoczi , Liu Yuan , Jeff Cody , Markus Armbruster , Peter Lieven , "Richard W.M. Jones" , Luiz Capitulino , Leandro Dorileo , Ronnie Sahlberg , Josh Durgin , Anthony Liguori , Paolo Bonzini , Stefan Weil , Max Reitz , MORITA Kazutaka , Benoit Canet Do the directly migration from QemuOptionParameter to QemuOpts on sheepdog block driver. Signed-off-by: Leandro Dorileo --- 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