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 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
--
To unsubscribe from this list: send the line "unsubscribe linux-block" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux RAID]     [Linux SCSI]     [Linux ATA RAID]     [IDE]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Device Mapper]

  Powered by Linux