jfs: Change metapage->page to metapage->folio

Convert all the users to operate on a folio. Saves sixteen calls to
compound_head(). We still use sizeof(struct page) in print_hex_dump,
otherwise it will go into the second and third pages of the folio which
won't exist for jfs folios (since they are not large). This needs a
better solution, but finding it can be postponed.

Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Signed-off-by: Dave Kleikamp <dave.kleikamp@oracle.com>

authored by Matthew Wilcox (Oracle) and committed by Dave Kleikamp ad6c19e5 1252ad13

+22 -22
+1 -1
fs/jfs/jfs_logmgr.c
··· 1600 1600 mp, sizeof(struct metapage), 0); 1601 1601 print_hex_dump(KERN_ERR, "page: ", 1602 1602 DUMP_PREFIX_ADDRESS, 16, 1603 - sizeof(long), mp->page, 1603 + sizeof(long), mp->folio, 1604 1604 sizeof(struct page), 0); 1605 1605 } else 1606 1606 print_hex_dump(KERN_ERR, "tblock:",
+13 -13
fs/jfs/jfs_metapage.c
··· 47 47 do { 48 48 set_current_state(TASK_UNINTERRUPTIBLE); 49 49 if (metapage_locked(mp)) { 50 - unlock_page(mp->page); 50 + folio_unlock(mp->folio); 51 51 io_schedule(); 52 - lock_page(mp->page); 52 + folio_lock(mp->folio); 53 53 } 54 54 } while (trylock_metapage(mp)); 55 55 __set_current_state(TASK_RUNNING); ··· 57 57 } 58 58 59 59 /* 60 - * Must have mp->page locked 60 + * Must have mp->folio locked 61 61 */ 62 62 static inline void lock_metapage(struct metapage *mp) 63 63 { ··· 649 649 mp = alloc_metapage(GFP_NOFS); 650 650 if (!mp) 651 651 goto unlock; 652 - mp->page = &folio->page; 652 + mp->folio = folio; 653 653 mp->sb = inode->i_sb; 654 654 mp->flag = 0; 655 655 mp->xflag = COMMIT_PAGE; ··· 682 682 void grab_metapage(struct metapage * mp) 683 683 { 684 684 jfs_info("grab_metapage: mp = 0x%p", mp); 685 - get_page(mp->page); 686 - lock_page(mp->page); 685 + folio_get(mp->folio); 686 + folio_lock(mp->folio); 687 687 mp->count++; 688 688 lock_metapage(mp); 689 - unlock_page(mp->page); 689 + folio_unlock(mp->folio); 690 690 } 691 691 692 692 static int metapage_write_one(struct folio *folio) ··· 719 719 720 720 void force_metapage(struct metapage *mp) 721 721 { 722 - struct folio *folio = page_folio(mp->page); 722 + struct folio *folio = mp->folio; 723 723 jfs_info("force_metapage: mp = 0x%p", mp); 724 724 set_bit(META_forcewrite, &mp->flag); 725 725 clear_bit(META_sync, &mp->flag); ··· 734 734 735 735 void hold_metapage(struct metapage *mp) 736 736 { 737 - lock_page(mp->page); 737 + folio_lock(mp->folio); 738 738 } 739 739 740 740 void put_metapage(struct metapage *mp) 741 741 { 742 742 if (mp->count || mp->nohomeok) { 743 743 /* Someone else will release this */ 744 - unlock_page(mp->page); 744 + folio_unlock(mp->folio); 745 745 return; 746 746 } 747 - get_page(mp->page); 747 + folio_get(mp->folio); 748 748 mp->count++; 749 749 lock_metapage(mp); 750 - unlock_page(mp->page); 750 + folio_unlock(mp->folio); 751 751 release_metapage(mp); 752 752 } 753 753 754 754 void release_metapage(struct metapage * mp) 755 755 { 756 - struct folio *folio = page_folio(mp->page); 756 + struct folio *folio = mp->folio; 757 757 jfs_info("release_metapage: mp = 0x%p, flag = 0x%lx", mp, mp->flag); 758 758 759 759 folio_lock(folio);
+8 -8
fs/jfs/jfs_metapage.h
··· 24 24 wait_queue_head_t wait; 25 25 26 26 /* implementation */ 27 - struct page *page; 27 + struct folio *folio; 28 28 struct super_block *sb; 29 29 unsigned int logical_size; 30 30 ··· 90 90 91 91 static inline void metapage_nohomeok(struct metapage *mp) 92 92 { 93 - struct page *page = mp->page; 94 - lock_page(page); 93 + struct folio *folio = mp->folio; 94 + folio_lock(folio); 95 95 if (!mp->nohomeok++) { 96 96 mark_metapage_dirty(mp); 97 - get_page(page); 98 - wait_on_page_writeback(page); 97 + folio_get(folio); 98 + folio_wait_writeback(folio); 99 99 } 100 - unlock_page(page); 100 + folio_unlock(folio); 101 101 } 102 102 103 103 /* ··· 107 107 static inline void metapage_wait_for_io(struct metapage *mp) 108 108 { 109 109 if (test_bit(META_io, &mp->flag)) 110 - wait_on_page_writeback(mp->page); 110 + folio_wait_writeback(mp->folio); 111 111 } 112 112 113 113 /* ··· 116 116 static inline void _metapage_homeok(struct metapage *mp) 117 117 { 118 118 if (!--mp->nohomeok) 119 - put_page(mp->page); 119 + folio_put(mp->folio); 120 120 } 121 121 122 122 static inline void metapage_homeok(struct metapage *mp)