commit 9ecfdfeaf6210f17b93f4130845a9349ab893196
Author: Duane Griffin <[EMAIL PROTECTED]>
Date:   Thu Mar 20 02:45:05 2008 +0000

    jbd2: correctly unescape journal data blocks
    
    commit: d00256766a0b4f1441931a7f569a13edf6c68200
    
    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 JBD2_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]>
    Signed-off-by: Andrew Morton <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
    Signed-off-by: Chris Wright <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>

diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index d0ce627..fa0d4e9 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -488,7 +488,7 @@ static int do_one_pass(journal_t *journal,
                                        memcpy(nbh->b_data, obh->b_data,
                                                        journal->j_blocksize);
                                        if (flags & JBD2_FLAG_ESCAPE) {
-                                               *((__be32 *)bh->b_data) =
+                                               *((__be32 *)nbh->b_data) =
                                                cpu_to_be32(JBD2_MAGIC_NUMBER);
                                        }
 
_______________________________________________
unionfs-cvs mailing list: http://unionfs.filesystems.org/
[email protected]
http://www.fsl.cs.sunysb.edu/mailman/listinfo/unionfs-cvs

Reply via email to