Lines Matching refs:nm_i

23 #define on_f2fs_build_free_nids(nmi) mutex_is_locked(&(nm_i)->build_lock)
46 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_available_free_memory() local
61 mem_size = (nm_i->nid_cnt[FREE_NID] * in f2fs_available_free_memory()
63 res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 2); in f2fs_available_free_memory()
65 mem_size = (nm_i->nat_cnt * sizeof(struct nat_entry)) >> in f2fs_available_free_memory()
67 res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 2); in f2fs_available_free_memory()
74 res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 1); in f2fs_available_free_memory()
82 res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 1); in f2fs_available_free_memory()
88 res = mem_size < ((avail_ram * nm_i->ram_thresh / 100) >> 1); in f2fs_available_free_memory()
122 struct f2fs_nm_info *nm_i = NM_I(sbi); in get_next_nat_page() local
139 set_to_next_nat(nm_i, nid); in get_next_nat_page()
165 static struct nat_entry *__init_nat_entry(struct f2fs_nm_info *nm_i, in __init_nat_entry() argument
169 f2fs_radix_tree_insert(&nm_i->nat_root, nat_get_nid(ne), ne); in __init_nat_entry()
170 else if (radix_tree_insert(&nm_i->nat_root, nat_get_nid(ne), ne)) in __init_nat_entry()
176 spin_lock(&nm_i->nat_list_lock); in __init_nat_entry()
177 list_add_tail(&ne->list, &nm_i->nat_entries); in __init_nat_entry()
178 spin_unlock(&nm_i->nat_list_lock); in __init_nat_entry()
180 nm_i->nat_cnt++; in __init_nat_entry()
184 static struct nat_entry *__lookup_nat_cache(struct f2fs_nm_info *nm_i, nid_t n) in __lookup_nat_cache() argument
188 ne = radix_tree_lookup(&nm_i->nat_root, n); in __lookup_nat_cache()
192 spin_lock(&nm_i->nat_list_lock); in __lookup_nat_cache()
194 list_move_tail(&ne->list, &nm_i->nat_entries); in __lookup_nat_cache()
195 spin_unlock(&nm_i->nat_list_lock); in __lookup_nat_cache()
201 static unsigned int __gang_lookup_nat_cache(struct f2fs_nm_info *nm_i, in __gang_lookup_nat_cache() argument
204 return radix_tree_gang_lookup(&nm_i->nat_root, (void **)ep, start, nr); in __gang_lookup_nat_cache()
207 static void __del_from_nat_cache(struct f2fs_nm_info *nm_i, struct nat_entry *e) in __del_from_nat_cache() argument
209 radix_tree_delete(&nm_i->nat_root, nat_get_nid(e)); in __del_from_nat_cache()
210 nm_i->nat_cnt--; in __del_from_nat_cache()
214 static struct nat_entry_set *__grab_nat_entry_set(struct f2fs_nm_info *nm_i, in __grab_nat_entry_set() argument
220 head = radix_tree_lookup(&nm_i->nat_set_root, set); in __grab_nat_entry_set()
228 f2fs_radix_tree_insert(&nm_i->nat_set_root, set, head); in __grab_nat_entry_set()
233 static void __set_nat_cache_dirty(struct f2fs_nm_info *nm_i, in __set_nat_cache_dirty() argument
240 head = __grab_nat_entry_set(nm_i, ne); in __set_nat_cache_dirty()
256 nm_i->dirty_nat_cnt++; in __set_nat_cache_dirty()
259 spin_lock(&nm_i->nat_list_lock); in __set_nat_cache_dirty()
264 spin_unlock(&nm_i->nat_list_lock); in __set_nat_cache_dirty()
267 static void __clear_nat_cache_dirty(struct f2fs_nm_info *nm_i, in __clear_nat_cache_dirty() argument
270 spin_lock(&nm_i->nat_list_lock); in __clear_nat_cache_dirty()
271 list_move_tail(&ne->list, &nm_i->nat_entries); in __clear_nat_cache_dirty()
272 spin_unlock(&nm_i->nat_list_lock); in __clear_nat_cache_dirty()
276 nm_i->dirty_nat_cnt--; in __clear_nat_cache_dirty()
279 static unsigned int __gang_lookup_nat_set(struct f2fs_nm_info *nm_i, in __gang_lookup_nat_set() argument
282 return radix_tree_gang_lookup(&nm_i->nat_set_root, (void **)ep, in __gang_lookup_nat_set()
354 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_need_dentry_mark() local
358 down_read(&nm_i->nat_tree_lock); in f2fs_need_dentry_mark()
359 e = __lookup_nat_cache(nm_i, nid); in f2fs_need_dentry_mark()
365 up_read(&nm_i->nat_tree_lock); in f2fs_need_dentry_mark()
371 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_is_checkpointed_node() local
375 down_read(&nm_i->nat_tree_lock); in f2fs_is_checkpointed_node()
376 e = __lookup_nat_cache(nm_i, nid); in f2fs_is_checkpointed_node()
379 up_read(&nm_i->nat_tree_lock); in f2fs_is_checkpointed_node()
385 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_need_inode_block_update() local
389 down_read(&nm_i->nat_tree_lock); in f2fs_need_inode_block_update()
390 e = __lookup_nat_cache(nm_i, ino); in f2fs_need_inode_block_update()
395 up_read(&nm_i->nat_tree_lock); in f2fs_need_inode_block_update()
403 struct f2fs_nm_info *nm_i = NM_I(sbi); in cache_nat_entry() local
410 down_write(&nm_i->nat_tree_lock); in cache_nat_entry()
411 e = __lookup_nat_cache(nm_i, nid); in cache_nat_entry()
413 e = __init_nat_entry(nm_i, new, ne, false); in cache_nat_entry()
419 up_write(&nm_i->nat_tree_lock); in cache_nat_entry()
427 struct f2fs_nm_info *nm_i = NM_I(sbi); in set_node_addr() local
431 down_write(&nm_i->nat_tree_lock); in set_node_addr()
432 e = __lookup_nat_cache(nm_i, ni->nid); in set_node_addr()
434 e = __init_nat_entry(nm_i, new, NULL, true); in set_node_addr()
469 __set_nat_cache_dirty(nm_i, e); in set_node_addr()
473 e = __lookup_nat_cache(nm_i, ni->ino); in set_node_addr()
479 up_write(&nm_i->nat_tree_lock); in set_node_addr()
484 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_try_to_free_nats() local
487 if (!down_write_trylock(&nm_i->nat_tree_lock)) in f2fs_try_to_free_nats()
490 spin_lock(&nm_i->nat_list_lock); in f2fs_try_to_free_nats()
494 if (list_empty(&nm_i->nat_entries)) in f2fs_try_to_free_nats()
497 ne = list_first_entry(&nm_i->nat_entries, in f2fs_try_to_free_nats()
500 spin_unlock(&nm_i->nat_list_lock); in f2fs_try_to_free_nats()
502 __del_from_nat_cache(nm_i, ne); in f2fs_try_to_free_nats()
505 spin_lock(&nm_i->nat_list_lock); in f2fs_try_to_free_nats()
507 spin_unlock(&nm_i->nat_list_lock); in f2fs_try_to_free_nats()
509 up_write(&nm_i->nat_tree_lock); in f2fs_try_to_free_nats()
519 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_get_node_info() local
534 down_read(&nm_i->nat_tree_lock); in f2fs_get_node_info()
535 e = __lookup_nat_cache(nm_i, nid); in f2fs_get_node_info()
540 up_read(&nm_i->nat_tree_lock); in f2fs_get_node_info()
555 up_read(&nm_i->nat_tree_lock); in f2fs_get_node_info()
561 up_read(&nm_i->nat_tree_lock); in f2fs_get_node_info()
2047 static struct free_nid *__lookup_free_nid_list(struct f2fs_nm_info *nm_i, in __lookup_free_nid_list() argument
2050 return radix_tree_lookup(&nm_i->free_nid_root, n); in __lookup_free_nid_list()
2056 struct f2fs_nm_info *nm_i = NM_I(sbi); in __insert_free_nid() local
2058 int err = radix_tree_insert(&nm_i->free_nid_root, i->nid, i); in __insert_free_nid()
2063 nm_i->nid_cnt[state]++; in __insert_free_nid()
2065 list_add_tail(&i->list, &nm_i->free_nid_list); in __insert_free_nid()
2072 struct f2fs_nm_info *nm_i = NM_I(sbi); in __remove_free_nid() local
2075 nm_i->nid_cnt[state]--; in __remove_free_nid()
2078 radix_tree_delete(&nm_i->free_nid_root, i->nid); in __remove_free_nid()
2084 struct f2fs_nm_info *nm_i = NM_I(sbi); in __move_free_nid() local
2088 nm_i->nid_cnt[org_state]--; in __move_free_nid()
2089 nm_i->nid_cnt[dst_state]++; in __move_free_nid()
2096 list_add_tail(&i->list, &nm_i->free_nid_list); in __move_free_nid()
2106 struct f2fs_nm_info *nm_i = NM_I(sbi); in update_free_nid_bitmap() local
2110 if (!test_bit_le(nat_ofs, nm_i->nat_block_bitmap)) in update_free_nid_bitmap()
2114 if (test_bit_le(nid_ofs, nm_i->free_nid_bitmap[nat_ofs])) in update_free_nid_bitmap()
2116 __set_bit_le(nid_ofs, nm_i->free_nid_bitmap[nat_ofs]); in update_free_nid_bitmap()
2117 nm_i->free_nid_count[nat_ofs]++; in update_free_nid_bitmap()
2119 if (!test_bit_le(nid_ofs, nm_i->free_nid_bitmap[nat_ofs])) in update_free_nid_bitmap()
2121 __clear_bit_le(nid_ofs, nm_i->free_nid_bitmap[nat_ofs]); in update_free_nid_bitmap()
2123 nm_i->free_nid_count[nat_ofs]--; in update_free_nid_bitmap()
2131 struct f2fs_nm_info *nm_i = NM_I(sbi); in add_free_nid() local
2150 spin_lock(&nm_i->nid_list_lock); in add_free_nid()
2174 ne = __lookup_nat_cache(nm_i, nid); in add_free_nid()
2179 e = __lookup_free_nid_list(nm_i, nid); in add_free_nid()
2192 nm_i->available_nids++; in add_free_nid()
2194 spin_unlock(&nm_i->nid_list_lock); in add_free_nid()
2204 struct f2fs_nm_info *nm_i = NM_I(sbi); in remove_free_nid() local
2208 spin_lock(&nm_i->nid_list_lock); in remove_free_nid()
2209 i = __lookup_free_nid_list(nm_i, nid); in remove_free_nid()
2214 spin_unlock(&nm_i->nid_list_lock); in remove_free_nid()
2223 struct f2fs_nm_info *nm_i = NM_I(sbi); in scan_nat_page() local
2229 __set_bit_le(nat_ofs, nm_i->nat_block_bitmap); in scan_nat_page()
2234 if (unlikely(start_nid >= nm_i->max_nid)) in scan_nat_page()
2277 struct f2fs_nm_info *nm_i = NM_I(sbi); in scan_free_nid_bits() local
2281 down_read(&nm_i->nat_tree_lock); in scan_free_nid_bits()
2283 for (i = 0; i < nm_i->nat_blocks; i++) { in scan_free_nid_bits()
2284 if (!test_bit_le(i, nm_i->nat_block_bitmap)) in scan_free_nid_bits()
2286 if (!nm_i->free_nid_count[i]) in scan_free_nid_bits()
2289 idx = find_next_bit_le(nm_i->free_nid_bitmap[i], in scan_free_nid_bits()
2297 if (nm_i->nid_cnt[FREE_NID] >= MAX_FREE_NIDS) in scan_free_nid_bits()
2304 up_read(&nm_i->nat_tree_lock); in scan_free_nid_bits()
2310 struct f2fs_nm_info *nm_i = NM_I(sbi); in __f2fs_build_free_nids() local
2312 nid_t nid = nm_i->next_scan_nid; in __f2fs_build_free_nids()
2314 if (unlikely(nid >= nm_i->max_nid)) in __f2fs_build_free_nids()
2318 if (nm_i->nid_cnt[FREE_NID] >= NAT_ENTRY_PER_BLOCK) in __f2fs_build_free_nids()
2328 if (nm_i->nid_cnt[FREE_NID] >= NAT_ENTRY_PER_BLOCK) in __f2fs_build_free_nids()
2336 down_read(&nm_i->nat_tree_lock); in __f2fs_build_free_nids()
2340 nm_i->nat_block_bitmap)) { in __f2fs_build_free_nids()
2351 up_read(&nm_i->nat_tree_lock); in __f2fs_build_free_nids()
2359 if (unlikely(nid >= nm_i->max_nid)) in __f2fs_build_free_nids()
2367 nm_i->next_scan_nid = nid; in __f2fs_build_free_nids()
2372 up_read(&nm_i->nat_tree_lock); in __f2fs_build_free_nids()
2374 f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nm_i->next_scan_nid), in __f2fs_build_free_nids()
2375 nm_i->ra_nid_pages, META_NAT, false); in __f2fs_build_free_nids()
2398 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_alloc_nid() local
2406 spin_lock(&nm_i->nid_list_lock); in f2fs_alloc_nid()
2408 if (unlikely(nm_i->available_nids == 0)) { in f2fs_alloc_nid()
2409 spin_unlock(&nm_i->nid_list_lock); in f2fs_alloc_nid()
2414 if (nm_i->nid_cnt[FREE_NID] && !on_f2fs_build_free_nids(nm_i)) { in f2fs_alloc_nid()
2415 f2fs_bug_on(sbi, list_empty(&nm_i->free_nid_list)); in f2fs_alloc_nid()
2416 i = list_first_entry(&nm_i->free_nid_list, in f2fs_alloc_nid()
2421 nm_i->available_nids--; in f2fs_alloc_nid()
2425 spin_unlock(&nm_i->nid_list_lock); in f2fs_alloc_nid()
2428 spin_unlock(&nm_i->nid_list_lock); in f2fs_alloc_nid()
2441 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_alloc_nid_done() local
2444 spin_lock(&nm_i->nid_list_lock); in f2fs_alloc_nid_done()
2445 i = __lookup_free_nid_list(nm_i, nid); in f2fs_alloc_nid_done()
2448 spin_unlock(&nm_i->nid_list_lock); in f2fs_alloc_nid_done()
2458 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_alloc_nid_failed() local
2465 spin_lock(&nm_i->nid_list_lock); in f2fs_alloc_nid_failed()
2466 i = __lookup_free_nid_list(nm_i, nid); in f2fs_alloc_nid_failed()
2476 nm_i->available_nids++; in f2fs_alloc_nid_failed()
2480 spin_unlock(&nm_i->nid_list_lock); in f2fs_alloc_nid_failed()
2488 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_try_to_free_nids() local
2492 if (nm_i->nid_cnt[FREE_NID] <= MAX_FREE_NIDS) in f2fs_try_to_free_nids()
2495 if (!mutex_trylock(&nm_i->build_lock)) in f2fs_try_to_free_nids()
2498 spin_lock(&nm_i->nid_list_lock); in f2fs_try_to_free_nids()
2499 list_for_each_entry_safe(i, next, &nm_i->free_nid_list, list) { in f2fs_try_to_free_nids()
2501 nm_i->nid_cnt[FREE_NID] <= MAX_FREE_NIDS) in f2fs_try_to_free_nids()
2508 spin_unlock(&nm_i->nid_list_lock); in f2fs_try_to_free_nids()
2509 mutex_unlock(&nm_i->build_lock); in f2fs_try_to_free_nids()
2701 struct f2fs_nm_info *nm_i = NM_I(sbi); in remove_nats_in_journal() local
2714 ne = __lookup_nat_cache(nm_i, nid); in remove_nats_in_journal()
2717 __init_nat_entry(nm_i, ne, &raw_ne, true); in remove_nats_in_journal()
2727 spin_lock(&nm_i->nid_list_lock); in remove_nats_in_journal()
2728 nm_i->available_nids--; in remove_nats_in_journal()
2729 spin_unlock(&nm_i->nid_list_lock); in remove_nats_in_journal()
2732 __set_nat_cache_dirty(nm_i, ne); in remove_nats_in_journal()
2759 struct f2fs_nm_info *nm_i = NM_I(sbi); in __update_nat_bits() local
2777 __set_bit_le(nat_index, nm_i->empty_nat_bits); in __update_nat_bits()
2778 __clear_bit_le(nat_index, nm_i->full_nat_bits); in __update_nat_bits()
2782 __clear_bit_le(nat_index, nm_i->empty_nat_bits); in __update_nat_bits()
2784 __set_bit_le(nat_index, nm_i->full_nat_bits); in __update_nat_bits()
2786 __clear_bit_le(nat_index, nm_i->full_nat_bits); in __update_nat_bits()
2869 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_flush_nat_entries() local
2881 down_write(&nm_i->nat_tree_lock); in f2fs_flush_nat_entries()
2883 up_write(&nm_i->nat_tree_lock); in f2fs_flush_nat_entries()
2886 if (!nm_i->dirty_nat_cnt) in f2fs_flush_nat_entries()
2889 down_write(&nm_i->nat_tree_lock); in f2fs_flush_nat_entries()
2897 !__has_cursum_space(journal, nm_i->dirty_nat_cnt, NAT_JOURNAL)) in f2fs_flush_nat_entries()
2900 while ((found = __gang_lookup_nat_set(nm_i, in f2fs_flush_nat_entries()
2916 up_write(&nm_i->nat_tree_lock); in f2fs_flush_nat_entries()
2925 struct f2fs_nm_info *nm_i = NM_I(sbi); in __get_nat_bitmaps() local
2926 unsigned int nat_bits_bytes = nm_i->nat_blocks / BITS_PER_BYTE; in __get_nat_bitmaps()
2934 nm_i->nat_bits_blocks = F2FS_BLK_ALIGN((nat_bits_bytes << 1) + 8); in __get_nat_bitmaps()
2935 nm_i->nat_bits = f2fs_kzalloc(sbi, in __get_nat_bitmaps()
2936 nm_i->nat_bits_blocks << F2FS_BLKSIZE_BITS, GFP_KERNEL); in __get_nat_bitmaps()
2937 if (!nm_i->nat_bits) in __get_nat_bitmaps()
2941 nm_i->nat_bits_blocks; in __get_nat_bitmaps()
2942 for (i = 0; i < nm_i->nat_bits_blocks; i++) { in __get_nat_bitmaps()
2949 memcpy(nm_i->nat_bits + (i << F2FS_BLKSIZE_BITS), in __get_nat_bitmaps()
2955 if (cpu_to_le64(cp_ver) != *(__le64 *)nm_i->nat_bits) { in __get_nat_bitmaps()
2960 nm_i->full_nat_bits = nm_i->nat_bits + 8; in __get_nat_bitmaps()
2961 nm_i->empty_nat_bits = nm_i->full_nat_bits + nat_bits_bytes; in __get_nat_bitmaps()
2969 struct f2fs_nm_info *nm_i = NM_I(sbi); in load_free_nid_bitmap() local
2976 for (i = 0; i < nm_i->nat_blocks; i++) { in load_free_nid_bitmap()
2977 i = find_next_bit_le(nm_i->empty_nat_bits, nm_i->nat_blocks, i); in load_free_nid_bitmap()
2978 if (i >= nm_i->nat_blocks) in load_free_nid_bitmap()
2981 __set_bit_le(i, nm_i->nat_block_bitmap); in load_free_nid_bitmap()
2992 for (i = 0; i < nm_i->nat_blocks; i++) { in load_free_nid_bitmap()
2993 i = find_next_bit_le(nm_i->full_nat_bits, nm_i->nat_blocks, i); in load_free_nid_bitmap()
2994 if (i >= nm_i->nat_blocks) in load_free_nid_bitmap()
2997 __set_bit_le(i, nm_i->nat_block_bitmap); in load_free_nid_bitmap()
3004 struct f2fs_nm_info *nm_i = NM_I(sbi); in init_node_manager() local
3009 nm_i->nat_blkaddr = le32_to_cpu(sb_raw->nat_blkaddr); in init_node_manager()
3013 nm_i->nat_blocks = nat_segs << le32_to_cpu(sb_raw->log_blocks_per_seg); in init_node_manager()
3014 nm_i->max_nid = NAT_ENTRY_PER_BLOCK * nm_i->nat_blocks; in init_node_manager()
3017 nm_i->available_nids = nm_i->max_nid - sbi->total_valid_node_count - in init_node_manager()
3019 nm_i->nid_cnt[FREE_NID] = 0; in init_node_manager()
3020 nm_i->nid_cnt[PREALLOC_NID] = 0; in init_node_manager()
3021 nm_i->nat_cnt = 0; in init_node_manager()
3022 nm_i->ram_thresh = DEF_RAM_THRESHOLD; in init_node_manager()
3023 nm_i->ra_nid_pages = DEF_RA_NID_PAGES; in init_node_manager()
3024 nm_i->dirty_nats_ratio = DEF_DIRTY_NAT_RATIO_THRESHOLD; in init_node_manager()
3026 INIT_RADIX_TREE(&nm_i->free_nid_root, GFP_ATOMIC); in init_node_manager()
3027 INIT_LIST_HEAD(&nm_i->free_nid_list); in init_node_manager()
3028 INIT_RADIX_TREE(&nm_i->nat_root, GFP_NOIO); in init_node_manager()
3029 INIT_RADIX_TREE(&nm_i->nat_set_root, GFP_NOIO); in init_node_manager()
3030 INIT_LIST_HEAD(&nm_i->nat_entries); in init_node_manager()
3031 spin_lock_init(&nm_i->nat_list_lock); in init_node_manager()
3033 mutex_init(&nm_i->build_lock); in init_node_manager()
3034 spin_lock_init(&nm_i->nid_list_lock); in init_node_manager()
3035 init_rwsem(&nm_i->nat_tree_lock); in init_node_manager()
3037 nm_i->next_scan_nid = le32_to_cpu(sbi->ckpt->next_free_nid); in init_node_manager()
3038 nm_i->bitmap_size = __bitmap_size(sbi, NAT_BITMAP); in init_node_manager()
3043 nm_i->nat_bitmap = kmemdup(version_bitmap, nm_i->bitmap_size, in init_node_manager()
3045 if (!nm_i->nat_bitmap) in init_node_manager()
3053 nm_i->nat_bitmap_mir = kmemdup(version_bitmap, nm_i->bitmap_size, in init_node_manager()
3055 if (!nm_i->nat_bitmap_mir) in init_node_manager()
3064 struct f2fs_nm_info *nm_i = NM_I(sbi); in init_free_nid_cache() local
3067 nm_i->free_nid_bitmap = in init_free_nid_cache()
3069 nm_i->nat_blocks), in init_free_nid_cache()
3071 if (!nm_i->free_nid_bitmap) in init_free_nid_cache()
3074 for (i = 0; i < nm_i->nat_blocks; i++) { in init_free_nid_cache()
3075 nm_i->free_nid_bitmap[i] = f2fs_kvzalloc(sbi, in init_free_nid_cache()
3077 if (!nm_i->free_nid_bitmap[i]) in init_free_nid_cache()
3081 nm_i->nat_block_bitmap = f2fs_kvzalloc(sbi, nm_i->nat_blocks / 8, in init_free_nid_cache()
3083 if (!nm_i->nat_block_bitmap) in init_free_nid_cache()
3086 nm_i->free_nid_count = in init_free_nid_cache()
3088 nm_i->nat_blocks), in init_free_nid_cache()
3090 if (!nm_i->free_nid_count) in init_free_nid_cache()
3120 struct f2fs_nm_info *nm_i = NM_I(sbi); in f2fs_destroy_node_manager() local
3127 if (!nm_i) in f2fs_destroy_node_manager()
3131 spin_lock(&nm_i->nid_list_lock); in f2fs_destroy_node_manager()
3132 list_for_each_entry_safe(i, next_i, &nm_i->free_nid_list, list) { in f2fs_destroy_node_manager()
3134 spin_unlock(&nm_i->nid_list_lock); in f2fs_destroy_node_manager()
3136 spin_lock(&nm_i->nid_list_lock); in f2fs_destroy_node_manager()
3138 f2fs_bug_on(sbi, nm_i->nid_cnt[FREE_NID]); in f2fs_destroy_node_manager()
3139 f2fs_bug_on(sbi, nm_i->nid_cnt[PREALLOC_NID]); in f2fs_destroy_node_manager()
3140 f2fs_bug_on(sbi, !list_empty(&nm_i->free_nid_list)); in f2fs_destroy_node_manager()
3141 spin_unlock(&nm_i->nid_list_lock); in f2fs_destroy_node_manager()
3144 down_write(&nm_i->nat_tree_lock); in f2fs_destroy_node_manager()
3145 while ((found = __gang_lookup_nat_cache(nm_i, in f2fs_destroy_node_manager()
3151 spin_lock(&nm_i->nat_list_lock); in f2fs_destroy_node_manager()
3153 spin_unlock(&nm_i->nat_list_lock); in f2fs_destroy_node_manager()
3155 __del_from_nat_cache(nm_i, natvec[idx]); in f2fs_destroy_node_manager()
3158 f2fs_bug_on(sbi, nm_i->nat_cnt); in f2fs_destroy_node_manager()
3162 while ((found = __gang_lookup_nat_set(nm_i, in f2fs_destroy_node_manager()
3170 radix_tree_delete(&nm_i->nat_set_root, setvec[idx]->set); in f2fs_destroy_node_manager()
3174 up_write(&nm_i->nat_tree_lock); in f2fs_destroy_node_manager()
3176 kvfree(nm_i->nat_block_bitmap); in f2fs_destroy_node_manager()
3177 if (nm_i->free_nid_bitmap) { in f2fs_destroy_node_manager()
3180 for (i = 0; i < nm_i->nat_blocks; i++) in f2fs_destroy_node_manager()
3181 kvfree(nm_i->free_nid_bitmap[i]); in f2fs_destroy_node_manager()
3182 kvfree(nm_i->free_nid_bitmap); in f2fs_destroy_node_manager()
3184 kvfree(nm_i->free_nid_count); in f2fs_destroy_node_manager()
3186 kvfree(nm_i->nat_bitmap); in f2fs_destroy_node_manager()
3187 kvfree(nm_i->nat_bits); in f2fs_destroy_node_manager()
3189 kvfree(nm_i->nat_bitmap_mir); in f2fs_destroy_node_manager()
3192 kvfree(nm_i); in f2fs_destroy_node_manager()