mirror of
https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
synced 2025-01-11 11:03:27 +08:00
e228d700d5
Teach e2fsck to (re)construct extent trees. This enables us to do either of the following: compress a highly sparse extent tree into fewer ETB blocks; or convert a ext3-style block mapped file to an extent file. The reconstruction is performed during pass 1E or 3A, as detailed below. For files that are already extent based, this algorithm will automatically run (pending user approval) if pass1 determines either (1) that a whole level of extent tree will fit into a higher level of the tree; (2) that the size of any level can be reduced by at least one ETB block; or (3) the extent tree is unnecessarily deep. It will not run at all if errors are found and the user declines to fix the errors. The option "-E bmap2extent" can be used to force e2fsck to convert all block map files to extent trees, and to rebuild all extent files' extent trees. After conversion, files larger than 12 blocks should be defragmented to eliminate empty holes where a block lives. The extent tree constructor is pretty dumb -- it creates a list of leaf extents (adjacent extents are collapsed), marks all indirect blocks / ETB blocks free, installs a new extent tree root in the inode, then loads the leaf extents into the tree. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Signed-off-by: Theodore Ts'o <tytso@mit.edu>
67 lines
1.7 KiB
Groff
67 lines
1.7 KiB
Groff
Pass 1: Checking inodes, blocks, and sizes
|
|
Inode 12 is in extent format, but superblock is missing EXTENTS feature
|
|
Fix? yes
|
|
|
|
Inode 12 has an invalid extent
|
|
(logical block 0, invalid physical block 21994527527949, len 17)
|
|
Clear? yes
|
|
|
|
Inode 12 extent tree (at level 1) could be shorter. Fix? yes
|
|
|
|
Inode 12, i_blocks is 34, should be 0. Fix? yes
|
|
|
|
Inode 13 missing EXTENT_FL, but is in extents format
|
|
Fix? yes
|
|
|
|
Inode 16 has a duplicate extent mapping
|
|
(logical block 3, invalid physical block 4613, len 2)
|
|
Clear? yes
|
|
|
|
Inode 16, i_blocks is 16, should be 12. Fix? yes
|
|
|
|
Inode 17 has an invalid extent
|
|
(logical block 0, invalid physical block 22011707397135, len 15)
|
|
Clear? yes
|
|
|
|
Inode 17 extent tree (at level 1) could be shorter. Fix? yes
|
|
|
|
Inode 17, i_blocks is 32, should be 0. Fix? yes
|
|
|
|
Error while reading over extent tree in inode 18: Corrupt extent header
|
|
Clear inode? yes
|
|
|
|
Inode 18, i_blocks is 2, should be 0. Fix? yes
|
|
|
|
Special (device/socket/fifo) file (inode 19) has extents
|
|
or inline-data flag set. Clear? yes
|
|
|
|
Pass 1E: Optimizing extent trees
|
|
Pass 2: Checking directory structure
|
|
Entry 'fbad-flag' in / (2) has deleted/unused inode 18. Clear? yes
|
|
|
|
Pass 3: Checking directory connectivity
|
|
Pass 4: Checking reference counts
|
|
Pass 5: Checking group summary information
|
|
Block bitmap differences: -1081 +4611 -(4613--4614) -(5121--5142)
|
|
Fix? yes
|
|
|
|
Free blocks count wrong for group #0 (7081, counted=7100).
|
|
Fix? yes
|
|
|
|
Free blocks count wrong (7081, counted=7100).
|
|
Fix? yes
|
|
|
|
Inode bitmap differences: -18
|
|
Fix? yes
|
|
|
|
Free inodes count wrong for group #0 (237, counted=238).
|
|
Fix? yes
|
|
|
|
Free inodes count wrong (237, counted=238).
|
|
Fix? yes
|
|
|
|
|
|
test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
|
|
test_filesys: 18/256 files (5.6% non-contiguous), 1092/8192 blocks
|
|
Exit status is 1
|