On Wed, Jul 22, 2015 at 01:12:45PM +0300, Michael S. Tsirkin wrote: > 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.
Maybe add "or switch to virtio-scsi". > > > > > > 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