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.