Patch "nvme-pci: fix timeout request state check" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    nvme-pci: fix timeout request state check

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     nvme-pci-fix-timeout-request-state-check.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit efe5f3d989873a8c64f6a928928acdd8dbb7b876
Author: Keith Busch <kbusch@xxxxxxxxxx>
Date:   Wed Jan 18 08:44:16 2023 -0800

    nvme-pci: fix timeout request state check
    
    [ Upstream commit 1c5842085851f786eba24a39ecd02650ad892064 ]
    
    Polling the completion can progress the request state to IDLE, either
    inline with the completion, or through softirq. Either way, the state
    may not be COMPLETED, so don't check for that. We only care if the state
    isn't IN_FLIGHT.
    
    This is fixing an issue where the driver aborts an IO that we just
    completed. Seeing the "aborting" message instead of "polled" is very
    misleading as to where the timeout problem resides.
    
    Fixes: bf392a5dc02a9b ("nvme-pci: Remove tag from process cq")
    Signed-off-by: Keith Busch <kbusch@xxxxxxxxxx>
    Signed-off-by: Christoph Hellwig <hch@xxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index 0165e65cf548..00552cd02d73 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1280,7 +1280,7 @@ static enum blk_eh_timer_return nvme_timeout(struct request *req, bool reserved)
 	else
 		nvme_poll_irqdisable(nvmeq);
 
-	if (blk_mq_request_completed(req)) {
+	if (blk_mq_rq_state(req) != MQ_RQ_IN_FLIGHT) {
 		dev_warn(dev->ctrl.device,
 			 "I/O %d QID %d timeout, completion polled\n",
 			 req->tag, nvmeq->qid);



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux