On Wed, Jul 22, 2015 at 05:52:29PM +0800, Jason Wang wrote: > > > On 07/22/2015 05:25 PM, Michael S. Tsirkin wrote: > > On Wed, Jul 22, 2015 at 01:59:51PM +0800, Jason Wang wrote: > >> SCSI passthrough was no longer supported in virtio 1.0, so this patch > >> fail the get_features() when both 1.0 and scsi is set. And also only > >> advertise VIRTIO_BLK_F_SCSI for legacy virtio-blk device. > >> > >> Signed-off-by: Jason Wang <jasow...@redhat.com> > >> --- > >> hw/block/virtio-blk.c | 9 ++++++++- > >> 1 file changed, 8 insertions(+), 1 deletion(-) > >> > >> diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c > >> index 4c27974..4716c3e 100644 > >> --- a/hw/block/virtio-blk.c > >> +++ b/hw/block/virtio-blk.c > >> @@ -731,7 +731,14 @@ static uint64_t virtio_blk_get_features(VirtIODevice > >> *vdev, uint64_t features, > >> virtio_add_feature(&features, VIRTIO_BLK_F_GEOMETRY); > >> virtio_add_feature(&features, VIRTIO_BLK_F_TOPOLOGY); > >> virtio_add_feature(&features, VIRTIO_BLK_F_BLK_SIZE); > >> - virtio_add_feature(&features, VIRTIO_BLK_F_SCSI); > >> + if (__virtio_has_feature(features, VIRTIO_F_VERSION_1)) { > >> + if (s->conf.scsi) { > >> + error_setg(errp, "Virtio 1.0 does not support scsi > >> passthrough!"); > > A bit better: > > "Virtio modern does not support scsi passthrough - please set > > disable-modern=on". > > > > It might be even better if we could specify the device that failed the > > initialization, but I don't know how to do that in a way that's > > helpful to the user. > > Looks like current error prompt has contained the device? > > qemu-system-x86_64: -device > virtio-blk-pci,id=v0,scsi=on,disable-modern=off,drive=img1: Virtio 1.0 > does not support scsi passthrough!
Cool, then the message I suggested will contain all the necessary information. > > > > Markus? > > > > > >> + return 0; > >> + } > >> + } else { > >> + virtio_add_feature(&features, VIRTIO_BLK_F_SCSI); > >> + } > >> > >> if (s->conf.config_wce) { > >> virtio_add_feature(&features, VIRTIO_BLK_F_CONFIG_WCE); > >> -- > >> 2.1.4