Skip compaction on private nodes. Compaction requires the ability to
migrate pages, which is not yet supported on private nodes.

Signed-off-by: Gregory Price <[email protected]>
---
 mm/compaction.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/mm/compaction.c b/mm/compaction.c
index 9f81055a358ed..8c1351cce7bcc 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -2462,6 +2462,9 @@ bool compaction_zonelist_suitable(struct alloc_context 
*ac, int order,
                    !__cpuset_zone_allowed(zone, gfp_mask))
                        continue;
 
+               if (node_is_private(zone_to_nid(zone)))
+                       continue;
+
                /*
                 * Do not consider all the reclaimable memory because we do not
                 * want to trash just for a single high order allocation which
@@ -2853,6 +2856,9 @@ enum compact_result try_to_compact_pages(gfp_t gfp_mask, 
unsigned int order,
                        !__cpuset_zone_allowed(zone, gfp_mask))
                                continue;
 
+               if (node_is_private(zone_to_nid(zone)))
+                       continue;
+
                if (prio > MIN_COMPACT_PRIORITY
                                        && compaction_deferred(zone, order)) {
                        rc = max_t(enum compact_result, COMPACT_DEFERRED, rc);
@@ -2922,6 +2928,9 @@ static int compact_node(pg_data_t *pgdat, bool proactive)
                .proactive_compaction = proactive,
        };
 
+       if (node_is_private(pgdat->node_id))
+               return 0;
+
        for (zoneid = 0; zoneid < MAX_NR_ZONES; zoneid++) {
                zone = &pgdat->node_zones[zoneid];
                if (!populated_zone(zone))
@@ -3017,6 +3026,9 @@ static ssize_t compact_store(struct device *dev,
 {
        int nid = dev->id;
 
+       if (node_is_private(nid))
+               return -EINVAL;
+
        if (nid >= 0 && nid < nr_node_ids && node_online(nid)) {
                /* Flush pending updates to the LRU lists */
                lru_add_drain_all();
-- 
2.53.0-Meta


Reply via email to