|
@@ -4836,10 +4836,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)
|
|
@@ -4857,8 +4858,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;
|
|
|
}
|