linux/drivers/nvme/host
Ruozhu Li f7f70f4aa0 nvme: fix regression when disconnect a recovering ctrl
We encountered a problem that the disconnect command hangs.
After analyzing the log and stack, we found that the triggering
process is as follows:
CPU0                          CPU1
                                nvme_rdma_error_recovery_work
                                  nvme_rdma_teardown_io_queues
nvme_do_delete_ctrl                 nvme_stop_queues
  nvme_remove_namespaces
  --clear ctrl->namespaces
                                    nvme_start_queues
                                    --no ns in ctrl->namespaces
    nvme_ns_remove                  return(because ctrl is deleting)
      blk_freeze_queue
        blk_mq_freeze_queue_wait
        --wait for ns to unquiesce to clean infligt IO, hang forever

This problem was not found in older kernels because we will flush
err work in nvme_stop_ctrl before nvme_remove_namespaces.It does not
seem to be modified for functional reasons, the patch can be revert
to solve the problem.

Revert commit 794a4cb3d2 ("nvme: remove the .stop_ctrl callout")

Signed-off-by: Ruozhu Li <liruozhu@huawei.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
2022-06-29 16:13:45 +02:00
..
apple.c nvme-apple: fix sparse endianess warnings 2022-05-06 21:06:25 +02:00
constants.c nvme: add support for TP4084 - Time-to-Ready Enhancements 2022-05-18 18:54:17 +02:00
core.c nvme: fix regression when disconnect a recovering ctrl 2022-06-29 16:13:45 +02:00
fabrics.c nvme-fabrics: remove unnecessary braces for case 2022-02-28 13:45:04 +02:00
fabrics.h nvme-fabrics: add a request timeout helper 2022-05-16 08:07:25 +02:00
fault_inject.c block: remove the ->rq_disk field in struct request 2021-11-29 06:41:29 -07:00
fc.c SCSI misc on 20220604 2022-06-05 09:25:12 -07: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: Return error code when registration fails 2021-03-05 13:41:03 +01:00
ioctl.c blk-mq: remove the done argument to blk_execute_rq_nowait 2022-05-28 06:15:27 -06:00
Kconfig nvme-apple: Add initial Apple SoC NVMe driver 2022-05-02 17:24:45 +02:00
Makefile nvme-apple: Add initial Apple SoC NVMe driver 2022-05-02 17:24:45 +02:00
multipath.c nvme: wire-up uring-cmd support for io-passthru on char-device. 2022-05-11 07:41:13 -06:00
nvme.h nvme: fix regression when disconnect a recovering ctrl 2022-06-29 16:13:45 +02:00
pci.c nvme-pci: add NVME_QUIRK_BOGUS_NID for ADATA XPG SX6000LNP (AKA SPECTRIX S40G) 2022-06-29 16:13:45 +02:00
rdma.c nvme: fix regression when disconnect a recovering ctrl 2022-06-29 16:13:45 +02:00
tcp.c nvme: fix regression when disconnect a recovering ctrl 2022-06-29 16:13:45 +02:00
trace.c nvme: add set feature tracing support 2021-08-16 14:42:23 +02:00
trace.h block: remove the ->rq_disk field in struct request 2021-11-29 06:41:29 -07:00
zns.c nvme: report write pointer for a full zone as zone start + zone len 2021-12-06 08:52:08 +01:00