diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c index f7b03ba9c0d7..0177f9434c25 100644 --- a/fs/f2fs/node.c +++ b/fs/f2fs/node.c @@ -1621,11 +1621,11 @@ flush_now: nid_in_journal(sum, offset) = cpu_to_le32(nid); } - if (nat_get_blkaddr(ne) == NULL_ADDR) { + if (nat_get_blkaddr(ne) == NULL_ADDR && + !add_free_nid(NM_I(sbi), nid)) { write_lock(&nm_i->nat_tree_lock); __del_from_nat_cache(nm_i, ne); write_unlock(&nm_i->nat_tree_lock); - add_free_nid(NM_I(sbi), nid); } else { write_lock(&nm_i->nat_tree_lock); __clear_nat_cache_dirty(nm_i, ne);