mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
bfq: Track whether bfq_group is still online
commit 09f871868080c33992cd6a9b72a5ca49582578fa upstream. Track whether bfq_group is still online. We cannot rely on blkcg_gq->online because that gets cleared only after all policies are offlined and we need something that gets updated already under bfqd->lock when we are cleaning up our bfq_group to be able to guarantee that when we see online bfq_group, it will stay online while we are holding bfqd->lock lock. CC: [email protected] Tested-by: "yukuai (C)" <[email protected]> Signed-off-by: Jan Kara <[email protected]> Reviewed-by: Christoph Hellwig <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Jens Axboe <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
This commit is contained in:
parent
da9f3025d5
commit
28a8060a0b
2 changed files with 4 additions and 1 deletions
|
|
@ -536,6 +536,7 @@ static void bfq_pd_init(struct blkg_policy_data *pd)
|
|||
*/
|
||||
bfqg->bfqd = bfqd;
|
||||
bfqg->active_entities = 0;
|
||||
bfqg->online = true;
|
||||
bfqg->rq_pos_tree = RB_ROOT;
|
||||
}
|
||||
|
||||
|
|
@ -582,7 +583,6 @@ struct bfq_group *bfq_find_set_group(struct bfq_data *bfqd,
|
|||
struct bfq_entity *entity;
|
||||
|
||||
bfqg = bfq_lookup_bfqg(bfqd, blkcg);
|
||||
|
||||
if (unlikely(!bfqg))
|
||||
return NULL;
|
||||
|
||||
|
|
@ -944,6 +944,7 @@ static void bfq_pd_offline(struct blkg_policy_data *pd)
|
|||
|
||||
put_async_queues:
|
||||
bfq_put_async_queues(bfqd, bfqg);
|
||||
bfqg->online = false;
|
||||
|
||||
spin_unlock_irqrestore(&bfqd->lock, flags);
|
||||
/*
|
||||
|
|
|
|||
Loading…
Reference in a new issue