Skip to content

Commit 4f5e34f

Browse files
author
Matthew Wilcox (Oracle)
committed
f2fs: Convert f2fs_set_data_page_dirty to f2fs_dirty_data_folio
Removes several calls to __set_page_dirty_nobuffers(). Also turn the PageSwapCache() case into a BUG() as there's no way for a swapcache page to make it to a filesystem that doesn't use SWP_FS_OPS. Signed-off-by: Matthew Wilcox (Oracle) <[email protected]> Tested-by: Damien Le Moal <[email protected]> Acked-by: Damien Le Moal <[email protected]> Tested-by: Mike Marshall <[email protected]> # orangefs Tested-by: David Howells <[email protected]> # afs
1 parent 1d9ac65 commit 4f5e34f

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

fs/f2fs/checkpoint.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1015,7 +1015,7 @@ static void __remove_dirty_inode(struct inode *inode, enum inode_type type)
10151015
stat_dec_dirty_inode(F2FS_I_SB(inode), type);
10161016
}
10171017

1018-
void f2fs_update_dirty_page(struct inode *inode, struct page *page)
1018+
void f2fs_update_dirty_folio(struct inode *inode, struct folio *folio)
10191019
{
10201020
struct f2fs_sb_info *sbi = F2FS_I_SB(inode);
10211021
enum inode_type type = S_ISDIR(inode->i_mode) ? DIR_INODE : FILE_INODE;
@@ -1030,7 +1030,7 @@ void f2fs_update_dirty_page(struct inode *inode, struct page *page)
10301030
inode_inc_dirty_pages(inode);
10311031
spin_unlock(&sbi->inode_lock[type]);
10321032

1033-
set_page_private_reference(page);
1033+
set_page_private_reference(&folio->page);
10341034
}
10351035

10361036
void f2fs_remove_dirty_inode(struct inode *inode)

fs/f2fs/data.c

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3548,35 +3548,35 @@ int f2fs_release_page(struct page *page, gfp_t wait)
35483548
return 1;
35493549
}
35503550

3551-
static int f2fs_set_data_page_dirty(struct page *page)
3551+
static bool f2fs_dirty_data_folio(struct address_space *mapping,
3552+
struct folio *folio)
35523553
{
3553-
struct inode *inode = page_file_mapping(page)->host;
3554+
struct inode *inode = mapping->host;
35543555

3555-
trace_f2fs_set_page_dirty(page, DATA);
3556+
trace_f2fs_set_page_dirty(&folio->page, DATA);
35563557

3557-
if (!PageUptodate(page))
3558-
SetPageUptodate(page);
3559-
if (PageSwapCache(page))
3560-
return __set_page_dirty_nobuffers(page);
3558+
if (!folio_test_uptodate(folio))
3559+
folio_mark_uptodate(folio);
3560+
BUG_ON(folio_test_swapcache(folio));
35613561

35623562
if (f2fs_is_atomic_file(inode) && !f2fs_is_commit_atomic_write(inode)) {
3563-
if (!page_private_atomic(page)) {
3564-
f2fs_register_inmem_page(inode, page);
3565-
return 1;
3563+
if (!page_private_atomic(&folio->page)) {
3564+
f2fs_register_inmem_page(inode, &folio->page);
3565+
return true;
35663566
}
35673567
/*
35683568
* Previously, this page has been registered, we just
35693569
* return here.
35703570
*/
3571-
return 0;
3571+
return false;
35723572
}
35733573

3574-
if (!PageDirty(page)) {
3575-
__set_page_dirty_nobuffers(page);
3576-
f2fs_update_dirty_page(inode, page);
3577-
return 1;
3574+
if (!folio_test_dirty(folio)) {
3575+
filemap_dirty_folio(mapping, folio);
3576+
f2fs_update_dirty_folio(inode, folio);
3577+
return true;
35783578
}
3579-
return 0;
3579+
return true;
35803580
}
35813581

35823582

@@ -3936,7 +3936,7 @@ const struct address_space_operations f2fs_dblock_aops = {
39363936
.writepages = f2fs_write_data_pages,
39373937
.write_begin = f2fs_write_begin,
39383938
.write_end = f2fs_write_end,
3939-
.set_page_dirty = f2fs_set_data_page_dirty,
3939+
.dirty_folio = f2fs_dirty_data_folio,
39403940
.invalidate_folio = f2fs_invalidate_folio,
39413941
.releasepage = f2fs_release_page,
39423942
.direct_IO = noop_direct_IO,

fs/f2fs/f2fs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3597,7 +3597,7 @@ void f2fs_add_orphan_inode(struct inode *inode);
35973597
void f2fs_remove_orphan_inode(struct f2fs_sb_info *sbi, nid_t ino);
35983598
int f2fs_recover_orphan_inodes(struct f2fs_sb_info *sbi);
35993599
int f2fs_get_valid_checkpoint(struct f2fs_sb_info *sbi);
3600-
void f2fs_update_dirty_page(struct inode *inode, struct page *page);
3600+
void f2fs_update_dirty_folio(struct inode *inode, struct folio *folio);
36013601
void f2fs_remove_dirty_inode(struct inode *inode);
36023602
int f2fs_sync_dirty_inodes(struct f2fs_sb_info *sbi, enum inode_type type);
36033603
void f2fs_wait_on_all_pages(struct f2fs_sb_info *sbi, int type);

0 commit comments

Comments
 (0)