mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
mm, compaction: create compact_gap wrapper
Compaction uses a watermark gap of (2UL << order) pages at various places and it's not immediately obvious why. Abstract it through a compact_gap() wrapper to create a single place with a thorough explanation. [[email protected]: clarify the comment of compact_gap()] Link: http://lkml.kernel.org/r/[email protected] Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Vlastimil Babka <[email protected]> Tested-by: Lorenzo Stoakes <[email protected]> Acked-by: Michal Hocko <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Joonsoo Kim <[email protected]> Cc: David Rientjes <[email protected]> Cc: Rik van Riel <[email protected]> Signed-off-by: Vlastimil Babka <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
f2b8228c5f
commit
9861a62c33
3 changed files with 29 additions and 7 deletions
|
|
@ -1391,11 +1391,10 @@ static enum compact_result __compaction_suitable(struct zone *zone, int order,
|
|||
return COMPACT_SUCCESS;
|
||||
|
||||
/*
|
||||
* Watermarks for order-0 must be met for compaction. Note the 2UL.
|
||||
* This is because during migration, copies of pages need to be
|
||||
* allocated and for a short time, the footprint is higher
|
||||
* Watermarks for order-0 must be met for compaction to be able to
|
||||
* isolate free pages for migration targets.
|
||||
*/
|
||||
watermark = low_wmark_pages(zone) + (2UL << order);
|
||||
watermark = low_wmark_pages(zone) + compact_gap(order);
|
||||
if (!__zone_watermark_ok(zone, 0, watermark, classzone_idx,
|
||||
alloc_flags, wmark_target))
|
||||
return COMPACT_SKIPPED;
|
||||
|
|
|
|||
Loading…
Reference in a new issue