Lines Matching refs:mi
27 struct mft_inode *mi;
30 mi = rb_entry(pr, struct mft_inode, node);
31 if (mi->rno > ino)
33 else if (mi->rno < ino)
36 return mi;
58 static void ni_add_mi(struct ntfs_inode *ni, struct mft_inode *mi)
60 ni_ins_mi(ni, &ni->mi_tree, mi->rno, &mi->node);
66 void ni_remove_mi(struct ntfs_inode *ni, struct mft_inode *mi)
68 rb_erase(&mi->node, &ni->mi_tree);
78 attr = mi_find_attr(&ni->mi, NULL, ATTR_STD, NULL, 0, NULL);
92 attr = mi_find_attr(&ni->mi, NULL, ATTR_STD, NULL, 0, NULL);
105 if (!ni->vfs_inode.i_nlink && ni->mi.mrec && is_rec_inuse(ni->mi.mrec))
112 struct mft_inode *mi = rb_entry(node, struct mft_inode, node);
115 mi_put(mi);
133 mi_clear(&ni->mi);
139 int ni_load_mi_ex(struct ntfs_inode *ni, CLST rno, struct mft_inode **mi)
148 err = mi_get(ni->mi.sbi, rno, &r);
155 if (mi)
156 *mi = r;
164 struct mft_inode **mi)
169 *mi = &ni->mi;
174 if (rno == ni->mi.rno) {
175 *mi = &ni->mi;
178 return ni_load_mi_ex(ni, rno, mi);
189 struct mft_inode **mi)
198 if (mi)
199 *mi = &ni->mi;
202 return mi_find_attr(&ni->mi, attr, type, name, name_len, NULL);
234 if (mi)
235 *mi = m;
240 ntfs_set_state(ni->mi.sbi, NTFS_DIRTY_ERROR);
249 struct mft_inode **mi)
257 if (mi)
258 *mi = &ni->mi;
260 return mi_enum_attr(&ni->mi, attr);
272 if (mi)
273 *mi = mi2;
288 struct mft_inode *mi;
293 *pmi = &ni->mi;
294 return mi_find_attr(&ni->mi, NULL, type, name, name_len, NULL);
314 if (ni_load_mi(ni, le, &mi))
318 *pmi = mi;
320 attr = mi_find_attr(mi, NULL, type, name, name_len, &le->id);
350 if (rno == ni->mi.rno)
364 bool ni_add_subrecord(struct ntfs_inode *ni, CLST rno, struct mft_inode **mi)
372 if (mi_format_new(m, ni->mi.sbi, rno, 0, ni->mi.rno == MFT_REC_MFT)) {
377 mi_get_ref(&ni->mi, &m->mrec->parent_ref);
380 *mi = m;
394 struct mft_inode *mi;
399 attr = mi_find_attr(&ni->mi, NULL, type, name, name_len, id);
403 mi_remove_attr(ni, &ni->mi, attr);
432 err = ni_load_mi(ni, le, &mi);
438 attr = mi_find_attr(mi, NULL, type, name, name_len, id);
442 mi_remove_attr(ni, mi, attr);
456 ni_ins_new_attr(struct ntfs_inode *ni, struct mft_inode *mi,
466 mi_get_ref(mi, &ref);
486 attr = mi_insert_attr(mi, type, name, name_len, asize, name_off);
525 struct ntfs_sb_info *sbi = ni->mi.sbi;
526 struct mft_inode *mi, *mi_p = NULL;
537 while ((attr = ni_enum_attr_ex(ni, attr, &le, &mi))) {
565 if (le32_to_cpu(mi->mrec->used) + 8 >= rs)
581 err = run_unpack(&run, sbi, ni->mi.rno, svcn, evcn, svcn,
588 mi_p = mi;
598 * Run contains data from two records: mi_p and mi
610 mi_remove_attr(NULL, mi, attr);
616 mi->dirty = true;
620 err = mi_pack_runs(mi, attr, &run,
626 mi_p = mi;
658 struct ntfs_sb_info *sbi = ni->mi.sbi;
661 struct mft_inode *mi;
674 attr_list = mi_find_attr(&ni->mi, NULL, ATTR_LIST, NULL, 0, NULL);
681 free = sbi->record_size - le32_to_cpu(ni->mi.mrec->used) + asize;
682 mi_get_ref(&ni->mi, &ref);
692 mi = ni_find_mi(ni, ino_get(&le->ref));
693 if (!mi)
696 attr = mi_find_attr(mi, NULL, le->type, le_name(le),
709 mrec = kmemdup(ni->mi.mrec, sbi->record_size, GFP_NOFS);
714 mi_remove_attr(NULL, &ni->mi, attr_list);
726 mi = ni_find_mi(ni, ino_get(&le->ref));
727 if (!mi) {
732 attr = mi_find_attr(mi, NULL, le->type, le_name(le),
741 attr_ins = mi_insert_attr(&ni->mi, le->type, le_name(le),
765 mi = ni_find_mi(ni, ino_get(&le->ref));
766 if (!mi)
769 attr = mi_find_attr(mi, NULL, le->type, le_name(le),
775 mi_remove_attr(NULL, mi, attr);
789 swap(mrec, ni->mi.mrec);
799 struct ntfs_sb_info *sbi = ni->mi.sbi;
808 struct mft_inode *mi;
812 is_mft = ni->mi.rno == MFT_REC_MFT;
813 rec = ni->mi.mrec;
824 mi_get_ref(&ni->mi, &le->ref);
832 for (; (attr = mi_enum_attr(&ni->mi, attr)); le = Add2Ptr(le, sz)) {
876 err = ntfs_look_free_mft(sbi, &rno, is_mft, ni, &mi);
887 attr = mi_insert_attr(mi, b->type, Add2Ptr(b, name_off),
892 mi_get_ref(mi, &le_b[nb]->ref);
900 if (!mi_remove_attr(NULL, &ni->mi, b))
910 attr = mi_insert_attr(&ni->mi, ATTR_LIST, NULL, 0,
946 struct mft_inode *mi;
952 struct ntfs_sb_info *sbi = ni->mi.sbi;
954 is_mft = ni->mi.rno == MFT_REC_MFT;
967 ni->mi.rno == MFT_REC_LOG) {
991 mi = rb_entry(node, struct mft_inode, node);
994 (mi_enum_attr(mi, NULL) ||
995 vbo <= ((u64)mi->rno << sbi->record_bits))) {
1000 mi_find_attr(mi, NULL, ATTR_DATA, NULL, 0, NULL)) {
1009 mi_find_attr(mi, NULL, type, name, name_len, NULL)) {
1018 if (le32_to_cpu(mi->mrec->used) + asize > sbi->record_size)
1022 attr = ni_ins_new_attr(ni, mi, le, type, name, name_len, asize,
1032 *ins_mi = mi;
1038 err = ntfs_look_free_mft(sbi, &rno, is_mft_data, ni, &mi);
1047 attr = ni_ins_new_attr(ni, mi, le, type, name, name_len, asize,
1062 *ins_mi = mi;
1067 ni_remove_mi(ni, mi);
1068 mi_put(mi);
1096 struct ntfs_sb_info *sbi = ni->mi.sbi;
1106 is_mft = ni->mi.rno == MFT_REC_MFT;
1107 rec = ni->mi.mrec;
1122 attr = ni_ins_new_attr(ni, &ni->mi, NULL, type, name, name_len,
1133 *ins_mi = &ni->mi;
1158 while ((attr = mi_enum_attr(&ni->mi, attr))) {
1176 attr = mi_enum_attr(&ni->mi, attr);
1210 mi_remove_attr(NULL, &ni->mi, attr);
1219 attr = ni_ins_new_attr(ni, &ni->mi, NULL, type, name, name_len, asize,
1234 *ins_mi = &ni->mi;
1249 struct mft_inode *mi, *mi_min, *mi_new;
1250 struct ntfs_sb_info *sbi = ni->mi.sbi;
1258 mi = rb_entry(node, struct mft_inode, node);
1260 attr = mi_enum_attr(mi, NULL);
1263 mft_min = mi->rno;
1264 mi_min = mi;
1281 attr = mi_find_attr(&ni->mi, NULL, ATTR_DATA, NULL, 0, NULL);
1318 le32_sub_cpu(&ni->mi.mrec->used, done);
1381 bool is_mft = ni->mi.rno == MFT_REC_MFT;
1384 mi_get_ref(&ni->mi, &ref);
1398 attr = rec_find_attr_le(&ni->mi, le);
1418 mi_remove_attr(NULL, &ni->mi, attr);
1443 struct mft_inode **mi, struct ATTR_LIST_ENTRY **le)
1454 struct ntfs_sb_info *sbi = ni->mi.sbi;
1477 &attr, mi, le);
1498 svcn ? 0 : cpu_to_le64((u64)len << ni->mi.sbi->cluster_bits);
1517 struct ATTRIB **new_attr, struct mft_inode **mi,
1526 0, &attr, mi, le);
1539 le16_add_cpu(&ni->mi.mrec->hard_links, 1);
1540 ni->mi.dirty = true;
1554 struct mft_inode *mi, struct ATTR_LIST_ENTRY *le)
1556 mi_remove_attr(ni, mi, attr);
1576 struct ntfs_sb_info *sbi = ni->mi.sbi;
1584 mi_get_ref(&ni->mi, &ref);
1608 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn, evcn, svcn,
1613 run_deallocate(ni->mi.sbi, &ni->attr_list.run, true);
1620 struct mft_inode *mi = rb_entry(node, struct mft_inode, node);
1622 clear_rec_inuse(mi->mrec);
1623 mi->dirty = true;
1624 mi_write(mi, 0);
1626 ntfs_mark_rec_free(sbi, mi->rno, false);
1627 ni_remove_mi(ni, mi);
1628 mi_put(mi);
1633 clear_rec_inuse(ni->mi.mrec);
1634 ni->mi.dirty = true;
1635 err = mi_write(&ni->mi, 0);
1637 ntfs_mark_rec_free(sbi, ni->mi.rno, false);
1649 struct mft_inode **mi,
1660 attr = ni_find_attr(ni, attr, le, ATTR_NAME, NULL, 0, NULL, mi);
1689 struct mft_inode **mi,
1702 attr = ni_find_attr(ni, attr, le, ATTR_NAME, NULL, 0, NULL, mi);
1722 struct mft_inode *mi;
1726 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi);
1767 if (!mi_resize_attr(mi, attr, new_asize - le32_to_cpu(attr->size)))
1789 mi->dirty = true;
1817 !ntfs_read_run_nb(ni->mi.sbi, &run, 0, buffer,
1909 struct ntfs_sb_info *sbi = ni->mi.sbi;
2091 struct ntfs_sb_info *sbi = ni->mi.sbi;
2174 struct ntfs_sb_info *sbi = ni->mi.sbi;
2187 struct mft_inode *mi;
2286 mi_get_ref(&ni->mi, &ref);
2314 run_unpack_ex(RUN_DEALLOCATE, sbi, ni->mi.rno, svcn, evcn, svcn,
2336 attr = ni_find_attr(ni, NULL, NULL, ATTR_DATA, NULL, 0, NULL, &mi);
2344 struct MFT_REC *rec = mi->mrec;
2356 mi->dirty = true;
2452 struct ntfs_sb_info *sbi = ni->mi.sbi;
2737 struct ntfs_sb_info *sbi = ni->mi.sbi;
2747 struct mft_inode *mi;
2753 attr = ni_find_attr(ni, NULL, &le, ATTR_DATA, NULL, 0, NULL, &mi);
2771 err = attr_make_nonresident(ni, attr, le, mi,
2904 struct ntfs_sb_info *sbi = ni->mi.sbi;
2908 struct mft_inode *mi;
2915 mi_get_ref(&dir_ni->mi, &de_name->home);
2918 &de_name->home, &mi, &le);
2934 ni_remove_attr_le(ni, attr_from_name(fname), mi, le);
2939 fname = ni_fname_type(ni, name_type, &mi, &le);
2955 ni_remove_attr_le(ni, attr_from_name(fname), mi, le);
2970 struct ntfs_sb_info *sbi = ni->mi.sbi;
2982 mi_get_ref(&ni->mi, &de2->ref);
3000 mi_get_ref(&ni->mi, &de->ref);
3016 struct ntfs_sb_info *sbi = ni->mi.sbi;
3019 struct mft_inode *mi;
3029 if (ni->mi.sbi->options->hide_dot_files) {
3037 mi_get_ref(&ni->mi, &de->ref);
3038 mi_get_ref(&dir_ni->mi, &de_name->home);
3048 &mi, &le);
3057 ni_remove_attr_le(ni, attr, mi, le);
3117 if (ni->mi.dirty || ni->attr_list.dirty ||
3138 struct mft_inode *mi;
3140 struct ntfs_sb_info *sbi = ni->mi.sbi;
3144 if (ni->mi.mrec->flags & RECORD_FLAG_DIR) {
3153 &mi);
3177 mi->dirty = true;
3203 &mi))) {
3236 mi->dirty = true;
3271 if (!ni->mi.mrec)
3274 if (is_rec_inuse(ni->mi.mrec) &&
3313 ni->mi.dirty = true;
3344 struct mft_inode *mi = rb_entry(node, struct mft_inode, node);
3349 if (!mi->dirty)
3352 is_empty = !mi_enum_attr(mi, NULL);
3355 clear_rec_inuse(mi->mrec);
3357 err2 = mi_write(mi, sync);
3362 ntfs_mark_rec_free(sbi, mi->rno, false);
3364 mi_put(mi);
3368 if (ni->mi.dirty) {
3369 err2 = mi_write(&ni->mi, sync);