This is a note to let you know that I've just added the patch titled
mm: vmscan: do not OOM if aborting reclaim to start compaction
to the 3.0-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-vmscan-do-not-oom-if-aborting-reclaim-to-start-compaction.patch
and it can be found in the queue-3.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From 7335084d446b83cbcb15da80497d03f0c1dc9e21 Mon Sep 17 00:00:00 2001
From: Mel Gorman <[email protected]>
Date: Thu, 12 Jan 2012 17:19:33 -0800
Subject: mm: vmscan: do not OOM if aborting reclaim to start compaction
From: Mel Gorman <[email protected]>
commit 7335084d446b83cbcb15da80497d03f0c1dc9e21 upstream.
Stable note: Not tracked in Bugzilla. This patch makes later patches
easier to apply but otherwise has little to justify it. The
problem it fixes was never observed but the source of the
theoretical problem did not exist for very long.
During direct reclaim it is possible that reclaim will be aborted so that
compaction can be attempted to satisfy a high-order allocation. If this
decision is made before any pages are reclaimed, it is possible that 0 is
returned to the page allocator potentially triggering an OOM. This has
not been observed but it is a possibility so this patch addresses it.
Signed-off-by: Mel Gorman <[email protected]>
Reviewed-by: Rik van Riel <[email protected]>
Cc: Andrea Arcangeli <[email protected]>
Cc: Minchan Kim <[email protected]>
Cc: Dave Jones <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Andy Isaacson <[email protected]>
Cc: Nai Xia <[email protected]>
Cc: Johannes Weiner <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
mm/vmscan.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -2240,6 +2240,7 @@ static unsigned long do_try_to_free_page
struct zoneref *z;
struct zone *zone;
unsigned long writeback_threshold;
+ bool should_abort_reclaim;
get_mems_allowed();
delayacct_freepages_start();
@@ -2251,7 +2252,8 @@ static unsigned long do_try_to_free_page
sc->nr_scanned = 0;
if (!priority)
disable_swap_token(sc->mem_cgroup);
- if (shrink_zones(priority, zonelist, sc))
+ should_abort_reclaim = shrink_zones(priority, zonelist, sc);
+ if (should_abort_reclaim)
break;
/*
@@ -2318,6 +2320,10 @@ out:
if (oom_killer_disabled)
return 0;
+ /* Aborting reclaim to try compaction? don't OOM, then */
+ if (should_abort_reclaim)
+ return 1;
+
/* top priority shrink_zones still had more to do? don't OOM, then */
if (scanning_global_lru(sc) && !all_unreclaimable(zonelist, sc))
return 1;
Patches currently in stable-queue which might be from [email protected] are
queue-3.0/vmscan-clear-zone_congested-for-zone-with-good-watermark.patch
queue-3.0/mm-vmscan-when-reclaiming-for-compaction-ensure-there-are-sufficient-free-pages-available.patch
queue-3.0/mm-compaction-allow-compaction-to-isolate-dirty-pages.patch
queue-3.0/mm-page-allocator-do-not-call-direct-reclaim-for-thp-allocations-while-compaction-is-deferred.patch
queue-3.0/mm-vmscan-check-if-reclaim-should-really-abort-even-if-compaction_ready-is-true-for-one-zone.patch
queue-3.0/mm-zone_reclaim-make-isolate_lru_page-filter-aware.patch
queue-3.0/vmscan-add-shrink_slab-tracepoints.patch
queue-3.0/mm-change-isolate-mode-from-define-to-bitwise-type.patch
queue-3.0/mm-test-pageswapbacked-in-lumpy-reclaim.patch
queue-3.0/mm-migration-clean-up-unmap_and_move.patch
queue-3.0/mm-compaction-introduce-sync-light-migration-for-use-by-compaction.patch
queue-3.0/mm-vmscan.c-consider-swap-space-when-deciding-whether-to-continue-reclaim.patch
queue-3.0/kswapd-avoid-unnecessary-rebalance-after-an-unsuccessful-balancing.patch
queue-3.0/mm-compaction-trivial-clean-up-in-acct_isolated.patch
queue-3.0/mm-vmscan-do-not-oom-if-aborting-reclaim-to-start-compaction.patch
queue-3.0/kswapd-assign-new_order-and-new_classzone_idx-after-wakeup-in-sleeping.patch
queue-3.0/vmscan-promote-shared-file-mapped-pages.patch
queue-3.0/vmscan-reduce-wind-up-shrinker-nr-when-shrinker-can-t-do-work.patch
queue-3.0/vmscan-shrinker-nr-updates-race-and-go-wrong.patch
queue-3.0/mm-compaction-make-isolate_lru_page-filter-aware-again.patch
queue-3.0/mm-vmstat.c-cache-align-vm_stat.patch
queue-3.0/mm-compaction-determine-if-dirty-pages-can-be-migrated-without-blocking-within-migratepage.patch
queue-3.0/vmscan-activate-executable-pages-after-first-usage.patch
queue-3.0/mm-memory-hotplug-check-if-pages-are-correctly-reserved-on-a-per-section-basis.patch
queue-3.0/vmscan-limit-direct-reclaim-for-higher-order-allocations.patch
queue-3.0/mm-vmscan-fix-force-scanning-small-targets-without-swap.patch
queue-3.0/mm-compaction-make-isolate_lru_page-filter-aware.patch
queue-3.0/mm-reduce-the-amount-of-work-done-when-updating-min_free_kbytes.patch
queue-3.0/vmscan-abort-reclaim-compaction-if-compaction-can-proceed.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html