From: ming.lei@redhat.com (Ming Lei)
Subject: [PATCH 3/6] nvme: Move all IO out of controller reset
Date: Mon, 21 May 2018 23:34:27 +0800 [thread overview]
Message-ID: <20180521153425.GC19099@ming.t460p> (raw)
In-Reply-To: <20180521150331.GI5528@localhost.localdomain>
On Mon, May 21, 2018@09:03:31AM -0600, Keith Busch wrote:
> On Mon, May 21, 2018@10:58:51PM +0800, Ming Lei wrote:
> > On Mon, May 21, 2018@08:22:19AM -0600, Keith Busch wrote:
> > > On Sat, May 19, 2018@07:03:58AM +0800, Ming Lei wrote:
> > > > On Fri, May 18, 2018@10:38:20AM -0600, Keith Busch wrote:
> > > > > +
> > > > > + if (unfreeze)
> > > > > + nvme_wait_freeze(&dev->ctrl);
> > > > > +
> > > >
> > > > timeout may comes just before&during blk_mq_update_nr_hw_queues() or
> > > > the above nvme_wait_freeze(), then both two may hang forever.
> > >
> > > Why would it hang forever? The scan_work doesn't stop a timeout from
> > > triggering a reset to reclaim requests necessary to complete a freeze.
> >
> > nvme_dev_disable() will quiesce queues, then nvme_wait_freeze() or
> > blk_mq_update_nr_hw_queues() may hang forever.
>
> nvme_dev_disable is just the first part of the timeout sequence. You
> have to follow it through to the reset_work that either restarts or
> kills the queues.
nvme_dev_disable() quiesces queues first before killing queues.
If queues are quiesced during or before nvme_wait_freeze() is run
from the 2nd part of reset, the 2nd part can't move on, and IO hang
is caused. Finally no reset can be scheduled at all.
Thanks,
Ming
next prev parent reply other threads:[~2018-05-21 15:34 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-18 16:38 [PATCH 1/6] nvme: Sync request queues on reset Keith Busch
2018-05-18 16:38 ` [PATCH 2/6] nvme-pci: Fix queue freeze criteria " Keith Busch
2018-05-18 16:38 ` [PATCH 3/6] nvme: Move all IO out of controller reset Keith Busch
2018-05-18 23:03 ` Ming Lei
2018-05-21 14:22 ` Keith Busch
2018-05-21 14:58 ` Ming Lei
2018-05-21 15:03 ` Keith Busch
2018-05-21 15:34 ` Ming Lei [this message]
2018-05-21 15:44 ` Keith Busch
2018-05-21 16:04 ` Ming Lei
2018-05-21 16:23 ` Keith Busch
2018-05-22 1:46 ` Ming Lei
2018-05-22 14:03 ` Keith Busch
2018-05-18 16:38 ` [PATCH 4/6] nvme: Allow reset from CONNECTING state Keith Busch
2018-05-18 16:38 ` [PATCH 5/6] nvme-pci: Attempt reset retry for IO failures Keith Busch
2018-05-18 16:38 ` [PATCH 6/6] nvme-pci: Rate limit the nvme timeout warnings Keith Busch
2018-05-18 22:32 ` [PATCH 1/6] nvme: Sync request queues on reset Ming Lei
2018-05-18 23:44 ` Keith Busch
2018-05-19 0:01 ` Ming Lei
2018-05-21 14:04 ` Keith Busch
2018-05-21 15:25 ` Ming Lei
2018-05-21 15:59 ` Keith Busch
2018-05-21 16:08 ` Ming Lei
2018-05-21 16:25 ` Keith Busch
2018-05-22 1:56 ` Ming Lei
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=20180521153425.GC19099@ming.t460p \
--to=ming.lei@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).