From: Christoph Hellwig Date: Wed, 14 Nov 2018 16:02:13 +0000 (+0100) Subject: blk-cgroup: move locking into blkg_destroy_all X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=7fb1763de6f8b4d6e7a69a08a14ce5496500f2c5;p=linux.git blk-cgroup: move locking into blkg_destroy_all Reviewed-by: Hannes Reinecke Signed-off-by: Christoph Hellwig Signed-off-by: Jens Axboe --- diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c index 717ab38a6c676..3ba23b9bfeb90 100644 --- a/block/blk-cgroup.c +++ b/block/blk-cgroup.c @@ -349,8 +349,7 @@ static void blkg_destroy_all(struct request_queue *q) { struct blkcg_gq *blkg, *n; - lockdep_assert_held(q->queue_lock); - + spin_lock_irq(q->queue_lock); list_for_each_entry_safe(blkg, n, &q->blkg_list, q_node) { struct blkcg *blkcg = blkg->blkcg; @@ -360,6 +359,7 @@ static void blkg_destroy_all(struct request_queue *q) } q->root_blkg = NULL; + spin_unlock_irq(q->queue_lock); } /* @@ -1182,9 +1182,7 @@ int blkcg_init_queue(struct request_queue *q) return 0; err_destroy_all: - spin_lock_irq(q->queue_lock); blkg_destroy_all(q); - spin_unlock_irq(q->queue_lock); return ret; err_unlock: spin_unlock_irq(q->queue_lock); @@ -1222,10 +1220,7 @@ void blkcg_drain_queue(struct request_queue *q) */ void blkcg_exit_queue(struct request_queue *q) { - spin_lock_irq(q->queue_lock); blkg_destroy_all(q); - spin_unlock_irq(q->queue_lock); - blk_throtl_exit(q); }