On Fri, Mar 21, 2014 at 07:43:44AM +0100, Peter Lieven wrote: > On 21.03.2014 01:13, Leandro Dorileo wrote: > >Do the directly migration from QemuOptionParameter to QemuOpts on > >iscsi block driver. > > > >Signed-off-by: Leandro Dorileo <l...@dorileo.org> > >--- > > block/iscsi.c | 32 ++++++++++++++++---------------- > > 1 file changed, 16 insertions(+), 16 deletions(-) > > > >diff --git a/block/iscsi.c b/block/iscsi.c > >index b490e98..85252e7 100644 > >--- a/block/iscsi.c > >+++ b/block/iscsi.c > >@@ -1125,7 +1125,7 @@ static int iscsi_open(BlockDriverState *bs, QDict > >*options, int flags, > > QemuOpts *opts; > > Error *local_err = NULL; > > const char *filename; > >- int i, ret; > >+ int i, ret = 0; > > why? is there a chance that ret remains uninitialized?
Yep, my compiler tells me so: block/iscsi.c:1128:12: error: ‘ret’ may be used uninitialized in this function [-Werror=maybe-uninitialized] > > > if ((BDRV_SECTOR_SIZE % 512) != 0) { > > error_setg(errp, "iSCSI: Invalid BDRV_SECTOR_SIZE. " > >@@ -1382,8 +1382,7 @@ static int iscsi_truncate(BlockDriverState *bs, > >int64_t offset) > > return 0; > > } > >-static int iscsi_create(const char *filename, QEMUOptionParameter *options, > >- Error **errp) > >+static int iscsi_create(const char *filename, QemuOpts *options, Error > >**errp) > > { > > int ret = 0; > > int64_t total_size = 0; > >@@ -1393,12 +1392,9 @@ 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(options, BLOCK_OPT_SIZE, 0); > >+ if (total_size) { > >+ total_size = total_size / BDRV_SECTOR_SIZE; > > } > you don't need the if condition. 0 / BDRV_SECTOR_SIZE = 0. > I'm not sure, bdrv_img_create() will set BLOCK_OPT_SIZE with img_size, we have no guarantee on the value passed to bdrv_img_create(), we don't check img_size value there, having said that can't we run on division by zero here? The previous code wasn't checking it but I wonder if the problem wasn't there already. > Peter > > bs->opaque = g_malloc0(sizeof(struct IscsiLun)); > >@@ -1451,13 +1447,17 @@ static int iscsi_get_info(BlockDriverState *bs, > >BlockDriverInfo *bdi) > > return 0; > > } > >-static QEMUOptionParameter iscsi_create_options[] = { > >- { > >- .name = BLOCK_OPT_SIZE, > >- .type = OPT_SIZE, > >- .help = "Virtual disk size" > >+static QemuOptsList iscsi_create_options = { > >+ .name = "iscsi_create_options", > >+ .head = QTAILQ_HEAD_INITIALIZER(iscsi_create_options.head), > >+ .desc = { > >+ { > >+ .name = BLOCK_OPT_SIZE, > >+ .type = QEMU_OPT_SIZE, > >+ .help = "Virtual disk size" > >+ }, > >+ { NULL } > > }, > >- { NULL } > > }; > > static BlockDriver bdrv_iscsi = { > >@@ -1469,7 +1469,7 @@ static BlockDriver bdrv_iscsi = { > > .bdrv_file_open = iscsi_open, > > .bdrv_close = iscsi_close, > > .bdrv_create = iscsi_create, > >- .create_options = iscsi_create_options, > >+ .create_options = &iscsi_create_options, > > .bdrv_reopen_prepare = iscsi_reopen_prepare, > > .bdrv_getlength = iscsi_getlength, > > > -- > > Mit freundlichen Grüßen > > Peter Lieven > > ........................................................... > > KAMP Netzwerkdienste GmbH > Vestische Str. 89-91 | 46117 Oberhausen > Tel: +49 (0) 208.89 402-50 | Fax: +49 (0) 208.89 402-40 > p...@kamp.de | http://www.kamp.de > > Geschäftsführer: Heiner Lante | Michael Lante > Amtsgericht Duisburg | HRB Nr. 12154 > USt-Id-Nr.: DE 120607556 > > ........................................................... > > -- Leandro Dorileo