[PATCH 32/41] xfs_repair: pass private data pointer to scan_lbtree

Darrick J. Wong
2024-12-06T23:47:59Z

From: Darrick J. Wong <djwong@kernel.org>

Pass a private data pointer through scan_lbtree. We'll use this
later when scanning the rtrmapbt to keep track of scan state.

Signed-off-by: "Darrick J. Wong" <djwong@kernel.org>
---
repair/dinode.c | 2 +-
repair/scan.c | 11 +++++++----
repair/scan.h | 7 +++++--
3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/repair/dinode.c b/repair/dinode.c
index b9d2d15882c593..4d4e901ef796d6 100644
--- a/repair/dinode.c
+++ b/repair/dinode.c
@@ -839,7 +839,7 @@ _("bad bmap btree ptr 0x%" PRIx64 " in ino %" PRIu64 "\n"),

if (scan_lbtree(get_unaligned_be64(&pp[i]), level, scan_bmapbt,
type, whichfork, lino, tot, nex, blkmapp,
- &cursor, 1, check_dups, magic,
+ &cursor, 1, check_dups, magic, NULL,
&xfs_bmbt_buf_ops))
return(1);
/*
diff --git a/repair/scan.c b/repair/scan.c
index b115dd4948b969..f6d46a2861b312 100644
--- a/repair/scan.c
+++ b/repair/scan.c
@@ -139,7 +139,8 @@ scan_lbtree(
int isroot,
int check_dups,
int *dirty,
- uint64_t magic),
+ uint64_t magic,
+ void *priv),
int type,
int whichfork,
xfs_ino_t ino,
@@ -150,6 +151,7 @@ scan_lbtree(
int isroot,
int check_dups,
uint64_t magic,
+ void *priv,
const struct xfs_buf_ops *ops)
{
struct xfs_buf *bp;
@@ -181,7 +183,7 @@ scan_lbtree(
err = (*func)(XFS_BUF_TO_BLOCK(bp), nlevels - 1,
type, whichfork, root, ino, tot, nex, blkmapp,
bm_cursor, isroot, check_dups, &dirty,
- magic);
+ magic, priv);

ASSERT(dirty == 0 || (dirty && !no_modify));

@@ -210,7 +212,8 @@ scan_bmapbt(
int isroot,
int check_dups,
int *dirty,
- uint64_t magic)
+ uint64_t magic,
+ void *priv)
{
int i;
int err;
@@ -486,7 +489,7 @@ _("bad bmap btree ptr 0x%llx in ino %" PRIu64 "\n"),

err = scan_lbtree(be64_to_cpu(pp[i]), level, scan_bmapbt,
type, whichfork, ino, tot, nex, blkmapp,
- bm_cursor, 0, check_dups, magic,
+ bm_cursor, 0, check_dups, magic, priv,
&xfs_bmbt_buf_ops);
if (err)
return(1);
diff --git a/repair/scan.h b/repair/scan.h
index ee16362b6d3c69..4da788becbef66 100644
--- a/repair/scan.h
+++ b/repair/scan.h
@@ -26,7 +26,8 @@ int scan_lbtree(
int isroot,
int check_dups,
int *dirty,
- uint64_t magic),
+ uint64_t magic,
+ void *priv),
int type,
int whichfork,
xfs_ino_t ino,
@@ -37,6 +38,7 @@ int scan_lbtree(
int isroot,
int check_dups,
uint64_t magic,
+ void *priv,
const struct xfs_buf_ops *ops);

int scan_bmapbt(
@@ -53,7 +55,8 @@ int scan_bmapbt(
int isroot,
int check_dups,
int *dirty,
- uint64_t magic);
+ uint64_t magic,
+ void *priv);

void
scan_ags(