@@ -2254,15 +2254,15 @@ static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd)
2254
2254
return ptlock_ptr (pmd_to_page (pmd ));
2255
2255
}
2256
2256
2257
- static inline bool pgtable_pmd_page_ctor (struct page * page )
2257
+ static inline bool pmd_ptlock_init (struct page * page )
2258
2258
{
2259
2259
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
2260
2260
page -> pmd_huge_pte = NULL ;
2261
2261
#endif
2262
2262
return ptlock_init (page );
2263
2263
}
2264
2264
2265
- static inline void pgtable_pmd_page_dtor (struct page * page )
2265
+ static inline void pmd_ptlock_free (struct page * page )
2266
2266
{
2267
2267
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
2268
2268
VM_BUG_ON_PAGE (page -> pmd_huge_pte , page );
@@ -2279,8 +2279,8 @@ static inline spinlock_t *pmd_lockptr(struct mm_struct *mm, pmd_t *pmd)
2279
2279
return & mm -> page_table_lock ;
2280
2280
}
2281
2281
2282
- static inline bool pgtable_pmd_page_ctor (struct page * page ) { return true; }
2283
- static inline void pgtable_pmd_page_dtor (struct page * page ) {}
2282
+ static inline bool pmd_ptlock_init (struct page * page ) { return true; }
2283
+ static inline void pmd_ptlock_free (struct page * page ) {}
2284
2284
2285
2285
#define pmd_huge_pte (mm , pmd ) ((mm)->pmd_huge_pte)
2286
2286
@@ -2293,6 +2293,22 @@ static inline spinlock_t *pmd_lock(struct mm_struct *mm, pmd_t *pmd)
2293
2293
return ptl ;
2294
2294
}
2295
2295
2296
+ static inline bool pgtable_pmd_page_ctor (struct page * page )
2297
+ {
2298
+ if (!pmd_ptlock_init (page ))
2299
+ return false;
2300
+ __SetPageTable (page );
2301
+ inc_zone_page_state (page , NR_PAGETABLE );
2302
+ return true;
2303
+ }
2304
+
2305
+ static inline void pgtable_pmd_page_dtor (struct page * page )
2306
+ {
2307
+ pmd_ptlock_free (page );
2308
+ __ClearPageTable (page );
2309
+ dec_zone_page_state (page , NR_PAGETABLE );
2310
+ }
2311
+
2296
2312
/*
2297
2313
* No scalability reason to split PUD locks yet, but follow the same pattern
2298
2314
* as the PMD locks to make it easier if we decide to. The VM should not be
0 commit comments