Re: linux-next: Tree for Aug 1

From: Ming Lei
Date: Thu Aug 02 2018 - 12:50:58 EST


On Fri, Aug 3, 2018 at 12:40 AM, Bart Van Assche <Bart.VanAssche@xxxxxxx> wrote:
> On Fri, 2018-08-03 at 00:27 +0800, Ming Lei wrote:
>> This issue can be fixed by reverting d250bf4e776ff09d5 ("blk-mq: only iterate over
>> inflight requests in blk_mq_tagset_busy_iter").
>>
>> This patch looks wrong, because 'blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT'
>> isn't completely same with 'blk_mq_request_started(req)'.
>
> Please test the following change instead of reverting the commit mentioned
> above:
>
> diff --git a/block/blk-mq-tag.c b/block/blk-mq-tag.c
> index 09b2ee6694fb..25a0583d8b4c 100644
> --- a/block/blk-mq-tag.c
> +++ b/block/blk-mq-tag.c
> @@ -271,7 +271,7 @@ static bool bt_tags_iter(struct sbitmap *bitmap, unsigned int bitnr, void *data)
> * test and set the bit before assining ->rqs[].
> */
> rq = tags->rqs[bitnr];
> - if (rq && blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT)
> + if (rq && blk_mq_rq_state(rq) != MQ_RQ_IDLE)
> iter_data->fn(rq, iter_data->data, reserved);
>
> return true;
>

I just sent out a similar patch on list, but use blk_mq_request_started()
instead.

https://marc.info/?l=linux-scsi&m=153322823307754&w=2

Thanks,
Ming Lei