All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <545E96BD.5040103@suse.cz>

diff --git a/a/1.txt b/N1/1.txt
index d6426a4..907d600 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -46,3 +46,33 @@ Thanks,
 Vlastimil
 
 ------8<------
+>From fbf8eb0bcd2897090312e23da6a31bad9cc6b337 Mon Sep 17 00:00:00 2001
+From: Vlastimil Babka <vbabka@suse.cz>
+Date: Sat, 8 Nov 2014 22:20:43 +0100
+Subject: [PATCH] mm, compaction: prevent endless loop in migrate scanner
+
+---
+ mm/compaction.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/mm/compaction.c b/mm/compaction.c
+index ec74cf0..1b7a1be 100644
+--- a/mm/compaction.c
++++ b/mm/compaction.c
+@@ -1029,8 +1029,12 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,
+ 	}
+ 
+ 	acct_isolated(zone, cc);
+-	/* Record where migration scanner will be restarted */
+-	cc->migrate_pfn = low_pfn;
++	/* 
++	 * Record where migration scanner will be restarted. If we end up in
++	 * the same pageblock as the free scanner, make the scanners fully
++	 * meet so that compact_finished() terminates compaction.
++	 */
++	cc->migrate_pfn = (end_pfn <= cc->free_pfn) ? low_pfn : cc->free_pfn;
+ 
+ 	return cc->nr_migratepages ? ISOLATE_SUCCESS : ISOLATE_NONE;
+ }
+-- 
+2.1.2
diff --git a/a/content_digest b/N1/content_digest
index 1fad7f4..a9721c9 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -62,6 +62,36 @@
  "Thanks,\n"
  "Vlastimil\n"
  "\n"
- ------8<------
+ "------8<------\n"
+ ">From fbf8eb0bcd2897090312e23da6a31bad9cc6b337 Mon Sep 17 00:00:00 2001\n"
+ "From: Vlastimil Babka <vbabka@suse.cz>\n"
+ "Date: Sat, 8 Nov 2014 22:20:43 +0100\n"
+ "Subject: [PATCH] mm, compaction: prevent endless loop in migrate scanner\n"
+ "\n"
+ "---\n"
+ " mm/compaction.c | 8 ++++++--\n"
+ " 1 file changed, 6 insertions(+), 2 deletions(-)\n"
+ "\n"
+ "diff --git a/mm/compaction.c b/mm/compaction.c\n"
+ "index ec74cf0..1b7a1be 100644\n"
+ "--- a/mm/compaction.c\n"
+ "+++ b/mm/compaction.c\n"
+ "@@ -1029,8 +1029,12 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone,\n"
+ " \t}\n"
+ " \n"
+ " \tacct_isolated(zone, cc);\n"
+ "-\t/* Record where migration scanner will be restarted */\n"
+ "-\tcc->migrate_pfn = low_pfn;\n"
+ "+\t/* \n"
+ "+\t * Record where migration scanner will be restarted. If we end up in\n"
+ "+\t * the same pageblock as the free scanner, make the scanners fully\n"
+ "+\t * meet so that compact_finished() terminates compaction.\n"
+ "+\t */\n"
+ "+\tcc->migrate_pfn = (end_pfn <= cc->free_pfn) ? low_pfn : cc->free_pfn;\n"
+ " \n"
+ " \treturn cc->nr_migratepages ? ISOLATE_SUCCESS : ISOLATE_NONE;\n"
+ " }\n"
+ "-- \n"
+ 2.1.2
 
-e2ef0cdde63a53a137e46ede18a470e9bb440ebd4233c077184f5a601aa65014
+9352fc78e4d60163b5c469ae15615de206c1ffb09cbc73e53754cdb756168686

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.