mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02:00
ntfs: restore $MFT mirror contents check
check_mft_mirror() still computes the number of bytes to validate in each
mirrored MFT record, but the actual comparison against $MFTMirr was dropped
when the superblock code was updated.
As a result, mount misses a stale or inconsistent $MFTMirr as long as both
records pass the structural baad-record checks. Restore the comparison and
log an error when the primary $MFT record differs from its mirror copy.
Returning false lets the existing mount error handling mark the volume as
having NTFS errors and, with on_errors=remount-ro, continue read-only. The
default on_errors=continue mount policy still allows the mount to proceed.
Fixes: 6251f0b0de ("ntfs: update super block operations")
Signed-off-by: DaeMyung Kang <charsyam@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
This commit is contained in:
parent
8c16c1c001
commit
2beaa98b46
|
|
@ -993,6 +993,13 @@ static bool check_mft_mirror(struct ntfs_volume *vol)
|
|||
ntfs_is_baad_recordp((__le32 *)kmirr))
|
||||
bytes = vol->mft_record_size;
|
||||
}
|
||||
/* Compare the two records. */
|
||||
if (memcmp(kmft, kmirr, bytes)) {
|
||||
ntfs_error(sb,
|
||||
"$MFT and $MFTMirr record %i do not match. Run chkdsk.",
|
||||
i);
|
||||
goto mm_unmap_out;
|
||||
}
|
||||
kmft += vol->mft_record_size;
|
||||
kmirr += vol->mft_record_size;
|
||||
} while (++i < vol->mftmirr_size);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user