From dde2c57125ed7870e09a21d010f628ebd6febf74 Mon Sep 17 00:00:00 2001 From: Hugh Dickins Date: Fri, 22 Feb 2013 16:36:05 -0800 Subject: [PATCH] --- yaml --- r: 356628 b: refs/heads/master c: b599cbdf1c2d88eac7caed00854ee4eecb119a6b h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/ksm.c | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/[refs] b/[refs] index ac018c927d6a..a2bf985a36a8 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8fdb3dbf02335d96bf170321381522709ba63a0c +refs/heads/master: b599cbdf1c2d88eac7caed00854ee4eecb119a6b diff --git a/trunk/mm/ksm.c b/trunk/mm/ksm.c index c067e8dbcc79..c059ca1c9356 100644 --- a/trunk/mm/ksm.c +++ b/trunk/mm/ksm.c @@ -1342,16 +1342,6 @@ struct rmap_item *unstable_tree_search_insert(struct rmap_item *rmap_item, return NULL; } - /* - * If tree_page has been migrated to another NUMA node, it - * will be flushed out and put into the right unstable tree - * next time: only merge with it if merge_across_nodes. - */ - if (!ksm_merge_across_nodes && page_to_nid(tree_page) != nid) { - put_page(tree_page); - return NULL; - } - ret = memcmp_pages(page, tree_page); parent = *new; @@ -1361,6 +1351,15 @@ struct rmap_item *unstable_tree_search_insert(struct rmap_item *rmap_item, } else if (ret > 0) { put_page(tree_page); new = &parent->rb_right; + } else if (!ksm_merge_across_nodes && + page_to_nid(tree_page) != nid) { + /* + * If tree_page has been migrated to another NUMA node, + * it will be flushed out and put in the right unstable + * tree next time: only merge with it when across_nodes. + */ + put_page(tree_page); + return NULL; } else { *tree_pagep = tree_page; return tree_rmap_item;