The following patch improves the handling of corrupted extents, including
checking of the extent/index headers, index depth, overlap, duplicate
blocks, etc. It is based atop the current 1.39-WIP e2fsprogs Mercurial tree.
It does NOT include the 64-bit fixups from Bull as we haven't rebased onto
an e2fsprogs patch series that supports the requirements for this.
There is still one case that is known not to be handled - if there
are duplicate blocks in an extent stored in an external index block,
but the index block is full and it needs a split of the index block
(which may need more splits up the tree). This is very complex to fix
within the framework of the current block iterator, and we rationalized
to ourselves that this won't happen very often. The more common case
(duplicate block with in-inode index) is handled correctly.
Following this patch will be a series of test cases for extents. Two of
them are known to fail (f_extents_eh_depth and f_extents_shrd_blks) but
are useful nonetheless for Ted's work in rewriting the extents code.
Signed-off-by: Andreas Dilger <[email protected]>
Signed-off-by: Girish Shilamkar <[email protected]>
Principal Software Engineer
Cluster File Systems, Inc.