xfs: refactor log recovery item dispatch for pass1 commit functions
Move the pass1 commit code into the per-item source code files and use the dispatch function to call them. Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com> Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
@@ -56,8 +56,35 @@ xlog_recover_buf_ra_pass2(
|
||||
xlog_buf_readahead(log, buf_f->blf_blkno, buf_f->blf_len, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
* Build up the table of buf cancel records so that we don't replay cancelled
|
||||
* data in the second pass.
|
||||
*/
|
||||
static int
|
||||
xlog_recover_buf_commit_pass1(
|
||||
struct xlog *log,
|
||||
struct xlog_recover_item *item)
|
||||
{
|
||||
struct xfs_buf_log_format *bf = item->ri_buf[0].i_addr;
|
||||
|
||||
if (!xfs_buf_log_check_iovec(&item->ri_buf[0])) {
|
||||
xfs_err(log->l_mp, "bad buffer log item size (%d)",
|
||||
item->ri_buf[0].i_len);
|
||||
return -EFSCORRUPTED;
|
||||
}
|
||||
|
||||
if (!(bf->blf_flags & XFS_BLF_CANCEL))
|
||||
trace_xfs_log_recover_buf_not_cancel(log, bf);
|
||||
else if (xlog_add_buffer_cancelled(log, bf->blf_blkno, bf->blf_len))
|
||||
trace_xfs_log_recover_buf_cancel_add(log, bf);
|
||||
else
|
||||
trace_xfs_log_recover_buf_cancel_ref_inc(log, bf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
const struct xlog_recover_item_ops xlog_buf_item_ops = {
|
||||
.item_type = XFS_LI_BUF,
|
||||
.reorder = xlog_recover_buf_reorder,
|
||||
.ra_pass2 = xlog_recover_buf_ra_pass2,
|
||||
.commit_pass1 = xlog_recover_buf_commit_pass1,
|
||||
};
|
||||
|
Reference in New Issue
Block a user