Message ID | 500DB259.8070901@redhat.com |
---|---|
State | Superseded, archived |
Headers | show |
On Mon, Jul 23, 2012 at 03:21:45PM -0500, Eric Sandeen wrote: > > If make the first test above a little later: > > ... > > > it clears it up for me but TBH I'm not totally clear on what all is going > on here. Your patch effectively reverts commit 47c1b8e1666: e2fsck: Skip journal checks if the fs is mounted and doesn't need recovery The reason why this patch was added was that it slightly speeded up the HDD boots. I've looked at this closely, and it's really not that big of a speed up. It only saves a single seek and read (to read the journal superblock). I've measured what it would be on a 1TB laptop drive, and the difference is 60ms (70ms versus 10ms). So I'm going to revert that commit, which should fix the problem that we're seeing. But it also turns out that the kernel is not quite doing the right thing. It should have never left the journal superblock with a non-zero s_error indicator after it transfered the error indicator to the superblock. The problem was that we weren't actually flushing the cleared errno field out to the disk for the journal superblock. - Ted -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/e2fsck/unix.c b/e2fsck/unix.c index 94260bd..73aa028 100644 --- a/e2fsck/unix.c +++ b/e2fsck/unix.c @@ -1424,10 +1424,6 @@ failure: fprintf(ctx->logf, "Filesystem UUID: %s\n", e2p_uuid2str(sb->s_uuid)); - if ((ctx->mount_flags & EXT2_MF_MOUNTED) && - !(sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_RECOVER)) - goto skip_journal; - /* * Make sure the ext3 superblock fields are consistent. */ @@ -1439,6 +1435,10 @@ failure: fatal_error(ctx, 0); } + if ((ctx->mount_flags & EXT2_MF_MOUNTED) && + !(sb->s_feature_incompat & EXT3_FEATURE_INCOMPAT_RECOVER)) + goto skip_journal; + /* * Check to see if we need to do ext3-style recovery. If so, * do it, and then restart the fsck.