X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=block%2Fbfq-wf2q.c;h=8726ede19eef2c632a8e53d2bc340a7cae832e6e;hb=ab42f35d9cb5ac49b5a2a11f940e74f58f207280;hp=b4fc3e4260b71f91ee8e989ddf9b09b0d7986a13;hpb=2d3e4866dea96b0506395b47bfefb234f2088dac;p=mirror_ubuntu-bionic-kernel.git diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c index b4fc3e4260b7..8726ede19eef 100644 --- a/block/bfq-wf2q.c +++ b/block/bfq-wf2q.c @@ -1114,12 +1114,21 @@ static void bfq_activate_requeue_entity(struct bfq_entity *entity, bool __bfq_deactivate_entity(struct bfq_entity *entity, bool ins_into_idle_tree) { struct bfq_sched_data *sd = entity->sched_data; - struct bfq_service_tree *st = bfq_entity_service_tree(entity); - int is_in_service = entity == sd->in_service_entity; + struct bfq_service_tree *st; + bool is_in_service; if (!entity->on_st) /* entity never activated, or already inactive */ return false; + /* + * If we get here, then entity is active, which implies that + * bfq_group_set_parent has already been invoked for the group + * represented by entity. Therefore, the field + * entity->sched_data has been set, and we can safely use it. + */ + st = bfq_entity_service_tree(entity); + is_in_service = entity == sd->in_service_entity; + if (is_in_service) bfq_calc_finish(entity, entity->service);