]> www.infradead.org Git - linux.git/commitdiff
jfs: Change metapage->page to metapage->folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 17 Apr 2024 17:56:56 +0000 (18:56 +0100)
committerDave Kleikamp <dave.kleikamp@oracle.com>
Tue, 28 May 2024 01:37:06 +0000 (20:37 -0500)
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>
fs/jfs/jfs_logmgr.c
fs/jfs/jfs_metapage.c
fs/jfs/jfs_metapage.h

index 9609349e92e5e1ba422369fa29a2f6345f7fe908..270808b6219bede172acf5bf2a090755dd812061 100644 (file)
@@ -1600,7 +1600,7 @@ void jfs_flush_journal(struct jfs_log *log, int wait)
                                               mp, sizeof(struct metapage), 0);
                                print_hex_dump(KERN_ERR, "page: ",
                                               DUMP_PREFIX_ADDRESS, 16,
-                                              sizeof(long), mp->page,
+                                              sizeof(long), mp->folio,
                                               sizeof(struct page), 0);
                        } else
                                print_hex_dump(KERN_ERR, "tblock:",
index c88a7bc3f73667b7cf7c4c94a622e007283eae5f..19854bd8dfeaab2eb95548c4d3aa5a041c469c2a 100644 (file)
@@ -47,9 +47,9 @@ static inline void __lock_metapage(struct metapage *mp)
        do {
                set_current_state(TASK_UNINTERRUPTIBLE);
                if (metapage_locked(mp)) {
-                       unlock_page(mp->page);
+                       folio_unlock(mp->folio);
                        io_schedule();
-                       lock_page(mp->page);
+                       folio_lock(mp->folio);
                }
        } while (trylock_metapage(mp));
        __set_current_state(TASK_RUNNING);
@@ -57,7 +57,7 @@ static inline void __lock_metapage(struct metapage *mp)
 }
 
 /*
- * Must have mp->page locked
+ * Must have mp->folio locked
  */
 static inline void lock_metapage(struct metapage *mp)
 {
@@ -649,7 +649,7 @@ struct metapage *__get_metapage(struct inode *inode, unsigned long lblock,
                mp = alloc_metapage(GFP_NOFS);
                if (!mp)
                        goto unlock;
-               mp->page = &folio->page;
+               mp->folio = folio;
                mp->sb = inode->i_sb;
                mp->flag = 0;
                mp->xflag = COMMIT_PAGE;
@@ -682,11 +682,11 @@ unlock:
 void grab_metapage(struct metapage * mp)
 {
        jfs_info("grab_metapage: mp = 0x%p", mp);
-       get_page(mp->page);
-       lock_page(mp->page);
+       folio_get(mp->folio);
+       folio_lock(mp->folio);
        mp->count++;
        lock_metapage(mp);
-       unlock_page(mp->page);
+       folio_unlock(mp->folio);
 }
 
 static int metapage_write_one(struct folio *folio)
@@ -719,7 +719,7 @@ static int metapage_write_one(struct folio *folio)
 
 void force_metapage(struct metapage *mp)
 {
-       struct folio *folio = page_folio(mp->page);
+       struct folio *folio = mp->folio;
        jfs_info("force_metapage: mp = 0x%p", mp);
        set_bit(META_forcewrite, &mp->flag);
        clear_bit(META_sync, &mp->flag);
@@ -734,26 +734,26 @@ void force_metapage(struct metapage *mp)
 
 void hold_metapage(struct metapage *mp)
 {
-       lock_page(mp->page);
+       folio_lock(mp->folio);
 }
 
 void put_metapage(struct metapage *mp)
 {
        if (mp->count || mp->nohomeok) {
                /* Someone else will release this */
-               unlock_page(mp->page);
+               folio_unlock(mp->folio);
                return;
        }
-       get_page(mp->page);
+       folio_get(mp->folio);
        mp->count++;
        lock_metapage(mp);
-       unlock_page(mp->page);
+       folio_unlock(mp->folio);
        release_metapage(mp);
 }
 
 void release_metapage(struct metapage * mp)
 {
-       struct folio *folio = page_folio(mp->page);
+       struct folio *folio = mp->folio;
        jfs_info("release_metapage: mp = 0x%p, flag = 0x%lx", mp, mp->flag);
 
        folio_lock(folio);
index 4179f9df4deb62ebe921ca4aad753f95a906600f..2e5015c2705be79b28c7fe2565c485d65bd2df1a 100644 (file)
@@ -24,7 +24,7 @@ struct metapage {
        wait_queue_head_t wait;
 
        /* implementation */
-       struct page *page;
+       struct folio *folio;
        struct super_block *sb;
        unsigned int logical_size;
 
@@ -90,14 +90,14 @@ static inline void discard_metapage(struct metapage *mp)
 
 static inline void metapage_nohomeok(struct metapage *mp)
 {
-       struct page *page = mp->page;
-       lock_page(page);
+       struct folio *folio = mp->folio;
+       folio_lock(folio);
        if (!mp->nohomeok++) {
                mark_metapage_dirty(mp);
-               get_page(page);
-               wait_on_page_writeback(page);
+               folio_get(folio);
+               folio_wait_writeback(folio);
        }
-       unlock_page(page);
+       folio_unlock(folio);
 }
 
 /*
@@ -107,7 +107,7 @@ static inline void metapage_nohomeok(struct metapage *mp)
 static inline void metapage_wait_for_io(struct metapage *mp)
 {
        if (test_bit(META_io, &mp->flag))
-               wait_on_page_writeback(mp->page);
+               folio_wait_writeback(mp->folio);
 }
 
 /*
@@ -116,7 +116,7 @@ static inline void metapage_wait_for_io(struct metapage *mp)
 static inline void _metapage_homeok(struct metapage *mp)
 {
        if (!--mp->nohomeok)
-               put_page(mp->page);
+               folio_put(mp->folio);
 }
 
 static inline void metapage_homeok(struct metapage *mp)