Hello, any comment? Is this indeed a BUG or just a deliberate design? -- Thanks, Jeffle On 11/26/20 5:48 PM, Jeffle Xu wrote: > The inflight of partition 0 doesn't include inflight IOs to all > sub-partitions, since currently mq calculates inflight of specific > partition by simply camparing the value of the partition pointer. > > Thus the following case is possible: > > $ cat /sys/block/vda/inflight > 0 0 > $ cat /sys/block/vda/vda1/inflight > 0 128 > > Partition 0 should be specially handled since it represents the whole > disk. > > Signed-off-by: Jeffle Xu <jefflexu@xxxxxxxxxxxxxxxxx> > --- > block/blk-mq.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/block/blk-mq.c b/block/blk-mq.c > index 55bcee5dc032..04b6b4d21ce6 100644 > --- a/block/blk-mq.c > +++ b/block/blk-mq.c > @@ -105,7 +105,8 @@ static bool blk_mq_check_inflight(struct blk_mq_hw_ctx *hctx, > { > struct mq_inflight *mi = priv; > > - if (rq->part == mi->part && blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT) > + if ((!mi->part->partno || rq->part == mi->part) && > + blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT) > mi->inflight[rq_data_dir(rq)]++; > > return true; >