|
|
@@ -21,6 +21,8 @@
|
|
|
#include "segment.h"
|
|
|
#include <trace/events/f2fs.h>
|
|
|
|
|
|
+#define on_build_free_nids(nmi) mutex_is_locked(&nm_i->build_lock)
|
|
|
+
|
|
|
static struct kmem_cache *nat_entry_slab;
|
|
|
static struct kmem_cache *free_nid_slab;
|
|
|
|
|
|
@@ -1422,7 +1424,7 @@ retry:
|
|
|
spin_lock(&nm_i->free_nid_list_lock);
|
|
|
|
|
|
/* We should not use stale free nids created by build_free_nids */
|
|
|
- if (nm_i->fcnt && !sbi->on_build_free_nids) {
|
|
|
+ if (nm_i->fcnt && !on_build_free_nids(nm_i)) {
|
|
|
f2fs_bug_on(list_empty(&nm_i->free_nid_list));
|
|
|
list_for_each(this, &nm_i->free_nid_list) {
|
|
|
i = list_entry(this, struct free_nid, list);
|
|
|
@@ -1441,9 +1443,7 @@ retry:
|
|
|
|
|
|
/* Let's scan nat pages and its caches to get free nids */
|
|
|
mutex_lock(&nm_i->build_lock);
|
|
|
- sbi->on_build_free_nids = true;
|
|
|
build_free_nids(sbi);
|
|
|
- sbi->on_build_free_nids = false;
|
|
|
mutex_unlock(&nm_i->build_lock);
|
|
|
goto retry;
|
|
|
}
|