Message ID | 20220824175757.20590-4-mike.kravetz@oracle.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | hugetlb: Use new vma mutex for huge pmd sharing synchronization | expand |
On 2022/8/25 1:57, Mike Kravetz wrote: > remove_huge_page removes a hugetlb page from the page cache. Change > to hugetlb_delete_from_page_cache as it is a more descriptive name. > huge_add_to_page_cache is global in scope, but only deals with hugetlb > pages. For consistency and clarity, rename to hugetlb_add_to_page_cache. > > Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com> LGTM with one nit below. Thanks. > --- > fs/hugetlbfs/inode.c | 21 ++++++++++----------- > include/linux/hugetlb.h | 2 +- > mm/hugetlb.c | 8 ++++---- > 3 files changed, 15 insertions(+), 16 deletions(-) > > diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c > index dfb735a91bbb..d98c6edbd1a4 100644 > --- a/fs/hugetlbfs/inode.c > +++ b/fs/hugetlbfs/inode.c > @@ -364,7 +364,7 @@ static int hugetlbfs_write_end(struct file *file, struct address_space *mapping, > return -EINVAL; > } > > -static void remove_huge_page(struct page *page) > +static void hugetlb_delete_from_page_cache(struct page *page) > { > ClearPageDirty(page); > ClearPageUptodate(page); > @@ -478,15 +478,14 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart, > folio_lock(folio); > /* > * We must free the huge page and remove from page > - * cache (remove_huge_page) BEFORE removing the > - * region/reserve map (hugetlb_unreserve_pages). In > - * rare out of memory conditions, removal of the > - * region/reserve map could fail. Correspondingly, > - * the subpool and global reserve usage count can need > - * to be adjusted. > + * cache BEFORE removing the * region/reserve map s/the * region/the region/, i.e. remove extra "*". Reviewed-by: Miaohe Lin <linmiaohe@huawei.com> Thanks, Miaohe Lin > + * (hugetlb_unreserve_pages). In rare out of memory > + * conditions, removal of the region/reserve map could > + * fail. Correspondingly, the subpool and global > + * reserve usage count can need to be adjusted. > */ > VM_BUG_ON(HPageRestoreReserve(&folio->page)); > - remove_huge_page(&folio->page); > + hugetlb_delete_from_page_cache(&folio->page); > freed++; > if (!truncate_op) { > if (unlikely(hugetlb_unreserve_pages(inode, > @@ -723,7 +722,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset, > } > clear_huge_page(page, addr, pages_per_huge_page(h)); > __SetPageUptodate(page); > - error = huge_add_to_page_cache(page, mapping, index); > + error = hugetlb_add_to_page_cache(page, mapping, index); > if (unlikely(error)) { > restore_reserve_on_error(h, &pseudo_vma, addr, page); > put_page(page); > @@ -735,7 +734,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset, > > SetHPageMigratable(page); > /* > - * unlock_page because locked by huge_add_to_page_cache() > + * unlock_page because locked by hugetlb_add_to_page_cache() > * put_page() due to reference from alloc_huge_page() > */ > unlock_page(page); > @@ -980,7 +979,7 @@ static int hugetlbfs_error_remove_page(struct address_space *mapping, > struct inode *inode = mapping->host; > pgoff_t index = page->index; > > - remove_huge_page(page); > + hugetlb_delete_from_page_cache(page); > if (unlikely(hugetlb_unreserve_pages(inode, index, index + 1, 1))) > hugetlb_fix_reserve_counts(inode); > > diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h > index 3ec981a0d8b3..acace1a25226 100644 > --- a/include/linux/hugetlb.h > +++ b/include/linux/hugetlb.h > @@ -665,7 +665,7 @@ struct page *alloc_huge_page_nodemask(struct hstate *h, int preferred_nid, > nodemask_t *nmask, gfp_t gfp_mask); > struct page *alloc_huge_page_vma(struct hstate *h, struct vm_area_struct *vma, > unsigned long address); > -int huge_add_to_page_cache(struct page *page, struct address_space *mapping, > +int hugetlb_add_to_page_cache(struct page *page, struct address_space *mapping, > pgoff_t idx); > void restore_reserve_on_error(struct hstate *h, struct vm_area_struct *vma, > unsigned long address, struct page *page); > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index 95c6f9a5bbf0..11c02513588c 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -5445,7 +5445,7 @@ static bool hugetlbfs_pagecache_present(struct hstate *h, > return page != NULL; > } > > -int huge_add_to_page_cache(struct page *page, struct address_space *mapping, > +int hugetlb_add_to_page_cache(struct page *page, struct address_space *mapping, > pgoff_t idx) > { > struct folio *folio = page_folio(page); > @@ -5586,7 +5586,7 @@ static vm_fault_t hugetlb_no_page(struct mm_struct *mm, > new_page = true; > > if (vma->vm_flags & VM_MAYSHARE) { > - int err = huge_add_to_page_cache(page, mapping, idx); > + int err = hugetlb_add_to_page_cache(page, mapping, idx); > if (err) { > restore_reserve_on_error(h, vma, haddr, page); > put_page(page); > @@ -5993,11 +5993,11 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, > > /* > * Serialization between remove_inode_hugepages() and > - * huge_add_to_page_cache() below happens through the > + * hugetlb_add_to_page_cache() below happens through the > * hugetlb_fault_mutex_table that here must be hold by > * the caller. > */ > - ret = huge_add_to_page_cache(page, mapping, idx); > + ret = hugetlb_add_to_page_cache(page, mapping, idx); > if (ret) > goto out_release_nounlock; > page_in_pagecache = true; >
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index dfb735a91bbb..d98c6edbd1a4 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -364,7 +364,7 @@ static int hugetlbfs_write_end(struct file *file, struct address_space *mapping, return -EINVAL; } -static void remove_huge_page(struct page *page) +static void hugetlb_delete_from_page_cache(struct page *page) { ClearPageDirty(page); ClearPageUptodate(page); @@ -478,15 +478,14 @@ static void remove_inode_hugepages(struct inode *inode, loff_t lstart, folio_lock(folio); /* * We must free the huge page and remove from page - * cache (remove_huge_page) BEFORE removing the - * region/reserve map (hugetlb_unreserve_pages). In - * rare out of memory conditions, removal of the - * region/reserve map could fail. Correspondingly, - * the subpool and global reserve usage count can need - * to be adjusted. + * cache BEFORE removing the * region/reserve map + * (hugetlb_unreserve_pages). In rare out of memory + * conditions, removal of the region/reserve map could + * fail. Correspondingly, the subpool and global + * reserve usage count can need to be adjusted. */ VM_BUG_ON(HPageRestoreReserve(&folio->page)); - remove_huge_page(&folio->page); + hugetlb_delete_from_page_cache(&folio->page); freed++; if (!truncate_op) { if (unlikely(hugetlb_unreserve_pages(inode, @@ -723,7 +722,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset, } clear_huge_page(page, addr, pages_per_huge_page(h)); __SetPageUptodate(page); - error = huge_add_to_page_cache(page, mapping, index); + error = hugetlb_add_to_page_cache(page, mapping, index); if (unlikely(error)) { restore_reserve_on_error(h, &pseudo_vma, addr, page); put_page(page); @@ -735,7 +734,7 @@ static long hugetlbfs_fallocate(struct file *file, int mode, loff_t offset, SetHPageMigratable(page); /* - * unlock_page because locked by huge_add_to_page_cache() + * unlock_page because locked by hugetlb_add_to_page_cache() * put_page() due to reference from alloc_huge_page() */ unlock_page(page); @@ -980,7 +979,7 @@ static int hugetlbfs_error_remove_page(struct address_space *mapping, struct inode *inode = mapping->host; pgoff_t index = page->index; - remove_huge_page(page); + hugetlb_delete_from_page_cache(page); if (unlikely(hugetlb_unreserve_pages(inode, index, index + 1, 1))) hugetlb_fix_reserve_counts(inode); diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 3ec981a0d8b3..acace1a25226 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -665,7 +665,7 @@ struct page *alloc_huge_page_nodemask(struct hstate *h, int preferred_nid, nodemask_t *nmask, gfp_t gfp_mask); struct page *alloc_huge_page_vma(struct hstate *h, struct vm_area_struct *vma, unsigned long address); -int huge_add_to_page_cache(struct page *page, struct address_space *mapping, +int hugetlb_add_to_page_cache(struct page *page, struct address_space *mapping, pgoff_t idx); void restore_reserve_on_error(struct hstate *h, struct vm_area_struct *vma, unsigned long address, struct page *page); diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 95c6f9a5bbf0..11c02513588c 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -5445,7 +5445,7 @@ static bool hugetlbfs_pagecache_present(struct hstate *h, return page != NULL; } -int huge_add_to_page_cache(struct page *page, struct address_space *mapping, +int hugetlb_add_to_page_cache(struct page *page, struct address_space *mapping, pgoff_t idx) { struct folio *folio = page_folio(page); @@ -5586,7 +5586,7 @@ static vm_fault_t hugetlb_no_page(struct mm_struct *mm, new_page = true; if (vma->vm_flags & VM_MAYSHARE) { - int err = huge_add_to_page_cache(page, mapping, idx); + int err = hugetlb_add_to_page_cache(page, mapping, idx); if (err) { restore_reserve_on_error(h, vma, haddr, page); put_page(page); @@ -5993,11 +5993,11 @@ int hugetlb_mcopy_atomic_pte(struct mm_struct *dst_mm, /* * Serialization between remove_inode_hugepages() and - * huge_add_to_page_cache() below happens through the + * hugetlb_add_to_page_cache() below happens through the * hugetlb_fault_mutex_table that here must be hold by * the caller. */ - ret = huge_add_to_page_cache(page, mapping, idx); + ret = hugetlb_add_to_page_cache(page, mapping, idx); if (ret) goto out_release_nounlock; page_in_pagecache = true;
remove_huge_page removes a hugetlb page from the page cache. Change to hugetlb_delete_from_page_cache as it is a more descriptive name. huge_add_to_page_cache is global in scope, but only deals with hugetlb pages. For consistency and clarity, rename to hugetlb_add_to_page_cache. Signed-off-by: Mike Kravetz <mike.kravetz@oracle.com> --- fs/hugetlbfs/inode.c | 21 ++++++++++----------- include/linux/hugetlb.h | 2 +- mm/hugetlb.c | 8 ++++---- 3 files changed, 15 insertions(+), 16 deletions(-)