On Thu, Apr 13, 2017 at 12:13:00PM +1000, David Gibson wrote: > @@ -705,6 +706,28 @@ static int virtscsi_device_reset(struct scsi_cmnd *sc) > return virtscsi_tmf(vscsi, cmd); > } > > +static int virtscsi_device_alloc(struct scsi_device *sdevice) > +{ > + /* > + * Passed through SCSI targets (e.g. with qemu's 'scsi-block') > + * may have transfer limits which come from the host SCSI > + * controller something on the host side other than the target s/controller something/controller or something/ ? > + * itself. > + * > + * To make this work properly, the hypervisor can adjust the > + * target's VPD information to advertise these limits. But > + * for that to work, the guest has to look at the VPD pages, > + * which we won't do by default if it is an SPC-2 device, even > + * if it does actually support it. > + * > + * So, set the blist to always try to read the VPD pages. > + */ > + sdevice->sdev_bflags = BLIST_TRY_VPD_PAGES; > + > + return 0; > +} Looks good to me. Not a SCSI expert but I checked scsi_device_supports_vpd() callers and this seems sane.