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