Messages in this thread Patch in this message | | | From | Maxim Levitsky <> | Subject | [PATCH 1/1] scsi: virtio-scsi: handle correctly case when all LUNs were unplugged | Date | Wed, 29 Jul 2020 22:48:06 +0300 |
| |
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@redhat.com> --- 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
| |