Commit e63a5730 authored by Ming Lei's avatar Ming Lei Committed by Jens Axboe

blk-cgroup: bypass blkcg_deactivate_policy after destroying

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: default avatarMing Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20231117023527.3188627-4-ming.lei@redhat.comSigned-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 35a99d65
...@@ -577,6 +577,7 @@ static void blkg_destroy_all(struct gendisk *disk) ...@@ -577,6 +577,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);
...@@ -602,6 +603,18 @@ static void blkg_destroy_all(struct gendisk *disk) ...@@ -602,6 +603,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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment