mirror of
https://github.com/torvalds/linux.git
synced 2026-06-06 13:37:36 +02:00
nvme-tcp: always fail a request when sending it failed
[ Upstream commit 41d07df7de ]
queue stoppage and inflight requests cancellation is fully fenced from
io_work and thus failing a request from this context. Hence we don't
need to try to guess from the socket retcode if this failure is because
the queue is about to be torn down or not.
We are perfectly safe to just fail it, the request will not be cancelled
later on.
This solves possible very long shutdown delays when the users issues a
'nvme disconnect-all'
Reported-by: Daniel Wagner <dwagner@suse.de>
Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
de876f36f9
commit
5504e63832
|
|
@ -1149,8 +1149,7 @@ static int nvme_tcp_try_send(struct nvme_tcp_queue *queue)
|
||||||
} else if (ret < 0) {
|
} else if (ret < 0) {
|
||||||
dev_err(queue->ctrl->ctrl.device,
|
dev_err(queue->ctrl->ctrl.device,
|
||||||
"failed to send request %d\n", ret);
|
"failed to send request %d\n", ret);
|
||||||
if (ret != -EPIPE && ret != -ECONNRESET)
|
nvme_tcp_fail_request(queue->request);
|
||||||
nvme_tcp_fail_request(queue->request);
|
|
||||||
nvme_tcp_done_send_req(queue);
|
nvme_tcp_done_send_req(queue);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user