Files
omarchy-pkgs/pkgbuilds/linux-omarchy-bore/8208-mm-thp-deferred-split-uses-hint.patch
T

22 lines
752 B
Diff

diff --git a/mm/huge_memory.c b/mm/huge_memory.c
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -4476,6 +4476,17 @@ static unsigned long deferred_split_count(struct shrinker *shrink,
{
unsigned long count;
+ /*
+ * Splitting a partially mapped folio during an opportunistic
+ * high-order pass frees its unmapped tail pages but shatters the
+ * folio, so the pass works against the contiguous block it is
+ * reclaiming for. Report nothing rather than SHRINK_EMPTY: for a
+ * memcg aware shrinker SHRINK_EMPTY clears the memcg shrinker bit,
+ * which would also skip the next normal pass.
+ */
+ if (sc->opportunistic_compaction)
+ return 0;
+
count = list_lru_shrink_count(&deferred_split_lru, sc);
return count ?: SHRINK_EMPTY;
}