mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 02:53:36 +02:00
f2fs: Add fio->folio
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>
This commit is contained in:
parent
4aecdc80b3
commit
d342b7adad
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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)) {
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user