Lines Matching defs:nid
31 * Check whether the given nid is within node id range.
33 int f2fs_check_nid_range(struct f2fs_sb_info *sbi, nid_t nid)
35 if (unlikely(nid < F2FS_ROOT_INO(sbi) || nid >= NM_I(sbi)->max_nid)) {
37 f2fs_warn(sbi, "%s: out-of-range nid=%x, run fsck to fix.",
38 __func__, nid);
133 static struct page *get_current_nat_page(struct f2fs_sb_info *sbi, nid_t nid)
135 return f2fs_get_meta_page_retry(sbi, current_nat_addr(sbi, nid));
138 static struct page *get_next_nat_page(struct f2fs_sb_info *sbi, nid_t nid)
147 dst_off = next_nat_addr(sbi, current_nat_addr(sbi, nid));
150 src_page = get_current_nat_page(sbi, nid);
162 set_to_next_nat(nm_i, nid);
168 nid_t nid, bool no_fail)
175 nat_set_nid(new, nid);
241 nid_t set = NAT_BLOCK_OFFSET(ne->ni.nid);
380 int f2fs_need_dentry_mark(struct f2fs_sb_info *sbi, nid_t nid)
387 e = __lookup_nat_cache(nm_i, nid);
397 bool f2fs_is_checkpointed_node(struct f2fs_sb_info *sbi, nid_t nid)
404 e = __lookup_nat_cache(nm_i, nid);
428 static void cache_nat_entry(struct f2fs_sb_info *sbi, nid_t nid,
438 new = __alloc_nat_entry(sbi, nid, false);
443 e = __lookup_nat_cache(nm_i, nid);
461 struct nat_entry *new = __alloc_nat_entry(sbi, ni->nid, true);
464 e = __lookup_nat_cache(nm_i, ni->nid);
471 * when nid is reallocated,
505 if (ni->nid != ni->ino)
508 if (fsync_done && ni->nid == ni->ino)
546 int f2fs_get_node_info(struct f2fs_sb_info *sbi, nid_t nid,
552 nid_t start_nid = START_NID(nid);
561 ni->nid = nid;
565 e = __lookup_nat_cache(nm_i, nid);
588 i = f2fs_lookup_journal_in_cursum(journal, NAT_JOURNAL, nid, 0);
600 index = current_nat_addr(sbi, nid);
608 ne = nat_blk->entries[nid - start_nid];
618 cache_nat_entry(sbi, nid, &ne);
630 nid_t nid;
638 nid = get_nid(parent, i, false);
639 f2fs_ra_node_page(sbi, nid);
809 dn->nid = nids[i];
848 dn->nid = nids[level];
904 err = f2fs_get_node_info(sbi, dn->nid, &ni, false);
910 dec_valid_node_count(sbi, dn->inode, dn->nid == dn->inode->i_ino);
913 if (dn->nid == dn->inode->i_ino) {
914 f2fs_remove_orphan_inode(sbi, dn->nid);
929 trace_f2fs_truncate_node(dn->inode, dn->nid, ni.blk_addr);
940 if (dn->nid == 0)
944 page = f2fs_get_node_page(sbi, dn->nid);
951 f2fs_err(sbi, "incorrect node reference, ino: %lu, nid: %u, ino_of_node: %u",
952 dn->inode->i_ino, dn->nid, ino_of_node(page));
983 if (dn->nid == 0)
986 trace_f2fs_truncate_nodes_enter(dn->inode, dn->nid, dn->data_blkaddr);
988 page = f2fs_get_node_page(F2FS_I_SB(dn->inode), dn->nid);
999 child_nid = le32_to_cpu(rn->in.nid[i]);
1002 rdn.nid = child_nid;
1012 child_nid = le32_to_cpu(rn->in.nid[i]);
1017 rdn.nid = child_nid;
1053 nid_t nid[3];
1059 nid[0] = le32_to_cpu(ri->i_nid[offset[0] - NODE_DIR1_BLOCK]);
1060 if (!nid[0])
1066 pages[i] = f2fs_get_node_page(F2FS_I_SB(dn->inode), nid[i]);
1072 nid[i + 1] = get_nid(pages[i], offset[i + 1], false);
1082 dn->nid = child_nid;
1092 dn->nid = nid[idx];
1106 trace_f2fs_truncate_partial_nodes(dn->inode, nid, depth, err);
1170 dn.nid = le32_to_cpu(ri->i_nid[offset[0] - NODE_DIR1_BLOCK]);
1215 nid_t nid = F2FS_I(inode)->i_xattr_nid;
1220 if (!nid)
1223 npage = f2fs_get_node_page(sbi, nid);
1227 set_new_dnode(&dn, inode, NULL, npage, nid);
1307 page = f2fs_grab_cache_page(NODE_MAPPING(sbi), dn->nid, false);
1315 err = f2fs_get_node_info(sbi, dn->nid, &new_ni, false);
1327 new_ni.nid = dn->nid;
1335 fill_node_footer(page, dn->nid, dn->inode->i_ino, ofs, true);
1343 f2fs_i_xnid_write(dn->inode, dn->nid);
1405 void f2fs_ra_node_page(struct f2fs_sb_info *sbi, nid_t nid)
1410 if (!nid)
1412 if (f2fs_check_nid_range(sbi, nid))
1415 apage = xa_load(&NODE_MAPPING(sbi)->i_pages, nid);
1419 apage = f2fs_grab_cache_page(NODE_MAPPING(sbi), nid, false);
1427 static struct page *__get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid,
1433 if (!nid)
1435 if (f2fs_check_nid_range(sbi, nid))
1438 page = f2fs_grab_cache_page(NODE_MAPPING(sbi), nid, false);
1470 if (likely(nid == nid_of_node(page)))
1473 f2fs_warn(sbi, "inconsistent node block, nid:%lu, node_footer[nid:%u,ino:%u,ofs:%u,cpver:%llu,blkaddr:%u]",
1474 nid, nid_of_node(page), ino_of_node(page),
1490 struct page *f2fs_get_node_page(struct f2fs_sb_info *sbi, pgoff_t nid)
1492 return __get_node_page(sbi, nid, NULL, 0);
1498 nid_t nid = get_nid(parent, start, false);
1500 return __get_node_page(sbi, nid, parent, start);
1601 nid_t nid;
1638 nid = nid_of_node(page);
1639 f2fs_bug_on(sbi, page->index != nid);
1641 if (f2fs_get_node_info(sbi, nid, &ni, !do_balance))
1680 f2fs_do_write_node_page(nid, &fio);
2202 int err = radix_tree_insert(&nm_i->free_nid_root, i->nid, i);
2221 radix_tree_delete(&nm_i->free_nid_root, i->nid);
2264 static void update_free_nid_bitmap(struct f2fs_sb_info *sbi, nid_t nid,
2268 unsigned int nat_ofs = NAT_BLOCK_OFFSET(nid);
2269 unsigned int nid_ofs = nid - START_NID(nid);
2288 /* return if the nid is recognized as free */
2290 nid_t nid, bool build, bool update)
2298 /* 0 nid should not be used */
2299 if (unlikely(nid == 0))
2302 if (unlikely(f2fs_check_nid_range(sbi, nid)))
2306 i->nid = nid;
2335 ne = __lookup_nat_cache(nm_i, nid);
2340 e = __lookup_free_nid_list(nm_i, nid);
2351 update_free_nid_bitmap(sbi, nid, ret, build);
2363 static void remove_free_nid(struct f2fs_sb_info *sbi, nid_t nid)
2370 i = __lookup_free_nid_list(nm_i, nid);
2424 nid_t nid;
2427 nid = le32_to_cpu(nid_in_journal(journal, i));
2429 add_free_nid(sbi, nid, true, false);
2431 remove_free_nid(sbi, nid);
2440 nid_t nid;
2455 nid = i * NAT_ENTRY_PER_BLOCK + idx;
2456 add_free_nid(sbi, nid, true, false);
2473 nid_t nid = nm_i->next_scan_nid;
2475 if (unlikely(nid >= nm_i->max_nid))
2476 nid = 0;
2478 if (unlikely(nid % NAT_ENTRY_PER_BLOCK))
2479 nid = NAT_BLOCK_OFFSET(nid) * NAT_ENTRY_PER_BLOCK;
2497 f2fs_ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nid), FREE_NID_PAGES,
2503 if (!test_bit_le(NAT_BLOCK_OFFSET(nid),
2505 struct page *page = get_current_nat_page(sbi, nid);
2510 ret = scan_nat_page(sbi, page, nid);
2528 nid += (NAT_ENTRY_PER_BLOCK - (nid % NAT_ENTRY_PER_BLOCK));
2529 if (unlikely(nid >= nm_i->max_nid))
2530 nid = 0;
2537 nm_i->next_scan_nid = nid;
2562 * If this function returns success, caller can obtain a new nid
2564 * The returned nid could be used ino as well as nid when inode is created.
2566 bool f2fs_alloc_nid(struct f2fs_sb_info *sbi, nid_t *nid)
2586 *nid = i->nid;
2591 update_free_nid_bitmap(sbi, *nid, false, false);
2607 void f2fs_alloc_nid_done(struct f2fs_sb_info *sbi, nid_t nid)
2613 i = __lookup_free_nid_list(nm_i, nid);
2624 void f2fs_alloc_nid_failed(struct f2fs_sb_info *sbi, nid_t nid)
2630 if (!nid)
2634 i = __lookup_free_nid_list(nm_i, nid);
2646 update_free_nid_bitmap(sbi, nid, true, false);
2737 /* 1: invalidate the previous xattr nid */
2747 /* 2: update xattr nid in inode */
2793 /* Should not use this inode from free nid list */
2869 sum_entry->nid = rn->footer.nid;
2893 nid_t nid = le32_to_cpu(nid_in_journal(journal, i));
2895 if (f2fs_check_nid_range(sbi, nid))
2900 ne = __lookup_nat_cache(nm_i, nid);
2902 ne = __alloc_nat_entry(sbi, nid, true);
2992 /* handle nid zero due to it should never be used */
3044 nid_t nid = nat_get_nid(ne);
3051 NAT_JOURNAL, nid, 1);
3054 nid_in_journal(journal, offset) = cpu_to_le32(nid);
3056 raw_ne = &nat_blk->entries[nid - start_nid];
3062 add_free_nid(sbi, nid, false, true);
3065 update_free_nid_bitmap(sbi, nid, false, false);
3199 nid_t nid, last_nid;
3211 nid = i * NAT_ENTRY_PER_BLOCK;
3212 last_nid = nid + NAT_ENTRY_PER_BLOCK;
3215 for (; nid < last_nid; nid++)
3216 update_free_nid_bitmap(sbi, nid, true, true);
3337 /* load free nid status from nat_bits table */
3350 nid_t nid = 0;
3356 /* destroy free nid list */
3372 nid, NAT_VEC_SIZE, natvec))) {
3375 nid = nat_get_nid(natvec[found - 1]) + 1;
3387 nid = 0;
3390 nid, NAT_VEC_SIZE, setvec))) {
3393 nid = setvec[found - 1]->set + 1;