Yu Kuai <yukuai1@xxxxxxxxxxxxxxx> 于2022年11月14日周一 11:33写道: > > Hi, > > 在 2022/11/10 19:26, Yuwei Guan 写道: > > The 'bfqd->num_groups_with_pending_reqs' is used when > > CONFIG_BFQ_GROUP_IOSCHED is enabled, so let the variables and processes > > take effect when ONFIG_BFQ_GROUP_IOSCHED is enabled. > > > > This patch looks good to me, fell free to add: > Reviewed-by: Yu Kuai <yukuai3@xxxxxxxxxx> > > BTW, this patch need to be reviewed by Jan or Paolo before it can be > applied. > Hi Jan, Could you help to review this patch. Thanks. > Thanks, > Kuai > > > Cc: Yu Kuai <yukuai3@xxxxxxxxxx> > > Signed-off-by: Yuwei Guan <Yuwei.Guan@xxxxxxxxxxxxx> > > --- > > block/bfq-iosched.c | 2 ++ > > block/bfq-iosched.h | 4 ++++ > > block/bfq-wf2q.c | 8 ++++---- > > 3 files changed, 10 insertions(+), 4 deletions(-) > > > > diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c > > index 2381cf220ba2..5f54091e7fe9 100644 > > --- a/block/bfq-iosched.c > > +++ b/block/bfq-iosched.c > > @@ -7051,7 +7051,9 @@ static int bfq_init_queue(struct request_queue *q, struct elevator_type *e) > > bfqd->idle_slice_timer.function = bfq_idle_slice_timer; > > > > bfqd->queue_weights_tree = RB_ROOT_CACHED; > > +#ifdef CONFIG_BFQ_GROUP_IOSCHED > > bfqd->num_groups_with_pending_reqs = 0; > > +#endif > > > > INIT_LIST_HEAD(&bfqd->active_list); > > INIT_LIST_HEAD(&bfqd->idle_list); > > diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h > > index 9fa89577322d..41aa151ccc22 100644 > > --- a/block/bfq-iosched.h > > +++ b/block/bfq-iosched.h > > @@ -197,8 +197,10 @@ struct bfq_entity { > > /* flag, set to request a weight, ioprio or ioprio_class change */ > > int prio_changed; > > > > +#ifdef CONFIG_BFQ_GROUP_IOSCHED > > /* flag, set if the entity is counted in groups_with_pending_reqs */ > > bool in_groups_with_pending_reqs; > > +#endif > > > > /* last child queue of entity created (for non-leaf entities) */ > > struct bfq_queue *last_bfqq_created; > > @@ -491,6 +493,7 @@ struct bfq_data { > > */ > > struct rb_root_cached queue_weights_tree; > > > > +#ifdef CONFIG_BFQ_GROUP_IOSCHED > > /* > > * Number of groups with at least one process that > > * has at least one request waiting for completion. Note that > > @@ -538,6 +541,7 @@ struct bfq_data { > > * with no request waiting for completion. > > */ > > unsigned int num_groups_with_pending_reqs; > > +#endif > > > > /* > > * Per-class (RT, BE, IDLE) number of bfq_queues containing > > diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c > > index b02b53658ed4..ea4c3d757fdd 100644 > > --- a/block/bfq-wf2q.c > > +++ b/block/bfq-wf2q.c > > @@ -1612,28 +1612,28 @@ void bfq_requeue_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq, > > > > void bfq_add_bfqq_in_groups_with_pending_reqs(struct bfq_queue *bfqq) > > { > > +#ifdef CONFIG_BFQ_GROUP_IOSCHED > > struct bfq_entity *entity = &bfqq->entity; > > > > if (!entity->in_groups_with_pending_reqs) { > > entity->in_groups_with_pending_reqs = true; > > -#ifdef CONFIG_BFQ_GROUP_IOSCHED > > if (!(bfqq_group(bfqq)->num_queues_with_pending_reqs++)) > > bfqq->bfqd->num_groups_with_pending_reqs++; > > -#endif > > } > > +#endif > > } > > > > void bfq_del_bfqq_in_groups_with_pending_reqs(struct bfq_queue *bfqq) > > { > > +#ifdef CONFIG_BFQ_GROUP_IOSCHED > > struct bfq_entity *entity = &bfqq->entity; > > > > if (entity->in_groups_with_pending_reqs) { > > entity->in_groups_with_pending_reqs = false; > > -#ifdef CONFIG_BFQ_GROUP_IOSCHED > > if (!(--bfqq_group(bfqq)->num_queues_with_pending_reqs)) > > bfqq->bfqd->num_groups_with_pending_reqs--; > > -#endif > > } > > +#endif > > } > > > > /* > > >