xfs: convert scrub to use mount-based feature checks

The scrub feature checks are the last place that the superblock
feature checks are used. Convert them to mount based feature checks.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
This commit is contained in:
Dave Chinner 2021-08-18 18:46:54 -07:00 committed by Darrick J. Wong
parent fe08cc5044
commit 55fafb31f9
2 changed files with 7 additions and 7 deletions

View File

@ -239,21 +239,21 @@ static const struct xchk_meta_ops meta_scrub_ops[] = {
.type = ST_PERAG, .type = ST_PERAG,
.setup = xchk_setup_ag_iallocbt, .setup = xchk_setup_ag_iallocbt,
.scrub = xchk_finobt, .scrub = xchk_finobt,
.has = xfs_sb_version_hasfinobt, .has = xfs_has_finobt,
.repair = xrep_notsupported, .repair = xrep_notsupported,
}, },
[XFS_SCRUB_TYPE_RMAPBT] = { /* rmapbt */ [XFS_SCRUB_TYPE_RMAPBT] = { /* rmapbt */
.type = ST_PERAG, .type = ST_PERAG,
.setup = xchk_setup_ag_rmapbt, .setup = xchk_setup_ag_rmapbt,
.scrub = xchk_rmapbt, .scrub = xchk_rmapbt,
.has = xfs_sb_version_hasrmapbt, .has = xfs_has_rmapbt,
.repair = xrep_notsupported, .repair = xrep_notsupported,
}, },
[XFS_SCRUB_TYPE_REFCNTBT] = { /* refcountbt */ [XFS_SCRUB_TYPE_REFCNTBT] = { /* refcountbt */
.type = ST_PERAG, .type = ST_PERAG,
.setup = xchk_setup_ag_refcountbt, .setup = xchk_setup_ag_refcountbt,
.scrub = xchk_refcountbt, .scrub = xchk_refcountbt,
.has = xfs_sb_version_hasreflink, .has = xfs_has_reflink,
.repair = xrep_notsupported, .repair = xrep_notsupported,
}, },
[XFS_SCRUB_TYPE_INODE] = { /* inode record */ [XFS_SCRUB_TYPE_INODE] = { /* inode record */
@ -308,14 +308,14 @@ static const struct xchk_meta_ops meta_scrub_ops[] = {
.type = ST_FS, .type = ST_FS,
.setup = xchk_setup_rt, .setup = xchk_setup_rt,
.scrub = xchk_rtbitmap, .scrub = xchk_rtbitmap,
.has = xfs_sb_version_hasrealtime, .has = xfs_has_realtime,
.repair = xrep_notsupported, .repair = xrep_notsupported,
}, },
[XFS_SCRUB_TYPE_RTSUM] = { /* realtime summary */ [XFS_SCRUB_TYPE_RTSUM] = { /* realtime summary */
.type = ST_FS, .type = ST_FS,
.setup = xchk_setup_rt, .setup = xchk_setup_rt,
.scrub = xchk_rtsummary, .scrub = xchk_rtsummary,
.has = xfs_sb_version_hasrealtime, .has = xfs_has_realtime,
.repair = xrep_notsupported, .repair = xrep_notsupported,
}, },
[XFS_SCRUB_TYPE_UQUOTA] = { /* user quota */ [XFS_SCRUB_TYPE_UQUOTA] = { /* user quota */
@ -383,7 +383,7 @@ xchk_validate_inputs(
if (ops->setup == NULL || ops->scrub == NULL) if (ops->setup == NULL || ops->scrub == NULL)
goto out; goto out;
/* Does this fs even support this type of metadata? */ /* Does this fs even support this type of metadata? */
if (ops->has && !ops->has(&mp->m_sb)) if (ops->has && !ops->has(mp))
goto out; goto out;
error = -EINVAL; error = -EINVAL;

View File

@ -27,7 +27,7 @@ struct xchk_meta_ops {
int (*repair)(struct xfs_scrub *); int (*repair)(struct xfs_scrub *);
/* Decide if we even have this piece of metadata. */ /* Decide if we even have this piece of metadata. */
bool (*has)(struct xfs_sb *); bool (*has)(struct xfs_mount *);
/* type describing required/allowed inputs */ /* type describing required/allowed inputs */
enum xchk_type type; enum xchk_type type;