Samuel Thibault
2008-Jan-23 16:15 UTC
[Xen-devel] [PATCH] ioemu: cache the BlockDriverState pointer
ioemu: cache the BlockDriverState pointer This actually fixes a bug in the scsi case. Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com> diff -r c364f80eb4b5 tools/ioemu/xenstore.c --- a/tools/ioemu/xenstore.c Wed Jan 23 13:27:21 2008 +0000 +++ b/tools/ioemu/xenstore.c Wed Jan 23 15:37:19 2008 +0000 @@ -85,6 +85,7 @@ *dev = NULL, *params = NULL, *type = NULL, *drv = NULL; int i, is_scsi, is_hdN = 0; unsigned int len, num, hd_index; + BlockDriverState *bs; for(i = 0; i < MAX_DISKS + MAX_SCSI_DISKS; i++) media_filename[i] = NULL; @@ -209,19 +210,19 @@ } } - bs_table[hd_index + (is_scsi ? MAX_DISKS : 0)] = bdrv_new(dev); + bs = bs_table[hd_index + (is_scsi ? MAX_DISKS : 0)] = bdrv_new(dev); /* check if it is a cdrom */ if (type && !strcmp(type, "cdrom")) { - bdrv_set_type_hint(bs_table[hd_index], BDRV_TYPE_CDROM); + bdrv_set_type_hint(bs, BDRV_TYPE_CDROM); if (pasprintf(&buf, "%s/params", bpath) != -1) xs_watch(xsh, buf, dev); } + /* open device now if media present */ if (params[0]) { - if (bdrv_open(bs_table[hd_index + (is_scsi ? MAX_DISKS : 0)], - params, 0 /* snapshot */) < 0) + if (bdrv_open(bs, params, 0 /* snapshot */) < 0) fprintf(stderr, "qemu: could not open hard disk image ''%s''\n", params); } } _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel