Lines Matching refs: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,
290 page = grab_cache_page(ni->vfs_inode.i_mapping, 0);
313 al_remove_le(ni, le);
315 err = ni_insert_nonresident(ni, attr_s->type, attr_name(attr_s),
328 ni->ni_flags &= ~NI_FLAG_RESIDENT;
352 static int attr_set_size_res(struct ntfs_inode *ni, struct ATTRIB *attr,
371 return attr_make_nonresident(ni, attr, le, mi, new_size,
400 int attr_set_size(struct ntfs_inode *ni, enum ATTR_TYPE type,
406 struct ntfs_sb_info *sbi = ni->mi.sbi;
408 bool is_mft = ni->mi.rno == MFT_REC_MFT && type == ATTR_DATA &&
424 attr_b = ni_find_attr(ni, NULL, &le_b, type, name, name_len, NULL,
432 err = attr_set_size_res(ni, attr_b, le_b, mi_b, new_size, run,
482 attr = ni_find_attr(ni, attr_b, &le, type, name, name_len, &vcn,
500 err = attr_load_runs(attr, ni, run, NULL);
627 err = ni_expand_list(ni);
637 if (!ni->attr_list.size) {
638 err = ni_create_attr_list(ni);
651 err = ni_insert_nonresident(ni, type, name, name_len, run,
660 attr_b = ni_find_attr(ni, NULL, &le_b, type, name, name_len,
720 if (!al_remove_le(ni, le)) {
783 err = ni_load_mi(ni, le, &mi);
814 if (inode_get_bytes(&ni->vfs_inode) != new_alloc) {
815 inode_set_bytes(&ni->vfs_inode, new_alloc);
822 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
823 mark_inode_dirty(&ni->vfs_inode);
849 attr = ni_find_attr(ni, attr_b, &le, type, name, name_len,
866 _ntfs_bad_inode(&ni->vfs_inode);
882 int attr_data_get_block(struct ntfs_inode *ni, CLST vcn, CLST clen, CLST *lcn,
886 struct runs_tree *run = &ni->file.run;
902 down_read(&ni->file.run_lock);
905 up_read(&ni->file.run_lock);
911 sbi = ni->mi.sbi;
914 ni_lock(ni);
915 down_write(&ni->file.run_lock);
929 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
960 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
971 err = attr_load_runs(attr, ni, run, NULL);
1015 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0,
1023 err = attr_load_runs(attr, ni, run, NULL);
1081 inode_set_bytes(&ni->vfs_inode, total_size);
1082 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
1085 mark_inode_dirty(&ni->vfs_inode);
1096 if (!ni->attr_list.size) {
1097 err = ni_create_attr_list(ni);
1102 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL,
1133 attr = ni_find_attr(ni, attr, &le, ATTR_DATA, NULL, 0, &svcn, &mi);
1150 if (!al_remove_le(ni, le)) {
1161 if (ni_load_mi(ni, le, &mi)) {
1178 err = attr_load_runs(attr, ni, run, &end);
1189 ni->attr_list.dirty = true;
1195 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
1206 _ntfs_bad_inode(&ni->vfs_inode);
1208 up_write(&ni->file.run_lock);
1209 ni_unlock(ni);
1216 inode_set_bytes(&ni->vfs_inode, total_size0);
1221 _ntfs_bad_inode(&ni->vfs_inode);
1226 int attr_data_read_resident(struct ntfs_inode *ni, struct page *page)
1232 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, NULL);
1262 int attr_data_write_resident(struct ntfs_inode *ni, struct page *page)
1269 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi);
1291 ni->i_valid = data_size;
1299 int attr_load_runs_vcn(struct ntfs_inode *ni, enum ATTR_TYPE type,
1308 if (!ni) {
1313 attr = ni_find_attr(ni, NULL, NULL, type, name, name_len, &vcn, NULL);
1332 err = run_unpack_ex(run, ni->mi.sbi, ni->mi.rno, svcn, evcn, svcn,
1342 int attr_load_runs_range(struct ntfs_inode *ni, enum ATTR_TYPE type,
1346 struct ntfs_sb_info *sbi = ni->mi.sbi;
1355 err = attr_load_runs_vcn(ni, type, name, name_len, run,
1372 int attr_wof_frame_info(struct ntfs_inode *ni, struct ATTRIB *attr,
1376 struct ntfs_sb_info *sbi = ni->mi.sbi;
1386 if (ni->vfs_inode.i_size < 0x100000000ull) {
1404 ntfs_inode_err(&ni->vfs_inode, "is corrupted");
1425 down_write(&ni->file.run_lock);
1426 page = ni->file.offs_page;
1434 ni->file.offs_page = page;
1457 err = attr_load_runs_range(ni, ATTR_DATA, WOF_NAME,
1509 up_write(&ni->file.run_lock);
1517 int attr_is_frame_compressed(struct ntfs_inode *ni, struct ATTRIB *attr,
1536 run = &ni->file.run;
1539 err = attr_load_runs_vcn(ni, attr->type, attr_name(attr),
1562 alen = bytes_to_cluster(ni->mi.sbi, le64_to_cpu(attr->nres.alloc_size));
1575 err = attr_load_runs_vcn(ni, attr->type,
1619 * Assumed: down_write(&ni->file.run_lock);
1621 int attr_allocate_frame(struct ntfs_inode *ni, CLST frame, size_t compr_size,
1625 struct runs_tree *run = &ni->file.run;
1626 struct ntfs_sb_info *sbi = ni->mi.sbi;
1635 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
1658 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
1668 err = attr_load_runs(attr, ni, run, NULL);
1672 err = attr_is_frame_compressed(ni, attr_b, frame, &clst_data);
1724 inode_set_bytes(&ni->vfs_inode, total_size);
1727 mark_inode_dirty(&ni->vfs_inode);
1738 if (!ni->attr_list.size) {
1739 err = ni_create_attr_list(ni);
1744 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL,
1761 attr = ni_find_attr(ni, attr, &le, ATTR_DATA, NULL, 0, &svcn, &mi);
1774 if (!al_remove_le(ni, le)) {
1785 if (ni_load_mi(ni, le, &mi)) {
1803 err = attr_load_runs(attr, ni, run, &end);
1814 ni->attr_list.dirty = true;
1821 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
1847 int attr_collapse_range(struct ntfs_inode *ni, u64 vbo, u64 bytes)
1850 struct runs_tree *run = &ni->file.run;
1851 struct ntfs_sb_info *sbi = ni->mi.sbi;
1865 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
1894 down_write(&ni->file.run_lock);
1897 u64 new_valid = min(ni->i_valid, vbo);
1900 truncate_setsize(&ni->vfs_inode, vbo);
1901 err = attr_set_size(ni, ATTR_DATA, NULL, 0, &ni->file.run, vbo,
1904 if (!err && new_valid < ni->i_valid)
1905 ni->i_valid = new_valid;
1931 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
1949 ni->attr_list.dirty = true;
1956 err = attr_load_runs(attr, ni, run, &svcn);
1977 ni->attr_list.dirty = true;
1988 ni, ATTR_DATA, NULL, 0, run, next_svcn,
2009 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn,
2019 if (!al_remove_le(ni, le)) {
2029 if (ni_load_mi(ni, le, &mi)) {
2049 attr = ni_enum_attr_ex(ni, attr, &le, &mi);
2062 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL,
2071 valid_size = ni->i_valid;
2086 ni->i_valid = valid_size;
2087 i_size_write(&ni->vfs_inode, data_size);
2088 inode_set_bytes(&ni->vfs_inode, total_size);
2089 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
2090 mark_inode_dirty(&ni->vfs_inode);
2093 up_write(&ni->file.run_lock);
2095 _ntfs_bad_inode(&ni->vfs_inode);
2105 int attr_punch_hole(struct ntfs_inode *ni, u64 vbo, u64 bytes, u32 *frame_size)
2108 struct runs_tree *run = &ni->file.run;
2109 struct ntfs_sb_info *sbi = ni->mi.sbi;
2123 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
2168 down_write(&ni->file.run_lock);
2194 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2208 err = attr_load_runs(attr, ni, run, &svcn);
2245 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
2267 attr = ni_enum_attr_ex(ni, attr, &le, &mi);
2282 attr_b = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL,
2295 inode_set_bytes(&ni->vfs_inode, total_size);
2296 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
2297 mark_inode_dirty(&ni->vfs_inode);
2301 up_write(&ni->file.run_lock);
2305 _ntfs_bad_inode(&ni->vfs_inode);
2323 int attr_insert_range(struct ntfs_inode *ni, u64 vbo, u64 bytes)
2326 struct runs_tree *run = &ni->file.run;
2327 struct ntfs_sb_info *sbi = ni->mi.sbi;
2340 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b);
2379 down_write(&ni->file.run_lock);
2382 err = attr_set_size(ni, ATTR_DATA, NULL, 0, run,
2386 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL,
2427 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2439 err = attr_load_runs(attr, ni, run, NULL);
2455 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi)) &&
2461 ni->attr_list.dirty = true;
2467 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run,
2472 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL,
2488 if (vbo <= ni->i_valid)
2489 ni->i_valid += bytes;
2494 /* ni->valid may be not equal valid_size (temporary). */
2495 if (ni->i_valid > data_size + bytes)
2498 attr_b->nres.valid_size = cpu_to_le64(ni->i_valid);
2502 i_size_write(&ni->vfs_inode, ni->vfs_inode.i_size + bytes);
2503 ni->ni_flags |= NI_FLAG_UPDATE_PARENT;
2504 mark_inode_dirty(&ni->vfs_inode);
2509 up_write(&ni->file.run_lock);
2514 _ntfs_bad_inode(&ni->vfs_inode);
2529 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn,
2539 if (attr_load_runs(attr, ni, run, NULL))
2548 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi)) &&
2554 ni->attr_list.dirty = true;