OSDN Git Service

f2fs: check dirty_nat_cnt before flushing nat entries in journal
authorChangman Lee <cm224.lee@samsung.com>
Tue, 25 Nov 2014 03:44:23 +0000 (12:44 +0900)
committerJaegeuk Kim <jaegeuk@kernel.org>
Wed, 26 Nov 2014 01:26:34 +0000 (17:26 -0800)
It's meaningless to check dirty_nat_cnt after re-dirtying nat entries in
journal. And although there are rooms for dirty nat entires if dirty_nat_cnt
is zero, it's also meaningless to check __has_cursum_space.

Signed-off-by: Changman Lee <cm224.lee@samsung.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
fs/f2fs/node.c

index 36656ad..4af3fee 100644 (file)
@@ -171,7 +171,7 @@ retry:
 static void __clear_nat_cache_dirty(struct f2fs_nm_info *nm_i,
                                                struct nat_entry *ne)
 {
-       nid_t set = ne->ni.nid / NAT_ENTRY_PER_BLOCK;
+       nid_t set = NAT_BLOCK_OFFSET(ne->ni.nid);
        struct nat_entry_set *head;
 
        head = radix_tree_lookup(&nm_i->nat_set_root, set);
@@ -1945,6 +1945,8 @@ void flush_nat_entries(struct f2fs_sb_info *sbi)
        nid_t set_idx = 0;
        LIST_HEAD(sets);
 
+       if (!nm_i->dirty_nat_cnt)
+               return;
        /*
         * if there are no enough space in journal to store dirty nat
         * entries, remove all entries from journal and merge them
@@ -1953,9 +1955,6 @@ void flush_nat_entries(struct f2fs_sb_info *sbi)
        if (!__has_cursum_space(sum, nm_i->dirty_nat_cnt, NAT_JOURNAL))
                remove_nats_in_journal(sbi);
 
-       if (!nm_i->dirty_nat_cnt)
-               return;
-
        while ((found = __gang_lookup_nat_set(nm_i,
                                        set_idx, NATVEC_SIZE, setvec))) {
                unsigned idx;