Fix incorrect ext4 freezing behavior on non-journaled fs (rhbz 1250717)
This commit is contained in:
parent
afd3c16e9d
commit
16b395303f
66
ext4-dont-manipulate-recovery-flag-when-freezing.patch
Normal file
66
ext4-dont-manipulate-recovery-flag-when-freezing.patch
Normal file
@ -0,0 +1,66 @@
|
||||
From: Eric Sandeen <sandeen@xxxxxxxxxx>
|
||||
Date: Wed, 05 Aug 2015 15:13:58 -0700
|
||||
Subject: [PATCH] ext4: don't manipulate recovery flag when freezing no-journal fs
|
||||
|
||||
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.
|
||||
|
||||
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
|
||||
|
@ -593,6 +593,9 @@ Patch509: ideapad-laptop-Add-Lenovo-Yoga-3-14-to-no_hw_rfkill-.patch
|
||||
#rhbz 1253789
|
||||
Patch510: iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch
|
||||
|
||||
#rhbz 1250717
|
||||
Patch512: ext4-dont-manipulate-recovery-flag-when-freezing.patch
|
||||
|
||||
Patch904: kdbus.patch
|
||||
|
||||
# END OF PATCH DEFINITIONS
|
||||
@ -2030,6 +2033,9 @@ fi
|
||||
#
|
||||
#
|
||||
%changelog
|
||||
* Thu Aug 20 2015 Josh Boyer <jwboyer@fedoraproject.org>
|
||||
- Fix incorrect ext4 freezing behavior on non-journaled fs (rhbz 1250717)
|
||||
|
||||
* Wed Aug 19 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.2.0-0.rc7.git2.1
|
||||
- Linux v4.2-rc7-24-g1b647a166f07
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user