[Ocfs2-tools-devel] How to deal with file metadata corruption?
Sunil Mushran
sunil.mushran at oracle.com
Thu May 12 17:33:00 PDT 2011
On 05/12/2011 03:47 PM, Goldwyn Rodrigues wrote:
> Hi,
>
> I have a case of a corrupted file whose metadata is corrupted. The file
> is large and the corrupted part of extent block looks like this:
>
> SubAlloc Bit: 576 SubAlloc Slot: 0
> Blknum: 513089 Next Leaf: 0
> Tree Depth: 1 Count: 252 Next Free Rec: 159
> ## Offset Clusters Block#
>
> <snipped>
>
> 142 36821655 252 512689
> 143 36821907 674 512692
> 144 36822581 364 512694
> 145 36822945 4294966509 512697
> 146 36822158 4294967295 512699
> 147 36822157 1617 512702
> 148 36823774 4294966096 512724
> 149 36822574 4294967148 512770
> 150 36822426 0 145678608
> 151 36822426 149 145678613
> 152 36822575 4294966876 512841
> 153 36822155 0 512843
> 154 36822155 289 512847
> 155 36822444 290 512849
> 156 36822734 4294967185 512851
> 157 36822623 73266 512853
> 158 36895889 852847 512856
>
> Clearly, number of clusters can't be 0 and even 4294967185 seems to be
> a pretty high number for a file which is so fragmented.
>
> Is ocfs2-tools dealing with such an corruption? If not, what would be the
> best path to deal with it? The parent record contains the number of
> clusters the leaves contain and it can be validated that way.
> However, do you discard the extra blocks?
>
> The problem is: Trying to delete this file invokes a BUG_ON() which
> checks the sanity extent records.
It's not just the cluster count. Even the offset and the block
numbers are whacked. offsets are decreasing.
Forget fsck, one will need more info even to fix it by hand.
If the file can be fully deleted, then best to free the inode bit
in the correct inode_alloc, init the dentry in the directory.
Maybe add a dtime in the inode.
Should not be too hard via libocfs2.
Mark?
More information about the Ocfs2-tools-devel
mailing list