ostid_set_id(&data.ioc_obdo1.o_oi, base_id);
data.ioc_obdo1.o_uid = 0;
data.ioc_obdo1.o_gid = 0;
+ data.ioc_obdo1.o_projid = 0;
data.ioc_obdo1.o_valid = OBD_MD_FLTYPE | OBD_MD_FLMODE |
OBD_MD_FLID | OBD_MD_FLUID |
- OBD_MD_FLGID | OBD_MD_FLGROUP;
+ OBD_MD_FLGID | OBD_MD_FLGROUP |
+ OBD_MD_FLPROJID;
memset(buf, 0, sizeof(rawbuf));
rc = obd_ioctl_pack(&data, &buf, sizeof(rawbuf));
char rawbuf[MAX_IOC_BUFLEN], *buf = rawbuf;
int rc;
- if (argc != 2)
+ if (argc == 3) {
+ if (strncmp(argv[2], "-q", strlen("-q")) != 0 &&
+ strncmp(argv[2], "--quiet", strlen("--quiet")) != 0)
+ return CMD_HELP;
+ } else if (argc != 2) {
return CMD_HELP;
+ }
memset(&data, 0, sizeof(data));
data.ioc_dev = get_mgs_device();
if (nodemap_name == NULL || param == NULL || value == NULL) {
fprintf(stderr, "usage: nodemap_modify --name <nodemap_name> "
"--property <property_name> --value <value>\n");
- fprintf(stderr, "valid properties: admin trusted "
+ fprintf(stderr, "valid properties: admin trusted map_mode "
"squash_uid squash_gid deny_unknown\n");
return -1;
}
cmd = LCFG_NODEMAP_SQUASH_UID;
} else if (strcmp("squash_gid", param) == 0) {
cmd = LCFG_NODEMAP_SQUASH_GID;
+ } else if (strcmp("map_mode", param) == 0) {
+ cmd = LCFG_NODEMAP_MAP_MODE;
} else {
fprintf(stderr, "error: %s: nodemap_modify invalid "
"subcommand: %s\n",
return rc;
}
-int jt_barrier_stat(int argc, char **argv)
+int __jt_barrier_stat(int argc, char **argv, struct barrier_ctl *bc)
{
struct obd_ioctl_data data;
char rawbuf[MAX_IOC_BUFLEN], *buf = rawbuf;
- struct barrier_ctl bc;
int rc;
- if (argc != 2)
- return CMD_HELP;
-
memset(&data, 0, sizeof(data));
rc = data.ioc_dev = get_mgs_device();
if (rc < 0)
return rc;
- memset(&bc, 0, sizeof(bc));
- bc.bc_version = BARRIER_VERSION_V1;
- bc.bc_cmd = BC_STAT;
-
- if (strlen(argv[1]) > 8) {
- fprintf(stderr, "fsname name %s is too long. "
- "It should not exceed 8.\n", argv[1]);
- return -EINVAL;
- }
-
- strncpy(bc.bc_name, argv[1], sizeof(bc.bc_name));
- data.ioc_inlbuf1 = (char *)&bc;
- data.ioc_inllen1 = sizeof(bc);
+ memset(bc, 0, sizeof(*bc));
+ bc->bc_version = BARRIER_VERSION_V1;
+ bc->bc_cmd = BC_STAT;
+ strncpy(bc->bc_name, argv[1], sizeof(bc->bc_name));
+ data.ioc_inlbuf1 = (char *)bc;
+ data.ioc_inllen1 = sizeof(*bc);
memset(buf, 0, sizeof(rawbuf));
rc = obd_ioctl_pack(&data, &buf, sizeof(rawbuf));
if (rc) {
}
rc = l_ioctl(OBD_DEV_ID, OBD_IOC_BARRIER, buf);
- if (rc < 0) {
+ if (rc < 0)
fprintf(stderr, "Fail to query barrier for %s: %s\n",
argv[1], strerror(errno));
- } else {
+ else
obd_ioctl_unpack(&data, buf, sizeof(rawbuf));
+
+ return rc;
+}
+
+int jt_barrier_stat(int argc, char **argv)
+{
+ struct barrier_ctl bc;
+ int rc;
+
+ if (argc != 2)
+ return CMD_HELP;
+
+ if (strlen(argv[1]) > 8) {
+ fprintf(stderr, "fsname name %s is too long. "
+ "It should not exceed 8.\n", argv[1]);
+ return -EINVAL;
+ }
+
+ rc = __jt_barrier_stat(argc, argv, &bc);
+ if (!rc) {
printf("The barrier for %s is in '%s'\n",
argv[1], barrier_status2name(bc.bc_status));
if (bc.bc_status == BS_FREEZING_P1 ||