linux/drivers
Alexei Potashnik f89ace487f qla2xxx: delay plogi/prli ack until existing sessions are deleted
[ Upstream commit a6ca88780d ]

- keep qla_tgt_sess object on the session list until it's freed

- modify use of sess->deleted flag to differentiate delayed
  session deletion that can be cancelled from irreversible one:
  QLA_SESS_DELETION_PENDING vs QLA_SESS_DELETION_IN_PROGRESS

- during IN_PROGRESS deletion all newly arrived commands and TMRs will
  be rejected, existing commands and TMRs will be terminated when
  given by the core to the fabric or simply dropped if session logout
  has already happened (logout terminates all existing exchanges)

- new PLOGI will initiate deletion of the following sessions
  (unless deletion is already IN_PROGRESS):
  - with the same port_name (with logout)
  - different port_name, different loop_id but the same port_id
    (with logout)
  - different port_name, different port_id, but the same loop_id
    (without logout)

- additionally each new PLOGI will store imm notify iocb in the
  same port_name session being deleted. When deletion process
  completes this iocb will be acked. Only the most recent PLOGI
  iocb is stored. The older ones will be terminated when replaced.

- new PRLI will initiate deletion of the following sessions
  (unless deletion is already IN_PROGRESS):
  - different port_name, different port_id, but the same loop_id
   (without logout)

Cc: <stable@vger.kernel.org> # v3.18+
Signed-off-by: Alexei Potashnik <alexei@purestorage.com>
Acked-by: Quinn Tran <quinn.tran@qlogic.com>
Signed-off-by: Himanshu Madhani <himanshu.madhani@qlogic.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
History 2016-02-23 01:13:44 -05:00
..
accessibility printk: move braille console support into separate braille.[ch] files 2013-07-31 14:41:03 -07:00
acpi ACPI, PCI: Penalize legacy IRQ used by ACPI SCI 2015-09-21 10:05:44 -07:00
amba ARM: 8334/1: amba: tegra-ahb: detect and correct bogus base address 2015-04-02 10:03:55 +01:00
android android: binder: fix binder mmap failures 2015-03-01 18:43:51 -08:00
ata libata: disable forced PORTS_IMPL for >= AHCI 1.3 2016-02-23 00:49:31 -05:00
atm drivers: atm: nicstar: remove ifdef'd out skb destructors 2015-03-10 13:34:53 -04:00
auxdisplay auxdisplay: ks0108: fix refcount 2015-09-21 10:05:42 -07:00
base cpu/cacheinfo: Fix teardown path 2015-10-22 14:43:23 -07:00
bcma Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2015-04-17 15:50:54 -04:00
block zram: try vmalloc() after kmalloc() 2016-02-03 16:23:17 -05:00
bluetooth Bluetooth: Add support of Toshiba Broadcom based devices 2016-02-01 11:37:16 -05:00
bus bus: arm-ccn: Fix node->XP config conversion 2015-08-03 09:29:07 -07:00
cdrom block,scsi: fixup blk_get_request dead queue scenarios 2014-08-28 10:03:46 -06:00
char ipmi: move timer init to before irq is setup 2016-01-31 11:23:31 -08:00
clk clk: versatile-icst: fix memory leak 2015-12-09 14:03:20 -05:00
clocksource clocksource/drivers/vt8500: Increase the minimum delta 2016-02-03 14:01:46 -05:00
connector connector: bump skb->users before callback invocation 2016-01-31 11:23:35 -08:00
cpufreq cpufreq: intel_pstate: Fix divide by zero on Knights Landing (KNL) 2015-11-09 14:33:39 -08:00
cpuidle tick/idle/powerpc: Do not register idle states with CPUIDLE_FLAG_TIMER_STOP set in periodic mode 2015-07-10 09:49:35 -07:00
crypto crypto: vmx - Adding enable_kernel_vsx() to access VSX instructions 2015-09-29 19:26:05 +02:00
dca dca: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
devfreq PM / devfreq: tegra: Register governor on module init 2015-03-31 13:17:15 +09:00
dio m68k: don't export static inline functions 2009-12-06 11:18:28 +01:00
dma dmaengine: at_xdmac: fix resume for cyclic transfers 2016-02-03 16:23:19 -05:00
dma-buf dma-buf: cleanup dma_buf_export() to make it easily extensible 2015-04-21 14:47:16 +05:30
edac EDAC: Robustify workqueues destruction 2016-02-01 11:37:44 -05:00
eisa Revert "EISA: Initialize device before its resources" 2014-01-17 14:57:29 -07:00
extcon extcon: usb-gpio: register extcon device before IRQ registration 2015-04-27 11:06:05 +09:00
firewire firewire: ohci: fix JMicron JMB38x IT context discovery 2015-12-14 21:24:35 -08:00
firmware arm64/efi: Fix boot crash by not padding between EFI_MEMORY_RUNTIME regions 2015-10-22 14:43:25 -07:00
fmc Merge 3.14-rc5 into char-misc-next 2014-03-02 19:53:09 -08:00
gpio gpio: rcar: Check for irq_set_irq_wake() failures 2015-07-21 10:10:01 -07:00
gpu drm/i915: Take all modeset locks for DP MST hotplug 2016-02-15 15:45:36 -05:00
hid HID: core: Avoid uninitialized buffer access 2016-01-31 11:23:39 -08:00
hsi HSI: cmt_speech: fix error return code 2015-04-05 14:45:27 +02:00
hv Drivers: hv: hv_balloon: correctly handle num_pages>INT_MAX case 2015-04-03 16:20:12 +02:00
hwmon hwmon: (nct6775) Swap STEP_UP_TIME and STEP_DOWN_TIME registers for most chips 2015-10-22 14:43:12 -07:00
hwspinlock hwspinlock: drop owner assignment from platform_drivers 2014-10-20 16:20:37 +02:00
hwtracing/coresight coresight: checking for NULL string in coresight_name_match() 2016-02-01 12:22:21 -05:00
i2c i2c: mv64xxx: really allow I2C offloading 2015-11-09 14:33:37 -08:00
ide Merge branch 'for-4.1-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2015-05-11 10:54:20 -07:00
idle Power management and ACPI updates for v4.1-rc1 2015-04-14 20:21:54 -07:00
iio iio: st_accel: fix interrupt handling on LIS3LV02 2015-11-09 14:33:35 -08:00
infiniband IB/qib: Support creating qps with GFP_NOIO flag 2016-02-03 16:23:20 -05:00
input Input: vmmouse - fix absolute device registration 2016-02-23 00:49:36 -05:00
iommu iommu/vt-d: Fix 64-bit accesses to 32-bit DMAR_GSTS_REG 2016-02-23 00:46:35 -05:00
ipack ipoctal: clear break interrupt as soon as it occurs 2014-09-23 23:26:42 -07:00
irqchip irqchip/atmel-aic: Fix wrong bit operation for IRQ priority 2016-02-15 15:45:24 -05:00
isdn ppp, slip: Validate VJ compression slot parameters completely 2016-01-31 11:23:37 -08:00
leds leds/led-class: Add missing put_device() 2015-10-22 14:43:14 -07:00
lguest lguest: fix out-by-one error in address checking. 2015-05-27 09:57:21 -07:00
macintosh windfarm: decrement client count when unregistering 2015-10-22 14:43:12 -07:00
mailbox mailbox: arm_mhu: add driver for ARM MHU controller 2015-03-17 11:12:01 +05:30
mcb mcb: request_mem_region() returns NULL on error 2015-04-03 16:15:30 +02:00
md dm snapshot: fix hung bios when copy error occurs 2016-02-03 14:01:45 -05:00
media [media] saa7134-alsa: Only frees registered sound cards 2016-02-15 15:45:35 -05:00
memory iommu/tegra-smmu: Parameterize number of TLB lines 2015-09-29 19:26:14 +02:00
memstick memstick: mspro_block: add missing curly braces 2015-04-17 09:04:09 -04:00
message i2o: move to staging 2015-02-03 15:58:39 -08:00
mfd mfd: twl6040: Fix deferred probe handling for clk32k 2015-12-09 14:03:20 -05:00
misc cxl: Don't remove AFUs/vPHBs in cxl_reset 2015-09-29 19:26:26 +02:00
mmc mmc: core: Enable tuning according to the actual timing 2016-02-03 16:23:15 -05:00
mtd UBI: return ENOSPC if no enough space available 2015-10-22 14:43:24 -07:00
net iwlwifi: pcie: properly configure the debug buffer size for 8000 2016-02-03 14:01:44 -05:00
nfc NFC: st21nfca: fix use of uninitialized variables in error path 2015-09-29 19:25:55 +02:00
ntb ntb: initialize max_mw for Atom before using it 2015-06-11 09:27:24 -04:00
nubus nubus: Remove superfluous interrupt disable/restore 2014-10-27 11:03:19 +01:00
of MFD/OF: document MFD devices and handle simple-mfd 2015-11-09 14:33:39 -08:00
oprofile Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2015-04-26 17:22:07 -07:00
parisc parisc iommu: fix panic due to trying to allocate too large region 2016-01-31 11:23:39 -08:00
parport parport: parport_atari: Remove obsolete IRQ_TYPE_SLOW 2015-01-15 13:44:50 +01:00
pci PCI/AER: Flush workqueue on device remove to avoid use-after-free 2016-02-23 00:49:26 -05:00
pcmcia pcmcia: sa11x0: fix missing clk_put() in sa11x0 socket drivers 2015-10-22 14:43:22 -07:00
phy phy: twl4030-usb: make runtime pm more reliable. 2015-08-16 20:52:13 -07:00
pinctrl pinctrl: baytrail: Use raw_spinlock for locking 2015-11-09 14:33:40 -08:00
platform ideapad-laptop: Add Lenovo Yoga 700 to no_hw_rfkill dmi list 2016-02-15 15:45:19 -05:00
pnp ACPI / PNP: Reserve ACPI resources at the fs_initcall_sync stage 2015-08-03 09:29:14 -07:00
power PM / AVS: rockchip-io: depend on CONFIG_POWER_AVS 2015-10-22 14:43:22 -07:00
powercap powercap / RAPL: Add support for Intel Skylake processors 2015-04-15 23:06:16 +02:00
pps pps: clients: drop owner assignment from platform_drivers 2014-10-20 16:21:28 +02:00
ps3 ps3: Fix trivial typos in comment and debug message 2015-03-26 15:23:17 +11:00
ptp ptp: remove 32 bit get/set methods. 2015-03-31 12:01:19 -04:00
pwm pwm: img: Impose upper and lower timebase steps value 2015-05-19 16:07:40 +02:00
rapidio Merge branch 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma 2015-02-18 08:49:20 -08:00
ras trace, RAS: Add eMCA trace event interface 2014-06-25 13:26:47 -07:00
regulator regulator: pbias: Fix broken pbias disable functionality 2015-09-21 10:05:43 -07:00
remoteproc remoteproc: add IOMMU hardware capability flag 2015-03-12 10:43:26 +02:00
reset reset: sunxi: fix spinlock initialization 2015-01-16 19:11:31 -08:00
rpmsg virtio_rpmsg: set DRIVER_OK before using device 2015-03-13 15:55:42 +10:30
rtc rtc: abx80x: fix RTC write bit 2015-09-29 19:26:11 +02:00
s390 s390/sclp: fix compile error 2015-09-21 10:05:27 -07:00
sbus drivers/sbus/char/envctrl.c: ignore orderly_poweroff return value 2015-04-15 16:35:23 -07:00
scsi qla2xxx: delay plogi/prli ack until existing sessions are deleted 2016-02-23 01:13:44 -05:00
sfi SFI: fix compiler warnings 2014-12-03 18:49:20 -05:00
sh drivers: sh: Remove test for now unsupported sh7372 2015-04-27 13:08:14 +09:00
sn Drivers: misc: remove __dev* attributes. 2013-01-03 15:57:16 -08:00
soc soc/tegra: pmc: Avoid usage of uninitialized variable 2015-09-21 10:05:43 -07:00
spi spi: spidev: fix possible NULL dereference 2015-10-22 14:43:15 -07:00
spmi spmi: pmic_arb: remove ARM build time dependency 2015-04-03 16:15:30 +02:00
ssb SSB: Fix handling of ssb_pmu_get_alp_clock() 2015-06-09 16:38:06 +02:00
staging Staging: speakup: Fix getting port information 2016-02-15 15:45:26 -05:00
target iscsi-target: Fix potential dead-lock during node acl delete 2016-02-03 16:23:21 -05:00
tc TC: Error handling clean-ups 2014-11-24 07:45:25 +01:00
thermal Thermal: do thermal zone update after a cooling device registered 2016-02-01 14:46:05 -05:00
thunderbolt thunderbolt: Clear hops before overwriting 2014-08-26 14:54:48 -07:00
tty serial: 8250_pci: Add Intel Broadwell ports 2016-02-15 15:45:26 -05:00
uio Revert "uio: constify of_device_id array" 2015-04-03 16:04:21 +02:00
usb xhci: Fix list corruption in urb dequeue at host removal 2016-02-15 15:45:34 -05:00
uwb uwb: Remove umc bus legacy suspend/resume support 2015-03-18 17:27:03 +01:00
vfio vfio: Fix runaway interruptible timeout 2015-05-01 16:31:41 -06:00
vhost vhost: actually track log eventfd file 2015-08-10 12:21:58 -07:00
video fbdev: select versatile helpers for the integrator 2015-10-22 14:43:20 -07:00
virt drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
virtio virtio_pci: fix use after free on release 2016-02-15 15:45:22 -05:00
vlynq drivers/vlynq/vlynq.c: fix another resource size off by 1 error 2014-01-23 16:36:55 -08:00
vme vme: tsi148: Master windows support USERx and CR/CSR accesses, not slaves 2015-03-06 17:03:22 -08:00
w1 w1_therm reference count family data 2015-08-03 09:29:11 -07:00
watchdog watchdog: sunxi: fix activation of system reset 2015-10-22 14:43:12 -07:00
xen xen/gntdev: Grant maps should not be subject to NUMA balancing 2016-01-31 11:23:30 -08:00
zorro zorro: drop owner assignment from platform_drivers 2014-10-20 16:21:57 +02:00
Kconfig i2o: move to staging 2015-02-03 15:58:39 -08:00
Makefile coresight: moving to new "hwtracing" directory 2015-04-03 16:17:04 +02:00