blk-cgroup: bypass blkcg_deactivate_policy after destroying
[ Upstream commit e63a57303599b17290cd8bc48e6f20b24289a8bc ] blkcg_deactivate_policy() can be called after blkg_destroy_all() returns, and it isn't necessary since blkg_destroy_all has covered policy deactivation. Signed-off-by: Ming Lei <ming.lei@redhat.com> Link: https://lore.kernel.org/r/20231117023527.3188627-4-ming.lei@redhat.com Signed-off-by: Jens Axboe <axboe@kernel.dk> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
e52d0eb48e
commit
94070fd668
|
@ -462,6 +462,7 @@ static void blkg_destroy_all(struct gendisk *disk)
|
||||||
struct request_queue *q = disk->queue;
|
struct request_queue *q = disk->queue;
|
||||||
struct blkcg_gq *blkg, *n;
|
struct blkcg_gq *blkg, *n;
|
||||||
int count = BLKG_DESTROY_BATCH_SIZE;
|
int count = BLKG_DESTROY_BATCH_SIZE;
|
||||||
|
int i;
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
spin_lock_irq(&q->queue_lock);
|
spin_lock_irq(&q->queue_lock);
|
||||||
|
@ -487,6 +488,18 @@ static void blkg_destroy_all(struct gendisk *disk)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mark policy deactivated since policy offline has been done, and
|
||||||
|
* the free is scheduled, so future blkcg_deactivate_policy() can
|
||||||
|
* be bypassed
|
||||||
|
*/
|
||||||
|
for (i = 0; i < BLKCG_MAX_POLS; i++) {
|
||||||
|
struct blkcg_policy *pol = blkcg_policy[i];
|
||||||
|
|
||||||
|
if (pol)
|
||||||
|
__clear_bit(pol->plid, q->blkcg_pols);
|
||||||
|
}
|
||||||
|
|
||||||
q->root_blkg = NULL;
|
q->root_blkg = NULL;
|
||||||
spin_unlock_irq(&q->queue_lock);
|
spin_unlock_irq(&q->queue_lock);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue