On 08/09/2017 01:14 AM, Omar Sandoval wrote: > On Tue, Aug 08, 2017 at 05:47:15PM -0600, Jens Axboe wrote: >> On 08/08/2017 04:48 PM, Omar Sandoval wrote: >>> On Fri, Aug 04, 2017 at 09:04:21AM -0600, Jens Axboe wrote: >>>> Modify blk_mq_in_flight() to count both a partition and root at >>>> the same time. Then we only have to call it once, instead of >>>> potentially looping the tags twice. >>> >>> Reviewed-by: Omar Sandoval <osandov@xxxxxx> >>> >>> One comment below. >>> >>>> Signed-off-by: Jens Axboe <axboe@xxxxxxxxx> >>> >>> [snip] >>> >>>> diff --git a/block/blk-mq.c b/block/blk-mq.c >>>> index fe1aa1f5f069..410ed246bc9b 100644 >>>> --- a/block/blk-mq.c >>>> +++ b/block/blk-mq.c >>>> @@ -98,11 +98,13 @@ static void blk_mq_check_inflight(struct blk_mq_hw_ctx *hctx, >>>> return; >>>> >>>> /* >>>> - * Count as inflight if it either matches the partition we asked >>>> - * for, or if it's the root >>>> + * Count as inflight if it matches the partition, count separately >>>> + * (but all) if we got asked for the root >>>> */ >>>> - if (rq->part == mi->part || mi->part->partno) >>>> + if (rq->part == mi->part) >>>> mi->inflight[0]++; >>> >>> Similar concern as with patch 3, why special case the part0 case below? >> >> Not sure I follow, both are initialized for this case. Or do you mean >> the increment? > > Yeah I mean the increment. If I'm reading this right, for the !part0 > case, inflight[0] is the count of in-flight requests for the partition > and inflight[1] is the count of in-flight requests for the whole device. > For the part0 case, inflight[0] is the count of in-flight requests for > the root device and inflight[1] is always 0. Can we make inflight[1] the > same in the part0 and !part0 cases? Not sure that would change much. [0] is indeed the exact partition. That's always the case. [1] is always the root, except if [0] is. We just don't want to count it twice. So I'd argue they are the same :-) -- Jens Axboe