Skip to content

Commit 6f7ec66

Browse files
Matthew Wilcox (Oracle)Jaegeuk Kim
authored andcommitted
f2fs: Convert dnode_of_data->node_page to node_folio
All assignments to this struct member are conversions from a folio so convert it to be a folio and convert all users. At the same time, convert data_blkaddr() to take a folio as all callers now have a folio. Remove eight calls to compound_head(). Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent 66bca01 commit 6f7ec66

9 files changed

Lines changed: 64 additions & 64 deletions

File tree

fs/f2fs/compress.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -914,7 +914,7 @@ bool f2fs_sanity_check_cluster(struct dnode_of_data *dn)
914914
}
915915

916916
for (i = 1, count = 1; i < cluster_size; i++, count++) {
917-
block_t blkaddr = data_blkaddr(dn->inode, dn->node_page,
917+
block_t blkaddr = data_blkaddr(dn->inode, dn->node_folio,
918918
dn->ofs_in_node + i);
919919

920920
/* [COMPR_ADDR, ..., COMPR_ADDR] */
@@ -955,7 +955,7 @@ static int __f2fs_get_cluster_blocks(struct inode *inode,
955955
int count, i;
956956

957957
for (i = 0, count = 0; i < cluster_size; i++) {
958-
block_t blkaddr = data_blkaddr(dn->inode, dn->node_page,
958+
block_t blkaddr = data_blkaddr(dn->inode, dn->node_folio,
959959
dn->ofs_in_node + i);
960960

961961
if (__is_valid_data_blkaddr(blkaddr))
@@ -1322,7 +1322,7 @@ static int f2fs_write_compressed_pages(struct compress_ctx *cc,
13221322
goto out_unlock_op;
13231323

13241324
for (i = 0; i < cc->cluster_size; i++) {
1325-
if (data_blkaddr(dn.inode, dn.node_page,
1325+
if (data_blkaddr(dn.inode, dn.node_folio,
13261326
dn.ofs_in_node + i) == NULL_ADDR)
13271327
goto out_put_dnode;
13281328
}
@@ -1354,7 +1354,7 @@ static int f2fs_write_compressed_pages(struct compress_ctx *cc,
13541354
page_folio(cc->rpages[i + 1])->index, cic);
13551355
fio.compressed_page = cc->cpages[i];
13561356

1357-
fio.old_blkaddr = data_blkaddr(dn.inode, dn.node_page,
1357+
fio.old_blkaddr = data_blkaddr(dn.inode, dn.node_folio,
13581358
dn.ofs_in_node + i + 1);
13591359

13601360
/* wait for GCed page writeback via META_MAPPING */
@@ -1887,14 +1887,14 @@ void f2fs_put_folio_dic(struct folio *folio, bool in_task)
18871887
unsigned int f2fs_cluster_blocks_are_contiguous(struct dnode_of_data *dn,
18881888
unsigned int ofs_in_node)
18891889
{
1890-
bool compressed = data_blkaddr(dn->inode, dn->node_page,
1890+
bool compressed = data_blkaddr(dn->inode, dn->node_folio,
18911891
ofs_in_node) == COMPRESS_ADDR;
18921892
int i = compressed ? 1 : 0;
1893-
block_t first_blkaddr = data_blkaddr(dn->inode, dn->node_page,
1893+
block_t first_blkaddr = data_blkaddr(dn->inode, dn->node_folio,
18941894
ofs_in_node + i);
18951895

18961896
for (i += 1; i < F2FS_I(dn->inode)->i_cluster_size; i++) {
1897-
block_t blkaddr = data_blkaddr(dn->inode, dn->node_page,
1897+
block_t blkaddr = data_blkaddr(dn->inode, dn->node_folio,
18981898
ofs_in_node + i);
18991899

19001900
if (!__is_valid_data_blkaddr(blkaddr))

fs/f2fs/data.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1116,7 +1116,7 @@ static int f2fs_submit_page_read(struct inode *inode, struct folio *folio,
11161116

11171117
static void __set_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr)
11181118
{
1119-
__le32 *addr = get_dnode_addr(dn->inode, dn->node_page);
1119+
__le32 *addr = get_dnode_addr(dn->inode, &dn->node_folio->page);
11201120

11211121
dn->data_blkaddr = blkaddr;
11221122
addr[dn->ofs_in_node] = cpu_to_le32(dn->data_blkaddr);
@@ -1125,14 +1125,14 @@ static void __set_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr)
11251125
/*
11261126
* Lock ordering for the change of data block address:
11271127
* ->data_page
1128-
* ->node_page
1128+
* ->node_folio
11291129
* update block addresses in the node page
11301130
*/
11311131
void f2fs_set_data_blkaddr(struct dnode_of_data *dn, block_t blkaddr)
11321132
{
1133-
f2fs_wait_on_page_writeback(dn->node_page, NODE, true, true);
1133+
f2fs_folio_wait_writeback(dn->node_folio, NODE, true, true);
11341134
__set_data_blkaddr(dn, blkaddr);
1135-
if (set_page_dirty(dn->node_page))
1135+
if (folio_mark_dirty(dn->node_folio))
11361136
dn->node_changed = true;
11371137
}
11381138

@@ -1160,7 +1160,7 @@ int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count)
11601160
trace_f2fs_reserve_new_blocks(dn->inode, dn->nid,
11611161
dn->ofs_in_node, count);
11621162

1163-
f2fs_wait_on_page_writeback(dn->node_page, NODE, true, true);
1163+
f2fs_folio_wait_writeback(dn->node_folio, NODE, true, true);
11641164

11651165
for (; count > 0; dn->ofs_in_node++) {
11661166
block_t blkaddr = f2fs_data_blkaddr(dn);
@@ -1171,7 +1171,7 @@ int f2fs_reserve_new_blocks(struct dnode_of_data *dn, blkcnt_t count)
11711171
}
11721172
}
11731173

1174-
if (set_page_dirty(dn->node_page))
1174+
if (folio_mark_dirty(dn->node_folio))
11751175
dn->node_changed = true;
11761176
return 0;
11771177
}
@@ -1589,7 +1589,7 @@ int f2fs_map_blocks(struct inode *inode, struct f2fs_map_blocks *map, int flag)
15891589
start_pgofs = pgofs;
15901590
prealloc = 0;
15911591
last_ofs_in_node = ofs_in_node = dn.ofs_in_node;
1592-
end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
1592+
end_offset = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
15931593

15941594
next_block:
15951595
blkaddr = f2fs_data_blkaddr(&dn);
@@ -2246,7 +2246,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret,
22462246
for (i = 1; i < cc->cluster_size; i++) {
22472247
block_t blkaddr;
22482248

2249-
blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_page,
2249+
blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_folio,
22502250
dn.ofs_in_node + i) :
22512251
ei.blk + i - 1;
22522252

@@ -2280,7 +2280,7 @@ int f2fs_read_multi_pages(struct compress_ctx *cc, struct bio **bio_ret,
22802280
block_t blkaddr;
22812281
struct bio_post_read_ctx *ctx;
22822282

2283-
blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_page,
2283+
blkaddr = from_dnode ? data_blkaddr(dn.inode, dn.node_folio,
22842284
dn.ofs_in_node + i + 1) :
22852285
ei.blk + i;
22862286

fs/f2fs/extent_cache.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ static void __update_extent_cache(struct dnode_of_data *dn, enum extent_type typ
934934
if (!__may_extent_tree(dn->inode, type))
935935
return;
936936

937-
ei.fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_page), dn->inode) +
937+
ei.fofs = f2fs_start_bidx_of_node(ofs_of_node(&dn->node_folio->page), dn->inode) +
938938
dn->ofs_in_node;
939939
ei.len = 1;
940940

fs/f2fs/f2fs.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1002,7 +1002,7 @@ struct f2fs_nm_info {
10021002
struct dnode_of_data {
10031003
struct inode *inode; /* vfs inode pointer */
10041004
struct folio *inode_folio; /* its inode folio, NULL is possible */
1005-
struct page *node_page; /* cached direct node page */
1005+
struct folio *node_folio; /* cached direct node folio */
10061006
nid_t nid; /* node id of the direct node block */
10071007
unsigned int ofs_in_node; /* data offset in the node page */
10081008
bool inode_folio_locked; /* inode folio is locked or not */
@@ -1018,7 +1018,7 @@ static inline void set_new_dnode(struct dnode_of_data *dn, struct inode *inode,
10181018
memset(dn, 0, sizeof(*dn));
10191019
dn->inode = inode;
10201020
dn->inode_folio = ifolio;
1021-
dn->node_page = &nfolio->page;
1021+
dn->node_folio = nfolio;
10221022
dn->nid = nid;
10231023
}
10241024

@@ -2904,11 +2904,11 @@ static inline void f2fs_put_page(struct page *page, int unlock)
29042904

29052905
static inline void f2fs_put_dnode(struct dnode_of_data *dn)
29062906
{
2907-
if (dn->node_page)
2908-
f2fs_put_page(dn->node_page, 1);
2909-
if (dn->inode_folio && dn->node_page != &dn->inode_folio->page)
2907+
if (dn->node_folio)
2908+
f2fs_folio_put(dn->node_folio, true);
2909+
if (dn->inode_folio && dn->node_folio != dn->inode_folio)
29102910
f2fs_folio_put(dn->inode_folio, false);
2911-
dn->node_page = NULL;
2911+
dn->node_folio = NULL;
29122912
dn->inode_folio = NULL;
29132913
}
29142914

@@ -3040,14 +3040,14 @@ static inline __le32 *get_dnode_addr(struct inode *inode,
30403040
}
30413041

30423042
static inline block_t data_blkaddr(struct inode *inode,
3043-
struct page *node_page, unsigned int offset)
3043+
struct folio *node_folio, unsigned int offset)
30443044
{
3045-
return le32_to_cpu(*(get_dnode_addr(inode, node_page) + offset));
3045+
return le32_to_cpu(*(get_dnode_addr(inode, &node_folio->page) + offset));
30463046
}
30473047

30483048
static inline block_t f2fs_data_blkaddr(struct dnode_of_data *dn)
30493049
{
3050-
return data_blkaddr(dn->inode, dn->node_page, dn->ofs_in_node);
3050+
return data_blkaddr(dn->inode, dn->node_folio, dn->ofs_in_node);
30513051
}
30523052

30533053
static inline int f2fs_test_bit(unsigned int nr, char *addr)

fs/f2fs/file.c

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -404,7 +404,7 @@ static bool __found_offset(struct address_space *mapping,
404404
bool compressed_cluster = false;
405405

406406
if (f2fs_compressed_file(inode)) {
407-
block_t first_blkaddr = data_blkaddr(dn->inode, dn->node_page,
407+
block_t first_blkaddr = data_blkaddr(dn->inode, dn->node_folio,
408408
ALIGN_DOWN(dn->ofs_in_node, F2FS_I(inode)->i_cluster_size));
409409

410410
compressed_cluster = first_blkaddr == COMPRESS_ADDR;
@@ -474,7 +474,7 @@ static loff_t f2fs_seek_block(struct file *file, loff_t offset, int whence)
474474
}
475475
}
476476

477-
end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
477+
end_offset = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
478478

479479
/* find data/hole in dnode block */
480480
for (; dn.ofs_in_node < end_offset;
@@ -628,7 +628,7 @@ void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count)
628628
block_t blkstart;
629629
int blklen = 0;
630630

631-
addr = get_dnode_addr(dn->inode, dn->node_page) + ofs;
631+
addr = get_dnode_addr(dn->inode, &dn->node_folio->page) + ofs;
632632
blkstart = le32_to_cpu(*addr);
633633

634634
/* Assumption: truncation starts with cluster */
@@ -692,7 +692,7 @@ void f2fs_truncate_data_blocks_range(struct dnode_of_data *dn, int count)
692692
* once we invalidate valid blkaddr in range [ofs, ofs + count],
693693
* we will invalidate all blkaddr in the whole range.
694694
*/
695-
fofs = f2fs_start_bidx_of_node(ofs_of_node(dn->node_page),
695+
fofs = f2fs_start_bidx_of_node(ofs_of_node(&dn->node_folio->page),
696696
dn->inode) + ofs;
697697
f2fs_update_read_extent_cache_range(dn, fofs, 0, len);
698698
f2fs_update_age_extent_cache_range(dn, fofs, len);
@@ -799,12 +799,12 @@ int f2fs_do_truncate_blocks(struct inode *inode, u64 from, bool lock)
799799
goto out;
800800
}
801801

802-
count = ADDRS_PER_PAGE(dn.node_page, inode);
802+
count = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
803803

804804
count -= dn.ofs_in_node;
805805
f2fs_bug_on(sbi, count < 0);
806806

807-
if (dn.ofs_in_node || IS_INODE(dn.node_page)) {
807+
if (dn.ofs_in_node || IS_INODE(&dn.node_folio->page)) {
808808
f2fs_truncate_data_blocks_range(&dn, count);
809809
free_from += count;
810810
}
@@ -1205,7 +1205,7 @@ int f2fs_truncate_hole(struct inode *inode, pgoff_t pg_start, pgoff_t pg_end)
12051205
return err;
12061206
}
12071207

1208-
end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
1208+
end_offset = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
12091209
count = min(end_offset - dn.ofs_in_node, pg_end - pg_start);
12101210

12111211
f2fs_bug_on(F2FS_I_SB(inode), count == 0 || count > end_offset);
@@ -1300,7 +1300,7 @@ static int __read_out_blkaddrs(struct inode *inode, block_t *blkaddr,
13001300
goto next;
13011301
}
13021302

1303-
done = min((pgoff_t)ADDRS_PER_PAGE(dn.node_page, inode) -
1303+
done = min((pgoff_t)ADDRS_PER_PAGE(&dn.node_folio->page, inode) -
13041304
dn.ofs_in_node, len);
13051305
for (i = 0; i < done; i++, blkaddr++, do_replace++, dn.ofs_in_node++) {
13061306
*blkaddr = f2fs_data_blkaddr(&dn);
@@ -1389,7 +1389,7 @@ static int __clone_blkaddrs(struct inode *src_inode, struct inode *dst_inode,
13891389
}
13901390

13911391
ilen = min((pgoff_t)
1392-
ADDRS_PER_PAGE(dn.node_page, dst_inode) -
1392+
ADDRS_PER_PAGE(&dn.node_folio->page, dst_inode) -
13931393
dn.ofs_in_node, len - i);
13941394
do {
13951395
dn.data_blkaddr = f2fs_data_blkaddr(&dn);
@@ -1679,7 +1679,7 @@ static int f2fs_zero_range(struct inode *inode, loff_t offset, loff_t len,
16791679
goto out;
16801680
}
16811681

1682-
end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
1682+
end_offset = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
16831683
end = min(pg_end, end_offset - dn.ofs_in_node + index);
16841684

16851685
ret = f2fs_do_zero_range(&dn, index, end);
@@ -3715,7 +3715,7 @@ static int release_compress_blocks(struct dnode_of_data *dn, pgoff_t count)
37153715
int i;
37163716

37173717
for (i = 0; i < count; i++) {
3718-
blkaddr = data_blkaddr(dn->inode, dn->node_page,
3718+
blkaddr = data_blkaddr(dn->inode, dn->node_folio,
37193719
dn->ofs_in_node + i);
37203720

37213721
if (!__is_valid_data_blkaddr(blkaddr))
@@ -3833,7 +3833,7 @@ static int f2fs_release_compress_blocks(struct file *filp, unsigned long arg)
38333833
break;
38343834
}
38353835

3836-
end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
3836+
end_offset = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
38373837
count = min(end_offset - dn.ofs_in_node, last_idx - page_idx);
38383838
count = round_up(count, fi->i_cluster_size);
38393839

@@ -3884,7 +3884,7 @@ static int reserve_compress_blocks(struct dnode_of_data *dn, pgoff_t count,
38843884
int i;
38853885

38863886
for (i = 0; i < count; i++) {
3887-
blkaddr = data_blkaddr(dn->inode, dn->node_page,
3887+
blkaddr = data_blkaddr(dn->inode, dn->node_folio,
38883888
dn->ofs_in_node + i);
38893889

38903890
if (!__is_valid_data_blkaddr(blkaddr))
@@ -3901,7 +3901,7 @@ static int reserve_compress_blocks(struct dnode_of_data *dn, pgoff_t count,
39013901
int ret;
39023902

39033903
for (i = 0; i < cluster_size; i++) {
3904-
blkaddr = data_blkaddr(dn->inode, dn->node_page,
3904+
blkaddr = data_blkaddr(dn->inode, dn->node_folio,
39053905
dn->ofs_in_node + i);
39063906

39073907
if (i == 0) {
@@ -4011,7 +4011,7 @@ static int f2fs_reserve_compress_blocks(struct file *filp, unsigned long arg)
40114011
break;
40124012
}
40134013

4014-
end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
4014+
end_offset = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
40154015
count = min(end_offset - dn.ofs_in_node, last_idx - page_idx);
40164016
count = round_up(count, fi->i_cluster_size);
40174017

@@ -4175,7 +4175,7 @@ static int f2fs_sec_trim_file(struct file *filp, unsigned long arg)
41754175
goto out;
41764176
}
41774177

4178-
end_offset = ADDRS_PER_PAGE(dn.node_page, inode);
4178+
end_offset = ADDRS_PER_PAGE(&dn.node_folio->page, inode);
41794179
count = min(end_offset - dn.ofs_in_node, pg_end - index);
41804180
for (i = 0; i < count; i++, index++, dn.ofs_in_node++) {
41814181
struct block_device *cur_bdev;

fs/f2fs/gc.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,7 +1178,7 @@ static bool is_alive(struct f2fs_sb_info *sbi, struct f2fs_summary *sum,
11781178
}
11791179

11801180
*nofs = ofs_of_node(&node_folio->page);
1181-
source_blkaddr = data_blkaddr(NULL, &node_folio->page, ofs_in_node);
1181+
source_blkaddr = data_blkaddr(NULL, node_folio, ofs_in_node);
11821182
f2fs_folio_put(node_folio, true);
11831183

11841184
if (source_blkaddr != blkaddr) {

0 commit comments

Comments
 (0)