android_kernel_motorola_sm6375/drivers
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Steffen Maier c54445af64 scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP devices
commit 8c9db6679be4348b8aae108e11d4be2f83976e30 upstream.

Suppose we have an environment with a number of non-NPIV FCP devices
(virtual HBAs / FCP devices / zfcp "adapter"s) sharing the same physical
FCP channel (HBA port) and its I_T nexus. Plus a number of storage target
ports zoned to such shared channel. Now one target port logs out of the
fabric causing an RSCN. Zfcp reacts with an ADISC ELS and subsequent port
recovery depending on the ADISC result. This happens on all such FCP
devices (in different Linux images) concurrently as they all receive a copy
of this RSCN. In the following we look at one of those FCP devices.

Requests other than FSF_QTCB_FCP_CMND can be slow until they get a
response.

Depending on which requests are affected by slow responses, there are
different recovery outcomes. Here we want to fix failed recoveries on port
or adapter level by avoiding recovery requests that can be slow.

We need the cached N_Port_ID for the remote port "link" test with ADISC.
Just before sending the ADISC, we now intentionally forget the old cached
N_Port_ID. The idea is that on receiving an RSCN for a port, we have to
assume that any cached information about this port is stale.  This forces a
fresh new GID_PN [FC-GS] nameserver lookup on any subsequent recovery for
the same port. Since we typically can still communicate with the nameserver
efficiently, we now reach steady state quicker: Either the nameserver still
does not know about the port so we stop recovery, or the nameserver already
knows the port potentially with a new N_Port_ID and we can successfully and
quickly perform open port recovery.  For the one case, where ADISC returns
successfully, we re-initialize port->d_id because that case does not
involve any port recovery.

This also solves a problem if the storage WWPN quickly logs into the fabric
again but with a different N_Port_ID. Such as on virtual WWPN takeover
during target NPIV failover.
[https://www.redbooks.ibm.com/abstracts/redp5477.html] In that case the
RSCN from the storage FDISC was ignored by zfcp and we could not
successfully recover the failover. On some later failback on the storage,
we could have been lucky if the virtual WWPN got the same old N_Port_ID
from the SAN switch as we still had cached.  Then the related RSCN
triggered a successful port reopen recovery.  However, there is no
guarantee to get the same N_Port_ID on NPIV FDISC.

Even though NPIV-enabled FCP devices are not affected by this problem, this
code change optimizes recovery time for gone remote ports as a side effect.
The timely drop of cached N_Port_IDs prevents unnecessary slow open port
attempts.

While the problem might have been in code before v2.6.32 commit
799b76d09a ("[SCSI] zfcp: Decouple gid_pn requests from erp") this fix
depends on the gid_pn_work introduced with that commit, so we mark it as
culprit to satisfy fix dependencies.

Note: Point-to-point remote port is already handled separately and gets its
N_Port_ID from the cached peer_d_id. So resetting port->d_id in general
does not affect PtP.

Link: https://lore.kernel.org/r/20220118165803.3667947-1-maier@linux.ibm.com
Fixes: 799b76d09a ("[SCSI] zfcp: Decouple gid_pn requests from erp")
Cc: <stable@vger.kernel.org> #2.6.32+
Suggested-by: Benjamin Block <bblock@linux.ibm.com>
Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Signed-off-by: Steffen Maier <maier@linux.ibm.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-02-01 17:24:33 +01:00
..
accessibility
acpi ACPI: battery: Add the ThinkPad "Not Charging" quirk 2022-01-27 09:19:45 +01:00
amba ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" 2021-11-06 13:59:45 +01:00
android binder: fix handling of error during copy 2022-01-27 09:19:38 +01:00
ata libata: if T_LENGTH is zero, dma direction should be DMA_NONE 2021-12-22 09:29:39 +01:00
atm
auxdisplay auxdisplay: ht16k33: Fix frame buffer device blanking 2021-11-17 09:48:45 +01:00
base devtmpfs regression fix: reconfigure on each mount 2022-01-20 09:19:17 +01:00
bcma
block floppy: Add max size check for user space request 2022-01-27 09:19:42 +01:00
bluetooth Bluetooth: hci_bcm: Check for error irq 2022-01-27 09:19:36 +01:00
bus bus: ti-sysc: Use CLKDM_NOAUTO for dra7 dcan1 for errata i893 2021-10-13 10:08:19 +02:00
cdrom
char random: do not throw away excess input to crng_fast_load 2022-01-27 09:19:46 +01:00
clk clk: si5341: Fix clock HW provider cleanup 2022-01-27 09:19:53 +01:00
clocksource clocksource/drivers/timer-ti-dm: Select TIMER_OF 2021-11-17 09:48:39 +01:00
connector
counter
cpufreq cpufreq: Fix initialization of min and max frequency QoS requests 2022-01-27 09:19:44 +01:00
cpuidle cpuidle: Fix kobject memory leaks in error paths 2021-11-17 09:48:36 +01:00
crypto crypto: caam - replace this_cpu_ptr with raw_cpu_ptr 2022-01-27 09:19:49 +01:00
dax
dca
devfreq
dio
dma dmaengine: at_xdmac: Fix at_xdmac_lld struct definition 2022-01-27 09:19:55 +01:00
dma-buf dma_fence_array: Fix PENDING_ERROR leak in dma_fence_array_signaled() 2022-01-27 09:19:28 +01:00
edac EDAC/synopsys: Use the quirk for version instead of ddr version 2022-01-27 09:19:41 +01:00
eisa
extcon
firewire
firmware firmware: Update Kconfig help text for Google firmware 2022-01-27 09:19:51 +01:00
fpga
fsi
gnss
gpio gpio: aspeed: Convert aspeed_gpio.lock to raw_spinlock 2022-01-27 09:19:43 +01:00
gpu drm/vmwgfx: Fix stale file descriptors on failed usercopy 2022-01-29 10:25:11 +01:00
greybus
hid HID: quirks: Allow inverting the absolute X/Y values 2022-01-27 09:19:43 +01:00
hsi HSI: core: Fix return freed object in hsi_new_client 2022-01-27 09:19:41 +01:00
hv hyperv/vmbus: include linux/bitops.h 2021-11-17 09:48:20 +01:00
hwmon hwmon: (lm90) Do not report 'busy' status bit as alarm 2021-12-29 12:23:37 +01:00
hwspinlock
hwtracing
i2c i2c: designware-pci: Fix to change data types of hcnt and lcnt parameters 2022-01-27 09:19:48 +01:00
i3c
ide
idle
iio iio: adc: stm32: fix a current leak by resetting pcsel before disabling vdda 2021-12-22 09:29:35 +01:00
infiniband RDMA/rxe: Fix a typo in opcode name 2022-01-27 09:19:52 +01:00
input Input: touchscreen - Fix backport of a02dcde595f7cbd240ccd64de96034ad91cffc40 2022-01-11 15:23:30 +01:00
interconnect
iommu iommu/iova: Fix race between FQ timeout and teardown 2022-01-27 09:19:39 +01:00
ipack ipack: ipoctal: fix module reference leak 2021-10-06 15:42:36 +02:00
irqchip irqchip: nvic: Fix offset for Interrupt Priority Offsets 2021-12-14 14:49:06 +01:00
isdn mISDN: change function names to avoid conflicts 2022-01-11 15:23:33 +01:00
leds
lightnvm
macintosh
mailbox
mcb
md dm space map common: add bounds check to sm_ll_lookup_bitmap() 2022-01-27 09:19:46 +01:00
media media: rcar-csi2: Optimize the selection PHTW register 2022-01-27 09:19:51 +01:00
memory memory: fsl_ifc: fix leak of irq and nand_irq in fsl_ifc_ctrl_probe 2021-11-17 09:48:42 +01:00
memstick memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() 2021-11-17 09:48:37 +01:00
message
mfd mfd: intel-lpss: Fix too early PM enablement in the ACPI ->probe() 2022-01-16 09:15:38 +01:00
misc misc: lattice-ecp3-config: Fix task hung when firmware load failed 2022-01-27 09:19:39 +01:00
mmc mmc: sdhci-esdhc-imx: disable CMDQ support 2022-01-29 10:25:11 +01:00
mtd mtd: nand: bbt: Fix corner case in bad block table handling 2022-01-27 09:19:55 +01:00
mux
net lib82596: Fix IRQ check in sni_82596_probe 2022-01-27 09:19:55 +01:00
nfc NFC: st21nfca: Fix memory leak in device probe and remove 2022-01-05 12:37:44 +01:00
ntb
nubus
nvdimm libnvdimm/pmem: Fix crash triggered when I/O in-flight during unbind 2021-10-06 15:42:38 +02:00
nvme nvmet: use IOCB_NOWAIT only if the filesystem supports it 2021-12-01 09:23:33 +01:00
nvmem nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells 2021-10-20 11:40:14 +02:00
of of: base: Improve argument length mismatch error 2022-01-27 09:19:51 +01:00
opp opp: Fix return in _opp_add_static_v2() 2021-11-17 09:48:44 +01:00
oprofile
parisc parisc: pdc_stable: Fix memory leak in pdcs_register_pathentries 2022-01-27 09:19:53 +01:00
parport
pci PCI: pci-bridge-emul: Set PCI_STATUS_CAP_LIST for PCIe device 2022-01-27 09:19:50 +01:00
pcmcia pcmcia: fix setting of kthread task states 2022-01-27 09:19:37 +01:00
perf
phy phy: uniphier-usb3ss: fix unintended writing zeros to PHY register 2022-01-27 09:19:39 +01:00
pinctrl pinctrl: bcm2835: Change init order for gpio hogs 2022-01-29 10:25:10 +01:00
platform platform/x86: apple-gmux: use resource_size() with res 2022-01-05 12:37:43 +01:00
pnp
power power: bq25890: Enable continuous conversion for ADC at charging 2022-01-27 09:19:49 +01:00
powercap
pps
ps3
ptp ptp_pch: Load module automatically if ID matches 2021-10-13 10:08:19 +02:00
pwm
rapidio
ras
regulator regulator: qcom_smd: Align probe function with rpmh-regulator 2022-01-27 09:19:46 +01:00
remoteproc
reset reset: socfpga: add empty driver allowing consumers to probe 2021-11-17 09:48:20 +01:00
rpmsg rpmsg: core: Clean up resources on announce_create failure. 2022-01-27 09:19:49 +01:00
rtc rtc: pxa: fix null pointer dereference 2022-01-27 09:19:53 +01:00
s390 scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP devices 2022-02-01 17:24:33 +01:00
sbus
scsi scsi: core: Show SCMD_LAST in text form 2022-01-27 09:19:52 +01:00
sfi
sh maple: fix wrong return value of maple_bus_init(). 2021-11-26 10:47:17 +01:00
siox
slimbus
soc ASoC: mediatek: Check for error clk pointer 2022-01-27 09:19:39 +01:00
soundwire
spi spi: spi-meson-spifc: Add missing pm_runtime_disable() in meson_spifc_probe 2022-01-27 09:19:37 +01:00
spmi
ssb
staging staging: greybus: audio: Check null pointer 2022-01-27 09:19:36 +01:00
target scsi: target: Fix alua_tg_pt_gps_count tracking 2021-11-26 10:47:16 +01:00
tc
tee tee: fix put order in teedev_close_context() 2022-01-27 09:19:30 +01:00
thermal thermal: core: Reset previous low and high trip during thermal zone init 2021-12-08 09:01:09 +01:00
thunderbolt
tty serial: Fix incorrect rs485 polarity on uart open 2022-01-27 09:19:49 +01:00
uio
usb usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 2022-01-27 09:19:44 +01:00
vfio
vhost vhost/vsock: fix incorrect used length reported to the guest 2021-12-01 09:23:34 +01:00
video vgacon: Propagate console boot parameters before calling `vc_resize' 2021-12-08 09:01:13 +01:00
virt
virtio virtio_ring: Fix querying of maximum DMA mapping size for virtio device 2021-12-22 09:29:34 +01:00
visorbus
vlynq
vme
w1 w1: Misuse of get_user()/put_user() reported by sparse 2022-01-27 09:19:48 +01:00
watchdog ar7: fix kernel builds for compiler test 2021-11-17 09:48:46 +01:00
xen xen: detect uninitialized xenbus in xenbus_init 2021-12-01 09:23:28 +01:00
zorro
Kconfig
Makefile