xfs: return start block of first bad log record during recovery
authorBrian Foster <bfoster@redhat.com>
Mon, 4 Jan 2016 04:55:10 +0000 (15:55 +1100)
committerDave Chinner <david@fromorbit.com>
Mon, 4 Jan 2016 04:55:10 +0000 (15:55 +1100)
commitd7f37692e38798797d415153bc186afb2bbac645
treebf5ec274e20b3aacee19bb29871741c2d8fd69c1
parentb94fb2d1780d7cd9d55b21e2bb879a54ed3074cc
xfs: return start block of first bad log record during recovery

Each log recovery pass walks from the tail block to the head block and
processes records appropriately based on the associated log pass type.
There are various failure conditions that can occur through this
sequence, such as I/O errors, CRC errors, etc. Log torn write detection
will perform CRC verification near the head of the log to detect torn
writes and trim torn records from the log appropriately.

As it is, xlog_do_recovery_pass() only returns an error code in the
event of CRC failure, which isn't enough information to trim the head of
the log. Update xlog_do_recovery_pass() to optionally return the start
block of the associated record when an error occurs. This patch contains
no functional changes.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_log_recover.c