X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=block%2Fbfq-wf2q.c;h=8a1c65981c362d9296cc89f68cc6c162be6dabd7;hb=a55264933f12c2fdc28a66841c4724021e8c1caf;hp=e495d3f9b4b0a4a1c30375158755472260494597;hpb=2391f0b4808e3d5af348324d69f5f45c56a26836;p=mirror_ubuntu-bionic-kernel.git diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c index e495d3f9b4b0..8a1c65981c36 100644 --- a/block/bfq-wf2q.c +++ b/block/bfq-wf2q.c @@ -1171,10 +1171,17 @@ bool __bfq_deactivate_entity(struct bfq_entity *entity, bool ins_into_idle_tree) st = bfq_entity_service_tree(entity); is_in_service = entity == sd->in_service_entity; - if (is_in_service) { - bfq_calc_finish(entity, entity->service); + bfq_calc_finish(entity, entity->service); + + if (is_in_service) sd->in_service_entity = NULL; - } + else + /* + * Non in-service entity: nobody will take care of + * resetting its service counter on expiration. Do it + * now. + */ + entity->service = 0; if (entity->tree == &st->active) bfq_active_extract(st, entity);