Skip to content

Commit c26cd04

Browse files
author
Matthew Wilcox (Oracle)
committed
f2fs: Convert to release_folio
While converting f2fs_release_page() to f2fs_release_folio(), cache the sb_info so we don't need to retrieve it twice, and remove the redundant call to set_page_private(). The use of folios should be pushed further into f2fs from here. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Jeff Layton <jlayton@kernel.org>
1 parent 3c402f1 commit c26cd04

5 files changed

Lines changed: 21 additions & 19 deletions

File tree

fs/f2fs/checkpoint.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,7 @@ const struct address_space_operations f2fs_meta_aops = {
468468
.writepages = f2fs_write_meta_pages,
469469
.dirty_folio = f2fs_dirty_meta_folio,
470470
.invalidate_folio = f2fs_invalidate_folio,
471-
.releasepage = f2fs_release_page,
471+
.release_folio = f2fs_release_folio,
472472
#ifdef CONFIG_MIGRATION
473473
.migratepage = f2fs_migrate_page,
474474
#endif

fs/f2fs/compress.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1746,7 +1746,7 @@ unsigned int f2fs_cluster_blocks_are_contiguous(struct dnode_of_data *dn)
17461746
}
17471747

17481748
const struct address_space_operations f2fs_compress_aops = {
1749-
.releasepage = f2fs_release_page,
1749+
.release_folio = f2fs_release_folio,
17501750
.invalidate_folio = f2fs_invalidate_folio,
17511751
};
17521752

fs/f2fs/data.c

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3528,28 +3528,30 @@ void f2fs_invalidate_folio(struct folio *folio, size_t offset, size_t length)
35283528
folio_detach_private(folio);
35293529
}
35303530

3531-
int f2fs_release_page(struct page *page, gfp_t wait)
3531+
bool f2fs_release_folio(struct folio *folio, gfp_t wait)
35323532
{
3533-
/* If this is dirty page, keep PagePrivate */
3534-
if (PageDirty(page))
3535-
return 0;
3533+
struct f2fs_sb_info *sbi;
3534+
3535+
/* If this is dirty folio, keep private data */
3536+
if (folio_test_dirty(folio))
3537+
return false;
35363538

35373539
/* This is atomic written page, keep Private */
3538-
if (page_private_atomic(page))
3539-
return 0;
3540+
if (page_private_atomic(&folio->page))
3541+
return false;
35403542

3541-
if (test_opt(F2FS_P_SB(page), COMPRESS_CACHE)) {
3542-
struct inode *inode = page->mapping->host;
3543+
sbi = F2FS_M_SB(folio->mapping);
3544+
if (test_opt(sbi, COMPRESS_CACHE)) {
3545+
struct inode *inode = folio->mapping->host;
35433546

3544-
if (inode->i_ino == F2FS_COMPRESS_INO(F2FS_I_SB(inode)))
3545-
clear_page_private_data(page);
3547+
if (inode->i_ino == F2FS_COMPRESS_INO(sbi))
3548+
clear_page_private_data(&folio->page);
35463549
}
35473550

3548-
clear_page_private_gcing(page);
3551+
clear_page_private_gcing(&folio->page);
35493552

3550-
detach_page_private(page);
3551-
set_page_private(page, 0);
3552-
return 1;
3553+
folio_detach_private(folio);
3554+
return true;
35533555
}
35543556

35553557
static bool f2fs_dirty_data_folio(struct address_space *mapping,
@@ -3944,7 +3946,7 @@ const struct address_space_operations f2fs_dblock_aops = {
39443946
.write_end = f2fs_write_end,
39453947
.dirty_folio = f2fs_dirty_data_folio,
39463948
.invalidate_folio = f2fs_invalidate_folio,
3947-
.releasepage = f2fs_release_page,
3949+
.release_folio = f2fs_release_folio,
39483950
.direct_IO = noop_direct_IO,
39493951
.bmap = f2fs_bmap,
39503952
.swap_activate = f2fs_swap_activate,

fs/f2fs/f2fs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3768,7 +3768,7 @@ int f2fs_write_single_data_page(struct page *page, int *submitted,
37683768
int compr_blocks, bool allow_balance);
37693769
void f2fs_write_failed(struct inode *inode, loff_t to);
37703770
void f2fs_invalidate_folio(struct folio *folio, size_t offset, size_t length);
3771-
int f2fs_release_page(struct page *page, gfp_t wait);
3771+
bool f2fs_release_folio(struct folio *folio, gfp_t wait);
37723772
#ifdef CONFIG_MIGRATION
37733773
int f2fs_migrate_page(struct address_space *mapping, struct page *newpage,
37743774
struct page *page, enum migrate_mode mode);

fs/f2fs/node.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2165,7 +2165,7 @@ const struct address_space_operations f2fs_node_aops = {
21652165
.writepages = f2fs_write_node_pages,
21662166
.dirty_folio = f2fs_dirty_node_folio,
21672167
.invalidate_folio = f2fs_invalidate_folio,
2168-
.releasepage = f2fs_release_page,
2168+
.release_folio = f2fs_release_folio,
21692169
#ifdef CONFIG_MIGRATION
21702170
.migratepage = f2fs_migrate_page,
21712171
#endif

0 commit comments

Comments
 (0)