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