Lines Matching refs:selfloc
814 static BOOL short_mft_selfloc_condition(struct MFT_SELF_LOCATED *selfloc)
824 vol = selfloc->vol;
825 mft0 = selfloc->mft0;
853 selfloc->mft_ref0
872 static BOOL attrlist_selfloc_condition(struct MFT_SELF_LOCATED *selfloc)
886 vol = selfloc->vol;
887 a = find_unnamed_attr(selfloc->mft0,AT_ATTRIBUTE_LIST);
889 selfloc->attrlist_resident = !a->non_resident;
890 selfloc->attrlist_lcn = 0;
892 attrlist = selfloc->attrlist;
900 selfloc->attrlist_lcn = rl->lcn;
928 selfloc->mft_ref1
930 selfloc->attrlist_to_ref1 = al;
950 static BOOL self_mapped_selfloc_condition(struct MFT_SELF_LOCATED *selfloc)
962 vol = selfloc->vol;
963 mft1 = selfloc->mft1;
964 inum = MREF(selfloc->mft_ref1);
980 == selfloc->mft_ref0)
981 && ((u16)MSEQNO(selfloc->mft_ref1)
1011 static BOOL spare_record_selfloc_condition(struct MFT_SELF_LOCATED *selfloc)
1020 vol = selfloc->vol;
1021 mft2 = selfloc->mft2;
1047 static int fix_selfloc_conditions(struct MFT_SELF_LOCATED *selfloc)
1069 vol = selfloc->vol;
1070 mft1 = selfloc->mft1;
1071 mft2 = selfloc->mft2;
1090 mft2->mft_record_number = cpu_to_le32(MREF(selfloc->mft_ref1));
1096 al = selfloc->attrlist_to_ref1;
1106 inum = MREF(selfloc->mft_ref1);
1111 if (selfloc->attrlist_resident) {
1116 (NTFS_RECORD*)selfloc->mft0,
1119 selfloc->mft0) != vol->mft_record_size)
1121 selfloc->mft0) != vol->mft_record_size))
1125 offs = selfloc->attrlist_lcn << vol->cluster_size_bits;
1127 selfloc->attrlist) != vol->cluster_size)
1132 && (ntfs_mst_pre_write_fixup((NTFS_RECORD*)selfloc->mft1,
1134 || ntfs_mst_pre_write_fixup((NTFS_RECORD*)selfloc->mft2,
1183 struct MFT_SELF_LOCATED selfloc;
1188 selfloc.vol = vol;
1189 selfloc.mft0 = (MFT_RECORD*)malloc(vol->mft_record_size);
1190 selfloc.mft1 = (MFT_RECORD*)malloc(vol->mft_record_size);
1191 selfloc.mft2 = (MFT_RECORD*)malloc(vol->mft_record_size);
1192 selfloc.attrlist = (ATTR_LIST_ENTRY*)malloc(vol->cluster_size);
1193 if (selfloc.mft0 && selfloc.mft1 && selfloc.mft2
1194 && selfloc.attrlist) {
1195 if (short_mft_selfloc_condition(&selfloc)
1196 && attrlist_selfloc_condition(&selfloc)
1197 && self_mapped_selfloc_condition(&selfloc)
1198 && spare_record_selfloc_condition(&selfloc)) {
1201 res = fix_selfloc_conditions(&selfloc);
1207 free(selfloc.mft0);
1208 free(selfloc.mft1);
1209 free(selfloc.mft2);
1210 free(selfloc.attrlist);