|
@@ -171,7 +171,7 @@ retry:
|
|
|
static void __clear_nat_cache_dirty(struct f2fs_nm_info *nm_i,
|
|
static void __clear_nat_cache_dirty(struct f2fs_nm_info *nm_i,
|
|
|
struct nat_entry *ne)
|
|
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;
|
|
struct nat_entry_set *head;
|
|
|
|
|
|
|
|
head = radix_tree_lookup(&nm_i->nat_set_root, set);
|
|
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;
|
|
nid_t set_idx = 0;
|
|
|
LIST_HEAD(sets);
|
|
LIST_HEAD(sets);
|
|
|
|
|
|
|
|
|
|
+ if (!nm_i->dirty_nat_cnt)
|
|
|
|
|
+ return;
|
|
|
/*
|
|
/*
|
|
|
* if there are no enough space in journal to store dirty nat
|
|
* if there are no enough space in journal to store dirty nat
|
|
|
* entries, remove all entries from journal and merge them
|
|
* 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))
|
|
if (!__has_cursum_space(sum, nm_i->dirty_nat_cnt, NAT_JOURNAL))
|
|
|
remove_nats_in_journal(sbi);
|
|
remove_nats_in_journal(sbi);
|
|
|
|
|
|
|
|
- if (!nm_i->dirty_nat_cnt)
|
|
|
|
|
- return;
|
|
|
|
|
-
|
|
|
|
|
while ((found = __gang_lookup_nat_set(nm_i,
|
|
while ((found = __gang_lookup_nat_set(nm_i,
|
|
|
set_idx, NATVEC_SIZE, setvec))) {
|
|
set_idx, NATVEC_SIZE, setvec))) {
|
|
|
unsigned idx;
|
|
unsigned idx;
|