Commit 4ac912427c42 ("f2fs: introduce free nid bitmap") copied codes
from __build_free_nids() into scan_free_nid_bits(), they are redundant,
introduce one common function scan_curseg_cache for cleanup.

Signed-off-by: Chao Yu <[email protected]>
---
 fs/f2fs/node.c | 50 +++++++++++++++++++++++---------------------------
 1 file changed, 23 insertions(+), 27 deletions(-)

diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 9c80d48bfe6d..810d84e2ae92 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1971,11 +1971,30 @@ static void scan_nat_page(struct f2fs_sb_info *sbi,
        }
 }
 
-static void scan_free_nid_bits(struct f2fs_sb_info *sbi)
+static void scan_curseg_cache(struct f2fs_sb_info *sbi)
 {
-       struct f2fs_nm_info *nm_i = NM_I(sbi);
        struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_HOT_DATA);
        struct f2fs_journal *journal = curseg->journal;
+       int i;
+
+       down_read(&curseg->journal_rwsem);
+       for (i = 0; i < nats_in_cursum(journal); i++) {
+               block_t addr;
+               nid_t nid;
+
+               addr = le32_to_cpu(nat_in_journal(journal, i).block_addr);
+               nid = le32_to_cpu(nid_in_journal(journal, i));
+               if (addr == NULL_ADDR)
+                       add_free_nid(sbi, nid, true);
+               else
+                       remove_free_nid(sbi, nid);
+       }
+       up_read(&curseg->journal_rwsem);
+}
+
+static void scan_free_nid_bits(struct f2fs_sb_info *sbi)
+{
+       struct f2fs_nm_info *nm_i = NM_I(sbi);
        unsigned int i, idx;
 
        down_read(&nm_i->nat_tree_lock);
@@ -2002,27 +2021,14 @@ static void scan_free_nid_bits(struct f2fs_sb_info *sbi)
                }
        }
 out:
-       down_read(&curseg->journal_rwsem);
-       for (i = 0; i < nats_in_cursum(journal); i++) {
-               block_t addr;
-               nid_t nid;
+       scan_curseg_cache(sbi);
 
-               addr = le32_to_cpu(nat_in_journal(journal, i).block_addr);
-               nid = le32_to_cpu(nid_in_journal(journal, i));
-               if (addr == NULL_ADDR)
-                       add_free_nid(sbi, nid, true);
-               else
-                       remove_free_nid(sbi, nid);
-       }
-       up_read(&curseg->journal_rwsem);
        up_read(&nm_i->nat_tree_lock);
 }
 
 static void __build_free_nids(struct f2fs_sb_info *sbi, bool sync, bool mount)
 {
        struct f2fs_nm_info *nm_i = NM_I(sbi);
-       struct curseg_info *curseg = CURSEG_I(sbi, CURSEG_HOT_DATA);
-       struct f2fs_journal *journal = curseg->journal;
        int i = 0;
        nid_t nid = nm_i->next_scan_nid;
 
@@ -2072,18 +2078,8 @@ static void __build_free_nids(struct f2fs_sb_info *sbi, 
bool sync, bool mount)
        nm_i->next_scan_nid = nid;
 
        /* find free nids from current sum_pages */
-       down_read(&curseg->journal_rwsem);
-       for (i = 0; i < nats_in_cursum(journal); i++) {
-               block_t addr;
+       scan_curseg_cache(sbi);
 
-               addr = le32_to_cpu(nat_in_journal(journal, i).block_addr);
-               nid = le32_to_cpu(nid_in_journal(journal, i));
-               if (addr == NULL_ADDR)
-                       add_free_nid(sbi, nid, true);
-               else
-                       remove_free_nid(sbi, nid);
-       }
-       up_read(&curseg->journal_rwsem);
        up_read(&nm_i->nat_tree_lock);
 
        ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nm_i->next_scan_nid),
-- 
2.15.0.55.gc2ece9dc4de6

Reply via email to