From: Keith Busch <kbusch@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Keith Busch <kbusch@meta.com>,
linux-nvme@lists.infradead.org, sagi@grimberg.me,
Jens Axboe <axboe@kernel.dk>
Subject: Re: [PATCHv2] nvme-pci: fix timeout request state check
Date: Tue, 17 Jan 2023 22:52:39 -0700 [thread overview]
Message-ID: <Y8eJJ/9qo9c7jzLT@kbusch-mbp> (raw)
In-Reply-To: <20230118053306.GA24817@lst.de>
On Wed, Jan 18, 2023 at 06:33:06AM +0100, Christoph Hellwig wrote:
> On Tue, Jan 17, 2023 at 09:22:44PM -0800, Keith Busch wrote:
> > From: Keith Busch <kbusch@kernel.org>
> >
> > 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 STARTED.
> >
> > 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.
>
> Hmm. Using a started helper for something that by definition is started
> doesn't really make much sense. I guess the problem here is that
> blk_mq_end_request_batch sets the state to MQ_RQ_IDLE afte calling
> blk_complete_request? Maybe we just need an explicit check for
> MQ_RQ_IDLE here as started seems like the wrong implication here.
We're actually not batching here (no IOB in the timeout context), so we
are either:
a. calling nvme_pci_complete_rq() inline with the cqe
b. racing with smp ipi or softirq
If case (a), we will always see IDLE. If (b), we are racing and may see
either COMPLETED or IDLE, so we have to check that it's not either of
those. Since there's only one other state (STARTED) that was guaranteed
prior to entering the timeout handler, we can just make sure it's not
that one after the poll to know if abort escalation is needed.
next prev parent reply other threads:[~2023-01-18 5:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-18 5:22 [PATCHv2] nvme-pci: fix timeout request state check Keith Busch
2023-01-18 5:33 ` Christoph Hellwig
2023-01-18 5:52 ` Keith Busch [this message]
2023-01-18 7:33 ` Christoph Hellwig
2023-01-18 15:21 ` Keith Busch
2023-01-18 16:35 ` Christoph Hellwig
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Y8eJJ/9qo9c7jzLT@kbusch-mbp \
--to=kbusch@kernel.org \
--cc=axboe@kernel.dk \
--cc=hch@lst.de \
--cc=kbusch@meta.com \
--cc=linux-nvme@lists.infradead.org \
--cc=sagi@grimberg.me \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.