summaryrefslogtreecommitdiff
path: root/block/blk-cgroup.c
diff options
context:
space:
mode:
authorJiang Biao <jiang.biao2@zte.com.cn>2018-04-18 17:37:18 +0300
committerJens Axboe <axboe@kernel.dk>2018-04-18 17:37:18 +0300
commit946b81da114b8ba5c74bb01e57c0c6eca2bdc801 (patch)
tree5f4adb9a9a46eaee2c142dfc7f76d60abaea07da /block/blk-cgroup.c
parent0ce9144471de9ee09306ca0127e7cd27521ccc3f (diff)
downloadlinux-946b81da114b8ba5c74bb01e57c0c6eca2bdc801.tar.xz
blkcg: don't hold blkcg lock when deactivating policy
As described in the comment of blkcg_activate_policy(), *Update of each blkg is protected by both queue and blkcg locks so that holding either lock and testing blkcg_policy_enabled() is always enough for dereferencing policy data.* with queue lock held, there is no need to hold blkcg lock in blkcg_deactivate_policy(). Similar case is in blkcg_activate_policy(), which has removed holding of blkcg lock in commit 4c55f4f9ad3001ac1fefdd8d8ca7641d18558e23. Signed-off-by: Jiang Biao <jiang.biao2@zte.com.cn> Signed-off-by: Wen Yang <wen.yang99@zte.com.cn> CC: Tejun Heo <tj@kernel.org> Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'block/blk-cgroup.c')
-rw-r--r--block/blk-cgroup.c5
1 files changed, 0 insertions, 5 deletions
diff --git a/block/blk-cgroup.c b/block/blk-cgroup.c
index 1c16694ae145..21bc449d01c0 100644
--- a/block/blk-cgroup.c
+++ b/block/blk-cgroup.c
@@ -1410,9 +1410,6 @@ void blkcg_deactivate_policy(struct request_queue *q,
__clear_bit(pol->plid, q->blkcg_pols);
list_for_each_entry(blkg, &q->blkg_list, q_node) {
- /* grab blkcg lock too while removing @pd from @blkg */
- spin_lock(&blkg->blkcg->lock);
-
if (blkg->pd[pol->plid]) {
if (!blkg->pd[pol->plid]->offline &&
pol->pd_offline_fn) {
@@ -1422,8 +1419,6 @@ void blkcg_deactivate_policy(struct request_queue *q,
pol->pd_free_fn(blkg->pd[pol->plid]);
blkg->pd[pol->plid] = NULL;
}
-
- spin_unlock(&blkg->blkcg->lock);
}
spin_unlock_irq(q->queue_lock);