[dm-devel] dm-rq queue stalls
Mike Snitzer
snitzer at redhat.com
Wed Jan 17 20:14:17 UTC 2018
On Wed, Jan 17 2018 at 2:45pm -0500,
Bart Van Assche <Bart.VanAssche at wdc.com> wrote:
> On Wed, 2018-01-17 at 14:36 -0500, Mike Snitzer wrote:
> > That tree doesn't have the revert you think it does (because it doesn't have _any_ of the dm-4.16 changes).
> >
> > So there is some other reason for your hang.
>
> Hello Mike,
>
> Please have another look, namely at the following commit:
> https://github.com/bvanassche/linux/commit/cd0b6b9f8779a0b692b1ef1d1f5ba6cb2fd981c5
>
> That contents of that commit is as follows:
>
> Subject: [PATCH] Revert "dm rq: Avoid that request processing stalls sporadically"
>
> This reverts commit 6077c2d706097c00d8f2fed57d3f3c45cd228ee8.
> ---
> drivers/md/dm-rq.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/md/dm-rq.c b/drivers/md/dm-rq.c
> index 85d80b8ccc33..a9e0f6ec62b6 100644
> --- a/drivers/md/dm-rq.c
> +++ b/drivers/md/dm-rq.c
> @@ -773,7 +773,6 @@ static blk_status_t dm_mq_queue_rq(struct blk_mq_hw_ctx *hctx,
> /* Undo dm_start_request() before requeuing */
> rq_end_stats(md, rq);
> rq_completed(md, rq_data_dir(rq), false);
> - blk_mq_delay_run_hw_queue(hctx, 100/*ms*/);
> return BLK_STS_RESOURCE;
> }
>
Fine, the chrome browser on my phone displayed "master" rather than your
other branch.
BUT my broader point stands: you aren't testing the dm-4.16 changes. By
just reverting that commit you're creating a self-fulfilling prophecy
(that you'll see hangs without it).
Fact is you should pull all of dm-4.16 in, see:
https://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm.git/log/?h=dm-4.16
But these dm-4.16 changes are particularly important:
050af08ffb1b dm mpath: return DM_MAPIO_REQUEUE on blk-mq rq allocation failure
459b54019cfe dm mpath: return DM_MAPIO_DELAY_REQUEUE if QUEUE_IO or PG_INIT_REQUIRED
ec3eaf9a6731 dm mpath: don't call blk_mq_delay_run_hw_queue() in case of BLK_STS_RESOURCE
4dd6edd23e7e dm mpath: delay the retry of a request if the target responded as busy
This last one is the commit that _should_ serve as a proper replacement
for the change you manually reverted in your branch.
Please re-test after pulling in dm-4.16 and let us know how things fair.
Thanks!
Mike
More information about the dm-devel
mailing list