On 8/5/15 3:13 PM, Eric Sandeen wrote: > At some point along this sequence of changes: > > f6e63f9 ext4: fold ext4_nojournal_sops into ext4_sops > bb04457 ext4: support freezing ext2 (nojournal) file systems > 9ca9238 ext4: Use separate super_operations structure for no_journal filesystems > > ext4 started setting needs_recovery on filesystems without journals > when they are unfrozen. This makes no sense, and in fact confuses > blkid to the point where it doesn't recognize the filesystem at all. > > (freeze ext2; unfreeze ext2; run blkid; see no output; run dumpe2fs, > see needs_recovery set on fs w/ no journal). > > To fix this, don't manipulate the INCOMPAT_RECOVER feature on > filesystems without journals. Ted, if this passes review you might cc: stable on the commit as well. Thanks, -Eric > Reported-by: Stu Mark <smark@xxxxxxxxx> > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> > --- > > Note, is there a reason that in ext4_freeze, if journal_flush > fails, we skip the ext4_commit_super call? I didn't change that > here, but it seems odd. > > diff --git a/fs/ext4/super.c b/fs/ext4/super.c > index 58987b5..e7b345d 100644 > --- a/fs/ext4/super.c > +++ b/fs/ext4/super.c > @@ -4833,10 +4833,11 @@ static int ext4_freeze(struct super_block *sb) > error = jbd2_journal_flush(journal); > if (error < 0) > goto out; > + > + /* Journal blocked and flushed, clear needs_recovery flag. */ > + EXT4_CLEAR_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); > } > > - /* Journal blocked and flushed, clear needs_recovery flag. */ > - EXT4_CLEAR_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); > error = ext4_commit_super(sb, 1); > out: > if (journal) > @@ -4854,8 +4855,11 @@ static int ext4_unfreeze(struct super_block *sb) > if (sb->s_flags & MS_RDONLY) > return 0; > > - /* Reset the needs_recovery flag before the fs is unlocked. */ > - EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); > + if (EXT4_SB(sb)->s_journal) { > + /* Reset the needs_recovery flag before the fs is unlocked. */ > + EXT4_SET_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_RECOVER); > + } > + > ext4_commit_super(sb, 1); > return 0; > } > > -- > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html