From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mike Snitzer Subject: Re: [PATCH for 4.1-rc] dm: run queue on re-queue Date: Tue, 26 May 2015 09:09:17 -0400 Message-ID: <20150526130916.GB16369@redhat.com> References: <55642E11.6010500@ce.jp.nec.com> Reply-To: device-mapper development Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <55642E11.6010500@ce.jp.nec.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dm-devel-bounces@redhat.com Errors-To: dm-devel-bounces@redhat.com To: Junichi Nomura Cc: Jens Axboe , device-mapper development List-Id: dm-devel.ids On Tue, May 26 2015 at 4:25P -0400, Junichi Nomura 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 > > 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