Explorar o código

cgroup, memcg, writeback: drop spurious rcu locking around mem_cgroup_css_from_page()

In earlier versions, mem_cgroup_css_from_page() could return non-root
css on a legacy hierarchy which can go away and required rcu locking;
however, the eventual version simply returns the root cgroup if memcg is
on a legacy hierarchy and thus doesn't need rcu locking around or in it.
Remove spurious rcu lockings.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Vladimir Davydov <vdavydov@virtuozzo.com>
Cc: Jens Axboe <axboe@kernel.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Tejun Heo %!s(int64=9) %!d(string=hai) anos
pai
achega
654a0dd095
Modificáronse 2 ficheiros con 0 adicións e 5 borrados
  1. 0 2
      fs/fs-writeback.c
  2. 0 3
      mm/memcontrol.c

+ 0 - 2
fs/fs-writeback.c

@@ -677,9 +677,7 @@ void wbc_account_io(struct writeback_control *wbc, struct page *page,
 	if (!wbc->wb)
 	if (!wbc->wb)
 		return;
 		return;
 
 
-	rcu_read_lock();
 	id = mem_cgroup_css_from_page(page)->id;
 	id = mem_cgroup_css_from_page(page)->id;
-	rcu_read_unlock();
 
 
 	if (id == wbc->wb_id) {
 	if (id == wbc->wb_id) {
 		wbc->wb_bytes += bytes;
 		wbc->wb_bytes += bytes;

+ 0 - 3
mm/memcontrol.c

@@ -382,14 +382,11 @@ struct cgroup_subsys_state *mem_cgroup_css_from_page(struct page *page)
 {
 {
 	struct mem_cgroup *memcg;
 	struct mem_cgroup *memcg;
 
 
-	rcu_read_lock();
-
 	memcg = page->mem_cgroup;
 	memcg = page->mem_cgroup;
 
 
 	if (!memcg || !cgroup_subsys_on_dfl(memory_cgrp_subsys))
 	if (!memcg || !cgroup_subsys_on_dfl(memory_cgrp_subsys))
 		memcg = root_mem_cgroup;
 		memcg = root_mem_cgroup;
 
 
-	rcu_read_unlock();
 	return &memcg->css;
 	return &memcg->css;
 }
 }