On Thu, 6 Apr 2023 at 09:40, Muhammad Usama Anjum usama.anjum@collabora.com wrote: [...]
--- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c
[...]
+static int pagemap_scan_pmd_entry(pmd_t *pmd, unsigned long start,
unsigned long end, struct mm_walk *walk)
+{
struct pagemap_scan_private *p = walk->private;
bool is_written, is_file, is_present, is_swap;
struct vm_area_struct *vma = walk->vma;
unsigned long addr = end;
spinlock_t *ptl;
int ret = 0;
pte_t *pte;
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
ptl = pmd_trans_huge_lock(pmd, vma);
if (ptl) {
[...]
return ret;
}
+process_smaller_pages:
if (pmd_trans_unstable(pmd))
return 0;
Why pmd_trans_unstable() is needed here and not only after split_huge_pmd()?
Best regards Michał Mirosław