Re: [PATCH RFC 8/9] block, bfq: move forward __bfq_weights_tree_remove()

From: Paolo Valente
Date: Fri Dec 10 2021 - 05:00:53 EST




> Il giorno 27 nov 2021, alle ore 11:11, Yu Kuai <yukuai3@xxxxxxxxxx> ha scritto:
>
> Prepare to decrease 'num_groups_with_pending_reqs' earlier.
>
> Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx>
> ---
> block/bfq-iosched.c | 13 +++++--------
> 1 file changed, 5 insertions(+), 8 deletions(-)
>
> diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
> index e3c31db4bffb..4239b3996e23 100644
> --- a/block/bfq-iosched.c
> +++ b/block/bfq-iosched.c
> @@ -882,6 +882,10 @@ void bfq_weights_tree_remove(struct bfq_data *bfqd,
> {
> struct bfq_entity *entity = bfqq->entity.parent;
>
> + bfqq->ref++;
> + __bfq_weights_tree_remove(bfqd, bfqq,
> + &bfqd->queue_weights_tree);
> +
> for_each_entity(entity) {
> struct bfq_sched_data *sd = entity->my_sched_data;
>
> @@ -916,14 +920,7 @@ void bfq_weights_tree_remove(struct bfq_data *bfqd,
> }
> }
>
> - /*
> - * Next function is invoked last, because it causes bfqq to be
> - * freed if the following holds: bfqq is not in service and
> - * has no dispatched request. DO NOT use bfqq after the next
> - * function invocation.
> - */
> - __bfq_weights_tree_remove(bfqd, bfqq,
> - &bfqd->queue_weights_tree);
> + bfq_put_queue(bfqq);
> }
>

why it is not dangerous any longer to invoke __bfq_weights_tree_remove earlier, and the comment can be removed?

Paolo

> /*
> --
> 2.31.1
>