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. -- Jun'ichi Nomura, NEC Corporation -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel