mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 1/1] scsi: storvsc: Fix handling of virtual Fibre Channel timeouts
@ 2023-07-29  4:59 Michael Kelley
  2023-07-31 19:46 ` Martin K. Petersen
  0 siblings, 1 reply; 2+ messages in thread
From: Michael Kelley @ 2023-07-29  4:59 UTC (permalink / raw)
  To: kys, martin.petersen, longli, wei.liu, decui, jejb, linux-hyperv,
	linux-kernel, linux-scsi
  Cc: mikelley, stable

Hyper-V provides the ability to connect Fibre Channel LUNs to the host
system and present them in a guest VM as a SCSI device. I/O to the vFC
device is handled by the storvsc driver. The storvsc driver includes
a partial integration with the FC transport implemented in the generic
portion of the Linux SCSI subsystem so that FC attributes can be
displayed in /sys.  However, the partial integration means that some
aspects of vFC don't work properly. Unfortunately, a full and correct
integration isn't practical because of limitations in what Hyper-V
provides to the guest.

In particular, in the context of Hyper-V storvsc, the FC transport
timeout function fc_eh_timed_out() causes a kernel panic because it
can't find the rport and dereferences a NULL pointer. The original
patch that added the call from storvsc_eh_timed_out() to
fc_eh_timed_out() is faulty in this regard.

In many cases a timeout is due to a transient condition, so the
situation can be improved by just continuing to wait like with other
I/O requests issued by storvsc, and avoiding the guaranteed panic. For
a permanent failure, continuing to wait may result in a hung thread
instead of a panic, which again may be better.

So fix the panic by removing the storvsc call to fc_eh_timed_out().
This allows storvsc to keep waiting for a response.  The change has
been tested by users who experienced a panic in fc_eh_timed_out() due
to transient timeouts, and it solves their problem.

In the future we may want to deprecate the vFC functionality in storvsc
since it can't be fully fixed. But it has current users for whom it is
working well enough, so it should probably stay for a while longer.

Fixes: 3930d7309807 ("scsi: storvsc: use default I/O timeout handler for FC devices")
Cc: stable@vger.kernel.org
Signed-off-by: Michael Kelley <mikelley@microsoft.com>
---
 drivers/scsi/storvsc_drv.c | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/drivers/scsi/storvsc_drv.c b/drivers/scsi/storvsc_drv.c
index 659196a..6014200 100644
--- a/drivers/scsi/storvsc_drv.c
+++ b/drivers/scsi/storvsc_drv.c
@@ -1671,10 +1671,6 @@ static int storvsc_host_reset_handler(struct scsi_cmnd *scmnd)
  */
 static enum scsi_timeout_action storvsc_eh_timed_out(struct scsi_cmnd *scmnd)
 {
-#if IS_ENABLED(CONFIG_SCSI_FC_ATTRS)
-	if (scmnd->device->host->transportt == fc_transport_template)
-		return fc_eh_timed_out(scmnd);
-#endif
 	return SCSI_EH_RESET_TIMER;
 }
 
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/1] scsi: storvsc: Fix handling of virtual Fibre Channel timeouts
  2023-07-29  4:59 [PATCH 1/1] scsi: storvsc: Fix handling of virtual Fibre Channel timeouts Michael Kelley
@ 2023-07-31 19:46 ` Martin K. Petersen
  0 siblings, 0 replies; 2+ messages in thread
From: Martin K. Petersen @ 2023-07-31 19:46 UTC (permalink / raw)
  To: kys, longli, wei.liu, decui, jejb, linux-hyperv, linux-kernel,
	linux-scsi, Michael Kelley
  Cc: Martin K . Petersen, stable

On Fri, 28 Jul 2023 21:59:24 -0700, Michael Kelley wrote:

> Hyper-V provides the ability to connect Fibre Channel LUNs to the host
> system and present them in a guest VM as a SCSI device. I/O to the vFC
> device is handled by the storvsc driver. The storvsc driver includes
> a partial integration with the FC transport implemented in the generic
> portion of the Linux SCSI subsystem so that FC attributes can be
> displayed in /sys.  However, the partial integration means that some
> aspects of vFC don't work properly. Unfortunately, a full and correct
> integration isn't practical because of limitations in what Hyper-V
> provides to the guest.
> 
> [...]

Applied to 6.5/scsi-fixes, thanks!

[1/1] scsi: storvsc: Fix handling of virtual Fibre Channel timeouts
      https://git.kernel.org/mkp/scsi/c/175544ad48cb

-- 
Martin K. Petersen	Oracle Linux Engineering

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2023-07-31 19:46 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-29  4:59 [PATCH 1/1] scsi: storvsc: Fix handling of virtual Fibre Channel timeouts Michael Kelley
2023-07-31 19:46 ` 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

all inboxes | Powered by JetHome®