On Fri, Mar 21, 2014 at 01:31:42PM +0000, Leandro Dorileo wrote: > 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.
Ok, qemu-img does guarantee the img_size value... > > > > 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 -- Leandro Dorileo