OpenCloudOS-Kernel/drivers/nvme/host
Sagi Grimberg 0475a8dcbc nvme-rdma: fix timeout handler
When a request times out in a LIVE state, we simply trigger error
recovery and let the error recovery handle the request cancellation,
however when a request times out in a non LIVE state, we make sure to
complete it immediately as it might block controller setup or teardown
and prevent forward progress.

However tearing down the entire set of I/O and admin queues causes
freeze/unfreeze imbalance (q->mq_freeze_depth) because and is really
an overkill to what we actually need, which is to just fence controller
teardown that may be running, stop the queue, and cancel the request if
it is not already completed.

Now that we have the controller teardown_lock, we can safely serialize
request cancellation. This addresses a hang caused by calling extra
queue freeze on controller namespaces, causing unfreeze to not complete
correctly.

Reviewed-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: James Smart <james.smart@broadcom.com>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
2020-08-28 16:43:57 -07:00
..
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile nvme: support for zoned namespaces 2020-07-08 16:16:20 +02:00
core.c nvme: have nvme_wait_freeze_timeout return if it timed out 2020-08-28 16:43:56 -07:00
fabrics.c nvme-fabrics: don't check state NVME_CTRL_NEW for request acceptance 2020-08-28 16:43:56 -07:00
fabrics.h nvme: fix deadlock in disconnect during scan_work and/or ana_work 2020-07-29 07:45:19 +02:00
fault_inject.c nvme: enable to inject errors into admin commands 2019-06-21 11:15:50 +02:00
fc.c nvme: rename and document nvme_end_request 2020-08-21 17:14:28 -06:00
fc.h nvme-fc: Update header and host for common definitions for LS handling 2020-05-09 16:18:33 -06:00
hwmon.c nvme-hwmon: log the controller device name 2020-07-29 07:45:20 +02:00
lightnvm.c nvme: support for multiple Command Sets Supported and Effects log pages 2020-07-08 16:16:20 +02:00
multipath.c nvme: refactor command completion 2020-08-21 17:14:28 -06:00
nvme.h nvme: have nvme_wait_freeze_timeout return if it timed out 2020-08-28 16:43:56 -07:00
pci.c nvme: rename and document nvme_end_request 2020-08-21 17:14:28 -06:00
rdma.c nvme-rdma: fix timeout handler 2020-08-28 16:43:57 -07:00
tcp.c nvme-tcp: fix reset hang if controller died in the middle of a reset 2020-08-28 16:43:57 -07:00
trace.c nvme: trace: parse Get LBA Status command in detail 2019-08-29 12:55:01 -07:00
trace.h nvme-trace: print result and status in hex format 2019-06-21 11:12:37 +02:00
zns.c block: add max_active_zones to blk-sysfs 2020-07-15 14:26:11 -06:00