iscsi.c: replace QEMUOptionParamter with QemuOpts Signed-off-by: Dong Xu Wang <wdon...@linux.vnet.ibm.com> Signed-off-by: Chunyan Liu <cy...@suse.com> --- 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