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
|
#rhbz 1253789
|
||||||
Patch510: iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch
|
Patch510: iSCSI-let-session-recovery_tmo-sysfs-writes-persist.patch
|
||||||
|
|
||||||
|
#rhbz 1250717
|
||||||
|
Patch512: ext4-dont-manipulate-recovery-flag-when-freezing.patch
|
||||||
|
|
||||||
Patch904: kdbus.patch
|
Patch904: kdbus.patch
|
||||||
|
|
||||||
# END OF PATCH DEFINITIONS
|
# END OF PATCH DEFINITIONS
|
||||||
@ -2030,6 +2033,9 @@ fi
|
|||||||
#
|
#
|
||||||
#
|
#
|
||||||
%changelog
|
%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
|
* Wed Aug 19 2015 Josh Boyer <jwboyer@fedoraproject.org> - 4.2.0-0.rc7.git2.1
|
||||||
- Linux v4.2-rc7-24-g1b647a166f07
|
- Linux v4.2-rc7-24-g1b647a166f07
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user