root inode corrupted; tries to clear and reallocate, but can't
Hi there. I think I fscked up my filesystem (betcha nobody's used that
one before!). I made the mistake of fscking an online ext3 filesystem
(guess I wasn't paying attention or I was sick of it being so paranoid
or something) and quickly discovered why I'm not supposed to do that.
The root inode somehow got corrupted, and a whole bunch of inodes
started claiming the same blocks. Here's the result of my attempt to
mount: wrong fs type, bad option, bad superblock on /dev/hda1, missing
codepage or helper program, or other error. In some cases useful info
is found in syslog -- try dmesg | tail or so
So 'dmesg' reveals this:
EXT3-fs: corrupt root inode, run e2fsck
Then, when I run e2fsck, the first thing it says is
Root inode is not a directory. Clear?
I say 'yes', and then it proceeds to correct and then delete the
parent entry for every inode in the root directory (owing to the fact
that their parent, inode 2, has just been cleared). Here's the exact
Missing '..' in directory inode 5406734.
Entry '..' in ... (5406734) has deleted/unused inode 2. Clear? yes
Then, in pass 3, when it tries to repair the root inode, it says
Root inode not allocated. Allocate? yes
Error creating root directory (extfs_new_block): Could not allocate
block in ext2 filesystem
Now, I know I have more than just a couple free blocks, partly because
debug2fs says so, and partly because I've tried deleting inodes and
freeing up blocks. Some I deleted when e2fsck asked me if I wanted to
clone or delete the multiply-claimed blocks, and some I deleted by
using 'iclr' in debug2fs. I've tried unallocating the root inode and
its block manually, and it still says it can't allocate any block in
the filesystem when it tries to rebuild the root inode.
If anybody has some insight or suggestions, I would love to hear them!
Thanks in advance,
Ext3-users mailing list