Grab a folio instead of a page.  Also convert seg_info_to_sit_page() to
seg_info_to_sit_folio() and use a folio in f2fs_flush_sit_entries().
Saves a couple of calls to compound_head().

Signed-off-by: Matthew Wilcox (Oracle) <wi...@infradead.org>
---
 fs/f2fs/segment.c | 20 ++++++++++----------
 fs/f2fs/segment.h |  6 +++---
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
index 8476419db9e4..272490a50a04 100644
--- a/fs/f2fs/segment.c
+++ b/fs/f2fs/segment.c
@@ -4497,23 +4497,23 @@ static struct page *get_current_sit_page(struct 
f2fs_sb_info *sbi,
        return f2fs_get_meta_page(sbi, current_sit_addr(sbi, segno));
 }
 
-static struct page *get_next_sit_page(struct f2fs_sb_info *sbi,
+static struct folio *get_next_sit_folio(struct f2fs_sb_info *sbi,
                                        unsigned int start)
 {
        struct sit_info *sit_i = SIT_I(sbi);
-       struct page *page;
+       struct folio *folio;
        pgoff_t src_off, dst_off;
 
        src_off = current_sit_addr(sbi, start);
        dst_off = next_sit_addr(sbi, src_off);
 
-       page = f2fs_grab_meta_page(sbi, dst_off);
-       seg_info_to_sit_page(sbi, page, start);
+       folio = f2fs_grab_meta_folio(sbi, dst_off);
+       seg_info_to_sit_folio(sbi, folio, start);
 
-       set_page_dirty(page);
+       folio_mark_dirty(folio);
        set_to_next_sit(sit_i, start);
 
-       return page;
+       return folio;
 }
 
 static struct sit_entry_set *grab_sit_entry_set(void)
@@ -4643,7 +4643,7 @@ void f2fs_flush_sit_entries(struct f2fs_sb_info *sbi, 
struct cp_control *cpc)
         * #2, flush sit entries to sit page.
         */
        list_for_each_entry_safe(ses, tmp, head, set_list) {
-               struct page *page = NULL;
+               struct folio *folio = NULL;
                struct f2fs_sit_block *raw_sit = NULL;
                unsigned int start_segno = ses->start_segno;
                unsigned int end = min(start_segno + SIT_ENTRY_PER_BLOCK,
@@ -4657,8 +4657,8 @@ void f2fs_flush_sit_entries(struct f2fs_sb_info *sbi, 
struct cp_control *cpc)
                if (to_journal) {
                        down_write(&curseg->journal_rwsem);
                } else {
-                       page = get_next_sit_page(sbi, start_segno);
-                       raw_sit = page_address(page);
+                       folio = get_next_sit_folio(sbi, start_segno);
+                       raw_sit = folio_address(folio);
                }
 
                /* flush dirty sit entries in region of current sit set */
@@ -4704,7 +4704,7 @@ void f2fs_flush_sit_entries(struct f2fs_sb_info *sbi, 
struct cp_control *cpc)
                if (to_journal)
                        up_write(&curseg->journal_rwsem);
                else
-                       f2fs_put_page(page, 1);
+                       f2fs_folio_put(folio, true);
 
                f2fs_bug_on(sbi, ses->entry_cnt);
                release_sit_entry_set(ses);
diff --git a/fs/f2fs/segment.h b/fs/f2fs/segment.h
index 0465dc00b349..913f002668b4 100644
--- a/fs/f2fs/segment.h
+++ b/fs/f2fs/segment.h
@@ -385,8 +385,8 @@ static inline void __seg_info_to_raw_sit(struct seg_entry 
*se,
        rs->mtime = cpu_to_le64(se->mtime);
 }
 
-static inline void seg_info_to_sit_page(struct f2fs_sb_info *sbi,
-                               struct page *page, unsigned int start)
+static inline void seg_info_to_sit_folio(struct f2fs_sb_info *sbi,
+                               struct folio *folio, unsigned int start)
 {
        struct f2fs_sit_block *raw_sit;
        struct seg_entry *se;
@@ -395,7 +395,7 @@ static inline void seg_info_to_sit_page(struct f2fs_sb_info 
*sbi,
                                        (unsigned long)MAIN_SEGS(sbi));
        int i;
 
-       raw_sit = (struct f2fs_sit_block *)page_address(page);
+       raw_sit = folio_address(folio);
        memset(raw_sit, 0, PAGE_SIZE);
        for (i = 0; i < end - start; i++) {
                rs = &raw_sit->entries[i];
-- 
2.47.2



_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel

Reply via email to