[dm-devel] [PATCH v4 6/6] dm rq: Avoid that request processing stalls sporadically
Mike Snitzer
snitzer at redhat.com
Tue Apr 11 16:09:58 UTC 2017
On Fri, Apr 07 2017 at 2:16pm -0400,
Bart Van Assche <bart.vanassche at sandisk.com> wrote:
> While running the srp-test software I noticed that request
> processing stalls sporadically at the beginning of a test, namely
> when mkfs is run against a dm-mpath device. Every time when that
> happened the following command was sufficient to resume request
> processing:
>
> echo run >/sys/kernel/debug/block/dm-0/state
>
> This patch avoids that such request processing stalls occur. The
> test I ran is as follows:
>
> while srp-test/run_tests -d -r 30 -t 02-mq; do :; done
>
> Signed-off-by: Bart Van Assche <bart.vanassche at sandisk.com>
> Cc: Mike Snitzer <snitzer at redhat.com>
> Cc: dm-devel at redhat.com
> ---
> drivers/md/dm-rq.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/md/dm-rq.c b/drivers/md/dm-rq.c
> index 6886bf160fb2..d19af1d21f4c 100644
> --- a/drivers/md/dm-rq.c
> +++ b/drivers/md/dm-rq.c
> @@ -755,6 +755,7 @@ static int 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_MQ_RQ_QUEUE_BUSY;
> }
>
> --
> 2.12.0
>
I really appreciate your hard work Bart but this looks like a cheap
hack.
I'm clearly too late to stop this from going in (given Jens got it
merged for -rc6) but: this has no place in dm-mq (or any blk-mq
driver). If it is needed it should be elevated to blk-mq core to
trigger blk_mq_delay_run_hw_queue() when BLK_MQ_RQ_QUEUE_BUSY is
returned from blk_mq_ops' .queue_rq.
If this dm-mq specific commit is justified the case certainly is spelled
out in the commit header.
More information about the dm-devel
mailing list