diff for duplicates of <20120919235156.GC13234@bbox> diff --git a/a/1.txt b/N1/1.txt index cf3422a..b700883 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -76,3 +76,73 @@ On Wed, Sep 19, 2012 at 02:28:10PM -0400, Johannes Weiner wrote: > Here it goes. + +>From c2c21b551811e034eb0ede6806e0314b201d7e5b Mon Sep 17 00:00:00 2001 +From: Minchan Kim <minchan@kernel.org> +Date: Thu, 20 Sep 2012 08:39:52 +0900 +Subject: [PATCH] mm: revert 0def08e3, mm/mempolicy.c: check return code of + check_range + +This patch reverts 0def08e3 because check_range can't fail in +migrate_to_node with considering current usecases. + +Quote from Johannes +" +I think it makes sense to revert. Not because of the semantics, but I +just don't see how check_range() could even fail for this callsite: + +1. we pass mm->mmap->vm_start in there, so we should not fail due to + find_vma() + +2. we pass MPOL_MF_DISCONTIG_OK, so the discontig checks do not apply + and so can not fail + +3. we pass MPOL_MF_MOVE | MPOL_MF_MOVE_ALL, the page table loops will + continue until addr == end, so we never fail with -EIO +" + +And I add new VM_BUG_ON for checking migrate_to_node's future usecase +which might pass to MPOL_MF_STRICT. + +Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> +Cc: Mel Gorman <mgorman@suse.de> +Cc: Christoph Lameter <cl@linux.com> +Cc: David Rientjes <rientjes@google.com> +Cc: Vasiliy Kulikov <segooon@gmail.com> +Suggested-by: Johannes Weiner <hannes@cmpxchg.org> +Signed-off-by: Minchan Kim <minchan@kernel.org> +--- + mm/mempolicy.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/mm/mempolicy.c b/mm/mempolicy.c +index 3d64b36..9ec87bd 100644 +--- a/mm/mempolicy.c ++++ b/mm/mempolicy.c +@@ -946,15 +946,16 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest, + nodemask_t nmask; + LIST_HEAD(pagelist); + int err = 0; +- struct vm_area_struct *vma; + + nodes_clear(nmask); + node_set(source, nmask); + +- vma = check_range(mm, mm->mmap->vm_start, mm->task_size, &nmask, ++ /* ++ * Collect migrate pages and it shoudn't be failed. ++ */ ++ VM_BUG_ON(flags & MPOL_MF_STRICT); ++ check_range(mm, mm->mmap->vm_start, mm->task_size, &nmask, + flags | MPOL_MF_DISCONTIG_OK, &pagelist); +- if (IS_ERR(vma)) +- return PTR_ERR(vma); + + if (!list_empty(&pagelist)) { + err = migrate_pages(&pagelist, new_node_page, dest, +-- +1.7.9.5 + +-- +Kind regards, +Minchan Kim diff --git a/a/content_digest b/N1/content_digest index beb8608..0b2b57c 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -89,6 +89,76 @@ "> migrate pages. There is no failure case.\n" "> \n" "\n" - Here it goes. + "Here it goes.\n" + "\n" + ">From c2c21b551811e034eb0ede6806e0314b201d7e5b Mon Sep 17 00:00:00 2001\n" + "From: Minchan Kim <minchan@kernel.org>\n" + "Date: Thu, 20 Sep 2012 08:39:52 +0900\n" + "Subject: [PATCH] mm: revert 0def08e3, mm/mempolicy.c: check return code of\n" + " check_range\n" + "\n" + "This patch reverts 0def08e3 because check_range can't fail in\n" + "migrate_to_node with considering current usecases.\n" + "\n" + "Quote from Johannes\n" + "\"\n" + "I think it makes sense to revert. Not because of the semantics, but I\n" + "just don't see how check_range() could even fail for this callsite:\n" + "\n" + "1. we pass mm->mmap->vm_start in there, so we should not fail due to\n" + " find_vma()\n" + "\n" + "2. we pass MPOL_MF_DISCONTIG_OK, so the discontig checks do not apply\n" + " and so can not fail\n" + "\n" + "3. we pass MPOL_MF_MOVE | MPOL_MF_MOVE_ALL, the page table loops will\n" + " continue until addr == end, so we never fail with -EIO\n" + "\"\n" + "\n" + "And I add new VM_BUG_ON for checking migrate_to_node's future usecase\n" + "which might pass to MPOL_MF_STRICT.\n" + "\n" + "Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>\n" + "Cc: Mel Gorman <mgorman@suse.de>\n" + "Cc: Christoph Lameter <cl@linux.com>\n" + "Cc: David Rientjes <rientjes@google.com>\n" + "Cc: Vasiliy Kulikov <segooon@gmail.com>\n" + "Suggested-by: Johannes Weiner <hannes@cmpxchg.org>\n" + "Signed-off-by: Minchan Kim <minchan@kernel.org>\n" + "---\n" + " mm/mempolicy.c | 9 +++++----\n" + " 1 file changed, 5 insertions(+), 4 deletions(-)\n" + "\n" + "diff --git a/mm/mempolicy.c b/mm/mempolicy.c\n" + "index 3d64b36..9ec87bd 100644\n" + "--- a/mm/mempolicy.c\n" + "+++ b/mm/mempolicy.c\n" + "@@ -946,15 +946,16 @@ static int migrate_to_node(struct mm_struct *mm, int source, int dest,\n" + " \tnodemask_t nmask;\n" + " \tLIST_HEAD(pagelist);\n" + " \tint err = 0;\n" + "-\tstruct vm_area_struct *vma;\n" + " \n" + " \tnodes_clear(nmask);\n" + " \tnode_set(source, nmask);\n" + " \n" + "-\tvma = check_range(mm, mm->mmap->vm_start, mm->task_size, &nmask,\n" + "+\t/*\n" + "+\t * Collect migrate pages and it shoudn't be failed.\n" + "+\t */\n" + "+\tVM_BUG_ON(flags & MPOL_MF_STRICT);\n" + "+\tcheck_range(mm, mm->mmap->vm_start, mm->task_size, &nmask,\n" + " \t\t\tflags | MPOL_MF_DISCONTIG_OK, &pagelist);\n" + "-\tif (IS_ERR(vma))\n" + "-\t\treturn PTR_ERR(vma);\n" + " \n" + " \tif (!list_empty(&pagelist)) {\n" + " \t\terr = migrate_pages(&pagelist, new_node_page, dest,\n" + "-- \n" + "1.7.9.5\n" + "\n" + "-- \n" + "Kind regards,\n" + Minchan Kim -c924fea64aa499d2ac208b8a0aff3c7bbf551206034b89c7409c825deecb2d3c +13ac74e47393d329c7076d25fdd8fe781899ebb261fc34d19239069ce423fd19
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.