Lines Matching refs:nid
30 static inline bool is_invalid_nid(struct f2fs_sb_info *sbi, nid_t nid) in is_invalid_nid() argument
32 return nid < F2FS_ROOT_INO(sbi) || nid >= NM_I(sbi)->max_nid; in is_invalid_nid()
38 int f2fs_check_nid_range(struct f2fs_sb_info *sbi, nid_t nid) in f2fs_check_nid_range() argument
40 if (unlikely(is_invalid_nid(sbi, nid))) { in f2fs_check_nid_range()
43 __func__, nid); in f2fs_check_nid_range()
138 static struct folio *get_current_nat_folio(struct f2fs_sb_info *sbi, nid_t nid) in get_current_nat_folio() argument
140 return f2fs_get_meta_folio_retry(sbi, current_nat_addr(sbi, nid)); in get_current_nat_folio()
143 static struct folio *get_next_nat_folio(struct f2fs_sb_info *sbi, nid_t nid) in get_next_nat_folio() argument
152 dst_off = next_nat_addr(sbi, current_nat_addr(sbi, nid)); in get_next_nat_folio()
155 src_folio = get_current_nat_folio(sbi, nid); in get_next_nat_folio()
167 set_to_next_nat(nm_i, nid); in get_next_nat_folio()
173 nid_t nid, bool no_fail) in __alloc_nat_entry() argument
180 nat_set_nid(new, nid); in __alloc_nat_entry()
255 nid_t set = NAT_BLOCK_OFFSET(ne->ni.nid); in __grab_nat_entry_set()
394 int f2fs_need_dentry_mark(struct f2fs_sb_info *sbi, nid_t nid) in f2fs_need_dentry_mark() argument
401 e = __lookup_nat_cache(nm_i, nid, false); in f2fs_need_dentry_mark()
411 bool f2fs_is_checkpointed_node(struct f2fs_sb_info *sbi, nid_t nid) in f2fs_is_checkpointed_node() argument
418 e = __lookup_nat_cache(nm_i, nid, false); in f2fs_is_checkpointed_node()
442 static void cache_nat_entry(struct f2fs_sb_info *sbi, nid_t nid, in cache_nat_entry() argument
452 new = __alloc_nat_entry(sbi, nid, false); in cache_nat_entry()
457 e = __lookup_nat_cache(nm_i, nid, false); in cache_nat_entry()
475 struct nat_entry *new = __alloc_nat_entry(sbi, ni->nid, true); in set_node_addr()
479 e = __lookup_nat_cache(nm_i, ni->nid, true); in set_node_addr()
521 if (ni->nid != ni->ino) in set_node_addr()
524 if (fsync_done && ni->nid == ni->ino) in set_node_addr()
562 int f2fs_get_node_info(struct f2fs_sb_info *sbi, nid_t nid, in f2fs_get_node_info() argument
568 nid_t start_nid = START_NID(nid); in f2fs_get_node_info()
578 ni->nid = nid; in f2fs_get_node_info()
582 e = __lookup_nat_cache(nm_i, nid, false); in f2fs_get_node_info()
609 i = f2fs_lookup_journal_in_cursum(journal, NAT_JOURNAL, nid, 0); in f2fs_get_node_info()
621 index = current_nat_addr(sbi, nid); in f2fs_get_node_info()
629 ne = nat_blk->entries[nid - start_nid]; in f2fs_get_node_info()
641 ni->ino, ni->nid, ni->blk_addr, ni->version, ni->flag); in f2fs_get_node_info()
648 cache_nat_entry(sbi, nid, &ne); in f2fs_get_node_info()
660 nid_t nid; in f2fs_ra_node_pages() local
668 nid = get_nid(parent, i, false); in f2fs_ra_node_pages()
669 f2fs_ra_node_page(sbi, nid); in f2fs_ra_node_pages()
852 dn->nid = nids[i]; in f2fs_get_dnode_of_data()
892 dn->nid = nids[level]; in f2fs_get_dnode_of_data()
948 err = f2fs_get_node_info(sbi, dn->nid, &ni, false); in truncate_node()
956 "nid:%u, blkaddr:%u", ni.ino, ni.nid, ni.blk_addr); in truncate_node()
964 dec_valid_node_count(sbi, dn->inode, dn->nid == dn->inode->i_ino); in truncate_node()
967 if (dn->nid == dn->inode->i_ino) { in truncate_node()
968 f2fs_remove_orphan_inode(sbi, dn->nid); in truncate_node()
983 trace_f2fs_truncate_node(dn->inode, dn->nid, ni.blk_addr); in truncate_node()
994 if (dn->nid == 0) in truncate_dnode()
998 folio = f2fs_get_node_folio(sbi, dn->nid, NODE_TYPE_NON_INODE); in truncate_dnode()
1006 dn->inode->i_ino, dn->nid, ino_of_node(folio)); in truncate_dnode()
1037 if (dn->nid == 0) in truncate_nodes()
1040 trace_f2fs_truncate_nodes_enter(dn->inode, dn->nid, dn->data_blkaddr); in truncate_nodes()
1042 folio = f2fs_get_node_folio(F2FS_I_SB(dn->inode), dn->nid, in truncate_nodes()
1054 child_nid = le32_to_cpu(rn->in.nid[i]); in truncate_nodes()
1057 rdn.nid = child_nid; in truncate_nodes()
1067 child_nid = le32_to_cpu(rn->in.nid[i]); in truncate_nodes()
1072 rdn.nid = child_nid; in truncate_nodes()
1108 nid_t nid[3]; in truncate_partial_nodes() local
1114 nid[0] = get_nid(dn->inode_folio, offset[0], true); in truncate_partial_nodes()
1115 if (!nid[0]) in truncate_partial_nodes()
1121 folios[i] = f2fs_get_node_folio(F2FS_I_SB(dn->inode), nid[i], in truncate_partial_nodes()
1128 nid[i + 1] = get_nid(folios[i], offset[i + 1], false); in truncate_partial_nodes()
1138 dn->nid = child_nid; in truncate_partial_nodes()
1148 dn->nid = nid[idx]; in truncate_partial_nodes()
1162 trace_f2fs_truncate_partial_nodes(dn->inode, nid, depth, err); in truncate_partial_nodes()
1233 dn.nid = get_nid(folio, offset[0], true); in f2fs_truncate_inode_blocks()
1259 inode->i_ino, dn.nid, offset[0], in f2fs_truncate_inode_blocks()
1285 nid_t nid = F2FS_I(inode)->i_xattr_nid; in f2fs_truncate_xattr_node() local
1290 if (!nid) in f2fs_truncate_xattr_node()
1293 nfolio = f2fs_get_xnode_folio(sbi, nid); in f2fs_truncate_xattr_node()
1297 set_new_dnode(&dn, inode, NULL, nfolio, nid); in f2fs_truncate_xattr_node()
1378 folio = f2fs_grab_cache_folio(NODE_MAPPING(sbi), dn->nid, false); in f2fs_new_node_folio()
1386 err = f2fs_get_node_info(sbi, dn->nid, &new_ni, false); in f2fs_new_node_folio()
1398 new_ni.ino, new_ni.nid, new_ni.blk_addr, in f2fs_new_node_folio()
1404 new_ni.nid = dn->nid; in f2fs_new_node_folio()
1412 fill_node_footer(folio, dn->nid, dn->inode->i_ino, ofs, true); in f2fs_new_node_folio()
1420 f2fs_i_xnid_write(dn->inode, dn->nid); in f2fs_new_node_folio()
1481 void f2fs_ra_node_page(struct f2fs_sb_info *sbi, nid_t nid) in f2fs_ra_node_page() argument
1486 if (!nid) in f2fs_ra_node_page()
1488 if (f2fs_check_nid_range(sbi, nid)) in f2fs_ra_node_page()
1491 afolio = xa_load(&NODE_MAPPING(sbi)->i_pages, nid); in f2fs_ra_node_page()
1495 afolio = f2fs_grab_cache_folio(NODE_MAPPING(sbi), nid, false); in f2fs_ra_node_page()
1504 struct folio *folio, pgoff_t nid, in sanity_check_node_footer() argument
1507 if (unlikely(nid != nid_of_node(folio))) in sanity_check_node_footer()
1532 ntype, nid, nid_of_node(folio), ino_of_node(folio), in sanity_check_node_footer()
1540 static struct folio *__get_node_folio(struct f2fs_sb_info *sbi, pgoff_t nid, in __get_node_folio() argument
1546 if (!nid) in __get_node_folio()
1548 if (f2fs_check_nid_range(sbi, nid)) in __get_node_folio()
1551 folio = f2fs_grab_cache_folio(NODE_MAPPING(sbi), nid, false); in __get_node_folio()
1581 err = sanity_check_node_footer(sbi, folio, nid, ntype); in __get_node_folio()
1594 struct folio *f2fs_get_node_folio(struct f2fs_sb_info *sbi, pgoff_t nid, in f2fs_get_node_folio() argument
1597 return __get_node_folio(sbi, nid, NULL, 0, node_type); in f2fs_get_node_folio()
1613 nid_t nid = get_nid(parent, start, false); in f2fs_get_node_folio_ra() local
1615 return __get_node_folio(sbi, nid, parent, start, NODE_TYPE_REGULAR); in f2fs_get_node_folio_ra()
1716 nid_t nid; in __write_node_folio() local
1753 nid = nid_of_node(folio); in __write_node_folio()
1754 f2fs_bug_on(sbi, folio->index != nid); in __write_node_folio()
1756 if (f2fs_get_node_info(sbi, nid, &ni, !do_balance)) in __write_node_folio()
1790 f2fs_do_write_node_page(nid, &fio); in __write_node_folio()
2293 int err = radix_tree_insert(&nm_i->free_nid_root, i->nid, i); in __insert_free_nid()
2312 radix_tree_delete(&nm_i->free_nid_root, i->nid); in __remove_free_nid()
2337 static void update_free_nid_bitmap(struct f2fs_sb_info *sbi, nid_t nid, in update_free_nid_bitmap() argument
2341 unsigned int nat_ofs = NAT_BLOCK_OFFSET(nid); in update_free_nid_bitmap()
2342 unsigned int nid_ofs = nid - START_NID(nid); in update_free_nid_bitmap()
2363 nid_t nid, bool build, bool update) in add_free_nid() argument
2372 if (unlikely(nid == 0)) in add_free_nid()
2375 if (unlikely(f2fs_check_nid_range(sbi, nid))) in add_free_nid()
2379 i->nid = nid; in add_free_nid()
2411 ne = __lookup_nat_cache(nm_i, nid, false); in add_free_nid()
2416 e = __lookup_free_nid_list(nm_i, nid); in add_free_nid()
2427 update_free_nid_bitmap(sbi, nid, ret, build); in add_free_nid()
2439 static void remove_free_nid(struct f2fs_sb_info *sbi, nid_t nid) in remove_free_nid() argument
2446 i = __lookup_free_nid_list(nm_i, nid); in remove_free_nid()
2499 nid_t nid; in scan_curseg_cache() local
2502 nid = le32_to_cpu(nid_in_journal(journal, i)); in scan_curseg_cache()
2504 add_free_nid(sbi, nid, true, false); in scan_curseg_cache()
2506 remove_free_nid(sbi, nid); in scan_curseg_cache()
2515 nid_t nid; in scan_free_nid_bits() local
2530 nid = i * NAT_ENTRY_PER_BLOCK + idx; in scan_free_nid_bits()
2531 add_free_nid(sbi, nid, true, false); in scan_free_nid_bits()
2548 nid_t nid = nm_i->next_scan_nid; in __f2fs_build_free_nids() local
2550 if (unlikely(nid >= nm_i->max_nid)) in __f2fs_build_free_nids()
2551 nid = 0; in __f2fs_build_free_nids()
2553 if (unlikely(nid % NAT_ENTRY_PER_BLOCK)) in __f2fs_build_free_nids()
2554 nid = NAT_BLOCK_OFFSET(nid) * NAT_ENTRY_PER_BLOCK; in __f2fs_build_free_nids()
2572 f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nid), FREE_NID_PAGES, in __f2fs_build_free_nids()
2578 if (!test_bit_le(NAT_BLOCK_OFFSET(nid), in __f2fs_build_free_nids()
2580 struct folio *folio = get_current_nat_folio(sbi, nid); in __f2fs_build_free_nids()
2586 nid); in __f2fs_build_free_nids()
2604 nid += (NAT_ENTRY_PER_BLOCK - (nid % NAT_ENTRY_PER_BLOCK)); in __f2fs_build_free_nids()
2605 if (unlikely(nid >= nm_i->max_nid)) in __f2fs_build_free_nids()
2606 nid = 0; in __f2fs_build_free_nids()
2613 nm_i->next_scan_nid = nid; in __f2fs_build_free_nids()
2642 bool f2fs_alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid) in f2fs_alloc_nid() argument
2663 if (unlikely(is_invalid_nid(sbi, i->nid))) { in f2fs_alloc_nid()
2666 i->nid); in f2fs_alloc_nid()
2672 *nid = i->nid; in f2fs_alloc_nid()
2677 update_free_nid_bitmap(sbi, *nid, false, false); in f2fs_alloc_nid()
2693 void f2fs_alloc_nid_done(struct f2fs_sb_info *sbi, nid_t nid) in f2fs_alloc_nid_done() argument
2699 i = __lookup_free_nid_list(nm_i, nid); in f2fs_alloc_nid_done()
2710 void f2fs_alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid) in f2fs_alloc_nid_failed() argument
2716 if (!nid) in f2fs_alloc_nid_failed()
2720 i = __lookup_free_nid_list(nm_i, nid); in f2fs_alloc_nid_failed()
2732 update_free_nid_bitmap(sbi, nid, true, false); in f2fs_alloc_nid_failed()
2955 sum_entry->nid = rn->footer.nid; in f2fs_restore_node_summary()
2980 nid_t nid = le32_to_cpu(nid_in_journal(journal, i)); in remove_nats_in_journal() local
2982 if (f2fs_check_nid_range(sbi, nid)) in remove_nats_in_journal()
2989 ne = __lookup_nat_cache(nm_i, nid, true); in remove_nats_in_journal()
2992 ne = __alloc_nat_entry(sbi, nid, true); in remove_nats_in_journal()
3098 nid_t nid = nat_get_nid(ne); in __flush_nat_entry_set() local
3105 NAT_JOURNAL, nid, 1); in __flush_nat_entry_set()
3108 nid_in_journal(journal, offset) = cpu_to_le32(nid); in __flush_nat_entry_set()
3110 raw_ne = &nat_blk->entries[nid - start_nid]; in __flush_nat_entry_set()
3116 add_free_nid(sbi, nid, false, true); in __flush_nat_entry_set()
3119 update_free_nid_bitmap(sbi, nid, false, false); in __flush_nat_entry_set()
3251 nid_t nid, last_nid; in load_free_nid_bitmap() local
3263 nid = i * NAT_ENTRY_PER_BLOCK; in load_free_nid_bitmap()
3264 last_nid = nid + NAT_ENTRY_PER_BLOCK; in load_free_nid_bitmap()
3267 for (; nid < last_nid; nid++) in load_free_nid_bitmap()
3268 update_free_nid_bitmap(sbi, nid, true, true); in load_free_nid_bitmap()
3405 nid_t nid = 0; in f2fs_destroy_node_manager() local
3427 nid, NAT_VEC_SIZE, natvec))) { in f2fs_destroy_node_manager()
3430 nid = nat_get_nid(natvec[found - 1]) + 1; in f2fs_destroy_node_manager()
3442 nid = 0; in f2fs_destroy_node_manager()
3445 nid, NAT_VEC_SIZE, setvec))) { in f2fs_destroy_node_manager()
3448 nid = setvec[found - 1]->set + 1; in f2fs_destroy_node_manager()