diff mbox

jbd2: fix regression where we fail to initialize checksum seed when loading

Message ID 20141202002223.GT10043@birch.djwong.org
State Accepted, archived
Headers show

Commit Message

Darrick Wong Dec. 2, 2014, 12:22 a.m. UTC
When we're enabling journal features, we cannot use the predicate
jbd2_journal_has_csum_v2or3() because we haven't yet set the sb
feature flag fields!  Moreover, we just finished loading the shash
driver, so the test is unnecessary; calculate the seed always.

Without this patch, we fail to initialize the checksum seed the first
time we turn on journal_checksum, which means that all journal blocks
written during that first mount are corrupt.  Transactions written
after the second mount will be fine, since the feature flag will be
set in the journal superblock.  xfstests generic/{034,321,322} are the
regression tests.

(This is important for 3.18.)

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.coM>
Reported-by: Eric Whitney <enwlinux@gmail.com>
---
 fs/jbd2/journal.c |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

--
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

Comments

Theodore Ts'o Dec. 2, 2014, 3:05 a.m. UTC | #1
On Mon, Dec 01, 2014 at 04:22:23PM -0800, Darrick J. Wong wrote:
> When we're enabling journal features, we cannot use the predicate
> jbd2_journal_has_csum_v2or3() because we haven't yet set the sb
> feature flag fields!  Moreover, we just finished loading the shash
> driver, so the test is unnecessary; calculate the seed always.
> 
> Without this patch, we fail to initialize the checksum seed the first
> time we turn on journal_checksum, which means that all journal blocks
> written during that first mount are corrupt.  Transactions written
> after the second mount will be fine, since the feature flag will be
> set in the journal superblock.  xfstests generic/{034,321,322} are the
> regression tests.
> 
> (This is important for 3.18.)
> 
> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.coM>
> Reported-by: Eric Whitney <enwlinux@gmail.com>

Applied, thanks.  I've confirmed this has fixed the xfstests
regressions, and I'll be sending this to Linus shortly.

	     	      	 	      - 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 mbox

Patch

diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index e4dc747..1df94fa 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1853,13 +1853,12 @@  int jbd2_journal_set_features (journal_t *journal, unsigned long compat,
 				journal->j_chksum_driver = NULL;
 				return 0;
 			}
-		}
 
-		/* Precompute checksum seed for all metadata */
-		if (jbd2_journal_has_csum_v2or3(journal))
+			/* Precompute checksum seed for all metadata */
 			journal->j_csum_seed = jbd2_chksum(journal, ~0,
 							   sb->s_uuid,
 							   sizeof(sb->s_uuid));
+		}
 	}
 
 	/* If enabling v1 checksums, downgrade superblock */