I had a ReiserFS system, installed by SuSE 6.4, now running on Linux 2.4.4. It's a version 3.5 filesystem.
I noticed that the system began to experience frequent crashes and I/O errors, so I shut it down and tried to analyze it from another computer. I followed the instructions at http://namesys.com/bad-block-handling.html, but I had problems recovering the data. Because there was already a filesystem on the disk, I wanted to use that filesystem instead of making a new one as recommended. I tried to mount the filesystem on a kernel 2.4.18 system; it failed with the following kernel messages: reiserfs: checking transaction log (device 03:43) ... Warning, log replay starting on readonly filesystem hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error } hdb: dma_intr: error=0x40 { UncorrectableError }, LBAsect=352371, sector=47128 end_request: I/O error, dev 03:43 (hdb), sector 47128 journal-1212: REPLAY FAILURE fsck required! buffer write failed Replay Failure, unable to mount reiserfs_read_super: unable to initialize journal space hdb: dma_intr: status=0x51 { DriveReady SeekComplete Error } hdb: dma_intr: error=0x40 { UncorrectableError }, LBAsect=352371, sector=47136 end_request: I/O error, dev 03:43 (hdb), sector 47136 I found that an older series of reiserfscks had the option to replay the journal in userspace, so I downloaded an older version to get this output: <-----------REISERFSCK, 2000-----------> ReiserFS version 3.5.26 Will read-only check consistency of the partition Will replay just like mounting would Will stop after journal replay Do you want to run this program?[N/Yes] (note need to type Yes):Yes Replaying journal..ok Checking S+tree../ 1 (of 17)/ 36 (of 119)/160 (of 163) left keys don't match [12669 775196 1545048960(0) 500], [12669 775196 1593014528(0) 500] Run reiserfsck with --rebuild-tree I would simply rebuild the tree, but the filesystem does not know about the bad blocks. I cannot mount the filesystem and assign the blocks as used because mounting requires the journal to be replayed, which fails because of the bad blocks. There are not many bad blocks, as can be seen in the badblocks output below. These blocks are, however, interfering with the journal replay. So, is there a mount option to skip the journal replay, and would that be a good idea? Is there some debugreiserfs output I can provide that would be of use? What is the appropriate course of action to take here to step around this Catch 22? Thanks for taking the time to read this message. -- Asheesh Laroia. Appendix: badblocks output from /sbin/badblocks -b 4096 /dev/hdb3 > hdb3_badblocks <BEGIN> 5880 5881 5882 5883 5884 5885 5886 5887 5888 5889 5890 5891 5892 <END>
