jbd: correctly unescape journal data blocks
PATCH 18/35 jbd: correctly unescape journal data blocks
From: "Duane Griffin" <[email protected]>
Fix a long-standing typo (predating git) that will cause data corruption if a journal data block needs unescaping. At the moment the wrong buffer head's data is being unescaped.
To test this case mount a filesystem with data=journal, start creating and deleting a bunch of files containing only JFS_MAGIC_NUMBER (0xc03b3998), then pull the plug on the device. Without this patch the files will contain zeros instead of the correct data after recovery.
Signed-off-by Duane Griffin <[email protected]>
Acked-by Jan Kara <[email protected]>
Cc <[email protected]>
Cc <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
---
fs/jbd/recovery.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
fs/jbd/recovery.c renamed from fs/jbd/recovery.c~jbd-correctly-unescape-journal-data-blocks +1 -1
@@ -478,7 +478,7 @@ static int do_one_pass(journal_t *journamemcpy (nbh->b_data, obh->b_data, journal->j_blocksize);if (flags &JFS_FLAG_ESCAPE ) { - *((__be32 *)bh->b_data) = + *((__be32 *)nbh->b_data) =cpu_to_be32 (JFS_MAGIC_NUMBER ); }
_