@@ -1398,86 +1398,6 @@ enum {
13981398 PAGE_PRIVATE_MAX
13991399};
14001400
1401- #define PAGE_PRIVATE_GET_FUNC (name , flagname ) \
1402- static inline bool page_private_##name(struct page *page) \
1403- { \
1404- return PagePrivate(page) && \
1405- test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
1406- test_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
1407- }
1408-
1409- #define PAGE_PRIVATE_SET_FUNC (name , flagname ) \
1410- static inline void set_page_private_##name(struct page *page) \
1411- { \
1412- if (!PagePrivate(page)) { \
1413- get_page(page); \
1414- SetPagePrivate(page); \
1415- set_page_private(page, 0); \
1416- } \
1417- set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)); \
1418- set_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
1419- }
1420-
1421- #define PAGE_PRIVATE_CLEAR_FUNC (name , flagname ) \
1422- static inline void clear_page_private_##name(struct page *page) \
1423- { \
1424- clear_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
1425- if (page_private(page) == BIT(PAGE_PRIVATE_NOT_POINTER)) { \
1426- set_page_private(page, 0); \
1427- if (PagePrivate(page)) { \
1428- ClearPagePrivate(page); \
1429- put_page(page); \
1430- }\
1431- } \
1432- }
1433-
1434- PAGE_PRIVATE_GET_FUNC (nonpointer , NOT_POINTER );
1435- PAGE_PRIVATE_GET_FUNC (inline , INLINE_INODE );
1436- PAGE_PRIVATE_GET_FUNC (gcing , ONGOING_MIGRATION );
1437- PAGE_PRIVATE_GET_FUNC (dummy , DUMMY_WRITE );
1438-
1439- PAGE_PRIVATE_SET_FUNC (reference , REF_RESOURCE );
1440- PAGE_PRIVATE_SET_FUNC (inline , INLINE_INODE );
1441- PAGE_PRIVATE_SET_FUNC (gcing , ONGOING_MIGRATION );
1442- PAGE_PRIVATE_SET_FUNC (dummy , DUMMY_WRITE );
1443-
1444- PAGE_PRIVATE_CLEAR_FUNC (reference , REF_RESOURCE );
1445- PAGE_PRIVATE_CLEAR_FUNC (inline , INLINE_INODE );
1446- PAGE_PRIVATE_CLEAR_FUNC (gcing , ONGOING_MIGRATION );
1447- PAGE_PRIVATE_CLEAR_FUNC (dummy , DUMMY_WRITE );
1448-
1449- static inline unsigned long get_page_private_data (struct page * page )
1450- {
1451- unsigned long data = page_private (page );
1452-
1453- if (!test_bit (PAGE_PRIVATE_NOT_POINTER , & data ))
1454- return 0 ;
1455- return data >> PAGE_PRIVATE_MAX ;
1456- }
1457-
1458- static inline void set_page_private_data (struct page * page , unsigned long data )
1459- {
1460- if (!PagePrivate (page )) {
1461- get_page (page );
1462- SetPagePrivate (page );
1463- set_page_private (page , 0 );
1464- }
1465- set_bit (PAGE_PRIVATE_NOT_POINTER , & page_private (page ));
1466- page_private (page ) |= data << PAGE_PRIVATE_MAX ;
1467- }
1468-
1469- static inline void clear_page_private_data (struct page * page )
1470- {
1471- page_private (page ) &= GENMASK (PAGE_PRIVATE_MAX - 1 , 0 );
1472- if (page_private (page ) == BIT (PAGE_PRIVATE_NOT_POINTER )) {
1473- set_page_private (page , 0 );
1474- if (PagePrivate (page )) {
1475- ClearPagePrivate (page );
1476- put_page (page );
1477- }
1478- }
1479- }
1480-
14811401/* For compression */
14821402enum compress_algorithm_type {
14831403 COMPRESS_LZO ,
@@ -2372,6 +2292,80 @@ void f2fs_printk(struct f2fs_sb_info *sbi, const char *fmt, ...);
23722292#define f2fs_debug (sbi , fmt , ...) \
23732293 f2fs_printk(sbi, KERN_DEBUG fmt, ##__VA_ARGS__)
23742294
2295+ #define PAGE_PRIVATE_GET_FUNC (name , flagname ) \
2296+ static inline bool page_private_##name(struct page *page) \
2297+ { \
2298+ return PagePrivate(page) && \
2299+ test_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)) && \
2300+ test_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
2301+ }
2302+
2303+ #define PAGE_PRIVATE_SET_FUNC (name , flagname ) \
2304+ static inline void set_page_private_##name(struct page *page) \
2305+ { \
2306+ if (!PagePrivate(page)) \
2307+ attach_page_private(page, (void *)0); \
2308+ set_bit(PAGE_PRIVATE_NOT_POINTER, &page_private(page)); \
2309+ set_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
2310+ }
2311+
2312+ #define PAGE_PRIVATE_CLEAR_FUNC (name , flagname ) \
2313+ static inline void clear_page_private_##name(struct page *page) \
2314+ { \
2315+ clear_bit(PAGE_PRIVATE_##flagname, &page_private(page)); \
2316+ if (page_private(page) == BIT(PAGE_PRIVATE_NOT_POINTER)) \
2317+ detach_page_private(page); \
2318+ }
2319+
2320+ PAGE_PRIVATE_GET_FUNC (nonpointer , NOT_POINTER );
2321+ PAGE_PRIVATE_GET_FUNC (inline , INLINE_INODE );
2322+ PAGE_PRIVATE_GET_FUNC (gcing , ONGOING_MIGRATION );
2323+ PAGE_PRIVATE_GET_FUNC (dummy , DUMMY_WRITE );
2324+
2325+ PAGE_PRIVATE_SET_FUNC (reference , REF_RESOURCE );
2326+ PAGE_PRIVATE_SET_FUNC (inline , INLINE_INODE );
2327+ PAGE_PRIVATE_SET_FUNC (gcing , ONGOING_MIGRATION );
2328+ PAGE_PRIVATE_SET_FUNC (dummy , DUMMY_WRITE );
2329+
2330+ PAGE_PRIVATE_CLEAR_FUNC (reference , REF_RESOURCE );
2331+ PAGE_PRIVATE_CLEAR_FUNC (inline , INLINE_INODE );
2332+ PAGE_PRIVATE_CLEAR_FUNC (gcing , ONGOING_MIGRATION );
2333+ PAGE_PRIVATE_CLEAR_FUNC (dummy , DUMMY_WRITE );
2334+
2335+ static inline unsigned long get_page_private_data (struct page * page )
2336+ {
2337+ unsigned long data = page_private (page );
2338+
2339+ if (!test_bit (PAGE_PRIVATE_NOT_POINTER , & data ))
2340+ return 0 ;
2341+ return data >> PAGE_PRIVATE_MAX ;
2342+ }
2343+
2344+ static inline void set_page_private_data (struct page * page , unsigned long data )
2345+ {
2346+ if (!PagePrivate (page ))
2347+ attach_page_private (page , (void * )0 );
2348+ set_bit (PAGE_PRIVATE_NOT_POINTER , & page_private (page ));
2349+ page_private (page ) |= data << PAGE_PRIVATE_MAX ;
2350+ }
2351+
2352+ static inline void clear_page_private_data (struct page * page )
2353+ {
2354+ page_private (page ) &= GENMASK (PAGE_PRIVATE_MAX - 1 , 0 );
2355+ if (page_private (page ) == BIT (PAGE_PRIVATE_NOT_POINTER ))
2356+ detach_page_private (page );
2357+ }
2358+
2359+ static inline void clear_page_private_all (struct page * page )
2360+ {
2361+ clear_page_private_data (page );
2362+ clear_page_private_reference (page );
2363+ clear_page_private_gcing (page );
2364+ clear_page_private_inline (page );
2365+
2366+ f2fs_bug_on (F2FS_P_SB (page ), page_private (page ));
2367+ }
2368+
23752369static inline void dec_valid_block_count (struct f2fs_sb_info * sbi ,
23762370 struct inode * inode ,
23772371 block_t count )
0 commit comments