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); -- 2.26.2