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:
Родитель
fe08cc5044
Коммит
55fafb31f9
|
@ -239,21 +239,21 @@ static const struct xchk_meta_ops meta_scrub_ops[] = {
|
|||
.type = ST_PERAG,
|
||||
.setup = xchk_setup_ag_iallocbt,
|
||||
.scrub = xchk_finobt,
|
||||
.has = xfs_sb_version_hasfinobt,
|
||||
.has = xfs_has_finobt,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_RMAPBT] = { /* rmapbt */
|
||||
.type = ST_PERAG,
|
||||
.setup = xchk_setup_ag_rmapbt,
|
||||
.scrub = xchk_rmapbt,
|
||||
.has = xfs_sb_version_hasrmapbt,
|
||||
.has = xfs_has_rmapbt,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_REFCNTBT] = { /* refcountbt */
|
||||
.type = ST_PERAG,
|
||||
.setup = xchk_setup_ag_refcountbt,
|
||||
.scrub = xchk_refcountbt,
|
||||
.has = xfs_sb_version_hasreflink,
|
||||
.has = xfs_has_reflink,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_INODE] = { /* inode record */
|
||||
|
@ -308,14 +308,14 @@ static const struct xchk_meta_ops meta_scrub_ops[] = {
|
|||
.type = ST_FS,
|
||||
.setup = xchk_setup_rt,
|
||||
.scrub = xchk_rtbitmap,
|
||||
.has = xfs_sb_version_hasrealtime,
|
||||
.has = xfs_has_realtime,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_RTSUM] = { /* realtime summary */
|
||||
.type = ST_FS,
|
||||
.setup = xchk_setup_rt,
|
||||
.scrub = xchk_rtsummary,
|
||||
.has = xfs_sb_version_hasrealtime,
|
||||
.has = xfs_has_realtime,
|
||||
.repair = xrep_notsupported,
|
||||
},
|
||||
[XFS_SCRUB_TYPE_UQUOTA] = { /* user quota */
|
||||
|
@ -383,7 +383,7 @@ xchk_validate_inputs(
|
|||
if (ops->setup == NULL || ops->scrub == NULL)
|
||||
goto out;
|
||||
/* 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;
|
||||
|
||||
error = -EINVAL;
|
||||
|
|
|
@ -27,7 +27,7 @@ struct xchk_meta_ops {
|
|||
int (*repair)(struct xfs_scrub *);
|
||||
|
||||
/* Decide if we even have this piece of metadata. */
|
||||
bool (*has)(struct xfs_sb *);
|
||||
bool (*has)(struct xfs_mount *);
|
||||
|
||||
/* type describing required/allowed inputs */
|
||||
enum xchk_type type;
|
||||
|
|
Загрузка…
Ссылка в новой задаче