* [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time
@ 2020-07-29 19:48 Maxim Levitsky
2020-07-29 19:48 ` [PATCH 1/1] scsi: virtio-scsi: handle correctly case when all LUNs were unplugged Maxim Levitsky
2020-07-30 2:24 ` [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time Martin K. Petersen
0 siblings, 2 replies; 4+ messages in thread
From: Maxim Levitsky @ 2020-07-29 19:48 UTC (permalink / raw)
To: linux-kernel
Cc: Paolo Bonzini, open list:SCSI SUBSYSTEM,
open list:VIRTIO BLOCK AND SCSI DRIVERS, Stefan Hajnoczi,
Michael S. Tsirkin, Martin K. Petersen, James E.J. Bottomley,
Jason Wang, Maxim Levitsky
virtio-scsi currently has limit of 8 outstanding notifications so when more that
8 LUNs are unplugged, some are missed.
Commit 5ff843721467 ("scsi: virtio_scsi: unplug LUNs when events missed")
Fixed this by checking the 'event overflow' bit and manually scanned the bus
to see which LUNs are still there.
However there is a corner case when all LUNs are unplugged.
In this case (which is not fully scsi confirmant IMHO), all scsi
commands to such device respond with INVALID TARGET.
This patch proposes to detect this and remove the LUN in this case
as well.
Maxim Levitsky (1):
scsi: virtio-scsi: handle correctly case when all LUNs were unplugged
drivers/scsi/virtio_scsi.c | 10 ++++++++++
1 file changed, 10 insertions(+)
--
2.26.2
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/1] scsi: virtio-scsi: handle correctly case when all LUNs were unplugged
2020-07-29 19:48 [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time Maxim Levitsky
@ 2020-07-29 19:48 ` Maxim Levitsky
2020-07-29 22:10 ` Paolo Bonzini
2020-07-30 2:24 ` [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time Martin K. Petersen
1 sibling, 1 reply; 4+ messages in thread
From: Maxim Levitsky @ 2020-07-29 19:48 UTC (permalink / raw)
To: linux-kernel
Cc: Paolo Bonzini, open list:SCSI SUBSYSTEM,
open list:VIRTIO BLOCK AND SCSI DRIVERS, Stefan Hajnoczi,
Michael S. Tsirkin, Martin K. Petersen, James E.J. Bottomley,
Jason Wang, Maxim Levitsky
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/1] scsi: virtio-scsi: handle correctly case when all LUNs were unplugged
2020-07-29 19:48 ` [PATCH 1/1] scsi: virtio-scsi: handle correctly case when all LUNs were unplugged Maxim Levitsky
@ 2020-07-29 22:10 ` Paolo Bonzini
0 siblings, 0 replies; 4+ messages in thread
From: Paolo Bonzini @ 2020-07-29 22:10 UTC (permalink / raw)
To: Maxim Levitsky, linux-kernel
Cc: open list:SCSI SUBSYSTEM,
open list:VIRTIO BLOCK AND SCSI DRIVERS, Stefan Hajnoczi,
Michael S. Tsirkin, Martin K. Petersen, James E.J. Bottomley,
Jason Wang
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@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);
>
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time
2020-07-29 19:48 [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time Maxim Levitsky
2020-07-29 19:48 ` [PATCH 1/1] scsi: virtio-scsi: handle correctly case when all LUNs were unplugged Maxim Levitsky
@ 2020-07-30 2:24 ` Martin K. Petersen
1 sibling, 0 replies; 4+ messages in thread
From: Martin K. Petersen @ 2020-07-30 2:24 UTC (permalink / raw)
To: linux-kernel, Maxim Levitsky
Cc: Martin K . Petersen, Michael S. Tsirkin,
open list:SCSI SUBSYSTEM, Stefan Hajnoczi,
open list:VIRTIO BLOCK AND SCSI DRIVERS, Paolo Bonzini,
Jason Wang, James E.J. Bottomley
On Wed, 29 Jul 2020 22:48:05 +0300, Maxim Levitsky wrote:
> virtio-scsi currently has limit of 8 outstanding notifications so when more that
> 8 LUNs are unplugged, some are missed.
>
> Commit 5ff843721467 ("scsi: virtio_scsi: unplug LUNs when events missed")
> Fixed this by checking the 'event overflow' bit and manually scanned the bus
> to see which LUNs are still there.
>
> [...]
Applied to 5.9/scsi-queue, thanks!
[1/1] scsi: virtio-scsi: Correctly handle the case where all LUNs are unplugged
https://git.kernel.org/mkp/scsi/c/b12149f2698c
--
Martin K. Petersen Oracle Linux Engineering
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-07-30 2:24 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-29 19:48 [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time Maxim Levitsky
2020-07-29 19:48 ` [PATCH 1/1] scsi: virtio-scsi: handle correctly case when all LUNs were unplugged Maxim Levitsky
2020-07-29 22:10 ` Paolo Bonzini
2020-07-30 2:24 ` [PATCH 0/1] virtio-scsi: fix missing unplug events when all LUNs are unplugged at the same time Martin K. Petersen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).