lkml.org 
[lkml]   [2009]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 19/24] memcg: rename and export try_get_mem_cgroup_from_page()
    So that the hwpoison injector can get mem_cgroup for arbitrary page
    and thus know whether it is owned by some mem_cgroup task(s).

    CC: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
    CC: Hugh Dickins <hugh.dickins@tiscali.co.uk>
    CC: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    CC: Balbir Singh <balbir@linux.vnet.ibm.com>
    Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
    ---
    include/linux/memcontrol.h | 6 ++++++
    mm/memcontrol.c | 11 ++++-------
    2 files changed, 10 insertions(+), 7 deletions(-)

    --- linux-mm.orig/mm/memcontrol.c 2009-11-02 10:18:42.000000000 +0800
    +++ linux-mm/mm/memcontrol.c 2009-11-02 10:26:21.000000000 +0800
    @@ -1379,25 +1379,22 @@ static struct mem_cgroup *mem_cgroup_loo
    return container_of(css, struct mem_cgroup, css);
    }

    -static struct mem_cgroup *try_get_mem_cgroup_from_swapcache(struct page *page)
    +struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page)
    {
    - struct mem_cgroup *mem;
    + struct mem_cgroup *mem = NULL;
    struct page_cgroup *pc;
    unsigned short id;
    swp_entry_t ent;

    VM_BUG_ON(!PageLocked(page));

    - if (!PageSwapCache(page))
    - return NULL;
    -
    pc = lookup_page_cgroup(page);
    lock_page_cgroup(pc);
    if (PageCgroupUsed(pc)) {
    mem = pc->mem_cgroup;
    if (mem && !css_tryget(&mem->css))
    mem = NULL;
    - } else {
    + } else if (PageSwapCache(page)) {
    ent.val = page_private(page);
    id = lookup_swap_cgroup(ent);
    rcu_read_lock();
    @@ -1742,7 +1739,7 @@ int mem_cgroup_try_charge_swapin(struct
    */
    if (!PageSwapCache(page))
    return 0;
    - mem = try_get_mem_cgroup_from_swapcache(page);
    + mem = try_get_mem_cgroup_from_page(page);
    if (!mem)
    goto charge_cur_mm;
    *ptr = mem;
    --- linux-mm.orig/include/linux/memcontrol.h 2009-11-02 10:18:42.000000000 +0800
    +++ linux-mm/include/linux/memcontrol.h 2009-11-02 10:26:21.000000000 +0800
    @@ -68,6 +68,7 @@ extern unsigned long mem_cgroup_isolate_
    extern void mem_cgroup_out_of_memory(struct mem_cgroup *mem, gfp_t gfp_mask);
    int task_in_mem_cgroup(struct task_struct *task, const struct mem_cgroup *mem);

    +extern struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page);
    extern struct mem_cgroup *mem_cgroup_from_task(struct task_struct *p);

    static inline
    @@ -189,6 +190,11 @@ mem_cgroup_move_lists(struct page *page,
    {
    }

    +static inline struct mem_cgroup *try_get_mem_cgroup_from_page(struct page *page)
    +{
    + return NULL;
    +}
    +
    static inline int mm_match_cgroup(struct mm_struct *mm, struct mem_cgroup *mem)
    {
    return 1;



    \
     
     \ /
      Last update: 2009-12-02 05:45    [W:0.030 / U:0.128 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site