Put fio->page insto a union with fio->folio.  This lets us remove a
lot of folio->page and page->folio conversions.

Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>
---
 fs/f2fs/checkpoint.c |  4 ++--
 fs/f2fs/data.c       | 17 ++++++++---------
 fs/f2fs/f2fs.h       |  7 +++++--
 fs/f2fs/gc.c         |  6 +++---
 fs/f2fs/inline.c     |  2 +-
 fs/f2fs/node.c       |  4 ++--
 fs/f2fs/segment.c    |  7 +++----
 7 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index f149ec28aefd..07ca10c66649 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -82,7 +82,7 @@ static struct folio *__get_meta_folio(struct f2fs_sb_info 
*sbi, pgoff_t index,
        if (folio_test_uptodate(folio))
                goto out;
 
-       fio.page = &folio->page;
+       fio.folio = folio;
 
        err = f2fs_submit_page_bio(&fio);
        if (err) {
@@ -309,7 +309,7 @@ int f2fs_ra_meta_pages(struct f2fs_sb_info *sbi, block_t 
start, int nrpages,
                        continue;
                }
 
-               fio.page = &folio->page;
+               fio.folio = folio;
                err = f2fs_submit_page_bio(&fio);
                f2fs_folio_put(folio, err ? true : false);
 
diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c
index 5fc3d985c4e3..198a7093d98b 100644
--- a/fs/f2fs/data.c
+++ b/fs/f2fs/data.c
@@ -419,7 +419,6 @@ int f2fs_target_device_index(struct f2fs_sb_info *sbi, 
block_t blkaddr)
 static blk_opf_t f2fs_io_flags(struct f2fs_io_info *fio)
 {
        unsigned int temp_mask = GENMASK(NR_TEMP_TYPE - 1, 0);
-       struct folio *fio_folio = page_folio(fio->page);
        unsigned int fua_flag, meta_flag, io_flag;
        blk_opf_t op_flags = 0;
 
@@ -447,7 +446,7 @@ static blk_opf_t f2fs_io_flags(struct f2fs_io_info *fio)
                op_flags |= REQ_FUA;
 
        if (fio->type == DATA &&
-           F2FS_I(fio_folio->mapping->host)->ioprio_hint == F2FS_IOPRIO_WRITE)
+           F2FS_I(fio->folio->mapping->host)->ioprio_hint == F2FS_IOPRIO_WRITE)
                op_flags |= REQ_PRIO;
 
        return op_flags;
@@ -691,7 +690,7 @@ void f2fs_flush_merged_writes(struct f2fs_sb_info *sbi)
 int f2fs_submit_page_bio(struct f2fs_io_info *fio)
 {
        struct bio *bio;
-       struct folio *fio_folio = page_folio(fio->page);
+       struct folio *fio_folio = fio->folio;
        struct folio *data_folio = fio->encrypted_page ?
                        page_folio(fio->encrypted_page) : fio_folio;
 
@@ -779,7 +778,7 @@ static void del_bio_entry(struct bio_entry *be)
 static int add_ipu_page(struct f2fs_io_info *fio, struct bio **bio,
                                                        struct page *page)
 {
-       struct folio *fio_folio = page_folio(fio->page);
+       struct folio *fio_folio = fio->folio;
        struct f2fs_sb_info *sbi = fio->sbi;
        enum temp_type temp;
        bool found = false;
@@ -888,7 +887,7 @@ int f2fs_merge_page_bio(struct f2fs_io_info *fio)
        struct bio *bio = *fio->bio;
        struct page *page = fio->encrypted_page ?
                        fio->encrypted_page : fio->page;
-       struct folio *folio = page_folio(fio->page);
+       struct folio *folio = fio->folio;
 
        if (!f2fs_is_valid_blkaddr(fio->sbi, fio->new_blkaddr,
                        __is_meta_io(fio) ? META_GENERIC : DATA_GENERIC))
@@ -1012,12 +1011,12 @@ void f2fs_submit_page_write(struct f2fs_io_info *fio)
        }
 
        if (fio->io_wbc)
-               wbc_account_cgroup_owner(fio->io_wbc, page_folio(fio->page),
-                                        PAGE_SIZE);
+               wbc_account_cgroup_owner(fio->io_wbc, fio->folio,
+                               folio_size(fio->folio));
 
        io->last_block_in_bio = fio->new_blkaddr;
 
-       trace_f2fs_submit_folio_write(page_folio(fio->page), fio);
+       trace_f2fs_submit_folio_write(fio->folio, fio);
 #ifdef CONFIG_BLK_DEV_ZONED
        if (f2fs_sb_has_blkzoned(sbi) && btype < META &&
                        is_end_zone_blkaddr(sbi, fio->new_blkaddr)) {
@@ -2642,7 +2641,7 @@ static inline bool need_inplace_update(struct 
f2fs_io_info *fio)
 
 int f2fs_do_write_data_page(struct f2fs_io_info *fio)
 {
-       struct folio *folio = page_folio(fio->page);
+       struct folio *folio = fio->folio;
        struct inode *inode = folio->mapping->host;
        struct dnode_of_data dn;
        struct node_info ni;
diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
index 12b14fc406c5..f98d83ccd1e2 100644
--- a/fs/f2fs/f2fs.h
+++ b/fs/f2fs/f2fs.h
@@ -1240,7 +1240,10 @@ struct f2fs_io_info {
        blk_opf_t op_flags;     /* req_flag_bits */
        block_t new_blkaddr;    /* new block address to be written */
        block_t old_blkaddr;    /* old block address before Cow */
-       struct page *page;      /* page to be written */
+       union {
+               struct page *page;      /* page to be written */
+               struct folio *folio;
+       };
        struct page *encrypted_page;    /* encrypted page */
        struct page *compressed_page;   /* compressed page */
        struct list_head list;          /* serialize IOs */
@@ -3892,7 +3895,7 @@ unsigned long long f2fs_get_section_mtime(struct 
f2fs_sb_info *sbi,
 
 static inline struct inode *fio_inode(struct f2fs_io_info *fio)
 {
-       return page_folio(fio->page)->mapping->host;
+       return fio->folio->mapping->host;
 }
 
 #define DEF_FRAGMENT_SIZE      4
diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c
index fc262d6dff3d..b2645a18a596 100644
--- a/fs/f2fs/gc.c
+++ b/fs/f2fs/gc.c
@@ -1249,7 +1249,7 @@ static int ra_data_block(struct inode *inode, pgoff_t 
index)
        }
 got_it:
        /* read folio */
-       fio.page = &folio->page;
+       fio.folio = folio;
        fio.new_blkaddr = fio.old_blkaddr = dn.data_blkaddr;
 
        /*
@@ -1353,7 +1353,7 @@ static int move_data_block(struct inode *inode, block_t 
bidx,
                goto put_out;
 
        /* read page */
-       fio.page = &folio->page;
+       fio.folio = folio;
        fio.new_blkaddr = fio.old_blkaddr = dn.data_blkaddr;
 
        if (lfs_mode)
@@ -1483,7 +1483,7 @@ static int move_data_page(struct inode *inode, block_t 
bidx, int gc_type,
                        .op = REQ_OP_WRITE,
                        .op_flags = REQ_SYNC,
                        .old_blkaddr = NULL_ADDR,
-                       .page = &folio->page,
+                       .folio = folio,
                        .encrypted_page = NULL,
                        .need_lock = LOCK_REQ,
                        .io_type = FS_GC_DATA_IO,
diff --git a/fs/f2fs/inline.c b/fs/f2fs/inline.c
index 4c636a8043f8..9851310cdb87 100644
--- a/fs/f2fs/inline.c
+++ b/fs/f2fs/inline.c
@@ -150,7 +150,7 @@ int f2fs_convert_inline_folio(struct dnode_of_data *dn, 
struct folio *folio)
                .type = DATA,
                .op = REQ_OP_WRITE,
                .op_flags = REQ_SYNC | REQ_PRIO,
-               .page = &folio->page,
+               .folio = folio,
                .encrypted_page = NULL,
                .io_type = FS_DATA_IO,
        };
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 7ea5a98399a7..b55827d687e2 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1413,7 +1413,7 @@ static int read_node_folio(struct folio *folio, blk_opf_t 
op_flags)
                .type = NODE,
                .op = REQ_OP_READ,
                .op_flags = op_flags,
-               .page = &folio->page,
+               .folio = folio,
                .encrypted_page = NULL,
        };
        int err;
@@ -1677,7 +1677,7 @@ static bool __write_node_folio(struct folio *folio, bool 
atomic, bool *submitted
                .type = NODE,
                .op = REQ_OP_WRITE,
                .op_flags = wbc_to_write_flags(wbc),
-               .page = &folio->page,
+               .folio = folio,
                .encrypted_page = NULL,
                .submitted = 0,
                .io_type = io_type,
diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index d0ce8b298d3b..533b4295e4d6 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -3666,8 +3666,7 @@ static int __get_segment_type_6(struct f2fs_io_info *fio)
                if (file_is_cold(inode) || f2fs_need_compress_data(inode))
                        return CURSEG_COLD_DATA;
 
-               type = __get_age_segment_type(inode,
-                               page_folio(fio->page)->index);
+               type = __get_age_segment_type(inode, fio->folio->index);
                if (type != NO_CHECK_TYPE)
                        return type;
 
@@ -3932,7 +3931,7 @@ static int log_type_to_seg_type(enum log_type type)
 
 static void do_write_page(struct f2fs_summary *sum, struct f2fs_io_info *fio)
 {
-       struct folio *folio = page_folio(fio->page);
+       struct folio *folio = fio->folio;
        enum log_type type = __get_segment_type(fio);
        int seg_type = log_type_to_seg_type(type);
        bool keep_order = (f2fs_lfs_mode(fio->sbi) &&
@@ -3979,7 +3978,7 @@ void f2fs_do_write_meta_page(struct f2fs_sb_info *sbi, 
struct folio *folio,
                .op_flags = REQ_SYNC | REQ_META | REQ_PRIO,
                .old_blkaddr = folio->index,
                .new_blkaddr = folio->index,
-               .page = folio_page(folio, 0),
+               .folio = folio,
                .encrypted_page = NULL,
                .in_list = 0,
        };
-- 
2.47.2



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to