ext3 filesystem corrupt. How to recover? HELP

  • I got home from work and while using the computer I tried to copy one file from one HDD to another, but cp returned an error telling me the system is read only.

    I try to ls the mountpoint contents as root and I get a "total 0".
    But by typing "ls /mntpoint/some_dir" I can navigate through the subdirectories and access files.

    Advised by some people I force a fsck and reboot the system.

    This is the log file:

    Log of fsck -C -R -A -a -f
    Wed Jun 17 20:16:33 2009

    fsck 1.41.0 (10-Jul-2008)
    /dev/sdc1: Superblock has an invalid ext3 journal (inode 8).
    *** ext3 journal has been deleted - filesystem is now ext2 only ***

    /dev/sdc1: Resize inode not valid.

    (i.e., without -a or -p options)
    /dev/sdb1: 66960/78464 files (24.4% non-contiguous), 59582858/80325000 blocks
    /dev/sdb2: 11/40800 files (0.0% non-contiguous), 50657/41766991 blocks
    fsck died with exit status 4

    Wed Jun 17 20:25:26 2009

    When I try to run e2fs, I get:

    #e2fsck /dev/sdc1
    e2fsck 1.41.3 (12-Oct-2008)
    Resize inode not valid. Recreate<y>?

    Isn't this destructive?
    I would like to be able to recover all I can before I start "fixing" the disk.
    I also tried using different superblocks but I always get this message.

    I tried mounting read-only but it didn't work.

    # mount -o ro /dev/sdc1 /hdd_a_917GB/

    # ls /hdd_a_917GB/
    [3786.593656] EXT2-fs error (device sdc1): ext2_readdir: bad page in #2
    ls: reading directory /hdd_a_917GB/: Input/output error

    (I tried accessing a known directory on my disk)
    # ls /hdd_a_917GB/some_dir/
    [3854.013562] EXT2-fs error (device sdc1): ext2_check_page: bad entry in directory #2 : rec_len is smaller than minimal - offset=0, inode=0, rec_len=0, name_len=0
    ls: cannot access /hdd_a_917GB/some_dir/: No such file or directory

    If I try to use debugfs to get any information...

    # debugfs -c -s 214990848 -b 4096 /dev/sdc1
    debugfs 1.41.3 (12-Oct-2008)
    /dev/sdc1: catastrophic mode - not reading inode or group bitmaps
    debugfs: ls /
    /: EXT2 directory corrupted
    It doesn't matter if I pass a superblock and block size, or not.

    How can I recover my files before doing destructive actions with fsck?
    And what are the implications of each possible answer to the question:
    Resize inode not valid. Recreate<y>?

    BTW, I also ran smartctl -t short /dev/sdc and I got no errors.

    Thank you for any help.