Commit 009507b0 authored by Dave Chinner's avatar Dave Chinner Committed by Ben Myers

xfs: fix reading of wrapped log data

Commit 44396476 ("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: default avatarTorsten Kaiser <just.for.lkml@googlemail.com>
Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarMark Tinguely <tinguely@sgi.com>
Signed-off-by: default avatarBen Myers <bpm@sgi.com>
parent 137fff09
...@@ -3542,7 +3542,7 @@ xlog_do_recovery_pass( ...@@ -3542,7 +3542,7 @@ xlog_do_recovery_pass(
* - order is important. * - order is important.
*/ */
error = xlog_bread_offset(log, 0, error = xlog_bread_offset(log, 0,
bblks - split_bblks, hbp, bblks - split_bblks, dbp,
offset + BBTOB(split_bblks)); offset + BBTOB(split_bblks));
if (error) if (error)
goto bread_err2; goto bread_err2;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment