All of lore.kernel.org
 help / color / mirror / Atom feed
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.