Hi, On Thu, Nov 15, 2001 at 04:21:49PM -0700, Andreas Dilger wrote: > I don't disagree that something corrupted it, but it is hard to tell from > here what it could be. Looking at ext3_read_super(), it is pretty much > a read-only path, except journal recovery. If, for some reason, you had > an old, unrecovered ext3 journal in the fs, it is possible that recovering > from it would corrupt your fs by writing old data into the fs. Except that can only happen once we have found a journal to recover, and the error that ext3 spat out indicated that it couldn't find a journal at all and was giving up. > Looking at the ext3_read_super() path, we call ext3_load_journal(), > which calls journal_wipe() and journal_load(), which both call > journal_load()->load_superblock()->journal_get_superblock(), which > gives us the two "JBD: no valid journal superblock found" messages, > and return errors before doing anything else. Then we get the message > "EXT3-fs: error loading journal." and return without mounting the fs. Indeed. > Hmm, there is a possibility that journal_destroy() calling > journal_update_superblock() scribbling data into the first block of > the old "journal". Stephen, Andrew, we need to exit from the > journal_get_superblock() with j_sb_buffer = NULL, and then check for > this in journal_destroy() so we don't call journal_update_superblock(). > How does the below patch look? Looks OK. I've done a slightly better version which catches a couple of extra cases but it's basically the same solution. I've also added a tiny patch to prevent a failed journal_wipe() from being followed by a journal_load() attempt, so we don't get the same error twice. Patch below. Cheers, Stephen