int argc,
char **argv,
int optind,
- __u64 *ino)
+ __u64 *ino,
+ __u32 *group)
{
char *p;
unsigned long long control;
+ unsigned long control2 = 0;
int i;
- if (optind != argc - 1) {
+ if (optind != argc - 1 && optind != argc - 2) {
fprintf(stderr, _("Must specify metapath number.\n"));
return false;
}
for (i = 0; i < XFS_SCRUB_METAPATH_NR; i++) {
if (!strcmp(argv[optind], xfrog_metapaths[i].name)) {
- *ino = i;
- return true;
+ control = i;
+ goto find_group;
}
}
return false;
}
+find_group:
+ if (xfrog_metapaths[control].group == XFROG_SCRUB_GROUP_RTGROUP) {
+ if (optind == argc - 1) {
+ fprintf(stderr,
+_("%s: Metapath requires a group number.\n"),
+ xfrog_metapaths[*ino].name);
+ return false;
+ }
+ control2 = strtoul(argv[optind + 1], &p, 0);
+ if (*p != '\0') {
+ fprintf(stderr,
+ _("Bad group number '%s'.\n"),
+ argv[optind + 1]);
+ return false;
+ }
+ } else {
+ if (optind == argc - 2) {
+ fprintf(stderr,
+_("%s: Metapath does not take a second argument.\n"),
+ xfrog_metapaths[*ino].name);
+ return false;
+ }
+ }
+
*ino = control;
+ *group = control2;
return true;
}
switch (d->group) {
case XFROG_SCRUB_GROUP_METAPATH:
- if (!parse_metapath(argc, argv, optind, &meta->sm_ino)) {
+ if (!parse_metapath(argc, argv, optind, &meta->sm_ino,
+ &meta->sm_agno)) {
exitcode = 1;
return command_usage(cmdinfo);
}
switch (group) {
case XFROG_SCRUB_GROUP_METAPATH:
- if (!parse_metapath(argc, argv, optind, &scrubv.head.svh_ino)) {
+ if (!parse_metapath(argc, argv, optind, &scrubv.head.svh_ino,
+ &scrubv.head.svh_agno)) {
exitcode = 1;
return command_usage(&scrubv_cmd);
}
.RE
.PD
.TP
-.BI "scrub " type " [ " agnumber " | " rgnumber " | " "ino" " " "gen" " | " metapath " ]"
+.BI "scrub " type " [ " agnumber " | " rgnumber " | " "ino" " " "gen" " | " metapath " [ " rgnumber " ] ]"
Scrub internal XFS filesystem metadata. The
.BI type
parameter specifies which type of metadata to scrub.
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.
+If the metapath file is a per-rtgroup file, the group number must be specified.
.RE
.PD
.TP