mirror of https://github.com/vitalif/e2fsprogs
35c8faaffc
If we encounter an inode with IND/DIND/TIND blocks or internal extent tree blocks that point into critical FS metadata such as the superblock, the group descriptors, the bitmaps, or the inode table, it's quite possible that the validation code for those blocks is not going to like what it finds, and it'll ask to try to fix the block. Unfortunately, this happens before duplicate block processing (pass 1b), which means that we can end up doing stupid things like writing extent blocks into the inode table, which multiplies e2fsck' destructive effect and can render a filesystem unfixable. To solve this, create a bitmap of all the critical FS metadata. If before pass1b runs (basically check_blocks) we find a metadata block that points into these critical regions, continue processing that block, but avoid making any modifications, because we could be misinterpreting inodes as block maps. Pass 1b will find the multiply-owned blocks and fix that situation, which means that we can then restart e2fsck from the beginning and actually fix whatever problems we find. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu> |
||
---|---|---|
.. | ||
expect.1 | ||
expect.2 | ||
image.gz | ||
name | ||
script |