summaryrefslogtreecommitdiff
path: root/lib/mpi/mpiutil.c
diff options
context:
space:
mode:
authorSagi Grimberg <sagi@grimberg.me>2020-07-28 13:16:36 -0700
committerSagi Grimberg <sagi@grimberg.me>2020-08-28 16:43:57 -0700
commit236187c4ed195161dfa4237c7beffbba0c5ae45b (patch)
tree820efeab6fc2f40485df94c0bf5082a8e010aa35 /lib/mpi/mpiutil.c
parentd4d61470ae48838f49e668503e840e1520b97162 (diff)
nvme-tcp: 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. Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Diffstat (limited to 'lib/mpi/mpiutil.c')
0 files changed, 0 insertions, 0 deletions