On Thu, Mar 17, 2022 at 04:48:22PM -0700, Yang Shi wrote: > The DAX vma may be seen by khugepaged when the mm has other khugepaged > suitable vmas. So khugepaged may try to collapse THP for DAX vma, but > it will fail due to page sanity check, for example, page is not > on LRU. > > So it is not harmful, but it is definitely pointless to run khugepaged > against DAX vma, so skip it in early check. in fs/xfs/xfs_file.c: 1391 STATIC int 1392 xfs_file_mmap( 1393 struct file *file, 1394 struct vm_area_struct *vma) 1395 { 1396 struct inode *inode = file_inode(file); 1397 struct xfs_buftarg *target = xfs_inode_buftarg(XFS_I(inode)); 1398 1399 /* 1400 * We don't support synchronous mappings for non-DAX files and 1401 * for DAX files if underneath dax_device is not synchronous. 1402 */ 1403 if (!daxdev_mapping_supported(vma, target->bt_daxdev)) 1404 return -EOPNOTSUPP; 1405 1406 file_accessed(file); 1407 vma->vm_ops = &xfs_file_vm_ops; 1408 if (IS_DAX(inode)) 1409 vma->vm_flags |= VM_HUGEPAGE; Are xfs and other filesystems setting VM_HUGEPAGE flag even if it can never be collapsed? 1410 return 0; 1411 } > Reviewed-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> > Signed-off-by: Yang Shi <shy828301@xxxxxxxxx> > --- > mm/khugepaged.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 82c71c6da9ce..a0e4fa33660e 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -448,6 +448,10 @@ static bool hugepage_vma_check(struct vm_area_struct *vma, > if (vm_flags & VM_NO_KHUGEPAGED) > return false; > > + /* Don't run khugepaged against DAX vma */ > + if (vma_is_dax(vma)) > + return false; > + > if (vma->vm_file && !IS_ALIGNED((vma->vm_start >> PAGE_SHIFT) - > vma->vm_pgoff, HPAGE_PMD_NR)) > return false; > -- > 2.26.3 > > -- Thank you, You are awesome! Hyeonggon :-)