Previous versions of these patches have been posted already, but they were lost. Sorry for realizing this quite late.
VIRTIO_BLK_F_SCSI is supposed to mean whether the host can *parse* SCSI requests, not *execute* them. So it should always be enabled, and the scsi=on/off property tied to a separate configuration variable that is not guest visible. With this change, Linux has problems understanding failed requests, so patch 1 works around the Linux bugs. Important: because we need to do this to fix a migration compatibility problem when QEMU might be invoked with an old machine type, we must do this unconditionally. This more or less assumes that no one ever invoked QEMU with scsi=off, as it breaks migration from new QEMU, scsi=off to old QEMU, also scsi=off. However new->old is not supported upstream. S390 compile-tested only. Paolo Bonzini (4): virtio-blk: report non-zero status when failing SG_IO requests virtio-blk: blockdev_mark_auto_del is transport-independent virtio-blk: define VirtIOBlkConf virtio-blk: always enable VIRTIO_BLK_F_SCSI hw/s390-virtio-bus.c | 10 ++++--- hw/s390-virtio-bus.h | 4 +-- hw/virtio-blk.c | 80 ++++++++++++++++++++++++-------------------------- hw/virtio-blk.h | 14 +++++---- hw/virtio-pci.c | 11 +++---- hw/virtio-pci.h | 4 +-- hw/virtio.h | 4 +-- 7 files changed, 64 insertions(+), 63 deletions(-) -- 1.7.10.1