These functions do not modify their folio argument, so we can mark them as being const which will allow for some minor optimisations and let us mark other function arguments as being const in the future. Signed-off-by: Matthew Wilcox (Oracle) Acked-by: Usama Arif --- include/linux/hugetlb.h | 19 +++++++++---------- mm/hugetlb.c | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 2abaf99321e9..18661a7cdb37 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -165,7 +165,7 @@ bool hugetlbfs_pagecache_present(struct hstate *h, struct vm_area_struct *vma, unsigned long address); -struct address_space *hugetlb_folio_mapping_lock_write(struct folio *folio); +struct address_space *hugetlb_folio_mapping_lock_write(const struct folio *folio); extern int movable_gigantic_pages __read_mostly; extern int sysctl_hugetlb_shm_group __read_mostly; @@ -292,8 +292,7 @@ static inline unsigned long hugetlb_total_pages(void) return 0; } -static inline struct address_space *hugetlb_folio_mapping_lock_write( - struct folio *folio) +static inline struct address_space *hugetlb_folio_mapping_lock_write(const struct folio *folio) { return NULL; } @@ -595,8 +594,8 @@ enum hugetlb_page_flags { #ifdef CONFIG_HUGETLB_PAGE #define TESTHPAGEFLAG(uname, flname) \ static __always_inline \ -bool folio_test_hugetlb_##flname(struct folio *folio) \ - { void *private = &folio->private; \ +bool folio_test_hugetlb_##flname(const struct folio *folio) \ + { const void *private = &folio->private; \ return test_bit(HPG_##flname, private); \ } @@ -616,7 +615,7 @@ void folio_clear_hugetlb_##flname(struct folio *folio) \ #else #define TESTHPAGEFLAG(uname, flname) \ static inline bool \ -folio_test_hugetlb_##flname(struct folio *folio) \ +folio_test_hugetlb_##flname(const struct folio *folio) \ { return 0; } #define SETHPAGEFLAG(uname, flname) \ @@ -727,7 +726,7 @@ static inline struct hugepage_subpool *subpool_inode(struct inode *inode) return HUGETLBFS_SB(inode->i_sb)->spool; } -static inline struct hugepage_subpool *hugetlb_folio_subpool(struct folio *folio) +static inline struct hugepage_subpool *hugetlb_folio_subpool(const struct folio *folio) { return folio->_hugetlb_subpool; } @@ -857,7 +856,7 @@ static inline bool arch_has_huge_bootmem_alloc(void) } #endif -static inline struct hstate *folio_hstate(struct folio *folio) +static inline struct hstate *folio_hstate(const struct folio *folio) { VM_BUG_ON_FOLIO(!folio_test_hugetlb(folio), folio); return size_to_hstate(folio_size(folio)); @@ -1088,7 +1087,7 @@ static inline unsigned long huge_page_mask_align(struct file *file) return 0; } -static inline struct hugepage_subpool *hugetlb_folio_subpool(struct folio *folio) +static inline struct hugepage_subpool *hugetlb_folio_subpool(const struct folio *folio) { return NULL; } @@ -1157,7 +1156,7 @@ static inline struct hstate *hstate_vma(struct vm_area_struct *vma) return NULL; } -static inline struct hstate *folio_hstate(struct folio *folio) +static inline struct hstate *folio_hstate(const struct folio *folio) { return NULL; } diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 571212b80835..cc8d98399913 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1775,7 +1775,7 @@ void init_new_hugetlb_folio(struct folio *folio) * stable. Due to locking order, we can only trylock_write. If we can * not get the lock, simply return NULL to caller. */ -struct address_space *hugetlb_folio_mapping_lock_write(struct folio *folio) +struct address_space *hugetlb_folio_mapping_lock_write(const struct folio *folio) { struct address_space *mapping = folio_mapping(folio); -- 2.47.3