Re: why is blk-mq requeue foricbly kicking stopped queues? [was: Re: dm-multipath test scripts]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Feb 22 2016 at  8:34pm -0500,
Junichi Nomura <j-nomura@xxxxxxxxxxxxx> wrote:

> On 02/23/16 00:09, Mike Snitzer wrote:
> > I should note that I applied this patch for 4.6:
> > https://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=dm-4.6&id=7db905b3d4294e5db4c2938fb7d0e5ba4bd798d6
> > 
> > (but it was purely a fallout of code-review, and looking at the nvme's
> > use of blk_mq_requeue_request, I did't consider it to be a critical fix
> > or anything)
> 
> The patch above contains following change:
> 
> > +static void dm_mq_requeue_request(struct request *rq)
> > +{
> > +	struct request_queue *q = rq->q;
> > +	unsigned long flags;
> > +
> > +	blk_mq_requeue_request(rq);
> > +	spin_lock_irqsave(q->queue_lock, flags);
> > +	if (!blk_queue_stopped(q))
> > +		blk_mq_kick_requeue_list(q);
> > +	spin_unlock_irqrestore(q->queue_lock, flags);
> > +}
> 
> If you make it conditional to call blk_mq_kick_requeue_list() here,
> I think we have to call the function from start_queue(), too,
> otherwise requeued requests might stay forever in q->requeue_list.

Yes, you're right.  Fixed up and pushed to rebased linux-dm.git 'dm-4.6'
branch:
https://git.kernel.org/cgit/linux/kernel/git/device-mapper/linux-dm.git/commit/?h=dm-4.6&id=818c5f3bef750eb5998b468f84391e4d656b97ed

--
dm-devel mailing list
dm-devel@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/dm-devel



[Index of Archives]     [DM Crypt]     [Fedora Desktop]     [ATA RAID]     [Fedora Marketing]     [Fedora Packaging]     [Fedora SELinux]     [Yosemite Discussion]     [KDE Users]     [Fedora Docs]

  Powered by Linux