On 05/02/23 23:56, Ackerley Tng wrote: > Calling hugetlb_set_vma_policy() later avoids setting the vma policy > and then dropping it on a page cache hit. > > Signed-off-by: Ackerley Tng <ackerleytng@xxxxxxxxxx> > --- > fs/hugetlbfs/inode.c | 5 +---- > 1 file changed, 1 insertion(+), 4 deletions(-) I suspect you noticed this when debugging the issue with using page_cache_next_miss. :) Thanks! Reviewed-by: Mike Kravetz <mike.kravetz@xxxxxxxxxx> -- Mike Kravetz > > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c > index f640cff1bbce..380b1cd6c93f 100644 > --- a/fs/hugetlbfs/inode.c > +++ b/fs/hugetlbfs/inode.c > @@ -833,9 +833,6 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset, > break; > } > > - /* Set numa allocation policy based on index */ > - hugetlb_set_vma_policy(&pseudo_vma, inode, index); > - > /* addr is the offset within the file (zero based) */ > addr = index * hpage_size; > > @@ -846,7 +843,6 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset, > /* See if already present in mapping to avoid alloc/free */ > if (filemap_has_folio(mapping, index)) { > mutex_unlock(&hugetlb_fault_mutex_table[hash]); > - hugetlb_drop_vma_policy(&pseudo_vma); > continue; > } > > @@ -858,6 +854,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset, > * folios in these areas, we need to consume the reserves > * to keep reservation accounting consistent. > */ > + hugetlb_set_vma_policy(&pseudo_vma, inode, index); > folio = alloc_hugetlb_folio(&pseudo_vma, addr, 0); > hugetlb_drop_vma_policy(&pseudo_vma); > if (IS_ERR(folio)) { > -- > 2.40.1.495.gc816e09b53d-goog >