summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2015-05-27 20:00:02 -0400
committerJens Axboe <axboe@fb.com>2015-06-02 08:33:34 -0600
commitad7fa852d3d2816d68a138ebc5bc8967aeb7fd86 (patch)
tree11c52a605228523e1f0009192ae4f16ed83b5aeb /drivers
parent1d933cf096e3aea15f1aec8297657b7a846fab63 (diff)
downloadlwn-ad7fa852d3d2816d68a138ebc5bc8967aeb7fd86.tar.gz
lwn-ad7fa852d3d2816d68a138ebc5bc8967aeb7fd86.zip
memcg: implement mem_cgroup_css_from_page()
Implement mem_cgroup_css_from_page() which returns the cgroup_subsys_state of the memcg associated with a given page on the default hierarchy. This will be used by cgroup writeback support. This function assumes that page->mem_cgroup association doesn't change until the page is released, which is true on the default hierarchy as long as replace_page_cache_page() is not used. As the only user of replace_page_cache_page() is FUSE which won't support cgroup writeback for the time being, this works for now, and replace_page_cache_page() will soon be updated so that the invariant actually holds. Note that the RCU protected page->mem_cgroup access is consistent with other usages across memcg but ultimately incorrect. These unlocked accesses are missing required barriers. page->mem_cgroup should be made an RCU pointer and updated and accessed using RCU operations. v4: Instead of triggering WARN, return the root css on the traditional hierarchies. This makes the function a lot easier to deal with especially as there's no light way to synchronize against hierarchy rebinding. v3: s/mem_cgroup_migrate()/mem_cgroup_css_from_page()/ v2: Trigger WARN if the function is used on the traditional hierarchies and add comment about the assumed invariant. Signed-off-by: Tejun Heo <tj@kernel.org> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz> Signed-off-by: Jens Axboe <axboe@fb.com>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions