xfs: add a sick_mask to struct xfs_btree_ops
Clean up xfs_btree_mark_sick by adding a sick_mask to the btree-ops for all AG-root btrees. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Darrick J. Wong <djwong@kernel.org> Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
parent
77953b97bb
commit
7f47734ad6
@ -16,6 +16,7 @@
|
||||
#include "xfs_alloc.h"
|
||||
#include "xfs_extent_busy.h"
|
||||
#include "xfs_error.h"
|
||||
#include "xfs_health.h"
|
||||
#include "xfs_trace.h"
|
||||
#include "xfs_trans.h"
|
||||
#include "xfs_ag.h"
|
||||
@ -477,6 +478,7 @@ const struct xfs_btree_ops xfs_bnobt_ops = {
|
||||
|
||||
.lru_refs = XFS_ALLOC_BTREE_REF,
|
||||
.statoff = XFS_STATS_CALC_INDEX(xs_abtb_2),
|
||||
.sick_mask = XFS_SICK_AG_BNOBT,
|
||||
|
||||
.dup_cursor = xfs_allocbt_dup_cursor,
|
||||
.set_root = xfs_allocbt_set_root,
|
||||
@ -508,6 +510,7 @@ const struct xfs_btree_ops xfs_cntbt_ops = {
|
||||
|
||||
.lru_refs = XFS_ALLOC_BTREE_REF,
|
||||
.statoff = XFS_STATS_CALC_INDEX(xs_abtc_2),
|
||||
.sick_mask = XFS_SICK_AG_CNTBT,
|
||||
|
||||
.dup_cursor = xfs_allocbt_dup_cursor,
|
||||
.set_root = xfs_allocbt_set_root,
|
||||
|
@ -142,6 +142,9 @@ struct xfs_btree_ops {
|
||||
/* offset of btree stats array */
|
||||
unsigned int statoff;
|
||||
|
||||
/* sick mask for health reporting (only for XFS_BTREE_TYPE_AG) */
|
||||
unsigned int sick_mask;
|
||||
|
||||
/* cursor operations */
|
||||
struct xfs_btree_cur *(*dup_cursor)(struct xfs_btree_cur *);
|
||||
void (*update_cursor)(struct xfs_btree_cur *src,
|
||||
|
@ -17,6 +17,7 @@
|
||||
#include "xfs_ialloc_btree.h"
|
||||
#include "xfs_alloc.h"
|
||||
#include "xfs_error.h"
|
||||
#include "xfs_health.h"
|
||||
#include "xfs_trace.h"
|
||||
#include "xfs_trans.h"
|
||||
#include "xfs_rmap.h"
|
||||
@ -408,6 +409,7 @@ const struct xfs_btree_ops xfs_inobt_ops = {
|
||||
|
||||
.lru_refs = XFS_INO_BTREE_REF,
|
||||
.statoff = XFS_STATS_CALC_INDEX(xs_ibt_2),
|
||||
.sick_mask = XFS_SICK_AG_INOBT,
|
||||
|
||||
.dup_cursor = xfs_inobt_dup_cursor,
|
||||
.set_root = xfs_inobt_set_root,
|
||||
@ -437,6 +439,7 @@ const struct xfs_btree_ops xfs_finobt_ops = {
|
||||
|
||||
.lru_refs = XFS_INO_BTREE_REF,
|
||||
.statoff = XFS_STATS_CALC_INDEX(xs_fibt_2),
|
||||
.sick_mask = XFS_SICK_AG_FINOBT,
|
||||
|
||||
.dup_cursor = xfs_inobt_dup_cursor,
|
||||
.set_root = xfs_finobt_set_root,
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "xfs_refcount.h"
|
||||
#include "xfs_alloc.h"
|
||||
#include "xfs_error.h"
|
||||
#include "xfs_health.h"
|
||||
#include "xfs_trace.h"
|
||||
#include "xfs_trans.h"
|
||||
#include "xfs_bit.h"
|
||||
@ -327,6 +328,7 @@ const struct xfs_btree_ops xfs_refcountbt_ops = {
|
||||
|
||||
.lru_refs = XFS_REFC_BTREE_REF,
|
||||
.statoff = XFS_STATS_CALC_INDEX(xs_refcbt_2),
|
||||
.sick_mask = XFS_SICK_AG_REFCNTBT,
|
||||
|
||||
.dup_cursor = xfs_refcountbt_dup_cursor,
|
||||
.set_root = xfs_refcountbt_set_root,
|
||||
|
@ -16,6 +16,7 @@
|
||||
#include "xfs_btree_staging.h"
|
||||
#include "xfs_rmap.h"
|
||||
#include "xfs_rmap_btree.h"
|
||||
#include "xfs_health.h"
|
||||
#include "xfs_trace.h"
|
||||
#include "xfs_error.h"
|
||||
#include "xfs_extent_busy.h"
|
||||
@ -483,6 +484,7 @@ const struct xfs_btree_ops xfs_rmapbt_ops = {
|
||||
|
||||
.lru_refs = XFS_RMAP_BTREE_REF,
|
||||
.statoff = XFS_STATS_CALC_INDEX(xs_rmap_2),
|
||||
.sick_mask = XFS_SICK_AG_RMAPBT,
|
||||
|
||||
.dup_cursor = xfs_rmapbt_dup_cursor,
|
||||
.set_root = xfs_rmapbt_set_root,
|
||||
|
@ -526,36 +526,22 @@ void
|
||||
xfs_btree_mark_sick(
|
||||
struct xfs_btree_cur *cur)
|
||||
{
|
||||
unsigned int mask;
|
||||
|
||||
switch (cur->bc_btnum) {
|
||||
case XFS_BTNUM_BMAP:
|
||||
xfs_bmap_mark_sick(cur->bc_ino.ip, cur->bc_ino.whichfork);
|
||||
switch (cur->bc_ops->type) {
|
||||
case XFS_BTREE_TYPE_AG:
|
||||
ASSERT(cur->bc_ops->sick_mask);
|
||||
xfs_ag_mark_sick(cur->bc_ag.pag, cur->bc_ops->sick_mask);
|
||||
return;
|
||||
case XFS_BTNUM_BNO:
|
||||
mask = XFS_SICK_AG_BNOBT;
|
||||
break;
|
||||
case XFS_BTNUM_CNT:
|
||||
mask = XFS_SICK_AG_CNTBT;
|
||||
break;
|
||||
case XFS_BTNUM_INO:
|
||||
mask = XFS_SICK_AG_INOBT;
|
||||
break;
|
||||
case XFS_BTNUM_FINO:
|
||||
mask = XFS_SICK_AG_FINOBT;
|
||||
break;
|
||||
case XFS_BTNUM_RMAP:
|
||||
mask = XFS_SICK_AG_RMAPBT;
|
||||
break;
|
||||
case XFS_BTNUM_REFC:
|
||||
mask = XFS_SICK_AG_REFCNTBT;
|
||||
break;
|
||||
case XFS_BTREE_TYPE_INODE:
|
||||
if (cur->bc_btnum == XFS_BTNUM_BMAP) {
|
||||
xfs_bmap_mark_sick(cur->bc_ino.ip,
|
||||
cur->bc_ino.whichfork);
|
||||
return;
|
||||
}
|
||||
fallthrough;
|
||||
default:
|
||||
ASSERT(0);
|
||||
return;
|
||||
}
|
||||
|
||||
xfs_ag_mark_sick(cur->bc_ag.pag, mask);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user