linux/drivers/nvme/host
James Smart 4cff280a5f nvme-fc: resolve io failures during connect
If an io error occurs on an io issued while connecting, recovery
of the io falls flat as the state checking ends up nooping the error
handler.

Create an err_work work item that is scheduled upon an io error while
connecting. The work thread terminates all io on all queues and marks
the queues as not connected.  The termination of the io will return
back to the callee, which will then back out of the connection attempt
and will reschedule, if possible, the connection attempt.

The changes:
- in case there are several commands hitting the error handler, a
  state flag is kept so that the error work is only scheduled once,
  on the first error. The subsequent errors can be ignored.
- The calling sequence to stop keep alive and terminate the queues
  and their io is lifted from the reset routine. Made a small
  service routine used by both reset and err_work.
- During debugging, found that the teardown path can reference
  an uninitialized pointer, resulting in a NULL pointer oops.
  The aen_ops weren't initialized yet. Add validation on their
  initialization before calling the teardown routine.

Signed-off-by: James Smart <jsmart2021@gmail.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2018-11-15 11:37:55 +01:00
..
core.c nvme: make sure ns head inherits underlying device limits 2018-11-09 06:14:47 -07:00
fabrics.c nvme-fabrics: move controller options matching to fabrics 2018-10-19 14:22:24 +02:00
fabrics.h nvme-fabrics: move controller options matching to fabrics 2018-10-19 14:22:24 +02:00
fault_inject.c nvme: Add fault injection feature 2018-03-26 08:53:43 -06:00
fc.c nvme-fc: resolve io failures during connect 2018-11-15 11:37:55 +01:00
Kconfig IB: Revert "remove redundant INFINIBAND kconfig dependencies" 2018-05-28 10:40:16 -06:00
lightnvm.c lightnvm: do no update csecs and sos on 1.2 2018-10-09 08:25:08 -06:00
Makefile nvme: Add fault injection feature 2018-03-26 08:53:43 -06:00
multipath.c nvme: make sure ns head inherits underlying device limits 2018-11-09 06:14:47 -07:00
nvme.h pci-v4.20-changes 2018-10-25 06:50:48 -07:00
pci.c nvme-pci: fix conflicting p2p resource adds 2018-11-02 08:14:46 -06:00
rdma.c nvme-fabrics: move controller options matching to fabrics 2018-10-19 14:22:24 +02:00
trace.c nvme: add disk name to trace events 2018-07-24 15:55:48 +02:00
trace.h nvme-core: add async event trace helper 2018-10-01 14:16:12 -07:00