Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mm: Reduce the number of slab->folio casts

Mark a few more folio functions as taking a const folio pointer, which
allows us to remove a few places in slab which cast away the const.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Vlastimil Babka <vbabka@suse.cz>

authored by

Matthew Wilcox (Oracle) and committed by
Vlastimil Babka
4d2bcefa a0a44d91

+7 -9
+3 -3
include/linux/mm.h
··· 1105 1105 * 1106 1106 * Return: The order of the folio. 1107 1107 */ 1108 - static inline unsigned int folio_order(struct folio *folio) 1108 + static inline unsigned int folio_order(const struct folio *folio) 1109 1109 { 1110 1110 if (!folio_test_large(folio)) 1111 1111 return 0; ··· 2145 2145 * it from being split. It is not necessary for the folio to be locked. 2146 2146 * Return: The base-2 logarithm of the size of this folio. 2147 2147 */ 2148 - static inline unsigned int folio_shift(struct folio *folio) 2148 + static inline unsigned int folio_shift(const struct folio *folio) 2149 2149 { 2150 2150 return PAGE_SHIFT + folio_order(folio); 2151 2151 } ··· 2158 2158 * it from being split. It is not necessary for the folio to be locked. 2159 2159 * Return: The number of bytes in this folio. 2160 2160 */ 2161 - static inline size_t folio_size(struct folio *folio) 2161 + static inline size_t folio_size(const struct folio *folio) 2162 2162 { 2163 2163 return PAGE_SIZE << folio_order(folio); 2164 2164 }
+2 -2
mm/slab.h
··· 166 166 */ 167 167 static inline bool slab_test_pfmemalloc(const struct slab *slab) 168 168 { 169 - return folio_test_active((struct folio *)slab_folio(slab)); 169 + return folio_test_active(slab_folio(slab)); 170 170 } 171 171 172 172 static inline void slab_set_pfmemalloc(struct slab *slab) ··· 211 211 212 212 static inline int slab_order(const struct slab *slab) 213 213 { 214 - return folio_order((struct folio *)slab_folio(slab)); 214 + return folio_order(slab_folio(slab)); 215 215 } 216 216 217 217 static inline size_t slab_size(const struct slab *slab)
+2 -4
mm/slub.c
··· 962 962 963 963 static void print_slab_info(const struct slab *slab) 964 964 { 965 - struct folio *folio = (struct folio *)slab_folio(slab); 966 - 967 965 pr_err("Slab 0x%p objects=%u used=%u fp=0x%p flags=%pGp\n", 968 966 slab, slab->objects, slab->inuse, slab->freelist, 969 - folio_flags(folio, 0)); 967 + &slab->__page_flags); 970 968 } 971 969 972 970 /* ··· 2530 2532 */ 2531 2533 static inline bool slab_test_node_partial(const struct slab *slab) 2532 2534 { 2533 - return folio_test_workingset((struct folio *)slab_folio(slab)); 2535 + return folio_test_workingset(slab_folio(slab)); 2534 2536 } 2535 2537 2536 2538 static inline void slab_set_node_partial(struct slab *slab)