From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49015) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5Fif-0002fo-78 for qemu-devel@nongnu.org; Mon, 20 Jan 2014 09:20:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W5FiY-0006bZ-Gz for qemu-devel@nongnu.org; Mon, 20 Jan 2014 09:20:52 -0500 Received: from victor.provo.novell.com ([137.65.250.26]:38423) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W5FiY-0006bC-8x for qemu-devel@nongnu.org; Mon, 20 Jan 2014 09:20:46 -0500 From: Chunyan Liu Date: Mon, 20 Jan 2014 22:19:51 +0800 Message-Id: <1390227608-7225-9-git-send-email-cyliu@suse.com> In-Reply-To: <1390227608-7225-1-git-send-email-cyliu@suse.com> References: <1390227608-7225-1-git-send-email-cyliu@suse.com> Subject: [Qemu-devel] [v19 08/25] iscsi.c: replace QEMUOptionParamter with QemuOpts List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, stefanha@redhat.com, kwolf@redhat.com Cc: Dong Xu Wang , Chunyan Liu iscsi.c: replace QEMUOptionParamter with QemuOpts Signed-off-by: Dong Xu Wang Signed-off-by: Chunyan Liu --- block/iscsi.c | 61 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 30 insertions(+), 31 deletions(-) diff --git a/block/iscsi.c b/block/iscsi.c index c0ea0c4..d496aff 100644 --- a/block/iscsi.c +++ b/block/iscsi.c @@ -1346,7 +1346,22 @@ static int iscsi_truncate(BlockDriverState *bs, int64_t offset) return 0; } -static int iscsi_create(const char *filename, QEMUOptionParameter *options, +static int iscsi_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) +{ + IscsiLun *iscsilun = bs->opaque; + bdi->unallocated_blocks_are_zero = !!iscsilun->lbprz; + bdi->can_write_zeroes_with_unmap = iscsilun->lbprz && iscsilun->lbp.lbpws; + /* Guess the internal cluster (page) size of the iscsi target by the means + * of opt_unmap_gran. Transfer the unmap granularity only if it has a + * reasonable size for bdi->cluster_size */ + if (iscsilun->bl.opt_unmap_gran * iscsilun->block_size >= 64 * 1024 && + iscsilun->bl.opt_unmap_gran * iscsilun->block_size <= 16 * 1024 * 1024) { + bdi->cluster_size = iscsilun->bl.opt_unmap_gran * iscsilun->block_size; + } + return 0; +} + +static int iscsi_create(const char *filename, QemuOpts *opts, Error **errp) { int ret = 0; @@ -1358,13 +1373,8 @@ static int iscsi_create(const char *filename, QEMUOptionParameter *options, bs = bdrv_new(""); /* Read out options */ - while (options && options->name) { - if (!strcmp(options->name, "size")) { - total_size = options->value.n / BDRV_SECTOR_SIZE; - } - options++; - } - + total_size = + qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0) / BDRV_SECTOR_SIZE; bs->opaque = g_malloc0(sizeof(struct IscsiLun)); iscsilun = bs->opaque; @@ -1400,28 +1410,17 @@ out: return ret; } -static int iscsi_get_info(BlockDriverState *bs, BlockDriverInfo *bdi) -{ - IscsiLun *iscsilun = bs->opaque; - bdi->unallocated_blocks_are_zero = !!iscsilun->lbprz; - bdi->can_write_zeroes_with_unmap = iscsilun->lbprz && iscsilun->lbp.lbpws; - /* Guess the internal cluster (page) size of the iscsi target by the means - * of opt_unmap_gran. Transfer the unmap granularity only if it has a - * reasonable size for bdi->cluster_size */ - if (iscsilun->bl.opt_unmap_gran * iscsilun->block_size >= 64 * 1024 && - iscsilun->bl.opt_unmap_gran * iscsilun->block_size <= 16 * 1024 * 1024) { - bdi->cluster_size = iscsilun->bl.opt_unmap_gran * iscsilun->block_size; +static QemuOptsList iscsi_create_opts = { + .name = "iscsi-create-opts", + .head = QTAILQ_HEAD_INITIALIZER(iscsi_create_opts.head), + .desc = { + { + .name = BLOCK_OPT_SIZE, + .type = QEMU_OPT_SIZE, + .help = "Virtual disk size" + }, + { /* end of list */ } } - return 0; -} - -static QEMUOptionParameter iscsi_create_options[] = { - { - .name = BLOCK_OPT_SIZE, - .type = OPT_SIZE, - .help = "Virtual disk size" - }, - { NULL } }; static BlockDriver bdrv_iscsi = { @@ -1432,8 +1431,8 @@ static BlockDriver bdrv_iscsi = { .bdrv_needs_filename = true, .bdrv_file_open = iscsi_open, .bdrv_close = iscsi_close, - .bdrv_create = iscsi_create, - .create_options = iscsi_create_options, + .bdrv_create2 = iscsi_create, + .create_opts = &iscsi_create_opts, .bdrv_getlength = iscsi_getlength, .bdrv_get_info = iscsi_get_info, -- 1.6.0.2