summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarrick J. Wong <djwong@kernel.org>2021-09-01 11:19:48 -0700
committerDarrick J. Wong <djwong@kernel.org>2021-09-17 18:55:26 -0700
commita710612f93d558c3f36694bfcc42b0b5fffac186 (patch)
tree2f761f776a30bd2ecb6a15386d0a04874c91a018
parent2a1c2dde5bd5987625e6af0116f7b3794cace0a3 (diff)
xfs: repair inodes that have a refcount btree in the data fork
Plumb knowledge of refcount btrees into the inode core repair code. Signed-off-by: Darrick J. Wong <djwong@kernel.org>
-rw-r--r--fs/xfs/scrub/inode_repair.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/xfs/scrub/inode_repair.c b/fs/xfs/scrub/inode_repair.c
index 56d760a80923..12f163e24c41 100644
--- a/fs/xfs/scrub/inode_repair.c
+++ b/fs/xfs/scrub/inode_repair.c
@@ -33,6 +33,7 @@
#include "xfs_quota_defs.h"
#include "xfs_attr_leaf.h"
#include "libxfs/xfs_rtrmap_btree.h"
+#include "libxfs/xfs_rtrefcount_btree.h"
#include "xfs_log_priv.h"
#include "xfs_ag.h"
#include "scrub/xfs_scrub.h"
@@ -885,6 +886,7 @@ xrep_dinode_ensure_forkoff(
{
struct xfs_bmdr_block *bmdr;
struct xfs_rtrmap_root *rmdr;
+ struct xfs_rtrefcount_root *rcdr;
size_t bmdr_minsz = xfs_bmdr_space_calc(1);
unsigned int lit_sz = XFS_LITINO(sc->mp);
unsigned int afork_min, dfork_min;
@@ -993,6 +995,10 @@ xrep_dinode_ensure_forkoff(
rmdr = XFS_DFORK_PTR(dip, XFS_DATA_FORK);
dfork_min = xfs_rtrmap_broot_space(sc->mp, rmdr);
break;
+ case XFS_DINODE_FMT_REFCOUNT:
+ rcdr = XFS_DFORK_PTR(dip, XFS_DATA_FORK);
+ dfork_min = xfs_rtrefcount_broot_space(sc->mp, rcdr);
+ break;
default:
dfork_min = 0;
break;