qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: Commit 622b520f changed -drive if=scsi, index=N, intent


From: Kevin Wolf
Subject: [Qemu-devel] Re: Commit 622b520f changed -drive if=scsi, index=N, intentional?
Date: Thu, 27 Jan 2011 13:21:22 +0100
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]