Lines Matching full:ni

60 static int attr_load_runs(struct ATTRIB *attr, struct ntfs_inode *ni,
81 err = run_unpack_ex(run, ni->mi.sbi, ni->mi.rno, svcn, evcn,
226 int attr_make_nonresident(struct ntfs_inode *ni, struct ATTRIB *attr,
291 struct address_space *mapping = ni->vfs_inode.i_mapping;
315 al_remove_le(ni, le);
317 err = ni_insert_nonresident(ni, attr_s->type, attr_name(attr_s),
330 ni->ni_flags &= ~NI_FLAG_RESIDENT;
354 static int attr_set_size_res(struct ntfs_inode *ni, struct ATTRIB *attr,
373 return attr_make_nonresident(ni, attr, le, mi, new_size,
402 int attr_set_size(struct ntfs_inode *ni, enum ATTR_TYPE type,
408 struct ntfs_sb_info *sbi = ni->mi.sbi;
410 bool is_mft = ni->mi.rno == MFT_REC_MFT && type == ATTR_DATA &&
426 attr_b = ni_find_attr(ni, NULL, &le_b, type, name, name_len, NULL,
434 err = attr_set_size_res(ni, attr_b, le_b, mi_b, new_size, run,
484 attr = ni_find_attr(ni, attr_b, &le, type, name, name_len, &vcn,
502 err = attr_load_runs(attr, ni, run, NULL);
629 err = ni_expand_list(ni);
639 if (!ni->attr_list.size) {
640 err = ni_create_attr_list(ni);
653 err = ni_insert_nonresident(ni, type, name, name_len, run,
662 attr_b = ni_find_attr(ni, NULL, &le_b, type, name, name_len,
676 if (ni->mi.rno != MFT_REC_MFT)
723 if (!al_remove_le(ni, le)) {
786 err = ni_load_mi(ni, le, &mi);
790 attr = mi_find_attr(ni, mi, NULL, type, name, name_len,
818 if (inode_get_bytes(&ni->vfs_inode) != new_alloc) {
819 inode_set_bytes(&ni->vfs_inode, new_alloc);
826 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
827 mark_inode_dirty(&ni->vfs_inode);
853 attr = ni_find_attr(ni, attr_b, &le, type, name, name_len,
870 _ntfs_bad_inode(&ni->vfs_inode);
886 int attr_data_get_block(struct ntfs_inode *ni, CLST vcn, CLST clen, CLST *lcn,
890 struct runs_tree *run = &ni->file.run;
906 down_read(&ni->file.run_lock);
909 up_read(&ni->file.run_lock);
915 sbi = ni->mi.sbi;
918 ni_lock(ni);
919 down_write(&ni->file.run_lock);
933 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
964 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
975 err = attr_load_runs(attr, ni, run, NULL);
980 err = attr_is_frame_compressed(ni, attr_b, vcn >> NTFS_LZNT_CUNIT,
1035 attr2 = ni_find_attr(ni, attr_b, &le_b, ATTR_DATA, NULL,
1042 err = attr_load_runs(attr2, ni, run, NULL);
1100 inode_set_bytes(&ni->vfs_inode, total_size);
1101 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
1104 mark_inode_dirty(&ni->vfs_inode);
1115 if (!ni->attr_list.size) {
1116 err = ni_create_attr_list(ni);
1121 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL,
1152 attr = ni_find_attr(ni, attr, &le, ATTR_DATA, NULL, 0, &svcn, &mi);
1169 if (!al_remove_le(ni, le)) {
1180 if (ni_load_mi(ni, le, &mi)) {
1185 attr = mi_find_attr(ni, mi, NULL, ATTR_DATA, NULL, 0, &le->id);
1197 err = attr_load_runs(attr, ni, run, &end);
1208 ni->attr_list.dirty = true;
1214 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
1225 _ntfs_bad_inode(&ni->vfs_inode);
1227 up_write(&ni->file.run_lock);
1228 ni_unlock(ni);
1235 inode_set_bytes(&ni->vfs_inode, total_size0);
1240 _ntfs_bad_inode(&ni->vfs_inode);
1245 int attr_data_read_resident(struct ntfs_inode *ni, struct folio *folio)
1252 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, NULL);
1272 int attr_data_write_resident(struct ntfs_inode *ni, struct folio *folio)
1279 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi);
1297 ni->i_valid = data_size;
1305 int attr_load_runs_vcn(struct ntfs_inode *ni, enum ATTR_TYPE type,
1314 if (!ni) {
1319 attr = ni_find_attr(ni, NULL, NULL, type, name, name_len, &vcn, NULL);
1338 err = run_unpack_ex(run, ni->mi.sbi, ni->mi.rno, svcn, evcn, svcn,
1348 int attr_load_runs_range(struct ntfs_inode *ni, enum ATTR_TYPE type,
1352 struct ntfs_sb_info *sbi = ni->mi.sbi;
1361 err = attr_load_runs_vcn(ni, type, name, name_len, run,
1378 int attr_wof_frame_info(struct ntfs_inode *ni, struct ATTRIB *attr,
1382 struct ntfs_sb_info *sbi = ni->mi.sbi;
1392 if (ni->vfs_inode.i_size < 0x100000000ull) {
1410 _ntfs_bad_inode(&ni->vfs_inode);
1431 down_write(&ni->file.run_lock);
1432 folio = ni->file.offs_folio;
1440 ni->file.offs_folio = folio;
1464 err = attr_load_runs_range(ni, ATTR_DATA, WOF_NAME,
1516 up_write(&ni->file.run_lock);
1525 * run - run to use, usually == &ni->file.run.
1528 int attr_is_frame_compressed(struct ntfs_inode *ni, struct ATTRIB *attr,
1548 err = attr_load_runs_vcn(ni, attr->type, attr_name(attr),
1571 alen = bytes_to_cluster(ni->mi.sbi, le64_to_cpu(attr->nres.alloc_size));
1584 err = attr_load_runs_vcn(ni, attr->type,
1628 * Assumed: down_write(&ni->file.run_lock);
1630 int attr_allocate_frame(struct ntfs_inode *ni, CLST frame, size_t compr_size,
1634 struct runs_tree *run = &ni->file.run;
1635 struct ntfs_sb_info *sbi = ni->mi.sbi;
1644 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
1667 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
1677 err = attr_load_runs(attr, ni, run, NULL);
1681 err = attr_is_frame_compressed(ni, attr_b, frame, &clst_data, run);
1733 inode_set_bytes(&ni->vfs_inode, total_size);
1734 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
1737 mark_inode_dirty(&ni->vfs_inode);
1748 if (!ni->attr_list.size) {
1749 err = ni_create_attr_list(ni);
1754 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL,
1771 attr = ni_find_attr(ni, attr, &le, ATTR_DATA, NULL, 0, &svcn, &mi);
1784 if (!al_remove_le(ni, le)) {
1795 if (ni_load_mi(ni, le, &mi)) {
1800 attr = mi_find_attr(ni, mi, NULL, ATTR_DATA, NULL, 0,
1813 err = attr_load_runs(attr, ni, run, &end);
1824 ni->attr_list.dirty = true;
1831 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
1857 int attr_collapse_range(struct ntfs_inode *ni, u64 vbo, u64 bytes)
1860 struct runs_tree *run = &ni->file.run;
1861 struct ntfs_sb_info *sbi = ni->mi.sbi;
1875 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
1904 down_write(&ni->file.run_lock);
1907 u64 new_valid = min(ni->i_valid, vbo);
1910 truncate_setsize(&ni->vfs_inode, vbo);
1911 err = attr_set_size(ni, ATTR_DATA, NULL, 0, &ni->file.run, vbo,
1914 if (!err && new_valid < ni->i_valid)
1915 ni->i_valid = new_valid;
1941 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
1959 ni->attr_list.dirty = true;
1966 err = attr_load_runs(attr, ni, run, &svcn);
1987 ni->attr_list.dirty = true;
1998 ni, ATTR_DATA, NULL, 0, run, next_svcn,
2019 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn,
2029 if (!al_remove_le(ni, le)) {
2039 if (ni_load_mi(ni, le, &mi)) {
2045 attr = mi_find_attr(ni, mi, NULL, ATTR_DATA,
2059 attr = ni_enum_attr_ex(ni, attr, &le, &mi);
2072 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL,
2081 valid_size = ni->i_valid;
2096 ni->i_valid = valid_size;
2097 i_size_write(&ni->vfs_inode, data_size);
2098 inode_set_bytes(&ni->vfs_inode, total_size);
2099 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
2100 mark_inode_dirty(&ni->vfs_inode);
2103 up_write(&ni->file.run_lock);
2105 _ntfs_bad_inode(&ni->vfs_inode);
2115 int attr_punch_hole(struct ntfs_inode *ni, u64 vbo, u64 bytes, u32 *frame_size)
2118 struct runs_tree *run = &ni->file.run;
2119 struct ntfs_sb_info *sbi = ni->mi.sbi;
2133 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
2178 down_write(&ni->file.run_lock);
2204 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2218 err = attr_load_runs(attr, ni, run, &svcn);
2255 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
2277 attr = ni_enum_attr_ex(ni, attr, &le, &mi);
2292 attr_b = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL,
2305 inode_set_bytes(&ni->vfs_inode, total_size);
2306 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
2307 mark_inode_dirty(&ni->vfs_inode);
2311 up_write(&ni->file.run_lock);
2315 _ntfs_bad_inode(&ni->vfs_inode);
2333 int attr_insert_range(struct ntfs_inode *ni, u64 vbo, u64 bytes)
2336 struct runs_tree *run = &ni->file.run;
2337 struct ntfs_sb_info *sbi = ni->mi.sbi;
2350 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
2394 down_write(&ni->file.run_lock);
2397 err = attr_set_size(ni, ATTR_DATA, NULL, 0, run,
2401 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL,
2442 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2454 err = attr_load_runs(attr, ni, run, NULL);
2470 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi)) &&
2476 ni->attr_list.dirty = true;
2482 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
2487 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL,
2503 if (vbo <= ni->i_valid)
2504 ni->i_valid += bytes;
2509 /* ni->valid may be not equal valid_size (temporary). */
2510 if (ni->i_valid > data_size + bytes)
2513 attr_b->nres.valid_size = cpu_to_le64(ni->i_valid);
2517 i_size_write(&ni->vfs_inode, ni->vfs_inode.i_size + bytes);
2518 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
2519 mark_inode_dirty(&ni->vfs_inode);
2524 up_write(&ni->file.run_lock);
2529 _ntfs_bad_inode(&ni->vfs_inode);
2544 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2554 if (attr_load_runs(attr, ni, run, NULL))
2563 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi)) &&
2569 ni->attr_list.dirty = true;
2582 int attr_force_nonresident(struct ntfs_inode *ni)
2589 attr = ni_find_attr(ni, NULL, &le, ATTR_DATA, NULL, 0, NULL, &mi);
2591 _ntfs_bad_inode(&ni->vfs_inode);
2600 down_write(&ni->file.run_lock);
2601 err = attr_make_nonresident(ni, attr, le, mi,
2603 &ni->file.run, &attr, NULL);
2604 up_write(&ni->file.run_lock);