aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs
diff options
context:
space:
mode:
authorDave Chinner <dchinner@redhat.com>2012-11-01 20:38:44 -0400
committerBen Myers <bpm@sgi.com>2012-11-07 16:27:17 -0500
commit009507b052fa391618eccf9e8c9f484407fd9018 (patch)
tree427a03552f9fe47a478aed228253c306ecc6cbee /fs/xfs
parent137fff09b7924507871f8e6294dfe57b7a880332 (diff)
xfs: fix reading of wrapped log data
Commit 4439647 ("xfs: reset buffer pointers before freeing them") in 3.0-rc1 introduced a regression when recovering log buffers that wrapped around the end of log. The second part of the log buffer at the start of the physical log was being read into the header buffer rather than the data buffer, and hence recovery was seeing garbage in the data buffer when it got to the region of the log buffer that was incorrectly read. Cc: <stable@vger.kernel.org> # 3.0.x, 3.2.x, 3.4.x 3.6.x Reported-by: Torsten Kaiser <just.for.lkml@googlemail.com> Signed-off-by: Dave Chinner <dchinner@redhat.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Mark Tinguely <tinguely@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
Diffstat (limited to 'fs/xfs')
-rw-r--r--fs/xfs/xfs_log_recover.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index 651c98859b04..3e06333d4bd1 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -3542,7 +3542,7 @@ xlog_do_recovery_pass(
3542 * - order is important. 3542 * - order is important.
3543 */ 3543 */
3544 error = xlog_bread_offset(log, 0, 3544 error = xlog_bread_offset(log, 0,
3545 bblks - split_bblks, hbp, 3545 bblks - split_bblks, dbp,
3546 offset + BBTOB(split_bblks)); 3546 offset + BBTOB(split_bblks));
3547 if (error) 3547 if (error)
3548 goto bread_err2; 3548 goto bread_err2;