Skip to contentSkip to conversation

Patch "mm, cma: prevent nr_isolated_* counters from going negative" has been added to the 4.4-stable tree

PATCH [email protected] 1 participant 1 message May 6, 2016

Subsystems (3)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

mm, cma: prevent nr_isolated_* counters from going negative

to the 4.4-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
mm-cma-prevent-nr_isolated_-counters-from-going-negative.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 14af4a5e9b26ad251f81c174e8a43f3e179434a5 Mon Sep 17 00:00:00 2001

From: Hugh Dickins <[email protected]>
Date: Thu, 5 May 2016 16:22:15 -0700
Subject: mm, cma: prevent nr_isolated_* counters from going negative

From: Hugh Dickins <[email protected]>

commit 14af4a5e9b26ad251f81c174e8a43f3e179434a5 upstream.

/proc/sys/vm/stat_refresh warns nr_isolated_anon and nr_isolated_file go increasingly negative under compaction: which would add delay when should be none, or no delay when should delay. The bug in compaction was due to a recent mmotm patch, but much older instance of the bug was also noticed in isolate_migratepages_range() which is used for CMA and gigantic hugepage allocations.

The bug is caused by putback_movable_pages() in an error path decrementing the isolated counters without them being previously incremented by acct_isolated(). Fix isolate_migratepages_range() by removing the error-path putback, thus reaching acct_isolated() with migratepages still isolated, and leaving putback to caller like most other places do.

Fixes edc2ca612496 ("mm, compaction: move pageblock checks up from isolate_migratepages_range()")
[[email protected]: expanded the changelog]
Cc Michal Hocko <[email protected]>
---
 mm/compaction.c |   10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)
mm/compaction.c +1 -9
@@ -880,16 +880,8 @@ isolate_migratepages_range(struct compac
 		pfn = isolate_migratepages_block(cc, pfn, block_end_pfn,
 							ISOLATE_UNEVICTABLE);
 
-		/*
-		 * In case of fatal failure, release everything that might
-		 * have been isolated in the previous iteration, and signal
-		 * the failure back to caller.
-		 */
-		if (!pfn) {
-			putback_movable_pages(&cc->migratepages);
-			cc->nr_migratepages = 0;
+		if (!pfn)
 			break;
-		}
 
 		if (cc->nr_migratepages == COMPACT_CLUSTER_MAX)
 			break;

Patches currently in stable-queue which might be from [email protected] are

queue-4.4/mm-cma-prevent-nr_isolated_-counters-from-going-negative.patch