]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
f2fs: Add fio->folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 8 Jul 2025 17:03:26 +0000 (18:03 +0100)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 22 Jul 2025 15:56:39 +0000 (15:56 +0000)
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) <willy@infradead.org>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/checkpoint.c
fs/f2fs/data.c
fs/f2fs/f2fs.h
fs/f2fs/gc.c
fs/f2fs/inline.c
fs/f2fs/node.c
fs/f2fs/segment.c

index f149ec28aefdc390bdd02f6c947e69dbfe7a9318..07ca10c666491d8455bed31094cc4e97ee8a5a08 100644 (file)
@@ -82,7 +82,7 @@ repeat:
        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);
 
index c4da33de0d1d063f078d01e28bfc4094cc68f43d..0e261caf2f91e2416abb81b3e7fca167c9c342db 100644 (file)
@@ -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 @@ alloc_new:
        }
 
        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)) {
@@ -2650,7 +2649,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;
index 69b7667239601badf8f31d67c1bd3e2a98dcb11e..0987f868cdd9bdc6a1ae01977b7a11e74f0329fa 100644 (file)
@@ -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
index edeae4ee137c4f52c60e5610258b497b89c65d4c..f82430759cf743d0a3a2b79b0d9edbc97ff07344 100644 (file)
@@ -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,
index 4c636a8043f8b4f07ecd0f3d421fe331396e78ae..9851310cdb87eb547976409101b965efb66658d1 100644 (file)
@@ -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,
        };
index cc4bf8525cb5158470069b95b9959bf6708bcd85..0574f045630579bf8920d65298ac0791264edf29 100644 (file)
@@ -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,
index 04b7dfa51d6dc8bed3fc505027e5d74da6d3d3b6..965c9f55559c9291c62e5622831368e35f8b90d0 100644 (file)
@@ -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,
        };