lkml.org 
[lkml]   [2008]   [Jun]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[-mm][PATCH 8/10] fix shmem page migration incorrectness on memcgroup

    =
    From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>

    mem_cgroup_uncharge() against old page is done after radix-tree-replacement.
    And there were special handling to ingore swap-cache page. But, shmem can
    be swap-cache and file-cache at the same time. Chekcing PageSwapCache() is
    not correct here. Check PageAnon() instead.

    Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Acked-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
    Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>

    ---
    mm/migrate.c | 11 +++++++++--
    1 file changed, 9 insertions(+), 2 deletions(-)

    Index: b/mm/migrate.c
    ===================================================================
    --- a/mm/migrate.c
    +++ b/mm/migrate.c
    @@ -332,7 +332,13 @@ static int migrate_page_move_mapping(str
    __inc_zone_page_state(newpage, NR_FILE_PAGES);

    spin_unlock_irq(&mapping->tree_lock);
    - if (!PageSwapCache(newpage))
    +
    + /*
    + * The page is removed from radix-tree implicitly.
    + * We uncharge it here but swap cache of anonymous page should be
    + * uncharged by mem_cgroup_ucharge_page().
    + */
    + if (!PageAnon(newpage))
    mem_cgroup_uncharge_cache_page(page);

    return 0;
    @@ -381,7 +387,8 @@ static void migrate_page_copy(struct pag
    /*
    * SwapCache is removed implicitly. Uncharge against swapcache
    * should be called after ClearPageSwapCache() because
    - * mem_cgroup_uncharge_page checks the flag.
    + * mem_cgroup_uncharge_page checks the flag. shmem's swap cache
    + * is uncharged before here.
    */
    mem_cgroup_uncharge_page(page);
    }



    \
     
     \ /
      Last update: 2008-06-25 12:11    [W:0.023 / U:119.104 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site