blockdev: Fix regression in -drive if=scsi,index=N
authorMarkus Armbruster <armbru@redhat.com>
Fri, 28 Jan 2011 10:21:40 +0000 (11:21 +0100)
committerKevin Wolf <kwolf@redhat.com>
Mon, 31 Jan 2011 09:42:42 +0000 (10:42 +0100)
commit27d6bf40edc346a61ade6d4c5d4f27f6b40acc81
tree607105473a590a78369b14863e80dabcea6b9533
parent1960966d1b57628f730b66fe33cd2005846092e0
blockdev: Fix regression in -drive if=scsi,index=N

Before commit 622b520f, index=12 meant bus=1,unit=5.

Since the commit, it means bus=0,unit=12.  The drive is created, but
not the guest device.  That's because the controllers we use with
if=scsi drives (lsi53c895a and esp) support only 7 units, and
scsi_bus_legacy_handle_cmdline() ignores drives with unit numbers
exceeding that limit.

Changing the mapping of index to bus, unit is a regression.  Breaking
-drive invocations that used to work just makes it worse.

Revert the part of commit 622b520f that causes this, and clean up
some.

Note that the fix only affects if=scsi.  You can still put more than 7
units on a SCSI bus with -device & friends.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
blockdev.c
blockdev.h
hw/ide.h
hw/ide/ahci.c
hw/qdev.c
hw/scsi.h
savevm.c