diff --git a/libntfs-3g/volume.c b/libntfs-3g/volume.c index 68b8ee1d..d36c7d55 100644 --- a/libntfs-3g/volume.c +++ b/libntfs-3g/volume.c @@ -959,7 +959,8 @@ ntfs_volume *ntfs_device_mount(struct ntfs_device *dev, ntfs_mount_flags flags) vol->mftmirr_size = l; } ntfs_log_debug("Comparing $MFTMirr to $MFT...\n"); - for (i = 0; i < vol->mftmirr_size; ++i) { + /* Windows 10 does not update the full $MFTMirr any more */ + for (i = 0; (i < vol->mftmirr_size) && (i < FILE_first_user); ++i) { MFT_RECORD *mrec, *mrec2; const char *ESTR[12] = { "$MFT", "$MFTMirr", "$LogFile", "$Volume", "$AttrDef", "root directory", "$Bitmap", diff --git a/ntfsprogs/ntfsfix.c b/ntfsprogs/ntfsfix.c index 2a624023..6801e70e 100644 --- a/ntfsprogs/ntfsfix.c +++ b/ntfsprogs/ntfsfix.c @@ -506,6 +506,11 @@ static int fix_mftmirr(ntfs_volume *vol) ntfs_log_info("Comparing $MFTMirr to $MFT... "); done = FALSE; + /* + * Since 2017, Windows 10 does not mirror to full $MFTMirr when + * using big clusters, and some records may be found different. + * Nevertheless chkdsk.exe mirrors it fully, so we do similarly. + */ for (i = 0; i < vol->mftmirr_size; ++i) { MFT_RECORD *mrec, *mrec2; const char *ESTR[12] = { "$MFT", "$MFTMirr", "$LogFile",