From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=50113 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PiQpO-0000sS-K3 for qemu-devel@nongnu.org; Thu, 27 Jan 2011 07:19:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PiQpN-0005mH-DV for qemu-devel@nongnu.org; Thu, 27 Jan 2011 07:19:54 -0500 Received: from mx1.redhat.com ([209.132.183.28]:35572) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PiQpN-0005m2-6Z for qemu-devel@nongnu.org; Thu, 27 Jan 2011 07:19:53 -0500 Message-ID: <4D416342.6080001@redhat.com> Date: Thu, 27 Jan 2011 13:21:22 +0100 From: Kevin Wolf MIME-Version: 1.0 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: Commit 622b520f changed -drive if=scsi, index=N, intentional? List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: Christoph Hellwig , qemu-devel@nongnu.org, Hannes Reinecke Am 27.01.2011 13:10, schrieb Markus Armbruster: > Consider -drive if=scsi,index=12,... > > Before the commit, index=12 meant bus=1,unit=5. Example: > > [...] > > Two scsi-buses, and scsi1-cd5 with scsi-id 5 is on the second one, > i.e. bus=1, unit=5. > > After the commit, it means bus=0,unit=12. The drive is created, but not > the guest device. That's because lsi53c895a supports only 7 units > (LSI_MAX_DEVS), and scsi_bus_legacy_handle_cmdline() ignores drives with > unit numbers exceeding that limit. Example: > > [...] > > One scsi-bus, and scsi1-cd5 nowhere to be found. > > I'd call this a regression. > > What now? That's a really good question. We could do something like this: --- a/blockdev.c +++ b/blockdev.c @@ -192,7 +192,7 @@ DriveInfo *drive_init(QemuOpts *opts, int default_to_scsi) max_devs = MAX_IDE_DEVS; } else if (!strcmp(buf, "scsi")) { type = IF_SCSI; - max_devs = MAX_SCSI_DEVS; + max_devs = 7; } else if (!strcmp(buf, "floppy")) { type = IF_FLOPPY; max_devs = 0; That's very obviously not much more than a hack, but I don't think blockdev.c can get the real number easily (please prove me wrong). With this hack, we would get the old behaviour for -drive (which doesn't use any other controller anyway) and you can still use -device to attach more devices to a non-lsi bus. Kevin