On Tue, May 26 2015 at 4:25P -0400, Junichi Nomura <j-nomura@xxxxxxxxxxxxx> wrote: > Without kicking queue, requeued request may stay forever in > the queue if there are no other I/O activities to the device. > > The original error had been in v2.6.39 with commit 7eaceaccab5f > ("block: remove per-queue plugging"), which replaced conditional > plugging by periodic runqueue. > > Commit 9d1deb83d489 in v4.1-rc1 removed the periodic runqueue > and the problem started to manifest. > > Fixes: 9d1deb83d489 ("dm: don't schedule delayed run of the queue if nothing to do") > Signed-off-by: Jun'ichi Nomura <j-nomura@xxxxxxxxxxxxx> > > diff --git a/drivers/md/dm.c b/drivers/md/dm.c > index a930b72..0bf79a0 100644 > --- a/drivers/md/dm.c > +++ b/drivers/md/dm.c > @@ -1164,6 +1164,7 @@ static void old_requeue_request(struct request *rq) > > spin_lock_irqsave(q->queue_lock, flags); > blk_requeue_request(q, rq); > + blk_run_queue_async(q); > spin_unlock_irqrestore(q->queue_lock, flags); > } Thanks Junichi. The new blk-mq path did kick the queue, but obviously the old request_fn path didn't. I'll get this queued for 4.1. Mike -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel