From: axboe@fb.com (Jens Axboe)
Subject: [PATCH 0/4] nvme-blkmq fixes
Date: Mon, 5 Jan 2015 12:30:58 -0700 [thread overview]
Message-ID: <54AAE672.7020503@fb.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1501051451440.4026@localhost.lm.intel.com>
On 01/05/2015 08:17 AM, Keith Busch wrote:
> On Wed, 31 Dec 2014, Jens Axboe wrote:
>> On 12/30/2014 07:31 PM, Keith Busch wrote:
>>> Abandon the whole series... Too many corner cases where this falls
>>> to pieces. I'm running high queue-depth IO with random error injection
>>> that causes requests to get on lists from ctx->rq_list, hctx->dispatch,
>>> and q->requeue_list. No matter what I do from the driver, there is
>>> always a case in either reset or removal where a requests get lost and
>>> blk_cleanup_queue never completes.
>>
>> Back to the drawing board, I'll drop the series. Still off from work
>> here, I'll take a look when I get back soon. I'm surprised it's this
>> difficult, we already went through most of this design/test hash out
>> with scsi-mq.
>>
>> I'll drop this one:
>>
>> NVMe: Freeze queues on shutdown
>>
>> but keep this one:
>>
>> NVMe: Fix double free irq
>>
>> Agree?
>
> Yep, that sounds good. Sorry I rushed out that last email without much
> explanation.
>
> We need the driver to temporarily block tasks allocating new requests but
> let existing requests requeue. Freeze looked good, but unfreeze expects
> the usage count to have been 0, which it's not guaranteed with when we
> let failed requests requeue.
OK, I think that is a concern we can fix. And yes, that was the intended
use case for it originally.
> The only reason I need the freeze/unfreeze exports is for the IOCTL path
> that submits commands outside the block layer. If I can change all those
> usages to be "blk_execute_rq" or something like that, we don't need the
> new exports, and can block requests at a different level, but that brings
> me to the next issue.
That would be one way of doing it, as it effectively gets rid of the
ioctl being an OOB mechanism. But we should be able to make it work
otherwise.
> We also need the driver to temporarily prevent the block layer from
> submitting requests to the driver's hw queues. 'blk_mq_stop_hw_queues'
> looked right, but anyone can restart them at the wrong time by kicking
> the requeue list.
The driver is the only one that should kick the requeue action into
gear, which would start those queues up again. So that should be under
your control already.
--
Jens Axboe
next prev parent reply other threads:[~2015-01-05 19:30 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-20 0:54 [PATCH 0/4] nvme-blkmq fixes Keith Busch
2014-12-20 0:54 ` [PATCH 1/4] blk-mq: Exit queue on alloc failure Keith Busch
2014-12-20 0:54 ` [PATCH 2/4] blk-mq: Export freeze/unfreeze functions Keith Busch
2014-12-20 0:54 ` [PATCH 3/4] NVMe: Fix double free irq Keith Busch
2014-12-22 15:15 ` Matthew Wilcox
2014-12-20 0:54 ` [PATCH 4/4] NVMe: Freeze queues on shutdown Keith Busch
2014-12-20 17:32 ` [PATCH 0/4] nvme-blkmq fixes Jens Axboe
2014-12-20 19:29 ` Jens Axboe
2014-12-22 16:38 ` Keith Busch
2014-12-22 16:47 ` Jens Axboe
2014-12-22 18:17 ` Keith Busch
2014-12-22 18:19 ` Jens Axboe
2014-12-22 20:08 ` Jens Axboe
2014-12-22 21:01 ` Keith Busch
2014-12-23 1:34 ` Keith Busch
2014-12-23 17:49 ` Jens Axboe
2014-12-23 17:54 ` Jens Axboe
2014-12-23 18:09 ` Keith Busch
2014-12-23 21:10 ` Keith Busch
2014-12-23 21:23 ` Keith Busch
2014-12-23 21:24 ` Jens Axboe
2014-12-31 2:31 ` Keith Busch
2014-12-31 16:38 ` Jens Axboe
2015-01-05 15:17 ` Keith Busch
2015-01-05 19:30 ` Jens Axboe [this message]
2015-01-05 20:19 ` Keith Busch
2015-01-05 20:20 ` Jens Axboe
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=54AAE672.7020503@fb.com \
--to=axboe@fb.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 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.