I was experiencing exactly the same problem for some time. The inode in
question (mostly the same number) turned out to be attached to
/etc/ld.so.cache (dumpe2fs). I finally got rid of it "accidentally" by
using kernel 2.1.42 with inode-problems. That provoked a check for double
blocks. Then, so it seems, the real reason was found: It
seems, that there were always two blocks attached to the same inode-number
alternatively, so each correction by fsck only resulted in attaching the
other block to the same inode-number. Since this time, everything worked
ok again. Since there doesn't seem to exist a way to force checking for
double blocks my suggestion is: try 2.1.42! By the way, are You using a
SuSE-distribution like me? I would be interested to hear that, for this
bug came for me with the change from slackware to SuSE.
Best wishes
Peter B