mirror of
https://github.com/torvalds/linux.git
synced 2024-11-21 19:41:42 +00:00
xfs: remove trivial bnobt/inobt scrub helpers
Christoph Hellwig complained about awkward code in the next two repair patches such as: sc->sm->sm_type = XFS_SCRUB_TYPE_BNOBT; error = xchk_bnobt(sc); This is a little silly, so let's export the xchk_{,i}allocbt functions to the dispatch table in scrub.c directly and get rid of the helpers. Originally I had planned each btree gets its own separate entry point, but since repair doesn't work that way, it no longer makes sense to complicate the call chain that way. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Christoph Hellwig <hch@lst.de>
This commit is contained in:
parent
efb43b3554
commit
8bd0bf570b
@ -138,33 +138,29 @@ xchk_allocbt_rec(
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Scrub the freespace btrees for some AG. */
|
||||
STATIC int
|
||||
/* Scrub one of the freespace btrees for some AG. */
|
||||
int
|
||||
xchk_allocbt(
|
||||
struct xfs_scrub *sc,
|
||||
xfs_btnum_t which)
|
||||
struct xfs_scrub *sc)
|
||||
{
|
||||
struct xchk_alloc ca = { };
|
||||
struct xfs_btree_cur *cur;
|
||||
|
||||
cur = which == XFS_BTNUM_BNO ? sc->sa.bno_cur : sc->sa.cnt_cur;
|
||||
switch (sc->sm->sm_type) {
|
||||
case XFS_SCRUB_TYPE_BNOBT:
|
||||
cur = sc->sa.bno_cur;
|
||||
break;
|
||||
case XFS_SCRUB_TYPE_CNTBT:
|
||||
cur = sc->sa.cnt_cur;
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
return xchk_btree(sc, cur, xchk_allocbt_rec, &XFS_RMAP_OINFO_AG, &ca);
|
||||
}
|
||||
|
||||
int
|
||||
xchk_bnobt(
|
||||
struct xfs_scrub *sc)
|
||||
{
|
||||
return xchk_allocbt(sc, XFS_BTNUM_BNO);
|
||||
}
|
||||
|
||||
int
|
||||
xchk_cntbt(
|
||||
struct xfs_scrub *sc)
|
||||
{
|
||||
return xchk_allocbt(sc, XFS_BTNUM_CNT);
|
||||
}
|
||||
|
||||
/* xref check that the extent is not free */
|
||||
void
|
||||
xchk_xref_is_used_space(
|
||||
|
@ -708,11 +708,10 @@ xchk_iallocbt_xref_rmap_inodes(
|
||||
xchk_btree_xref_set_corrupt(sc, sc->sa.rmap_cur, 0);
|
||||
}
|
||||
|
||||
/* Scrub the inode btrees for some AG. */
|
||||
STATIC int
|
||||
/* Scrub one of the inode btrees for some AG. */
|
||||
int
|
||||
xchk_iallocbt(
|
||||
struct xfs_scrub *sc,
|
||||
xfs_btnum_t which)
|
||||
struct xfs_scrub *sc)
|
||||
{
|
||||
struct xfs_btree_cur *cur;
|
||||
struct xchk_iallocbt iabt = {
|
||||
@ -720,9 +719,23 @@ xchk_iallocbt(
|
||||
.next_startino = NULLAGINO,
|
||||
.next_cluster_ino = NULLAGINO,
|
||||
};
|
||||
xfs_btnum_t which;
|
||||
int error;
|
||||
|
||||
cur = which == XFS_BTNUM_INO ? sc->sa.ino_cur : sc->sa.fino_cur;
|
||||
switch (sc->sm->sm_type) {
|
||||
case XFS_SCRUB_TYPE_INOBT:
|
||||
cur = sc->sa.ino_cur;
|
||||
which = XFS_BTNUM_INO;
|
||||
break;
|
||||
case XFS_SCRUB_TYPE_FINOBT:
|
||||
cur = sc->sa.fino_cur;
|
||||
which = XFS_BTNUM_FINO;
|
||||
break;
|
||||
default:
|
||||
ASSERT(0);
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
error = xchk_btree(sc, cur, xchk_iallocbt_rec, &XFS_RMAP_OINFO_INOBT,
|
||||
&iabt);
|
||||
if (error)
|
||||
@ -743,20 +756,6 @@ xchk_iallocbt(
|
||||
return error;
|
||||
}
|
||||
|
||||
int
|
||||
xchk_inobt(
|
||||
struct xfs_scrub *sc)
|
||||
{
|
||||
return xchk_iallocbt(sc, XFS_BTNUM_INO);
|
||||
}
|
||||
|
||||
int
|
||||
xchk_finobt(
|
||||
struct xfs_scrub *sc)
|
||||
{
|
||||
return xchk_iallocbt(sc, XFS_BTNUM_FINO);
|
||||
}
|
||||
|
||||
/* See if an inode btree has (or doesn't have) an inode chunk record. */
|
||||
static inline void
|
||||
xchk_xref_inode_check(
|
||||
|
@ -238,25 +238,25 @@ static const struct xchk_meta_ops meta_scrub_ops[] = {
|
||||
[XFS_SCRUB_TYPE_BNOBT] = { /* bnobt */
|
||||
.type = ST_PERAG,
|
||||
.setup = xchk_setup_ag_allocbt,
|
||||
.scrub = xchk_bnobt,
|
||||
.scrub = xchk_allocbt,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_CNTBT] = { /* cntbt */
|
||||
.type = ST_PERAG,
|
||||
.setup = xchk_setup_ag_allocbt,
|
||||
.scrub = xchk_cntbt,
|
||||
.scrub = xchk_allocbt,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_INOBT] = { /* inobt */
|
||||
.type = ST_PERAG,
|
||||
.setup = xchk_setup_ag_iallocbt,
|
||||
.scrub = xchk_inobt,
|
||||
.scrub = xchk_iallocbt,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_FINOBT] = { /* finobt */
|
||||
.type = ST_PERAG,
|
||||
.setup = xchk_setup_ag_iallocbt,
|
||||
.scrub = xchk_finobt,
|
||||
.scrub = xchk_iallocbt,
|
||||
.has = xfs_has_finobt,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
|
@ -129,10 +129,8 @@ int xchk_superblock(struct xfs_scrub *sc);
|
||||
int xchk_agf(struct xfs_scrub *sc);
|
||||
int xchk_agfl(struct xfs_scrub *sc);
|
||||
int xchk_agi(struct xfs_scrub *sc);
|
||||
int xchk_bnobt(struct xfs_scrub *sc);
|
||||
int xchk_cntbt(struct xfs_scrub *sc);
|
||||
int xchk_inobt(struct xfs_scrub *sc);
|
||||
int xchk_finobt(struct xfs_scrub *sc);
|
||||
int xchk_allocbt(struct xfs_scrub *sc);
|
||||
int xchk_iallocbt(struct xfs_scrub *sc);
|
||||
int xchk_rmapbt(struct xfs_scrub *sc);
|
||||
int xchk_refcountbt(struct xfs_scrub *sc);
|
||||
int xchk_inode(struct xfs_scrub *sc);
|
||||
|
Loading…
Reference in New Issue
Block a user