Lines Matching refs:mi
26 struct mft_inode *mi; in ni_ins_mi() local
29 mi = rb_entry(pr, struct mft_inode, node); in ni_ins_mi()
30 if (mi->rno > ino) in ni_ins_mi()
32 else if (mi->rno < ino) in ni_ins_mi()
35 return mi; in ni_ins_mi()
57 static void ni_add_mi(struct ntfs_inode *ni, struct mft_inode *mi) in ni_add_mi() argument
59 ni_ins_mi(ni, &ni->mi_tree, mi->rno, &mi->node); in ni_add_mi()
65 void ni_remove_mi(struct ntfs_inode *ni, struct mft_inode *mi) in ni_remove_mi() argument
67 rb_erase(&mi->node, &ni->mi_tree); in ni_remove_mi()
77 attr = mi_find_attr(&ni->mi, NULL, ATTR_STD, NULL, 0, NULL); in ni_std()
91 attr = mi_find_attr(&ni->mi, NULL, ATTR_STD, NULL, 0, NULL); in ni_std5()
104 if (!ni->vfs_inode.i_nlink && is_rec_inuse(ni->mi.mrec)) in ni_clear()
111 struct mft_inode *mi = rb_entry(node, struct mft_inode, node); in ni_clear() local
114 mi_put(mi); in ni_clear()
132 mi_clear(&ni->mi); in ni_clear()
138 int ni_load_mi_ex(struct ntfs_inode *ni, CLST rno, struct mft_inode **mi) in ni_load_mi_ex() argument
147 err = mi_get(ni->mi.sbi, rno, &r); in ni_load_mi_ex()
154 if (mi) in ni_load_mi_ex()
155 *mi = r; in ni_load_mi_ex()
163 struct mft_inode **mi) in ni_load_mi() argument
168 *mi = &ni->mi; in ni_load_mi()
173 if (rno == ni->mi.rno) { in ni_load_mi()
174 *mi = &ni->mi; in ni_load_mi()
177 return ni_load_mi_ex(ni, rno, mi); in ni_load_mi()
188 struct mft_inode **mi) in ni_find_attr() argument
197 if (mi) in ni_find_attr()
198 *mi = &ni->mi; in ni_find_attr()
201 return mi_find_attr(&ni->mi, attr, type, name, name_len, NULL); in ni_find_attr()
233 if (mi) in ni_find_attr()
234 *mi = m; in ni_find_attr()
238 ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR); in ni_find_attr()
247 struct mft_inode **mi) in ni_enum_attr_ex() argument
255 if (mi) in ni_enum_attr_ex()
256 *mi = &ni->mi; in ni_enum_attr_ex()
258 return mi_enum_attr(&ni->mi, attr); in ni_enum_attr_ex()
270 if (mi) in ni_enum_attr_ex()
271 *mi = mi2; in ni_enum_attr_ex()
286 struct mft_inode *mi; in ni_load_attr() local
291 *pmi = &ni->mi; in ni_load_attr()
292 return mi_find_attr(&ni->mi, NULL, type, name, name_len, NULL); in ni_load_attr()
312 if (ni_load_mi(ni, le, &mi)) in ni_load_attr()
316 *pmi = mi; in ni_load_attr()
318 attr = mi_find_attr(mi, NULL, type, name, name_len, &le->id); in ni_load_attr()
348 if (rno == ni->mi.rno) in ni_load_all_mi()
362 bool ni_add_subrecord(struct ntfs_inode *ni, CLST rno, struct mft_inode **mi) in ni_add_subrecord() argument
370 if (mi_format_new(m, ni->mi.sbi, rno, 0, ni->mi.rno == MFT_REC_MFT)) { in ni_add_subrecord()
375 mi_get_ref(&ni->mi, &m->mrec->parent_ref); in ni_add_subrecord()
378 *mi = m; in ni_add_subrecord()
392 struct mft_inode *mi; in ni_remove_attr() local
397 attr = mi_find_attr(&ni->mi, NULL, type, name, name_len, id); in ni_remove_attr()
401 mi_remove_attr(ni, &ni->mi, attr); in ni_remove_attr()
430 err = ni_load_mi(ni, le, &mi); in ni_remove_attr()
436 attr = mi_find_attr(mi, NULL, type, name, name_len, id); in ni_remove_attr()
440 mi_remove_attr(ni, mi, attr); in ni_remove_attr()
454 ni_ins_new_attr(struct ntfs_inode *ni, struct mft_inode *mi, in ni_ins_new_attr() argument
464 mi_get_ref(mi, &ref); in ni_ins_new_attr()
484 attr = mi_insert_attr(mi, type, name, name_len, asize, name_off); in ni_ins_new_attr()
520 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_repack()
521 struct mft_inode *mi, *mi_p = NULL; in ni_repack() local
532 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi))) { in ni_repack()
560 if (le32_to_cpu(mi->mrec->used) + 8 >= rs) in ni_repack()
570 err = run_unpack(&run, sbi, ni->mi.rno, svcn, evcn, svcn, in ni_repack()
577 mi_p = mi; in ni_repack()
599 mi_remove_attr(NULL, mi, attr); in ni_repack()
605 mi->dirty = true; in ni_repack()
609 err = mi_pack_runs(mi, attr, &run, in ni_repack()
615 mi_p = mi; in ni_repack()
646 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_try_remove_attr_list()
649 struct mft_inode *mi; in ni_try_remove_attr_list() local
661 attr_list = mi_find_attr(&ni->mi, NULL, ATTR_LIST, NULL, 0, NULL); in ni_try_remove_attr_list()
668 free = sbi->record_size - le32_to_cpu(ni->mi.mrec->used) + asize; in ni_try_remove_attr_list()
669 mi_get_ref(&ni->mi, &ref); in ni_try_remove_attr_list()
679 mi = ni_find_mi(ni, ino_get(&le->ref)); in ni_try_remove_attr_list()
680 if (!mi) in ni_try_remove_attr_list()
683 attr = mi_find_attr(mi, NULL, le->type, le_name(le), in ni_try_remove_attr_list()
696 mi_remove_attr(NULL, &ni->mi, attr_list); in ni_try_remove_attr_list()
707 mi = ni_find_mi(ni, ino_get(&le->ref)); in ni_try_remove_attr_list()
708 if (!mi) { in ni_try_remove_attr_list()
713 attr = mi_find_attr(mi, NULL, le->type, le_name(le), in ni_try_remove_attr_list()
722 attr_ins = mi_insert_attr(&ni->mi, le->type, le_name(le), in ni_try_remove_attr_list()
741 mi_remove_attr(NULL, mi, attr); in ni_try_remove_attr_list()
763 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_create_attr_list()
772 struct mft_inode *mi; in ni_create_attr_list() local
776 is_mft = ni->mi.rno == MFT_REC_MFT; in ni_create_attr_list()
777 rec = ni->mi.mrec; in ni_create_attr_list()
790 mi_get_ref(&ni->mi, &le->ref); in ni_create_attr_list()
798 for (; (attr = mi_enum_attr(&ni->mi, attr)); le = Add2Ptr(le, sz)) { in ni_create_attr_list()
842 err = ntfs_look_free_mft(sbi, &rno, is_mft, ni, &mi); in ni_create_attr_list()
852 attr = mi_insert_attr(mi, b->type, Add2Ptr(b, name_off), in ni_create_attr_list()
856 mi_get_ref(mi, &le_b[nb]->ref); in ni_create_attr_list()
864 WARN_ON(!mi_remove_attr(NULL, &ni->mi, b)); in ni_create_attr_list()
872 attr = mi_insert_attr(&ni->mi, ATTR_LIST, NULL, 0, in ni_create_attr_list()
909 struct mft_inode *mi; in ni_ins_attr_ext() local
915 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_ins_attr_ext()
917 is_mft = ni->mi.rno == MFT_REC_MFT; in ni_ins_attr_ext()
930 ni->mi.rno == MFT_REC_LOG) { in ni_ins_attr_ext()
954 mi = rb_entry(node, struct mft_inode, node); in ni_ins_attr_ext()
957 (mi_enum_attr(mi, NULL) || in ni_ins_attr_ext()
958 vbo <= ((u64)mi->rno << sbi->record_bits))) { in ni_ins_attr_ext()
963 mi_find_attr(mi, NULL, ATTR_DATA, NULL, 0, NULL)) { in ni_ins_attr_ext()
972 mi_find_attr(mi, NULL, type, name, name_len, NULL)) { in ni_ins_attr_ext()
981 if (le32_to_cpu(mi->mrec->used) + asize > sbi->record_size) in ni_ins_attr_ext()
985 attr = ni_ins_new_attr(ni, mi, le, type, name, name_len, asize, in ni_ins_attr_ext()
993 *ins_mi = mi; in ni_ins_attr_ext()
999 err = ntfs_look_free_mft(sbi, &rno, is_mft_data, ni, &mi); in ni_ins_attr_ext()
1008 attr = ni_ins_new_attr(ni, mi, le, type, name, name_len, asize, in ni_ins_attr_ext()
1016 *ins_mi = mi; in ni_ins_attr_ext()
1021 ni_remove_mi(ni, mi); in ni_ins_attr_ext()
1022 mi_put(mi); in ni_ins_attr_ext()
1051 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_insert_attr()
1061 is_mft = ni->mi.rno == MFT_REC_MFT; in ni_insert_attr()
1062 rec = ni->mi.mrec; in ni_insert_attr()
1077 attr = ni_ins_new_attr(ni, &ni->mi, NULL, type, name, name_len, in ni_insert_attr()
1083 *ins_mi = &ni->mi; in ni_insert_attr()
1108 while ((attr = mi_enum_attr(&ni->mi, attr))) { in ni_insert_attr()
1126 attr = mi_enum_attr(&ni->mi, attr); in ni_insert_attr()
1160 mi_remove_attr(NULL, &ni->mi, attr); in ni_insert_attr()
1169 attr = ni_ins_new_attr(ni, &ni->mi, NULL, type, name, name_len, asize, in ni_insert_attr()
1179 *ins_mi = &ni->mi; in ni_insert_attr()
1194 struct mft_inode *mi, *mi_min, *mi_new; in ni_expand_mft_list() local
1195 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_expand_mft_list()
1203 mi = rb_entry(node, struct mft_inode, node); in ni_expand_mft_list()
1205 attr = mi_enum_attr(mi, NULL); in ni_expand_mft_list()
1208 mft_min = mi->rno; in ni_expand_mft_list()
1209 mi_min = mi; in ni_expand_mft_list()
1226 attr = mi_find_attr(&ni->mi, NULL, ATTR_DATA, NULL, 0, NULL); in ni_expand_mft_list()
1263 le32_sub_cpu(&ni->mi.mrec->used, done); in ni_expand_mft_list()
1320 bool is_mft = ni->mi.rno == MFT_REC_MFT; in ni_expand_list()
1323 mi_get_ref(&ni->mi, &ref); in ni_expand_list()
1337 attr = rec_find_attr_le(&ni->mi, le); in ni_expand_list()
1357 mi_remove_attr(NULL, &ni->mi, attr); in ni_expand_list()
1384 struct mft_inode **mi) in ni_insert_nonresident() argument
1395 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_insert_nonresident()
1417 &attr, mi, NULL); in ni_insert_nonresident()
1438 svcn ? 0 : cpu_to_le64((u64)len << ni->mi.sbi->cluster_bits); in ni_insert_nonresident()
1457 struct ATTRIB **new_attr, struct mft_inode **mi, in ni_insert_resident() argument
1466 0, &attr, mi, le); in ni_insert_resident()
1479 le16_add_cpu(&ni->mi.mrec->hard_links, 1); in ni_insert_resident()
1480 ni->mi.dirty = true; in ni_insert_resident()
1494 struct mft_inode *mi, struct ATTR_LIST_ENTRY *le) in ni_remove_attr_le() argument
1496 mi_remove_attr(ni, mi, attr); in ni_remove_attr_le()
1516 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_delete_all()
1524 mi_get_ref(&ni->mi, &ref); in ni_delete_all()
1545 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn, evcn, svcn, in ni_delete_all()
1550 run_deallocate(ni->mi.sbi, &ni->attr_list.run, true); in ni_delete_all()
1557 struct mft_inode *mi = rb_entry(node, struct mft_inode, node); in ni_delete_all() local
1559 clear_rec_inuse(mi->mrec); in ni_delete_all()
1560 mi->dirty = true; in ni_delete_all()
1561 mi_write(mi, 0); in ni_delete_all()
1563 ntfs_mark_rec_free(sbi, mi->rno); in ni_delete_all()
1564 ni_remove_mi(ni, mi); in ni_delete_all()
1565 mi_put(mi); in ni_delete_all()
1570 clear_rec_inuse(ni->mi.mrec); in ni_delete_all()
1571 ni->mi.dirty = true; in ni_delete_all()
1572 err = mi_write(&ni->mi, 0); in ni_delete_all()
1574 ntfs_mark_rec_free(sbi, ni->mi.rno); in ni_delete_all()
1586 struct mft_inode **mi, in ni_fname_name() argument
1596 attr = ni_find_attr(ni, attr, le, ATTR_NAME, NULL, 0, NULL, mi); in ni_fname_name()
1626 struct mft_inode **mi, in ni_fname_type() argument
1639 attr = ni_find_attr(ni, attr, le, ATTR_NAME, NULL, 0, NULL, mi); in ni_fname_type()
1659 struct mft_inode *mi; in ni_new_attr_flags() local
1663 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi); in ni_new_attr_flags()
1704 if (!mi_resize_attr(mi, attr, new_asize - le32_to_cpu(attr->size))) in ni_new_attr_flags()
1726 mi->dirty = true; in ni_new_attr_flags()
1754 !ntfs_read_run_nb(ni->mi.sbi, &run, 0, buffer, in ni_parse_reparse()
1846 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_fiemap()
2024 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_readpage_cmpr()
2107 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_decompress_file()
2120 struct mft_inode *mi; in ni_decompress_file() local
2219 mi_get_ref(&ni->mi, &ref); in ni_decompress_file()
2242 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn, evcn, svcn, in ni_decompress_file()
2264 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi); in ni_decompress_file()
2272 struct MFT_REC *rec = mi->mrec; in ni_decompress_file()
2284 mi->dirty = true; in ni_decompress_file()
2382 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_read_frame()
2667 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_write_frame()
2677 struct mft_inode *mi; in ni_write_frame() local
2683 attr = ni_find_attr(ni, NULL, &le, ATTR_DATA, NULL, 0, NULL, &mi); in ni_write_frame()
2701 err = attr_make_nonresident(ni, attr, le, mi, in ni_write_frame()
2834 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_remove_name()
2838 struct mft_inode *mi; in ni_remove_name() local
2845 mi_get_ref(&dir_ni->mi, &de_name->home); in ni_remove_name()
2848 &de_name->home, &mi, &le); in ni_remove_name()
2864 ni_remove_attr_le(ni, attr_from_name(fname), mi, le); in ni_remove_name()
2869 fname = ni_fname_type(ni, name_type, &mi, &le); in ni_remove_name()
2885 ni_remove_attr_le(ni, attr_from_name(fname), mi, le); in ni_remove_name()
2900 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_remove_name_undo()
2912 mi_get_ref(&ni->mi, &de2->ref); in ni_remove_name_undo()
2933 mi_get_ref(&ni->mi, &de->ref); in ni_remove_name_undo()
2951 struct mft_inode *mi; in ni_add_name() local
2955 mi_get_ref(&ni->mi, &de->ref); in ni_add_name()
2956 mi_get_ref(&dir_ni->mi, &de_name->home); in ni_add_name()
2960 &mi, &le); in ni_add_name()
2967 err = indx_insert_entry(&dir_ni->dir, dir_ni, de, ni->mi.sbi, NULL, 0); in ni_add_name()
2969 ni_remove_attr_le(ni, attr, mi, le); in ni_add_name()
3029 if (ni->mi.dirty || ni->attr_list.dirty || in ni_is_dirty()
3050 struct mft_inode *mi; in ni_update_parent() local
3052 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_update_parent()
3056 if (ni->mi.mrec->flags & RECORD_FLAG_DIR) { in ni_update_parent()
3065 &mi); in ni_update_parent()
3089 mi->dirty = true; in ni_update_parent()
3115 &mi))) { in ni_update_parent()
3142 mi->dirty = true; in ni_update_parent()
3174 if (is_rec_inuse(ni->mi.mrec) && in ni_write_inode()
3211 ni->mi.dirty = true; in ni_write_inode()
3242 struct mft_inode *mi = rb_entry(node, struct mft_inode, node); in ni_write_inode() local
3247 if (!mi->dirty) in ni_write_inode()
3250 is_empty = !mi_enum_attr(mi, NULL); in ni_write_inode()
3253 clear_rec_inuse(mi->mrec); in ni_write_inode()
3255 err2 = mi_write(mi, sync); in ni_write_inode()
3260 ntfs_mark_rec_free(sbi, mi->rno); in ni_write_inode()
3262 mi_put(mi); in ni_write_inode()
3266 if (ni->mi.dirty) { in ni_write_inode()
3267 err2 = mi_write(&ni->mi, sync); in ni_write_inode()