fsck.ext3 keeps fails with "Error reading block" short read at same block
I have an external USB drive attached to a CentOS 5.5 server. The server recently threw the whole drive into read-only mode and I was attempting to repair it by un-mounting the disk and running:
sudo fsck.ext3 -p /dev/sdb1
but it would fail with the error:
Error reading block 10518530 (Attempt to read block from filesystem resulted in short read) while doing inode scan.
/dev/sdb1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
I then ran
sudo fsck.ext3 -y /dev/sdb1
to let it automatically repair any inodes it found and let it run overnight. (almost every block after the first one had issues). It was still running in the morning when I killed it. When I re-ran fsck.ext with the -p option, it again failed at the same block so the repair apparently did not work.
When I remounted the disk, the only files left were in the lost+found directory with #21873491 names. I copied those files off, but it is still missing about half the data that used to be on the disk.
Unfortunately I did not make a full copy of the drive before running the fsck because I did not have any disks big enough. I suspect that the inode repair process wiped out the 50% of the data I that I can't find. Is there any way to recover that data now? Or did the inode repair process screw it up beyond repair?
Any help would be greatly appreciated.