Hi all, here's now an updated version to enable ALUA and simplified active/passive multipath support for qemu.
This patchset relies on having _two_ block devices configured, and two SCSI disks pointing to those block devices with the _same_ 'wwn' property and unique 'port_group' properties. I know, this is a bit of a nasty hack, but I hope to add proper multipath support (with several SCSI devices pointing / linking to the same block device) in the near future. It also implements a 'alua_policy', which allows for simulating an 'active/passive' multipath setup. And for testing I've implemented a 'block_disconnect' HMP command, which simulates a link failure for the attached devices. I wouldn't object if someone declares this a gross hack, but with it I can finally simulate real-life multipath failover and do some functional multipath-tools testing withouth having to recurse on using real hardware. As usual, comments and reviews are welcome. Hannes Reinecke (8): scsi-disk: Add 'port_group' property scsi-disk: Add 'alua_state' property scsi-disk: Implement 'REPORT TARGET PORT GROUPS' scsi-disk: Implement 'SET TARGET PORT GROUPS' scsi-disk: implement ALUA policy scsi-disk: Allow READ CAPACITY in standby scsi-disk: Implement 'alua_preferred' option block: Implement 'block_disconnect' HMP command block.c | 5 + block/block-backend.c | 8 + blockdev.c | 18 ++ hmp-commands.hx | 14 + hmp.c | 10 + hmp.h | 1 + hw/scsi/megasas.c | 4 + hw/scsi/scsi-bus.c | 20 ++ hw/scsi/scsi-disk.c | 654 +++++++++++++++++++++++++++++++++++++++++ hw/scsi/virtio-scsi.c | 5 + include/block/block.h | 1 + include/block/block_int.h | 1 + include/block/scsi.h | 18 ++ include/hw/scsi/scsi.h | 8 + include/sysemu/block-backend.h | 1 + qapi/block-core.json | 21 ++ qmp-commands.hx | 26 ++ 17 files changed, 815 insertions(+) -- 1.8.4.5