On 2025/5/15 11:22, Nico Pache wrote:
The khugepaged daemon and madvise_collapse have two different
implementations that do almost the same thing.
Create khugepaged_collapse_single_pmd to increase code
reuse and create an entry point for future khugepaged changes.
Refactor madvise_collapse and khugepaged_scan_mm_slot to use
the new khugepaged_collapse_single_pmd function.
Reviewed-by: Baolin Wang <baolin.w...@linux.alibaba.com>
Signed-off-by: Nico Pache <npa...@redhat.com>
---
mm/khugepaged.c | 96 +++++++++++++++++++++++++------------------------
1 file changed, 49 insertions(+), 47 deletions(-)
diff --git a/mm/khugepaged.c b/mm/khugepaged.c
index 806bcd8c5185..5457571d505a 100644
--- a/mm/khugepaged.c
+++ b/mm/khugepaged.c
@@ -2353,6 +2353,48 @@ static int khugepaged_scan_file(struct mm_struct *mm,
unsigned long addr,
return result;
}
+/*
+ * Try to collapse a single PMD starting at a PMD aligned addr, and return
+ * the results.
+ */
+static int khugepaged_collapse_single_pmd(unsigned long addr,
+ struct vm_area_struct *vma, bool
*mmap_locked,
+ struct collapse_control *cc)
+{
+ int result = SCAN_FAIL;
+ struct mm_struct *mm = vma->vm_mm;
+
+ if (IS_ENABLED(CONFIG_SHMEM) && !vma_is_anonymous(vma)) {
I've removed the CONFIG_SHMEM dependency[1], please do not add it again.
[1]
https://lore.kernel.org/all/ce5c2314e0368cf34bda26f9bacf01c982d4da17.1747119309.git.baolin.w...@linux.alibaba.com/