Skip to content

Commit 96ea46f

Browse files
chaseyuJaegeuk Kim
authored andcommitted
f2fs: convert f2fs_read_inline_data() to use folio
Convert f2fs_read_inline_data() to use folio and related functionality, and also convert its caller to use folio. Signed-off-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
1 parent ed54eed commit 96ea46f

3 files changed

Lines changed: 24 additions & 25 deletions

File tree

fs/f2fs/data.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2458,20 +2458,19 @@ static int f2fs_mpage_readpages(struct inode *inode,
24582458

24592459
static int f2fs_read_data_folio(struct file *file, struct folio *folio)
24602460
{
2461-
struct page *page = &folio->page;
2462-
struct inode *inode = page_file_mapping(page)->host;
2461+
struct inode *inode = folio_file_mapping(folio)->host;
24632462
int ret = -EAGAIN;
24642463

2465-
trace_f2fs_readpage(page, DATA);
2464+
trace_f2fs_readpage(&folio->page, DATA);
24662465

24672466
if (!f2fs_is_compress_backend_ready(inode)) {
2468-
unlock_page(page);
2467+
folio_unlock(folio);
24692468
return -EOPNOTSUPP;
24702469
}
24712470

24722471
/* If the file has inline data, try to read it directly */
24732472
if (f2fs_has_inline_data(inode))
2474-
ret = f2fs_read_inline_data(inode, page);
2473+
ret = f2fs_read_inline_data(inode, folio);
24752474
if (ret == -EAGAIN)
24762475
ret = f2fs_mpage_readpages(inode, NULL, folio);
24772476
return ret;
@@ -3400,7 +3399,7 @@ static int prepare_write_begin(struct f2fs_sb_info *sbi,
34003399

34013400
if (f2fs_has_inline_data(inode)) {
34023401
if (pos + len <= MAX_INLINE_DATA(inode)) {
3403-
f2fs_do_read_inline_data(page, ipage);
3402+
f2fs_do_read_inline_data(page_folio(page), ipage);
34043403
set_inode_flag(inode, FI_DATA_EXIST);
34053404
if (inode->i_nlink)
34063405
set_page_private_inline(ipage);

fs/f2fs/f2fs.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4154,10 +4154,10 @@ extern struct kmem_cache *f2fs_inode_entry_slab;
41544154
bool f2fs_may_inline_data(struct inode *inode);
41554155
bool f2fs_sanity_check_inline_data(struct inode *inode);
41564156
bool f2fs_may_inline_dentry(struct inode *inode);
4157-
void f2fs_do_read_inline_data(struct page *page, struct page *ipage);
4157+
void f2fs_do_read_inline_data(struct folio *folio, struct page *ipage);
41584158
void f2fs_truncate_inline_inode(struct inode *inode,
41594159
struct page *ipage, u64 from);
4160-
int f2fs_read_inline_data(struct inode *inode, struct page *page);
4160+
int f2fs_read_inline_data(struct inode *inode, struct folio *folio);
41614161
int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page);
41624162
int f2fs_convert_inline_inode(struct inode *inode);
41634163
int f2fs_try_convert_inline_dir(struct inode *dir, struct dentry *dentry);

fs/f2fs/inline.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,22 +61,22 @@ bool f2fs_may_inline_dentry(struct inode *inode)
6161
return true;
6262
}
6363

64-
void f2fs_do_read_inline_data(struct page *page, struct page *ipage)
64+
void f2fs_do_read_inline_data(struct folio *folio, struct page *ipage)
6565
{
66-
struct inode *inode = page->mapping->host;
66+
struct inode *inode = folio_file_mapping(folio)->host;
6767

68-
if (PageUptodate(page))
68+
if (folio_test_uptodate(folio))
6969
return;
7070

71-
f2fs_bug_on(F2FS_P_SB(page), page->index);
71+
f2fs_bug_on(F2FS_I_SB(inode), folio_index(folio));
7272

73-
zero_user_segment(page, MAX_INLINE_DATA(inode), PAGE_SIZE);
73+
folio_zero_segment(folio, MAX_INLINE_DATA(inode), folio_size(folio));
7474

7575
/* Copy the whole inline data block */
76-
memcpy_to_page(page, 0, inline_data_addr(inode, ipage),
76+
memcpy_to_folio(folio, 0, inline_data_addr(inode, ipage),
7777
MAX_INLINE_DATA(inode));
78-
if (!PageUptodate(page))
79-
SetPageUptodate(page);
78+
if (!folio_test_uptodate(folio))
79+
folio_mark_uptodate(folio);
8080
}
8181

8282
void f2fs_truncate_inline_inode(struct inode *inode,
@@ -97,13 +97,13 @@ void f2fs_truncate_inline_inode(struct inode *inode,
9797
clear_inode_flag(inode, FI_DATA_EXIST);
9898
}
9999

100-
int f2fs_read_inline_data(struct inode *inode, struct page *page)
100+
int f2fs_read_inline_data(struct inode *inode, struct folio *folio)
101101
{
102102
struct page *ipage;
103103

104104
ipage = f2fs_get_node_page(F2FS_I_SB(inode), inode->i_ino);
105105
if (IS_ERR(ipage)) {
106-
unlock_page(page);
106+
folio_unlock(folio);
107107
return PTR_ERR(ipage);
108108
}
109109

@@ -112,15 +112,15 @@ int f2fs_read_inline_data(struct inode *inode, struct page *page)
112112
return -EAGAIN;
113113
}
114114

115-
if (page->index)
116-
zero_user_segment(page, 0, PAGE_SIZE);
115+
if (folio_index(folio))
116+
folio_zero_segment(folio, 0, folio_size(folio));
117117
else
118-
f2fs_do_read_inline_data(page, ipage);
118+
f2fs_do_read_inline_data(folio, ipage);
119119

120-
if (!PageUptodate(page))
121-
SetPageUptodate(page);
120+
if (!folio_test_uptodate(folio))
121+
folio_mark_uptodate(folio);
122122
f2fs_put_page(ipage, 1);
123-
unlock_page(page);
123+
folio_unlock(folio);
124124
return 0;
125125
}
126126

@@ -166,7 +166,7 @@ int f2fs_convert_inline_page(struct dnode_of_data *dn, struct page *page)
166166

167167
f2fs_bug_on(F2FS_P_SB(page), folio_test_writeback(page_folio(page)));
168168

169-
f2fs_do_read_inline_data(page, dn->inode_page);
169+
f2fs_do_read_inline_data(page_folio(page), dn->inode_page);
170170
set_page_dirty(page);
171171

172172
/* clear dirty state */

0 commit comments

Comments
 (0)