Message ID | 55642E11.6010500@ce.jp.nec.com (mailing list archive) |
---|---|
State | Accepted, archived |
Delegated to: | Mike Snitzer |
Headers | show |
On Tue, May 26 2015 at 4:25P -0400, Junichi Nomura <j-nomura@ce.jp.nec.com> 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@ce.jp.nec.com> > > 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@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel
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); }
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@ce.jp.nec.com> -- dm-devel mailing list dm-devel@redhat.com https://www.redhat.com/mailman/listinfo/dm-devel