xfs: refactor log recovery check
PATCH 1/1 xfs: refactor log recovery check
From: Darrick J. Wong <[email protected]>
Add a predicate to decide if the log is actively in recovery and use that instead of open-coding a pagf_init check in the attr leaf verifier.
--- fs/xfs/libxfs/xfs_attr_leaf.c | 3 +-- fs/xfs/xfs_log.c | 9 +++++++++ fs/xfs/xfs_log.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-)
fs/xfs/libxfs/xfs_attr_leaf.c +1 -2
@@ -242,7 +242,6 @@ xfs_attr3_leaf_verify(struct xfs_attr3_icleaf_hdr ichdr;struct xfs_mount *mp = bp->b_target->bt_mount;struct xfs_attr_leafblock *leaf = bp->b_addr; -struct xfs_perag *pag = bp->b_pag;struct xfs_attr_leaf_entry *entries;uint16_t end;int i;
@@ -270,7 +269,7 @@ xfs_attr3_leaf_verify(* because we may have transitioned an empty shortform attr to a leaf * if the attr didn't fit in shortform. */ -if (pag && pag->pagf_init && ichdr.count ==0 ) +if (!xfs_log_in_recovery (mp) && ichdr.count ==0 )return __this_address;/*
fs/xfs/xfs_log.c +9 -0
@@ -4104,3 +4104,12 @@ xfs_log_check_lsn(return valid; } + +bool +xfs_log_in_recovery ( +struct xfs_mount *mp) +{ +struct xlog *log = mp->m_log; + +return log->l_flags &XLOG_ACTIVE_RECOVERY ; +}
fs/xfs/xfs_log.h +1 -0
@@ -153,5 +153,6 @@ bool xfs_log_item_in_current_chkpt(struct xfs_log_item *lip);void xfs_log_work_queue (struct xfs_mount *mp);void xfs_log_quiesce (struct xfs_mount *mp);bool xfs_log_check_lsn (struct xfs_mount *,xfs_lsn_t ); +bool xfs_log_in_recovery (struct xfs_mount *);#endif /* __XFS_LOG_H__ */
Quoted 7 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Add a predicate to decide if the log is actively in recovery and use that instead of open-coding a
pagf_initcheck in the attr leaf verifier.Signed-off-by Darrick J. Wong <[email protected]>---
Quoted 58 lines
fs/xfs/libxfs/xfs_attr_leaf.c | 3 +-- fs/xfs/xfs_log.c | 9 +++++++++ fs/xfs/xfs_log.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-)fs/xfs/libxfs/xfs_attr_leaf.c +1
-2@@ -242,7 +242,6 @@ xfs_attr3_leaf_verify(struct xfs_attr3_icleaf_hdr ichdr;struct xfs_mount *mp = bp->b_target->bt_mount;struct xfs_attr_leafblock *leaf = bp->b_addr; -struct xfs_perag *pag = bp->b_pag;struct xfs_attr_leaf_entry *entries;uint16_t end;int i;@@ -270,7 +269,7 @@ xfs_attr3_leaf_verify(* because we may have transitioned an empty shortform attr to a leaf * if the attr didn't fit in shortform. */ -if (pag && pag->pagf_init && ichdr.count ==0 ) +if (!xfs_log_in_recovery (mp) && ichdr.count ==0 )return __this_address;/* fs/xfs/xfs_log.c +9
-0@@ -4104,3 +4104,12 @@ xfs_log_check_lsn(return valid; } + +bool +xfs_log_in_recovery ( +struct xfs_mount *mp) +{ +struct xlog *log = mp->m_log; + +return log->l_flags &XLOG_ACTIVE_RECOVERY ; +}fs/xfs/xfs_log.h +1
-1@@ -153,5 +153,6 @@ bool xfs_log_item_in_current_chkpt(struct xfs_log_item *lip);void xfs_log_work_queue (struct xfs_mount *mp);void xfs_log_quiesce (struct xfs_mount *mp);bool xfs_log_check_lsn (struct xfs_mount *,xfs_lsn_t ); +bool xfs_log_in_recovery (struct xfs_mount *);#endif /* __XFS_LOG_H__ */ --To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 6 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Add a predicate to decide if the log is actively in recovery and use that instead of open-coding a
pagf_initcheck in the attr leaf verifier.Signed-off-by Darrick J. Wong <[email protected]>
Sounds good
Quoted 55 lines
--- fs/xfs/libxfs/xfs_attr_leaf.c | 3 +-- fs/xfs/xfs_log.c | 9 +++++++++ fs/xfs/xfs_log.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-)fs/xfs/libxfs/xfs_attr_leaf.c +1
-2@@ -242,7 +242,6 @@ xfs_attr3_leaf_verify(struct xfs_attr3_icleaf_hdr ichdr;struct xfs_mount *mp = bp->b_target->bt_mount;struct xfs_attr_leafblock *leaf = bp->b_addr; -struct xfs_perag *pag = bp->b_pag;struct xfs_attr_leaf_entry *entries;uint16_t end;int i;@@ -270,7 +269,7 @@ xfs_attr3_leaf_verify(* because we may have transitioned an empty shortform attr to a leaf * if the attr didn't fit in shortform. */ -if (pag && pag->pagf_init && ichdr.count ==0 ) +if (!xfs_log_in_recovery (mp) && ichdr.count ==0 )return __this_address;/* fs/xfs/xfs_log.c +9
-0@@ -4104,3 +4104,12 @@ xfs_log_check_lsn(return valid; } + +bool +xfs_log_in_recovery ( +struct xfs_mount *mp) +{ +struct xlog *log = mp->m_log; + +return log->l_flags &XLOG_ACTIVE_RECOVERY ; +}fs/xfs/xfs_log.h +1
-0@@ -153,5 +153,6 @@ bool xfs_log_item_in_current_chkpt(struct xfs_log_item *lip);void xfs_log_work_queue (struct xfs_mount *mp);void xfs_log_quiesce (struct xfs_mount *mp);bool xfs_log_check_lsn (struct xfs_mount *,xfs_lsn_t ); +bool xfs_log_in_recovery (struct xfs_mount *);#endif /* __XFS_LOG_H__ */
Signature · 1 line
Carlos
Quoted 6 lines · Darrick J. Wong
From: Darrick J. Wong <[email protected]>
Add a predicate to decide if the log is actively in recovery and use that instead of open-coding a
pagf_initcheck in the attr leaf verifier.Signed-off-by Darrick J. Wong <[email protected]>
I suppose this could be used in a few ASSERT()s and in xfs_log_force_umount() now too, for consistency?
-Eric
Quoted 60 lines
--- fs/xfs/libxfs/xfs_attr_leaf.c | 3 +-- fs/xfs/xfs_log.c | 9 +++++++++ fs/xfs/xfs_log.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-)fs/xfs/libxfs/xfs_attr_leaf.c +1
-2@@ -242,7 +242,6 @@ xfs_attr3_leaf_verify(struct xfs_attr3_icleaf_hdr ichdr;struct xfs_mount *mp = bp->b_target->bt_mount;struct xfs_attr_leafblock *leaf = bp->b_addr; -struct xfs_perag *pag = bp->b_pag;struct xfs_attr_leaf_entry *entries;uint16_t end;int i;@@ -270,7 +269,7 @@ xfs_attr3_leaf_verify(* because we may have transitioned an empty shortform attr to a leaf * if the attr didn't fit in shortform. */ -if (pag && pag->pagf_init && ichdr.count ==0 ) +if (!xfs_log_in_recovery (mp) && ichdr.count ==0 )return __this_address;/* fs/xfs/xfs_log.c +9
-0@@ -4104,3 +4104,12 @@ xfs_log_check_lsn(return valid; } + +bool +xfs_log_in_recovery ( +struct xfs_mount *mp) +{ +struct xlog *log = mp->m_log; + +return log->l_flags &XLOG_ACTIVE_RECOVERY ; +}fs/xfs/xfs_log.h +1
-1@@ -153,5 +153,6 @@ bool xfs_log_item_in_current_chkpt(struct xfs_log_item *lip);void xfs_log_work_queue (struct xfs_mount *mp);void xfs_log_quiesce (struct xfs_mount *mp);bool xfs_log_check_lsn (struct xfs_mount *,xfs_lsn_t ); +bool xfs_log_in_recovery (struct xfs_mount *);#endif /* __XFS_LOG_H__ */ --To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html