On Wed, Apr 01, 2015 at 07:34:40PM -0700, Darrick J. Wong wrote: > 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. > > v2: Account for extent tree block slack that we create when splitting > a block, so that we don't repeatedly annoy the user to rebuild a tree > that we can't optimize further. > > v3: For any directory being rebuilt during pass 3A, defer any extent > tree rebuilding until after the rehash. It's quite possible that the > act of compressing an aged directory will cause it to shrink far > enough to enable us to knock a level off the dir's extent tree. > > v4: Add a fixes_only option (and a E2FSCK_FIXES_ONLY environment > variable) that disables optimization activities unless they are > required to make the filesystem consistent. > > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> Thanks, applied. - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html