" Known metadata scrub types are:"));
for (i = 0, d = xfrog_scrubbers; i < XFS_SCRUB_TYPE_NR; i++, d++)
printf(" %s", d->name);
+ printf(_(
+"\n"
+"\n"
+" Known metapath scrub arguments are:"));
+ for (i = 0, d = xfrog_metapaths; i < XFS_SCRUB_METAPATH_NR; i++, d++)
+ printf(" %s", d->name);
printf("\n");
}
optind++;
switch (d->group) {
+ case XFROG_SCRUB_GROUP_METAPATH:
+ if (optind == argc - 1) {
+ bool set = false;
+
+ for (i = 0; i < XFS_SCRUB_METAPATH_NR; i++) {
+ if (!strcmp(argv[optind],
+ xfrog_metapaths[i].name)) {
+ control = i;
+ set = true;
+ break;
+ }
+ }
+
+ if (!set) {
+ control = strtoull(argv[optind], &p, 0);
+ if (*p != '\0') {
+ fprintf(stderr,
+ _("Bad metapath number '%s'.\n"),
+ argv[optind]);
+ return 0;
+ }
+ }
+ } else {
+ fprintf(stderr, _("Must specify metapath number.\n"));
+ return 0;
+ }
+ break;
case XFROG_SCRUB_GROUP_INODE:
if (optind == argc) {
control = 0;
scrub_cmd.argmin = 1;
scrub_cmd.argmax = -1;
scrub_cmd.flags = CMD_NOMAP_OK;
- scrub_cmd.args = _("type [agno|ino gen]");
+ scrub_cmd.args = _("type [agno|ino gen|metapath]");
scrub_cmd.oneline = _("scrubs filesystem metadata");
scrub_cmd.help = scrub_help;
" Known metadata repair types are:"));
for (i = 0, d = xfrog_scrubbers; i < XFS_SCRUB_TYPE_NR; i++, d++)
printf(" %s", d->name);
+ printf(_(
+"\n"
+"\n"
+" Known metapath repair arguments are:"));
+ for (i = 0, d = xfrog_metapaths; i < XFS_SCRUB_METAPATH_NR; i++, d++)
+ printf(" %s", d->name);
printf("\n");
}
repair_cmd.argmin = 1;
repair_cmd.argmax = -1;
repair_cmd.flags = CMD_NOMAP_OK;
- repair_cmd.args = _("type [agno|ino gen]");
+ repair_cmd.args = _("type [agno|ino gen|metapath]");
repair_cmd.oneline = _("repairs filesystem metadata");
repair_cmd.help = repair_help;
optind++;
switch (group) {
+ case XFROG_SCRUB_GROUP_METAPATH:
+ if (optind == argc - 1) {
+ vhead->svh_ino = strtoull(argv[optind], &p, 0);
+ if (*p != '\0') {
+ fprintf(stderr,
+ _("Bad metapath number '%s'.\n"),
+ argv[optind]);
+ return 0;
+ }
+ vhead->svh_gen = 0;
+ } else {
+ fprintf(stderr,
+ _("Must specify metapath number.\n"));
+ return 0;
+ }
+ break;
case XFROG_SCRUB_GROUP_INODE:
if (optind == argc) {
vhead->svh_ino = 0;
.RE
.PD
.TP
-.BI "scrub " type " [ " agnumber " | " "ino" " " "gen" " ]"
+.BI "scrub " type " [ " agnumber " | " "ino" " " "gen" " | " metapath " ]"
Scrub internal XFS filesystem metadata. The
.BI type
parameter specifies which type of metadata to scrub.
For AG metadata, one AG number must be specified.
For file metadata, the scrub is applied to the open file unless the
inode number and generation number are specified.
+For metapath, the name of a file or a raw number must be specified.
.RE
.PD
.TP