Enable scrubbing of realtime group superblocks.
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
.descr = "metadata directory paths",
.group = XFROG_SCRUB_GROUP_METAPATH,
},
+ [XFS_SCRUB_TYPE_RGSUPER] = {
+ .name = "rgsuper",
+ .descr = "realtime group superblock",
+ .group = XFROG_SCRUB_GROUP_RTGROUP,
+ },
};
const struct xfrog_scrub_descr xfrog_metapaths[XFS_SCRUB_METAPATH_NR] = {
XFROG_SCRUB_GROUP_ISCAN, /* metadata requiring full inode scan */
XFROG_SCRUB_GROUP_SUMMARY, /* summary metadata */
XFROG_SCRUB_GROUP_METAPATH, /* metadata directory path */
+ XFROG_SCRUB_GROUP_RTGROUP, /* per-rtgroup metadata */
};
/* Catalog of scrub types and names, indexed by XFS_SCRUB_TYPE_* */
#define XFS_SCRUB_TYPE_HEALTHY 27 /* everything checked out ok */
#define XFS_SCRUB_TYPE_DIRTREE 28 /* directory tree structure */
#define XFS_SCRUB_TYPE_METAPATH 29 /* metadata directory tree paths */
+#define XFS_SCRUB_TYPE_RGSUPER 30 /* realtime superblock */
/* Number of scrub subcommands. */
-#define XFS_SCRUB_TYPE_NR 30
+#define XFS_SCRUB_TYPE_NR 31
/*
* This special type code only applies to the vectored scrub implementation.
.BR sm_ino " and " sm_gen
must be zero.
+.PP
+.TP
+.B XFS_SCRUB_TYPE_RGSUPER
+Examine a given realtime allocation group's superblock.
+The realtime allocation group number must be given in
+.IR sm_agno "."
+.IR sm_ino " and " sm_gen
+must be zero.
+
.TP
.B XFS_SCRUB_TYPE_INODE
Examine a given inode record for obviously incorrect values and
case XFS_SCRUB_TYPE_REFCNTBT:
case XFS_SCRUB_TYPE_RTBITMAP:
case XFS_SCRUB_TYPE_RTSUM:
+ case XFS_SCRUB_TYPE_RGSUPER:
ret |= REPAIR_DIFFICULTY_PRIMARY;
break;
}
return snprintf(buf, buflen, _("%s"), _(sc->descr));
case XFROG_SCRUB_GROUP_METAPATH:
return format_metapath_descr(buf, buflen, vhead);
+ case XFROG_SCRUB_GROUP_RTGROUP:
+ return snprintf(buf, buflen, _("rtgroup %u %s"),
+ vhead->svh_agno, _(sc->descr));
}
return -1;
}