The following patch will move inactive_age from zone to lruvec in order to make workingset detection logic memcg aware. To achieve that we need to be able to call mem_cgroup_page_lruvec() from all the workingset detection related functions. Currently, workingset_eviction() and workingset_refault() meet this requirement, because both of them are always called with the page isolated and locked, which prevents the page from being migrated to another cgroup. However, workingset_activation(), which is called from mark_page_accessed(), does not. To make this function safe to call mem_cgroup_page_lruvec(), this patch moves its invocation to __activate_page() called under the lru_lock. Signed-off-by: Vladimir Davydov <vdavydov@xxxxxxxxxxxxx> --- mm/swap.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/mm/swap.c b/mm/swap.c index db43c9b4891d..f3569c8280be 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -514,6 +514,9 @@ static void __activate_page(struct page *page, struct lruvec *lruvec, __count_vm_event(PGACTIVATE); update_page_reclaim_stat(lruvec, file, 1); + + if (file) + workingset_activation(page); } } @@ -618,8 +621,6 @@ void mark_page_accessed(struct page *page) else __lru_cache_activate_page(page); ClearPageReferenced(page); - if (page_is_file_cache(page)) - workingset_activation(page); } else if (!PageReferenced(page)) { SetPageReferenced(page); } -- 2.1.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>