nvme-tcp: fix bogus request completion when failing to send AER
commit 63573807b27e0faf8065a28b1bbe1cbfb23c0130 upstream. AER is not backed by a real request, hence we should not incorrectly assume that when failing to send a nvme command, it is a normal request but rather check if this is an aer and if so complete the aer (similar to the normal completion path). Cc: stable@vger.kernel.org Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
3a669d77e5
commit
57ede0ce65
@ -904,7 +904,15 @@ static inline void nvme_tcp_done_send_req(struct nvme_tcp_queue *queue)
|
||||
|
||||
static void nvme_tcp_fail_request(struct nvme_tcp_request *req)
|
||||
{
|
||||
nvme_tcp_end_request(blk_mq_rq_from_pdu(req), NVME_SC_HOST_PATH_ERROR);
|
||||
if (nvme_tcp_async_req(req)) {
|
||||
union nvme_result res = {};
|
||||
|
||||
nvme_complete_async_event(&req->queue->ctrl->ctrl,
|
||||
cpu_to_le16(NVME_SC_HOST_PATH_ERROR), &res);
|
||||
} else {
|
||||
nvme_tcp_end_request(blk_mq_rq_from_pdu(req),
|
||||
NVME_SC_HOST_PATH_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
static int nvme_tcp_try_send_data(struct nvme_tcp_request *req)
|
||||
|
Loading…
x
Reference in New Issue
Block a user