Commit 7f47734a authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Darrick J. Wong

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
parent 77953b97
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "xfs_alloc.h" #include "xfs_alloc.h"
#include "xfs_extent_busy.h" #include "xfs_extent_busy.h"
#include "xfs_error.h" #include "xfs_error.h"
#include "xfs_health.h"
#include "xfs_trace.h" #include "xfs_trace.h"
#include "xfs_trans.h" #include "xfs_trans.h"
#include "xfs_ag.h" #include "xfs_ag.h"
...@@ -477,6 +478,7 @@ const struct xfs_btree_ops xfs_bnobt_ops = { ...@@ -477,6 +478,7 @@ const struct xfs_btree_ops xfs_bnobt_ops = {
.lru_refs = XFS_ALLOC_BTREE_REF, .lru_refs = XFS_ALLOC_BTREE_REF,
.statoff = XFS_STATS_CALC_INDEX(xs_abtb_2), .statoff = XFS_STATS_CALC_INDEX(xs_abtb_2),
.sick_mask = XFS_SICK_AG_BNOBT,
.dup_cursor = xfs_allocbt_dup_cursor, .dup_cursor = xfs_allocbt_dup_cursor,
.set_root = xfs_allocbt_set_root, .set_root = xfs_allocbt_set_root,
...@@ -508,6 +510,7 @@ const struct xfs_btree_ops xfs_cntbt_ops = { ...@@ -508,6 +510,7 @@ const struct xfs_btree_ops xfs_cntbt_ops = {
.lru_refs = XFS_ALLOC_BTREE_REF, .lru_refs = XFS_ALLOC_BTREE_REF,
.statoff = XFS_STATS_CALC_INDEX(xs_abtc_2), .statoff = XFS_STATS_CALC_INDEX(xs_abtc_2),
.sick_mask = XFS_SICK_AG_CNTBT,
.dup_cursor = xfs_allocbt_dup_cursor, .dup_cursor = xfs_allocbt_dup_cursor,
.set_root = xfs_allocbt_set_root, .set_root = xfs_allocbt_set_root,
......
...@@ -142,6 +142,9 @@ struct xfs_btree_ops { ...@@ -142,6 +142,9 @@ struct xfs_btree_ops {
/* offset of btree stats array */ /* offset of btree stats array */
unsigned int statoff; unsigned int statoff;
/* sick mask for health reporting (only for XFS_BTREE_TYPE_AG) */
unsigned int sick_mask;
/* cursor operations */ /* cursor operations */
struct xfs_btree_cur *(*dup_cursor)(struct xfs_btree_cur *); struct xfs_btree_cur *(*dup_cursor)(struct xfs_btree_cur *);
void (*update_cursor)(struct xfs_btree_cur *src, void (*update_cursor)(struct xfs_btree_cur *src,
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "xfs_ialloc_btree.h" #include "xfs_ialloc_btree.h"
#include "xfs_alloc.h" #include "xfs_alloc.h"
#include "xfs_error.h" #include "xfs_error.h"
#include "xfs_health.h"
#include "xfs_trace.h" #include "xfs_trace.h"
#include "xfs_trans.h" #include "xfs_trans.h"
#include "xfs_rmap.h" #include "xfs_rmap.h"
...@@ -408,6 +409,7 @@ const struct xfs_btree_ops xfs_inobt_ops = { ...@@ -408,6 +409,7 @@ const struct xfs_btree_ops xfs_inobt_ops = {
.lru_refs = XFS_INO_BTREE_REF, .lru_refs = XFS_INO_BTREE_REF,
.statoff = XFS_STATS_CALC_INDEX(xs_ibt_2), .statoff = XFS_STATS_CALC_INDEX(xs_ibt_2),
.sick_mask = XFS_SICK_AG_INOBT,
.dup_cursor = xfs_inobt_dup_cursor, .dup_cursor = xfs_inobt_dup_cursor,
.set_root = xfs_inobt_set_root, .set_root = xfs_inobt_set_root,
...@@ -437,6 +439,7 @@ const struct xfs_btree_ops xfs_finobt_ops = { ...@@ -437,6 +439,7 @@ const struct xfs_btree_ops xfs_finobt_ops = {
.lru_refs = XFS_INO_BTREE_REF, .lru_refs = XFS_INO_BTREE_REF,
.statoff = XFS_STATS_CALC_INDEX(xs_fibt_2), .statoff = XFS_STATS_CALC_INDEX(xs_fibt_2),
.sick_mask = XFS_SICK_AG_FINOBT,
.dup_cursor = xfs_inobt_dup_cursor, .dup_cursor = xfs_inobt_dup_cursor,
.set_root = xfs_finobt_set_root, .set_root = xfs_finobt_set_root,
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "xfs_refcount.h" #include "xfs_refcount.h"
#include "xfs_alloc.h" #include "xfs_alloc.h"
#include "xfs_error.h" #include "xfs_error.h"
#include "xfs_health.h"
#include "xfs_trace.h" #include "xfs_trace.h"
#include "xfs_trans.h" #include "xfs_trans.h"
#include "xfs_bit.h" #include "xfs_bit.h"
...@@ -327,6 +328,7 @@ const struct xfs_btree_ops xfs_refcountbt_ops = { ...@@ -327,6 +328,7 @@ const struct xfs_btree_ops xfs_refcountbt_ops = {
.lru_refs = XFS_REFC_BTREE_REF, .lru_refs = XFS_REFC_BTREE_REF,
.statoff = XFS_STATS_CALC_INDEX(xs_refcbt_2), .statoff = XFS_STATS_CALC_INDEX(xs_refcbt_2),
.sick_mask = XFS_SICK_AG_REFCNTBT,
.dup_cursor = xfs_refcountbt_dup_cursor, .dup_cursor = xfs_refcountbt_dup_cursor,
.set_root = xfs_refcountbt_set_root, .set_root = xfs_refcountbt_set_root,
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "xfs_btree_staging.h" #include "xfs_btree_staging.h"
#include "xfs_rmap.h" #include "xfs_rmap.h"
#include "xfs_rmap_btree.h" #include "xfs_rmap_btree.h"
#include "xfs_health.h"
#include "xfs_trace.h" #include "xfs_trace.h"
#include "xfs_error.h" #include "xfs_error.h"
#include "xfs_extent_busy.h" #include "xfs_extent_busy.h"
...@@ -483,6 +484,7 @@ const struct xfs_btree_ops xfs_rmapbt_ops = { ...@@ -483,6 +484,7 @@ const struct xfs_btree_ops xfs_rmapbt_ops = {
.lru_refs = XFS_RMAP_BTREE_REF, .lru_refs = XFS_RMAP_BTREE_REF,
.statoff = XFS_STATS_CALC_INDEX(xs_rmap_2), .statoff = XFS_STATS_CALC_INDEX(xs_rmap_2),
.sick_mask = XFS_SICK_AG_RMAPBT,
.dup_cursor = xfs_rmapbt_dup_cursor, .dup_cursor = xfs_rmapbt_dup_cursor,
.set_root = xfs_rmapbt_set_root, .set_root = xfs_rmapbt_set_root,
......
...@@ -526,36 +526,22 @@ void ...@@ -526,36 +526,22 @@ void
xfs_btree_mark_sick( xfs_btree_mark_sick(
struct xfs_btree_cur *cur) struct xfs_btree_cur *cur)
{ {
unsigned int mask; switch (cur->bc_ops->type) {
case XFS_BTREE_TYPE_AG:
switch (cur->bc_btnum) { ASSERT(cur->bc_ops->sick_mask);
case XFS_BTNUM_BMAP: xfs_ag_mark_sick(cur->bc_ag.pag, cur->bc_ops->sick_mask);
xfs_bmap_mark_sick(cur->bc_ino.ip, cur->bc_ino.whichfork);
return; return;
case XFS_BTNUM_BNO: case XFS_BTREE_TYPE_INODE:
mask = XFS_SICK_AG_BNOBT; if (cur->bc_btnum == XFS_BTNUM_BMAP) {
break; xfs_bmap_mark_sick(cur->bc_ino.ip,
case XFS_BTNUM_CNT: cur->bc_ino.whichfork);
mask = XFS_SICK_AG_CNTBT; return;
break; }
case XFS_BTNUM_INO: fallthrough;
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;
default: default:
ASSERT(0); ASSERT(0);
return; return;
} }
xfs_ag_mark_sick(cur->bc_ag.pag, mask);
} }
/* /*
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment