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)
commitca7c8e98be596aa951648065b1a70aedb96d5da8
tree607105473a590a78369b14863e80dabcea6b9533
parent4eaa76258108624b8da147a69e76183b65643aa2
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