linux/drivers/s390/scsi
Steffen Maier 645603ab5f scsi: zfcp: Defer fc_rport blocking until after ADISC response
commit e658519890 upstream.

Storage devices are free to send RSCNs, e.g. for internal state changes. If
this happens on all connected paths, zfcp risks temporarily losing all
paths at the same time. This has strong requirements on multipath
configuration such as "no_path_retry queue".

Avoid such situations by deferring fc_rport blocking until after the ADISC
response, when any actual state change of the remote port became clear.
The already existing port recovery triggers explicitly block the fc_rport.
The triggers are: on ADISC reject or timeout (typical cable pull case), and
on ADISC indicating that the remote port has changed its WWPN or
the port is meanwhile no longer open.

As a side effect, this also removes a confusing direct function call to
another work item function zfcp_scsi_rport_work() instead of scheduling
that other work item. It was probably done that way to have the rport block
side effect immediate and synchronous to the caller.

Fixes: a2fa0aede0 ("[SCSI] zfcp: Block FC transport rports early on errors")
Cc: stable@vger.kernel.org #v2.6.30+
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Reviewed-by: Fedor Loshakov <loshakov@linux.ibm.com>
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
Link: https://lore.kernel.org/r/20230724145156.3920244-1-maier@linux.ibm.com
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-08-11 12:08:19 +02:00
..
Makefile scsi: zfcp: diagnostics buffer caching and use for exchange port data 2019-10-28 22:16:14 -04:00
zfcp_aux.c s390: move from strlcpy with unused retval to strscpy 2022-08-30 22:00:33 +02:00
zfcp_ccw.c s390/zfcp: remove pm support from zfcp driver 2020-12-02 18:19:23 +01:00
zfcp_dbf.c scsi: zfcp: fix kernel doc comments 2021-09-08 14:23:31 +02:00
zfcp_dbf.h scsi: zfcp: trace FC Endpoint Security of FCP devices and connections 2020-03-17 13:12:40 -04:00
zfcp_def.h scsi: zfcp: Fix indentation coding style issue 2021-04-15 22:19:39 -04:00
zfcp_diag.c scsi: zfcp: Clean up sysfs code for SFP diagnostics 2021-04-15 22:19:40 -04:00
zfcp_diag.h scsi: zfcp: Drop redundant "the" in the comments 2022-07-07 17:33:58 -04:00
zfcp_erp.c scsi: zfcp: Use list_first_entry_or_null() in zfcp_erp_thread() 2020-09-15 18:01:57 -04:00
zfcp_ext.h scsi: zfcp: Switch to attribute groups 2021-10-16 21:45:53 -04:00
zfcp_fc.c scsi: zfcp: Defer fc_rport blocking until after ADISC response 2023-08-11 12:08:19 +02:00
zfcp_fc.h scsi: zfcp: Fix missing auto port scan and thus missing target ports 2022-08-01 19:50:00 -04:00
zfcp_fsf.c scsi: zfcp: Fix double free of FSF request when qdio send fails 2022-11-17 17:51:06 +00:00
zfcp_fsf.h scsi: zfcp: Handle event-lost notification for Version Change events 2020-10-29 22:17:01 -04:00
zfcp_qdio.c s390/qdio: split do_QDIO() 2021-12-06 14:42:25 +01:00
zfcp_qdio.h scsi: zfcp: Lift Request Queue tasklet & timer from qdio 2021-04-15 22:19:40 -04:00
zfcp_reqlist.h scsi: zfcp: silence remaining kdoc warnings in header files 2018-11-15 15:01:18 -05:00
zfcp_scsi.c scsi: zfcp: Switch to attribute groups 2021-10-16 21:45:53 -04:00
zfcp_sysfs.c scsi: zfcp: Declare zfcp_sdev_attrs as static 2022-07-07 17:33:58 -04:00
zfcp_unit.c scsi: zfcp: fix kernel doc comments 2021-09-08 14:23:31 +02:00