Lines Matching refs:mi
27 struct mft_inode *mi; in ni_ins_mi() local
30 mi = rb_entry(pr, struct mft_inode, node); in ni_ins_mi()
31 if (mi->rno > ino) in ni_ins_mi()
33 else if (mi->rno < ino) in ni_ins_mi()
36 return mi; in ni_ins_mi()
58 static void ni_add_mi(struct ntfs_inode *ni, struct mft_inode *mi) in ni_add_mi() argument
60 ni_ins_mi(ni, &ni->mi_tree, mi->rno, &mi->node); in ni_add_mi()
66 void ni_remove_mi(struct ntfs_inode *ni, struct mft_inode *mi) in ni_remove_mi() argument
68 rb_erase(&mi->node, &ni->mi_tree); in ni_remove_mi()
78 attr = mi_find_attr(ni, &ni->mi, NULL, ATTR_STD, NULL, 0, NULL); in ni_std()
92 attr = mi_find_attr(ni, &ni->mi, NULL, ATTR_STD, NULL, 0, NULL); in ni_std5()
105 if (!ni->vfs_inode.i_nlink && ni->mi.mrec && in ni_clear()
106 is_rec_inuse(ni->mi.mrec) && in ni_clear()
107 !(ni->mi.sbi->flags & NTFS_FLAGS_LOG_REPLAYING)) in ni_clear()
114 struct mft_inode *mi = rb_entry(node, struct mft_inode, node); in ni_clear() local
117 mi_put(mi); in ni_clear()
135 mi_clear(&ni->mi); in ni_clear()
141 int ni_load_mi_ex(struct ntfs_inode *ni, CLST rno, struct mft_inode **mi) in ni_load_mi_ex() argument
150 err = mi_get(ni->mi.sbi, rno, &r); in ni_load_mi_ex()
159 if (mi) in ni_load_mi_ex()
160 *mi = r; in ni_load_mi_ex()
168 struct mft_inode **mi) in ni_load_mi() argument
173 *mi = &ni->mi; in ni_load_mi()
178 if (rno == ni->mi.rno) { in ni_load_mi()
179 *mi = &ni->mi; in ni_load_mi()
182 return ni_load_mi_ex(ni, rno, mi); in ni_load_mi()
193 struct mft_inode **mi) in ni_find_attr() argument
202 if (mi) in ni_find_attr()
203 *mi = &ni->mi; in ni_find_attr()
206 return mi_find_attr(ni, &ni->mi, attr, type, name, name_len, in ni_find_attr()
239 if (mi) in ni_find_attr()
240 *mi = m; in ni_find_attr()
253 struct mft_inode **mi) in ni_enum_attr_ex() argument
261 if (mi) in ni_enum_attr_ex()
262 *mi = &ni->mi; in ni_enum_attr_ex()
264 return mi_enum_attr(ni, &ni->mi, attr); in ni_enum_attr_ex()
276 if (mi) in ni_enum_attr_ex()
277 *mi = mi2; in ni_enum_attr_ex()
292 struct mft_inode *mi; in ni_load_attr() local
297 *pmi = &ni->mi; in ni_load_attr()
298 return mi_find_attr(ni, &ni->mi, NULL, type, name, name_len, in ni_load_attr()
319 if (ni_load_mi(ni, le, &mi)) in ni_load_attr()
323 *pmi = mi; in ni_load_attr()
325 attr = mi_find_attr(ni, mi, NULL, type, name, name_len, &le->id); in ni_load_attr()
356 if (rno == ni->mi.rno) in ni_load_all_mi()
370 bool ni_add_subrecord(struct ntfs_inode *ni, CLST rno, struct mft_inode **mi) in ni_add_subrecord() argument
378 if (mi_format_new(m, ni->mi.sbi, rno, 0, ni->mi.rno == MFT_REC_MFT)) { in ni_add_subrecord()
383 mi_get_ref(&ni->mi, &m->mrec->parent_ref); in ni_add_subrecord()
386 *mi = m; in ni_add_subrecord()
400 struct mft_inode *mi; in ni_remove_attr() local
405 attr = mi_find_attr(ni, &ni->mi, NULL, type, name, name_len, in ni_remove_attr()
410 mi_remove_attr(ni, &ni->mi, attr); in ni_remove_attr()
439 err = ni_load_mi(ni, le, &mi); in ni_remove_attr()
445 attr = mi_find_attr(ni, mi, NULL, type, name, name_len, id); in ni_remove_attr()
449 mi_remove_attr(ni, mi, attr); in ni_remove_attr()
463 ni_ins_new_attr(struct ntfs_inode *ni, struct mft_inode *mi, in ni_ins_new_attr() argument
473 mi_get_ref(mi, &ref); in ni_ins_new_attr()
493 attr = mi_insert_attr(ni, mi, type, name, name_len, asize, name_off); in ni_ins_new_attr()
532 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_repack()
533 struct mft_inode *mi, *mi_p = NULL; in ni_repack()
544 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi))) { in ni_repack()
572 if (le32_to_cpu(mi->mrec->used) + 8 >= rs) in ni_repack()
588 err = run_unpack(&run, sbi, ni->mi.rno, svcn, evcn, svcn, in ni_repack()
595 mi_p = mi; in ni_repack()
617 mi_remove_attr(NULL, mi, attr); in ni_repack()
623 mi->dirty = true; in ni_repack()
627 err = mi_pack_runs(mi, attr, &run, in ni_repack()
633 mi_p = mi; in ni_repack()
665 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_try_remove_attr_list()
668 struct mft_inode *mi; in ni_try_remove_attr_list() local
681 attr_list = mi_find_attr(ni, &ni->mi, NULL, ATTR_LIST, NULL, 0, NULL); in ni_try_remove_attr_list()
688 free = sbi->record_size - le32_to_cpu(ni->mi.mrec->used) + asize; in ni_try_remove_attr_list()
689 mi_get_ref(&ni->mi, &ref); in ni_try_remove_attr_list()
699 mi = ni_find_mi(ni, ino_get(&le->ref)); in ni_try_remove_attr_list()
700 if (!mi) in ni_try_remove_attr_list()
703 attr = mi_find_attr(ni, mi, NULL, le->type, le_name(le), in ni_try_remove_attr_list()
716 mrec = kmemdup(ni->mi.mrec, sbi->record_size, GFP_NOFS); in ni_try_remove_attr_list()
721 mi_remove_attr(NULL, &ni->mi, attr_list); in ni_try_remove_attr_list()
733 mi = ni_find_mi(ni, ino_get(&le->ref)); in ni_try_remove_attr_list()
734 if (!mi) { in ni_try_remove_attr_list()
739 attr = mi_find_attr(ni, mi, NULL, le->type, le_name(le), in ni_try_remove_attr_list()
748 attr_ins = mi_insert_attr(ni, &ni->mi, le->type, le_name(le), in ni_try_remove_attr_list()
772 mi = ni_find_mi(ni, ino_get(&le->ref)); in ni_try_remove_attr_list()
773 if (!mi) in ni_try_remove_attr_list()
776 attr = mi_find_attr(ni, mi, NULL, le->type, le_name(le), in ni_try_remove_attr_list()
782 mi_remove_attr(NULL, mi, attr); in ni_try_remove_attr_list()
796 swap(mrec, ni->mi.mrec); in ni_try_remove_attr_list()
806 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_create_attr_list()
815 struct mft_inode *mi; in ni_create_attr_list() local
819 is_mft = ni->mi.rno == MFT_REC_MFT; in ni_create_attr_list()
820 rec = ni->mi.mrec; in ni_create_attr_list()
831 mi_get_ref(&ni->mi, &le->ref); in ni_create_attr_list()
839 for (; (attr = mi_enum_attr(ni, &ni->mi, attr)); le = Add2Ptr(le, sz)) { in ni_create_attr_list()
883 err = ntfs_look_free_mft(sbi, &rno, is_mft, ni, &mi); in ni_create_attr_list()
894 attr = mi_insert_attr(ni, mi, b->type, Add2Ptr(b, name_off), in ni_create_attr_list()
899 mi_get_ref(mi, &le_b[nb]->ref); in ni_create_attr_list()
907 if (!mi_remove_attr(NULL, &ni->mi, b)) in ni_create_attr_list()
917 attr = mi_insert_attr(ni, &ni->mi, ATTR_LIST, NULL, 0, in ni_create_attr_list()
953 struct mft_inode *mi; in ni_ins_attr_ext() local
959 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_ins_attr_ext()
961 is_mft = ni->mi.rno == MFT_REC_MFT; in ni_ins_attr_ext()
974 ni->mi.rno == MFT_REC_LOG) { in ni_ins_attr_ext()
998 mi = rb_entry(node, struct mft_inode, node); in ni_ins_attr_ext()
1001 (mi_enum_attr(ni, mi, NULL) || in ni_ins_attr_ext()
1002 vbo <= ((u64)mi->rno << sbi->record_bits))) { in ni_ins_attr_ext()
1007 mi_find_attr(ni, mi, NULL, ATTR_DATA, NULL, 0, NULL)) { in ni_ins_attr_ext()
1016 mi_find_attr(ni, mi, NULL, type, name, name_len, NULL)) { in ni_ins_attr_ext()
1025 if (le32_to_cpu(mi->mrec->used) + asize > sbi->record_size) in ni_ins_attr_ext()
1029 attr = ni_ins_new_attr(ni, mi, le, type, name, name_len, asize, in ni_ins_attr_ext()
1039 *ins_mi = mi; in ni_ins_attr_ext()
1045 err = ntfs_look_free_mft(sbi, &rno, is_mft_data, ni, &mi); in ni_ins_attr_ext()
1054 attr = ni_ins_new_attr(ni, mi, le, type, name, name_len, asize, in ni_ins_attr_ext()
1069 *ins_mi = mi; in ni_ins_attr_ext()
1074 ni_remove_mi(ni, mi); in ni_ins_attr_ext()
1075 mi_put(mi); in ni_ins_attr_ext()
1103 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_insert_attr()
1113 is_mft = ni->mi.rno == MFT_REC_MFT; in ni_insert_attr()
1114 rec = ni->mi.mrec; in ni_insert_attr()
1129 attr = ni_ins_new_attr(ni, &ni->mi, NULL, type, name, name_len, in ni_insert_attr()
1140 *ins_mi = &ni->mi; in ni_insert_attr()
1165 while ((attr = mi_enum_attr(ni, &ni->mi, attr))) { in ni_insert_attr()
1183 attr = mi_enum_attr(ni, &ni->mi, attr); in ni_insert_attr()
1217 mi_remove_attr(NULL, &ni->mi, attr); in ni_insert_attr()
1226 attr = ni_ins_new_attr(ni, &ni->mi, NULL, type, name, name_len, asize, in ni_insert_attr()
1241 *ins_mi = &ni->mi; in ni_insert_attr()
1256 struct mft_inode *mi, *mi_min, *mi_new; in ni_expand_mft_list() local
1257 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_expand_mft_list()
1265 mi = rb_entry(node, struct mft_inode, node); in ni_expand_mft_list()
1267 attr = mi_enum_attr(ni, mi, NULL); in ni_expand_mft_list()
1270 mft_min = mi->rno; in ni_expand_mft_list()
1271 mi_min = mi; in ni_expand_mft_list()
1288 attr = mi_find_attr(ni, &ni->mi, NULL, ATTR_DATA, NULL, 0, NULL); in ni_expand_mft_list()
1325 le32_sub_cpu(&ni->mi.mrec->used, done); in ni_expand_mft_list()
1388 bool is_mft = ni->mi.rno == MFT_REC_MFT; in ni_expand_list()
1391 mi_get_ref(&ni->mi, &ref); in ni_expand_list()
1405 attr = rec_find_attr_le(ni, &ni->mi, le); in ni_expand_list()
1425 mi_remove_attr(NULL, &ni->mi, attr); in ni_expand_list()
1450 struct mft_inode **mi, struct ATTR_LIST_ENTRY **le) in ni_insert_nonresident() argument
1461 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_insert_nonresident()
1484 &attr, mi, le); in ni_insert_nonresident()
1505 svcn ? 0 : cpu_to_le64((u64)len << ni->mi.sbi->cluster_bits); in ni_insert_nonresident()
1524 struct ATTRIB **new_attr, struct mft_inode **mi, in ni_insert_resident() argument
1533 0, &attr, mi, le); in ni_insert_resident()
1546 le16_add_cpu(&ni->mi.mrec->hard_links, 1); in ni_insert_resident()
1547 ni->mi.dirty = true; in ni_insert_resident()
1561 struct mft_inode *mi, struct ATTR_LIST_ENTRY *le) in ni_remove_attr_le() argument
1563 mi_remove_attr(ni, mi, attr); in ni_remove_attr_le()
1583 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_delete_all()
1591 mi_get_ref(&ni->mi, &ref); in ni_delete_all()
1617 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn, evcn, svcn, in ni_delete_all()
1622 run_deallocate(ni->mi.sbi, &ni->attr_list.run, true); in ni_delete_all()
1629 struct mft_inode *mi = rb_entry(node, struct mft_inode, node); in ni_delete_all() local
1631 clear_rec_inuse(mi->mrec); in ni_delete_all()
1632 mi->dirty = true; in ni_delete_all()
1633 mi_write(mi, 0); in ni_delete_all()
1635 ntfs_mark_rec_free(sbi, mi->rno, false); in ni_delete_all()
1636 ni_remove_mi(ni, mi); in ni_delete_all()
1637 mi_put(mi); in ni_delete_all()
1642 clear_rec_inuse(ni->mi.mrec); in ni_delete_all()
1643 ni->mi.dirty = true; in ni_delete_all()
1644 err = mi_write(&ni->mi, 0); in ni_delete_all()
1646 ntfs_mark_rec_free(sbi, ni->mi.rno, false); in ni_delete_all()
1658 struct mft_inode **mi, in ni_fname_name() argument
1669 attr = ni_find_attr(ni, attr, le, ATTR_NAME, NULL, 0, NULL, mi); in ni_fname_name()
1698 struct mft_inode **mi, in ni_fname_type() argument
1711 attr = ni_find_attr(ni, attr, le, ATTR_NAME, NULL, 0, NULL, mi); in ni_fname_type()
1731 struct mft_inode *mi; in ni_new_attr_flags() local
1735 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi); in ni_new_attr_flags()
1776 if (!mi_resize_attr(mi, attr, new_asize - le32_to_cpu(attr->size))) in ni_new_attr_flags()
1798 mi->dirty = true; in ni_new_attr_flags()
1826 !ntfs_read_run_nb(ni->mi.sbi, &run, 0, buffer, in ni_parse_reparse()
1918 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_fiemap()
2089 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_readpage_cmpr()
2170 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_decompress_file()
2183 struct mft_inode *mi; in ni_decompress_file() local
2282 mi_get_ref(&ni->mi, &ref); in ni_decompress_file()
2310 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn, evcn, svcn, in ni_decompress_file()
2332 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi); in ni_decompress_file()
2340 struct MFT_REC *rec = mi->mrec; in ni_decompress_file()
2352 mi->dirty = true; in ni_decompress_file()
2448 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_read_frame()
2733 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_write_frame()
2744 struct mft_inode *mi; in ni_write_frame() local
2750 attr = ni_find_attr(ni, NULL, &le, ATTR_DATA, NULL, 0, NULL, &mi); in ni_write_frame()
2768 err = attr_make_nonresident(ni, attr, le, mi, in ni_write_frame()
2901 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_remove_name()
2905 struct mft_inode *mi; in ni_remove_name() local
2912 mi_get_ref(&dir_ni->mi, &de_name->home); in ni_remove_name()
2915 &de_name->home, &mi, &le); in ni_remove_name()
2931 ni_remove_attr_le(ni, attr_from_name(fname), mi, le); in ni_remove_name()
2936 fname = ni_fname_type(ni, name_type, &mi, &le); in ni_remove_name()
2952 ni_remove_attr_le(ni, attr_from_name(fname), mi, le); in ni_remove_name()
2967 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_remove_name_undo()
2979 mi_get_ref(&ni->mi, &de2->ref); in ni_remove_name_undo()
2997 mi_get_ref(&ni->mi, &de->ref); in ni_remove_name_undo()
3013 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_add_name()
3016 struct mft_inode *mi; in ni_add_name() local
3026 if (ni->mi.sbi->options->hide_dot_files) { in ni_add_name()
3034 mi_get_ref(&ni->mi, &de->ref); in ni_add_name()
3035 mi_get_ref(&dir_ni->mi, &de_name->home); in ni_add_name()
3045 &mi, &le); in ni_add_name()
3054 ni_remove_attr_le(ni, attr, mi, le); in ni_add_name()
3114 if (ni->mi.dirty || ni->attr_list.dirty || in ni_is_dirty()
3135 struct mft_inode *mi; in ni_update_parent() local
3137 struct ntfs_sb_info *sbi = ni->mi.sbi; in ni_update_parent()
3141 if (ni->mi.mrec->flags & RECORD_FLAG_DIR) { in ni_update_parent()
3150 &mi); in ni_update_parent()
3174 mi->dirty = true; in ni_update_parent()
3200 &mi))) { in ni_update_parent()
3233 mi->dirty = true; in ni_update_parent()
3268 if (!ni->mi.mrec) in ni_write_inode()
3271 if (is_rec_inuse(ni->mi.mrec) && in ni_write_inode()
3313 ni->mi.dirty = true; in ni_write_inode()
3344 struct mft_inode *mi = rb_entry(node, struct mft_inode, node); in ni_write_inode() local
3349 if (!mi->dirty) in ni_write_inode()
3352 is_empty = !mi_enum_attr(ni, mi, NULL); in ni_write_inode()
3355 clear_rec_inuse(mi->mrec); in ni_write_inode()
3357 err2 = mi_write(mi, sync); in ni_write_inode()
3362 ntfs_mark_rec_free(sbi, mi->rno, false); in ni_write_inode()
3364 mi_put(mi); in ni_write_inode()
3368 if (ni->mi.dirty) { in ni_write_inode()
3369 err2 = mi_write(&ni->mi, sync); in ni_write_inode()
3444 ni->mi.dirty = true; in ni_set_compress()