aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_log_recover.c
diff options
context:
space:
mode:
authorBrian Foster <bfoster@redhat.com>2016-09-25 18:32:07 -0400
committerDave Chinner <david@fromorbit.com>2016-09-25 18:32:07 -0400
commit22db9af2488655f7f841e9588d25384a5e694fa6 (patch)
tree8ff1d329df680550598ee75c061c67d505237c68 /fs/xfs/xfs_log_recover.c
parent12818d24db8ab01836bf423a7c1be639c3135572 (diff)
xfs: pass current lsn to log recovery buffer validation
The current LSN must be available to the buffer validation function to provide the ability to update the metadata LSN of the buffer. Pass the current_lsn value down to xlog_recover_validate_buf_type() in preparation. Signed-off-by: Brian Foster <bfoster@redhat.com> Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs/xfs/xfs_log_recover.c')
-rw-r--r--fs/xfs/xfs_log_recover.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/fs/xfs/xfs_log_recover.c b/fs/xfs/xfs_log_recover.c
index e24fb7b6f3fb..bf325f25d4ec 100644
--- a/fs/xfs/xfs_log_recover.c
+++ b/fs/xfs/xfs_log_recover.c
@@ -2360,7 +2360,8 @@ static void
2360xlog_recover_validate_buf_type( 2360xlog_recover_validate_buf_type(
2361 struct xfs_mount *mp, 2361 struct xfs_mount *mp,
2362 struct xfs_buf *bp, 2362 struct xfs_buf *bp,
2363 xfs_buf_log_format_t *buf_f) 2363 xfs_buf_log_format_t *buf_f,
2364 xfs_lsn_t current_lsn)
2364{ 2365{
2365 struct xfs_da_blkinfo *info = bp->b_addr; 2366 struct xfs_da_blkinfo *info = bp->b_addr;
2366 __uint32_t magic32; 2367 __uint32_t magic32;
@@ -2569,7 +2570,8 @@ xlog_recover_do_reg_buffer(
2569 struct xfs_mount *mp, 2570 struct xfs_mount *mp,
2570 xlog_recover_item_t *item, 2571 xlog_recover_item_t *item,
2571 struct xfs_buf *bp, 2572 struct xfs_buf *bp,
2572 xfs_buf_log_format_t *buf_f) 2573 xfs_buf_log_format_t *buf_f,
2574 xfs_lsn_t current_lsn)
2573{ 2575{
2574 int i; 2576 int i;
2575 int bit; 2577 int bit;
@@ -2642,7 +2644,7 @@ xlog_recover_do_reg_buffer(
2642 /* Shouldn't be any more regions */ 2644 /* Shouldn't be any more regions */
2643 ASSERT(i == item->ri_total); 2645 ASSERT(i == item->ri_total);
2644 2646
2645 xlog_recover_validate_buf_type(mp, bp, buf_f); 2647 xlog_recover_validate_buf_type(mp, bp, buf_f, current_lsn);
2646} 2648}
2647 2649
2648/* 2650/*
@@ -2685,7 +2687,7 @@ xlog_recover_do_dquot_buffer(
2685 if (log->l_quotaoffs_flag & type) 2687 if (log->l_quotaoffs_flag & type)
2686 return false; 2688 return false;
2687 2689
2688 xlog_recover_do_reg_buffer(mp, item, bp, buf_f); 2690 xlog_recover_do_reg_buffer(mp, item, bp, buf_f, NULLCOMMITLSN);
2689 return true; 2691 return true;
2690} 2692}
2691 2693
@@ -2773,7 +2775,7 @@ xlog_recover_buffer_pass2(
2773 */ 2775 */
2774 lsn = xlog_recover_get_buf_lsn(mp, bp); 2776 lsn = xlog_recover_get_buf_lsn(mp, bp);
2775 if (lsn && lsn != -1 && XFS_LSN_CMP(lsn, current_lsn) >= 0) { 2777 if (lsn && lsn != -1 && XFS_LSN_CMP(lsn, current_lsn) >= 0) {
2776 xlog_recover_validate_buf_type(mp, bp, buf_f); 2778 xlog_recover_validate_buf_type(mp, bp, buf_f, NULLCOMMITLSN);
2777 goto out_release; 2779 goto out_release;
2778 } 2780 }
2779 2781
@@ -2789,7 +2791,7 @@ xlog_recover_buffer_pass2(
2789 if (!dirty) 2791 if (!dirty)
2790 goto out_release; 2792 goto out_release;
2791 } else { 2793 } else {
2792 xlog_recover_do_reg_buffer(mp, item, bp, buf_f); 2794 xlog_recover_do_reg_buffer(mp, item, bp, buf_f, current_lsn);
2793 } 2795 }
2794 2796
2795 /* 2797 /*