" set project ID and/or inherit flag for specified file(s) or directories\n"
" project -c [-d|-r [-p id] [-0]] <file|directory...>\n"
" check project ID and flags on file(s) or directories, print outliers\n"
- " project -C [-r] [-k] <file|directory...>\n"
+ " project -C [-d|-r] [-k] <file|directory...>\n"
" clear the project inherit flag and ID on the file or directory\n"
},
#endif
int i;
/* numeric hash type */
- if (hashtype && strlen(hashtype) == 1 &&
- (type_num > 0 && type_num < LMV_HASH_TYPE_MAX))
+ if (hashtype && lmv_is_known_hash_type(type_num))
return type_num;
/* string hash type */
- for (i = LMV_HASH_TYPE_ALL_CHARS; i < LMV_HASH_TYPE_MAX; i++)
+ for (i = LMV_HASH_TYPE_ALL_CHARS; i < ARRAY_SIZE(mdt_hash_name); i++)
if (strcmp(hashtype, mdt_hash_name[i]) == 0)
return i;
__u32 flag;
} mhflist[] = {
{"migrating", LMV_HASH_FLAG_MIGRATION},
+ {"bad_type", LMV_HASH_FLAG_BAD_TYPE},
{"badtype", LMV_HASH_FLAG_BAD_TYPE},
+ {"lost_lmv", LMV_HASH_FLAG_LOST_LMV},
{"lostlmv", LMV_HASH_FLAG_LOST_LMV},
};
if (!(tp->st_op & ops))
continue;
- for (index = 0; ; index++) {
+ for (index = 0; index < LOV_ALL_STRIPES &&
+ (!lsb || lsb->sb_count < LL_STATFS_MAX); index++) {
memset(&stat_buf, 0, sizeof(struct obd_statfs));
memset(&uuid_buf, 0, sizeof(struct obd_uuid));
type = flags & MNTDF_LAZY ?
tp->st_op | LL_STATFS_NODELAY : tp->st_op;
rc2 = llapi_obd_fstatfs(fd, type, index,
- &stat_buf, &uuid_buf);
+ &stat_buf, &uuid_buf);
if (rc2 == -ENODEV)
break;
if (rc2 == -EAGAIN)
lsa.lsa_pattern = check_hashtype(optarg);
if (lsa.lsa_pattern == 0) {
fprintf(stderr,
- "%s %s: bad stripe hash type '%s'\n",
+ "%s %s: bad directory hash type '%s'\n",
progname, argv[0], optarg);
return CMD_HELP;
}
goto out;
}
+ /* no target for this index yet */
+ if (rc == -ENODEV) {
+ rc = 0;
+ continue;
+ }
+
+ /* inactive target */
+ if (rc == -ENODATA) {
+ char name[UUID_MAX+8];
+
+ snprintf(name, sizeof(name), "%s[inact]",
+ obd_uuid2str(&qctl->obd_uuid));
+ memset(&qctl->qc_dqinfo, 0,
+ sizeof(qctl->qc_dqinfo));
+ memset(&qctl->qc_dqblk, 0,
+ sizeof(qctl->qc_dqblk));
+ print_quota(name, qctl, qctl->qc_valid, 0, h,
+ false);
+ rc = 0;
+ continue;
+ }
+
if (!rc1)
rc1 = rc;
fprintf(stderr, "quotactl %s%d failed.\n",