diff options
author | Tejun Heo <tj@kernel.org> | 2015-05-28 02:00:02 +0200 |
---|---|---|
committer | Jens Axboe <axboe@fb.com> | 2015-06-02 16:33:34 +0200 |
commit | ad7fa852d3d2816d68a138ebc5bc8967aeb7fd86 (patch) | |
tree | 11c52a605228523e1f0009192ae4f16ed83b5aeb /mm/backing-dev.c | |
parent | blkcg: implement bio_associate_blkcg() (diff) | |
download | linux-ad7fa852d3d2816d68a138ebc5bc8967aeb7fd86.tar.xz linux-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 'mm/backing-dev.c')
0 files changed, 0 insertions, 0 deletions