From 102a0743326a03cd1a1202ceda21e175b7d3575c Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Tue, 20 Feb 2024 01:20:52 +0000 Subject: [PATCH] add new system file --- kernel/mm/compaction.c | 27 +++++++++++++-------------- 1 files changed, 13 insertions(+), 14 deletions(-) diff --git a/kernel/mm/compaction.c b/kernel/mm/compaction.c index 9922a6f..dc96fad 100644 --- a/kernel/mm/compaction.c +++ b/kernel/mm/compaction.c @@ -45,6 +45,11 @@ #define CREATE_TRACE_POINTS #include <trace/events/compaction.h> +#undef CREATE_TRACE_POINTS +#ifndef __GENKSYMS__ +#include <trace/hooks/mm.h> +#endif + #define block_start_pfn(pfn, order) round_down(pfn, 1UL << (order)) #define block_end_pfn(pfn, order) ALIGN((pfn) + 1, 1UL << (order)) #define pageblock_start_pfn(pfn) block_start_pfn(pfn, pageblock_order) @@ -1270,7 +1275,7 @@ } static void -fast_isolate_around(struct compact_control *cc, unsigned long pfn, unsigned long nr_isolated) +fast_isolate_around(struct compact_control *cc, unsigned long pfn) { unsigned long start_pfn, end_pfn; struct page *page; @@ -1291,21 +1296,13 @@ if (!page) return; - /* Scan before */ - if (start_pfn != pfn) { - isolate_freepages_block(cc, &start_pfn, pfn, &cc->freepages, 1, false); - if (cc->nr_freepages >= cc->nr_migratepages) - return; - } - - /* Scan after */ - start_pfn = pfn + nr_isolated; - if (start_pfn < end_pfn) - isolate_freepages_block(cc, &start_pfn, end_pfn, &cc->freepages, 1, false); + isolate_freepages_block(cc, &start_pfn, end_pfn, &cc->freepages, 1, false); /* Skip this pageblock in the future as it's full or nearly full */ if (cc->nr_freepages < cc->nr_migratepages) set_pageblock_skip(page); + + return; } /* Search orders in round-robin fashion */ @@ -1481,7 +1478,7 @@ return cc->free_pfn; low_pfn = page_to_pfn(page); - fast_isolate_around(cc, low_pfn, nr_isolated); + fast_isolate_around(cc, low_pfn); return low_pfn; } @@ -1992,6 +1989,7 @@ unsigned int order; const int migratetype = cc->migratetype; int ret; + bool abort_compact = false; /* Compaction run completes if the migrate and free scanner meet */ if (compact_scanners_met(cc)) { @@ -2091,7 +2089,8 @@ } out: - if (cc->contended || fatal_signal_pending(current)) + trace_android_vh_compact_finished(&abort_compact); + if (cc->contended || fatal_signal_pending(current) || abort_compact) ret = COMPACT_CONTENDED; return ret; -- Gitblit v1.6.2