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
293 page = grab_cache_page(ni->vfs_inode.i_mapping, 0); in attr_make_nonresident()
316 al_remove_le(ni, le); in attr_make_nonresident()
318 err = ni_insert_nonresident(ni, attr_s->type, attr_name(attr_s), in attr_make_nonresident()
331 ni->ni_flags &= ~NI_FLAG_RESIDENT; in attr_make_nonresident()
355 static int attr_set_size_res(struct ntfs_inode *ni, struct ATTRIB *attr, in attr_set_size_res() argument
374 return attr_make_nonresident(ni, attr, le, mi, new_size, in attr_set_size_res()
403 int attr_set_size(struct ntfs_inode *ni, enum ATTR_TYPE type, in attr_set_size() argument
409 struct ntfs_sb_info *sbi = ni->mi.sbi; in attr_set_size()
411 bool is_mft = ni->mi.rno == MFT_REC_MFT && type == ATTR_DATA && in attr_set_size()
427 attr_b = ni_find_attr(ni, NULL, &le_b, type, name, name_len, NULL, in attr_set_size()
435 err = attr_set_size_res(ni, attr_b, le_b, mi_b, new_size, run, in attr_set_size()
485 attr = ni_find_attr(ni, attr_b, &le, type, name, name_len, &vcn, in attr_set_size()
503 err = attr_load_runs(attr, ni, run, NULL); in attr_set_size()
630 err = ni_expand_list(ni); in attr_set_size()
640 if (!ni->attr_list.size) { in attr_set_size()
641 err = ni_create_attr_list(ni); in attr_set_size()
654 err = ni_insert_nonresident(ni, type, name, name_len, run, in attr_set_size()
663 attr_b = ni_find_attr(ni, NULL, &le_b, type, name, name_len, in attr_set_size()
677 if (ni->mi.rno != MFT_REC_MFT) in attr_set_size()
724 if (!al_remove_le(ni, le)) { in attr_set_size()
787 err = ni_load_mi(ni, le, &mi); in attr_set_size()
818 if (inode_get_bytes(&ni->vfs_inode) != new_alloc) { in attr_set_size()
819 inode_set_bytes(&ni->vfs_inode, new_alloc); in attr_set_size()
826 ni->ni_flags |= NI_FLAG_UPDATE_PARENT; in attr_set_size()
827 mark_inode_dirty(&ni->vfs_inode); in attr_set_size()
853 attr = ni_find_attr(ni, attr_b, &le, type, name, name_len, in attr_set_size()
870 _ntfs_bad_inode(&ni->vfs_inode); in attr_set_size()
886 int attr_data_get_block(struct ntfs_inode *ni, CLST vcn, CLST clen, CLST *lcn, in attr_data_get_block() argument
890 struct runs_tree *run = &ni->file.run; in attr_data_get_block()
906 down_read(&ni->file.run_lock); in attr_data_get_block()
909 up_read(&ni->file.run_lock); in attr_data_get_block()
915 sbi = ni->mi.sbi; in attr_data_get_block()
918 ni_lock(ni); in attr_data_get_block()
919 down_write(&ni->file.run_lock); in attr_data_get_block()
933 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b); in attr_data_get_block()
964 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn, in attr_data_get_block()
975 err = attr_load_runs(attr, ni, run, NULL); in attr_data_get_block()
980 err = attr_is_frame_compressed(ni, attr_b, vcn >> NTFS_LZNT_CUNIT, in attr_data_get_block()
1035 attr2 = ni_find_attr(ni, attr_b, &le_b, ATTR_DATA, NULL, in attr_data_get_block()
1042 err = attr_load_runs(attr2, ni, run, NULL); in attr_data_get_block()
1100 inode_set_bytes(&ni->vfs_inode, total_size); in attr_data_get_block()
1101 ni->ni_flags |= NI_FLAG_UPDATE_PARENT; in attr_data_get_block()
1104 mark_inode_dirty(&ni->vfs_inode); in attr_data_get_block()
1115 if (!ni->attr_list.size) { in attr_data_get_block()
1116 err = ni_create_attr_list(ni); in attr_data_get_block()
1121 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, in attr_data_get_block()
1152 attr = ni_find_attr(ni, attr, &le, ATTR_DATA, NULL, 0, &svcn, &mi); in attr_data_get_block()
1169 if (!al_remove_le(ni, le)) { in attr_data_get_block()
1180 if (ni_load_mi(ni, le, &mi)) { in attr_data_get_block()
1197 err = attr_load_runs(attr, ni, run, &end); in attr_data_get_block()
1208 ni->attr_list.dirty = true; in attr_data_get_block()
1214 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run, in attr_data_get_block()
1225 _ntfs_bad_inode(&ni->vfs_inode); in attr_data_get_block()
1227 up_write(&ni->file.run_lock); in attr_data_get_block()
1228 ni_unlock(ni); in attr_data_get_block()
1235 inode_set_bytes(&ni->vfs_inode, total_size0); in attr_data_get_block()
1240 _ntfs_bad_inode(&ni->vfs_inode); in attr_data_get_block()
1245 int attr_data_read_resident(struct ntfs_inode *ni, struct page *page) in attr_data_read_resident() argument
1251 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, NULL); in attr_data_read_resident()
1281 int attr_data_write_resident(struct ntfs_inode *ni, struct page *page) in attr_data_write_resident() argument
1288 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi); in attr_data_write_resident()
1310 ni->i_valid = data_size; in attr_data_write_resident()
1318 int attr_load_runs_vcn(struct ntfs_inode *ni, enum ATTR_TYPE type, in attr_load_runs_vcn() argument
1327 if (!ni) { in attr_load_runs_vcn()
1332 attr = ni_find_attr(ni, NULL, NULL, type, name, name_len, &vcn, NULL); in attr_load_runs_vcn()
1351 err = run_unpack_ex(run, ni->mi.sbi, ni->mi.rno, svcn, evcn, svcn, in attr_load_runs_vcn()
1361 int attr_load_runs_range(struct ntfs_inode *ni, enum ATTR_TYPE type, in attr_load_runs_range() argument
1365 struct ntfs_sb_info *sbi = ni->mi.sbi; in attr_load_runs_range()
1374 err = attr_load_runs_vcn(ni, type, name, name_len, run, in attr_load_runs_range()
1391 int attr_wof_frame_info(struct ntfs_inode *ni, struct ATTRIB *attr, in attr_wof_frame_info() argument
1395 struct ntfs_sb_info *sbi = ni->mi.sbi; in attr_wof_frame_info()
1405 if (ni->vfs_inode.i_size < 0x100000000ull) { in attr_wof_frame_info()
1423 ntfs_inode_err(&ni->vfs_inode, "is corrupted"); in attr_wof_frame_info()
1444 down_write(&ni->file.run_lock); in attr_wof_frame_info()
1445 page = ni->file.offs_page; in attr_wof_frame_info()
1453 ni->file.offs_page = page; in attr_wof_frame_info()
1476 err = attr_load_runs_range(ni, ATTR_DATA, WOF_NAME, in attr_wof_frame_info()
1528 up_write(&ni->file.run_lock); in attr_wof_frame_info()
1537 * run - run to use, usually == &ni->file.run.
1540 int attr_is_frame_compressed(struct ntfs_inode *ni, struct ATTRIB *attr, in attr_is_frame_compressed() argument
1560 err = attr_load_runs_vcn(ni, attr->type, attr_name(attr), in attr_is_frame_compressed()
1583 alen = bytes_to_cluster(ni->mi.sbi, le64_to_cpu(attr->nres.alloc_size)); in attr_is_frame_compressed()
1596 err = attr_load_runs_vcn(ni, attr->type, in attr_is_frame_compressed()
1640 * Assumed: down_write(&ni->file.run_lock);
1642 int attr_allocate_frame(struct ntfs_inode *ni, CLST frame, size_t compr_size, in attr_allocate_frame() argument
1646 struct runs_tree *run = &ni->file.run; in attr_allocate_frame()
1647 struct ntfs_sb_info *sbi = ni->mi.sbi; in attr_allocate_frame()
1656 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b); in attr_allocate_frame()
1679 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn, in attr_allocate_frame()
1689 err = attr_load_runs(attr, ni, run, NULL); in attr_allocate_frame()
1693 err = attr_is_frame_compressed(ni, attr_b, frame, &clst_data, run); in attr_allocate_frame()
1745 inode_set_bytes(&ni->vfs_inode, total_size); in attr_allocate_frame()
1746 ni->ni_flags |= NI_FLAG_UPDATE_PARENT; in attr_allocate_frame()
1749 mark_inode_dirty(&ni->vfs_inode); in attr_allocate_frame()
1760 if (!ni->attr_list.size) { in attr_allocate_frame()
1761 err = ni_create_attr_list(ni); in attr_allocate_frame()
1766 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, in attr_allocate_frame()
1783 attr = ni_find_attr(ni, attr, &le, ATTR_DATA, NULL, 0, &svcn, &mi); in attr_allocate_frame()
1796 if (!al_remove_le(ni, le)) { in attr_allocate_frame()
1807 if (ni_load_mi(ni, le, &mi)) { in attr_allocate_frame()
1825 err = attr_load_runs(attr, ni, run, &end); in attr_allocate_frame()
1836 ni->attr_list.dirty = true; in attr_allocate_frame()
1843 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run, in attr_allocate_frame()
1869 int attr_collapse_range(struct ntfs_inode *ni, u64 vbo, u64 bytes) in attr_collapse_range() argument
1872 struct runs_tree *run = &ni->file.run; in attr_collapse_range()
1873 struct ntfs_sb_info *sbi = ni->mi.sbi; in attr_collapse_range()
1887 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b); in attr_collapse_range()
1916 down_write(&ni->file.run_lock); in attr_collapse_range()
1919 u64 new_valid = min(ni->i_valid, vbo); in attr_collapse_range()
1922 truncate_setsize(&ni->vfs_inode, vbo); in attr_collapse_range()
1923 err = attr_set_size(ni, ATTR_DATA, NULL, 0, &ni->file.run, vbo, in attr_collapse_range()
1926 if (!err && new_valid < ni->i_valid) in attr_collapse_range()
1927 ni->i_valid = new_valid; in attr_collapse_range()
1953 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn, in attr_collapse_range()
1971 ni->attr_list.dirty = true; in attr_collapse_range()
1978 err = attr_load_runs(attr, ni, run, &svcn); in attr_collapse_range()
1999 ni->attr_list.dirty = true; in attr_collapse_range()
2010 ni, ATTR_DATA, NULL, 0, run, next_svcn, in attr_collapse_range()
2031 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn, in attr_collapse_range()
2041 if (!al_remove_le(ni, le)) { in attr_collapse_range()
2051 if (ni_load_mi(ni, le, &mi)) { in attr_collapse_range()
2071 attr = ni_enum_attr_ex(ni, attr, &le, &mi); in attr_collapse_range()
2084 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, in attr_collapse_range()
2093 valid_size = ni->i_valid; in attr_collapse_range()
2108 ni->i_valid = valid_size; in attr_collapse_range()
2109 i_size_write(&ni->vfs_inode, data_size); in attr_collapse_range()
2110 inode_set_bytes(&ni->vfs_inode, total_size); in attr_collapse_range()
2111 ni->ni_flags |= NI_FLAG_UPDATE_PARENT; in attr_collapse_range()
2112 mark_inode_dirty(&ni->vfs_inode); in attr_collapse_range()
2115 up_write(&ni->file.run_lock); in attr_collapse_range()
2117 _ntfs_bad_inode(&ni->vfs_inode); in attr_collapse_range()
2127 int attr_punch_hole(struct ntfs_inode *ni, u64 vbo, u64 bytes, u32 *frame_size) in attr_punch_hole() argument
2130 struct runs_tree *run = &ni->file.run; in attr_punch_hole()
2131 struct ntfs_sb_info *sbi = ni->mi.sbi; in attr_punch_hole()
2145 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b); in attr_punch_hole()
2190 down_write(&ni->file.run_lock); in attr_punch_hole()
2216 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn, in attr_punch_hole()
2230 err = attr_load_runs(attr, ni, run, &svcn); in attr_punch_hole()
2267 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run, in attr_punch_hole()
2289 attr = ni_enum_attr_ex(ni, attr, &le, &mi); in attr_punch_hole()
2304 attr_b = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, in attr_punch_hole()
2317 inode_set_bytes(&ni->vfs_inode, total_size); in attr_punch_hole()
2318 ni->ni_flags |= NI_FLAG_UPDATE_PARENT; in attr_punch_hole()
2319 mark_inode_dirty(&ni->vfs_inode); in attr_punch_hole()
2323 up_write(&ni->file.run_lock); in attr_punch_hole()
2327 _ntfs_bad_inode(&ni->vfs_inode); in attr_punch_hole()
2345 int attr_insert_range(struct ntfs_inode *ni, u64 vbo, u64 bytes) in attr_insert_range() argument
2348 struct runs_tree *run = &ni->file.run; in attr_insert_range()
2349 struct ntfs_sb_info *sbi = ni->mi.sbi; in attr_insert_range()
2362 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, &mi_b); in attr_insert_range()
2401 down_write(&ni->file.run_lock); in attr_insert_range()
2404 err = attr_set_size(ni, ATTR_DATA, NULL, 0, run, in attr_insert_range()
2408 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, in attr_insert_range()
2449 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn, in attr_insert_range()
2461 err = attr_load_runs(attr, ni, run, NULL); in attr_insert_range()
2477 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi)) && in attr_insert_range()
2483 ni->attr_list.dirty = true; in attr_insert_range()
2489 err = ni_insert_nonresident(ni, ATTR_DATA, NULL, 0, run, in attr_insert_range()
2494 attr_b = ni_find_attr(ni, NULL, &le_b, ATTR_DATA, NULL, 0, NULL, in attr_insert_range()
2510 if (vbo <= ni->i_valid) in attr_insert_range()
2511 ni->i_valid += bytes; in attr_insert_range()
2516 /* ni->valid may be not equal valid_size (temporary). */ in attr_insert_range()
2517 if (ni->i_valid > data_size + bytes) in attr_insert_range()
2520 attr_b->nres.valid_size = cpu_to_le64(ni->i_valid); in attr_insert_range()
2524 i_size_write(&ni->vfs_inode, ni->vfs_inode.i_size + bytes); in attr_insert_range()
2525 ni->ni_flags |= NI_FLAG_UPDATE_PARENT; in attr_insert_range()
2526 mark_inode_dirty(&ni->vfs_inode); in attr_insert_range()
2531 up_write(&ni->file.run_lock); in attr_insert_range()
2536 _ntfs_bad_inode(&ni->vfs_inode); in attr_insert_range()
2551 attr = ni_find_attr(ni, attr_b, &le, ATTR_DATA, NULL, 0, &vcn, in attr_insert_range()
2561 if (attr_load_runs(attr, ni, run, NULL)) in attr_insert_range()
2570 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi)) && in attr_insert_range()
2576 ni->attr_list.dirty = true; in attr_insert_range()