On 29/07/20 21:48, Maxim Levitsky wrote: > Commit 5ff843721467 ("scsi: virtio_scsi: unplug LUNs when events missed"), > almost fixed the case of mass unpluging of LUNs, but it missed a > corner case in which all the LUNs are unplugged at the same time. > > In this case INQUIRY ends with DID_BAD_TARGET. > Detect this and unplug the LUN. > > Signed-off-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> > --- > drivers/scsi/virtio_scsi.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c > index 0e0910c5b9424..c7f0c22b6f11d 100644 > --- a/drivers/scsi/virtio_scsi.c > +++ b/drivers/scsi/virtio_scsi.c > @@ -351,6 +351,16 @@ static void virtscsi_rescan_hotunplug(struct virtio_scsi *vscsi) > /* PQ indicates the LUN is not attached */ > scsi_remove_device(sdev); > } > + > + else if (host_byte(result) == DID_BAD_TARGET) { > + /* > + * if all LUNs of a virtio-scsi device are unplugged, > + * it will respond with BAD TARGET on any INQUIRY > + * command. > + * Remove the device in this case as well > + */ > + scsi_remove_device(sdev); > + } > } > > kfree(inq_result); > Acked-by: Paolo Bonzini <pbonzini@xxxxxxxxxx>