From: jianchao.w.wang@oracle.com (jianchao.wang)
Subject: [PATCH 2/6] nvme-pci: fix the freeze and quiesce for shutdown and reset case
Date: Fri, 9 Feb 2018 09:41:59 +0800 [thread overview]
Message-ID: <bdbda3ee-dec3-a2d9-df3c-391cd46973e4@oracle.com> (raw)
In-Reply-To: <20180208151508.GA4797@localhost.localdomain>
Hi Keith
Thanks for your precious time and kindly response.
On 02/08/2018 11:15 PM, Keith Busch wrote:
> On Thu, Feb 08, 2018@10:17:00PM +0800, jianchao.wang wrote:
>> There is a dangerous scenario which caused by nvme_wait_freeze in nvme_reset_work.
>> please consider it.
>>
>> nvme_reset_work
>> -> nvme_start_queues
>> -> nvme_wait_freeze
>>
>> if the controller no response, we have to rely on the timeout path.
>> there are issues below:
>> nvme_dev_disable need to be invoked.
>> nvme_dev_disable will quiesce queues, cancel and requeue and outstanding requests.
>> nvme_reset_work will hang at nvme_wait_freeze
>
> We used to not requeue timed out commands, so that wasn't a problem
> before. Oh well, I'll take a look.
>
Yes, we indeed don't requeue the timed out commands, but nvme_dev_disable will requeue the other
outstanding requests and quiesce the request queues, this will block the nvme_reset_work->nvme_wati_freeze
to move forward.
As I shared in last email, can we use(or abuse?) blk_set_preempt_only to gate the new bios on generic_make_request ?
Freezing queues is good, but wait_freeze in reset_work is a devil.
Many thanks
Jianchao
next prev parent reply other threads:[~2018-02-09 1:41 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-02 7:00 [PATCH 0/6]nvme-pci: fixes on nvme_timeout and nvme_dev_disable Jianchao Wang
2018-02-02 7:00 ` [PATCH 1/6] nvme-pci: move clearing host mem behind stopping queues Jianchao Wang
2018-02-02 18:46 ` Keith Busch
2018-02-05 2:30 ` jianchao.wang
2018-02-02 7:00 ` [PATCH 2/6] nvme-pci: fix the freeze and quiesce for shutdown and reset case Jianchao Wang
2018-02-02 18:24 ` Keith Busch
2018-02-05 2:26 ` jianchao.wang
2018-02-05 15:13 ` Keith Busch
2018-02-06 1:46 ` jianchao.wang
2018-02-06 15:13 ` Keith Busch
2018-02-07 2:03 ` jianchao.wang
2018-02-07 2:13 ` jianchao.wang
2018-02-07 16:13 ` Keith Busch
2018-02-08 1:40 ` jianchao.wang
2018-02-08 14:17 ` jianchao.wang
2018-02-08 15:15 ` Keith Busch
2018-02-09 1:41 ` jianchao.wang [this message]
2018-02-02 7:00 ` [PATCH 3/6] blk-mq: make blk_mq_rq_update_aborted_gstate a external interface Jianchao Wang
2018-02-02 7:00 ` [PATCH 4/6] nvme-pci: break up nvme_timeout and nvme_dev_disable Jianchao Wang
2018-02-02 18:31 ` Keith Busch
2018-02-05 2:22 ` jianchao.wang
2018-02-02 7:00 ` [PATCH 5/6] nvme-pci: discard wait timeout when delete cq/sq Jianchao Wang
2018-02-02 7:00 ` [PATCH 6/6] nvme-pci: suspend queues based on online_queues Jianchao Wang
-- strict thread matches above, loose matches on Subject: below --
2018-02-02 6:54 No subject Jianchao Wang
2018-02-02 6:54 ` [PATCH 2/6] nvme-pci: fix the freeze and quiesce for shutdown and reset case Jianchao Wang
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=bdbda3ee-dec3-a2d9-df3c-391cd46973e4@oracle.com \
--to=jianchao.w.wang@oracle.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