Paul d'Aoust
2008-Jan-11 04:32 UTC
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: 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 wording: Missing '..' in directory inode 5406734. Fix? yes 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 e2fsck: aborted 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, Paul d'Aoust