summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <willy@infradead.org>2025-02-18 05:51:38 +0000
committerJaegeuk Kim <jaegeuk@kernel.org>2025-03-04 17:02:24 +0000
commit015d9c56bd5e925273bc75077f37f48496b2048d (patch)
treeb621ab695bbe8dca574d0fbdd8d3ae0717ebd7ab
parent894ac9d330c9eb8e108d0d3771ffa7bc89112316 (diff)
downloadlinux-015d9c56bd5e925273bc75077f37f48496b2048d.tar.gz
linux-015d9c56bd5e925273bc75077f37f48496b2048d.zip
f2fs: Convert f2fs_flush_inline_data() to use a folio
Use the folio APIs where they exist. Saves several hidden calls to compound_head(). Also removes a reference to page->mapping. Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: Chao Yu <chao@kernel.org> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fs/f2fs/node.c31
1 files changed, 13 insertions, 18 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index c1274bcec68b..a624522c98bc 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1958,32 +1958,27 @@ void f2fs_flush_inline_data(struct f2fs_sb_info *sbi)
int i;
for (i = 0; i < nr_folios; i++) {
- struct page *page = &fbatch.folios[i]->page;
+ struct folio *folio = fbatch.folios[i];
- if (!IS_INODE(page))
+ if (!IS_INODE(&folio->page))
continue;
- lock_page(page);
+ folio_lock(folio);
- if (unlikely(page->mapping != NODE_MAPPING(sbi))) {
-continue_unlock:
- unlock_page(page);
- continue;
- }
-
- if (!PageDirty(page)) {
- /* someone wrote it for us */
- goto continue_unlock;
- }
+ if (unlikely(folio->mapping != NODE_MAPPING(sbi)))
+ goto unlock;
+ if (!folio_test_dirty(folio))
+ goto unlock;
/* flush inline_data, if it's async context. */
- if (page_private_inline(page)) {
- clear_page_private_inline(page);
- unlock_page(page);
- flush_inline_data(sbi, ino_of_node(page));
+ if (page_private_inline(&folio->page)) {
+ clear_page_private_inline(&folio->page);
+ folio_unlock(folio);
+ flush_inline_data(sbi, ino_of_node(&folio->page));
continue;
}
- unlock_page(page);
+unlock:
+ folio_unlock(folio);
}
folio_batch_release(&fbatch);
cond_resched();