-static void system_string(char *cmdline, char *str, int len)
-{
- int fds[2];
- int rc;
- pid_t pid;
-
- rc = pipe(fds);
- if (rc != 0)
- abort();
-
- pid = fork();
- if (pid == 0) {
- /* child */
- int fd = fileno(stdout);
-
- rc = dup2(fds[1], fd);
- if (rc != fd)
- abort();
-
- exit(system(cmdline));
- /* notreached */
- } else if ((int)pid < 0) {
- abort();
- } else {
- FILE *f = fdopen(fds[0], "r");
-
- if (f == NULL)
- abort();
-
- close(fds[1]);
-
- if (fgets(str, len, f) == NULL)
- abort();
-
- if (waitpid(pid, &rc, 0) != pid)
- abort();
-
- if (!WIFEXITED(rc) || WEXITSTATUS(rc) != 0)
- abort();
-
- if (strnlen(str, len) == len)
- str[len - 1] = 0;
-
- if (str[strlen(str) - 1] == '\n')
- str[strlen(str) - 1] = 0;
-
- fclose(f);
- }
+static void
+check_lustre_cfg(void)
+{
+ BLANK_LINE();
+ CHECK_STRUCT(lustre_cfg);
+ CHECK_MEMBER(lustre_cfg, lcfg_version);
+ CHECK_MEMBER(lustre_cfg, lcfg_command);
+ CHECK_MEMBER(lustre_cfg, lcfg_num);
+ CHECK_MEMBER(lustre_cfg, lcfg_flags);
+ CHECK_MEMBER(lustre_cfg, lcfg_nid);
+ CHECK_MEMBER(lustre_cfg, lcfg_nal);
+ CHECK_MEMBER(lustre_cfg, lcfg_bufcount);
+ CHECK_MEMBER(lustre_cfg, lcfg_buflens[0]);
+
+ CHECK_VALUE_X(LCFG_ATTACH);
+ CHECK_VALUE_X(LCFG_DETACH);
+ CHECK_VALUE_X(LCFG_SETUP);
+ CHECK_VALUE_X(LCFG_CLEANUP);
+ CHECK_VALUE_X(LCFG_ADD_UUID);
+ CHECK_VALUE_X(LCFG_DEL_UUID);
+ CHECK_VALUE_X(LCFG_MOUNTOPT);
+ CHECK_VALUE_X(LCFG_DEL_MOUNTOPT);
+ CHECK_VALUE_X(LCFG_SET_TIMEOUT);
+ CHECK_VALUE_X(LCFG_SET_UPCALL);
+ CHECK_VALUE_X(LCFG_ADD_CONN);
+ CHECK_VALUE_X(LCFG_DEL_CONN);
+ CHECK_VALUE_X(LCFG_LOV_ADD_OBD);
+ CHECK_VALUE_X(LCFG_LOV_DEL_OBD);
+ CHECK_VALUE_X(LCFG_PARAM);
+ CHECK_VALUE_X(LCFG_MARKER);
+ CHECK_VALUE_X(LCFG_LOG_START);
+ CHECK_VALUE_X(LCFG_LOG_END);
+ CHECK_VALUE_X(LCFG_LOV_ADD_INA);
+ CHECK_VALUE_X(LCFG_ADD_MDC);
+ CHECK_VALUE_X(LCFG_DEL_MDC);
+ CHECK_VALUE_X(LCFG_SPTLRPC_CONF);
+ CHECK_VALUE_X(LCFG_POOL_NEW);
+ CHECK_VALUE_X(LCFG_POOL_ADD);
+ CHECK_VALUE_X(LCFG_POOL_REM);
+ CHECK_VALUE_X(LCFG_POOL_DEL);
+ CHECK_VALUE_X(LCFG_SET_LDLM_TIMEOUT);
+ CHECK_VALUE_X(LCFG_PRE_CLEANUP);
+ CHECK_VALUE_X(LCFG_SET_PARAM);
+ CHECK_VALUE_X(LCFG_NODEMAP_ADD);
+ CHECK_VALUE_X(LCFG_NODEMAP_DEL);
+ CHECK_VALUE_X(LCFG_NODEMAP_ADD_RANGE);
+ CHECK_VALUE_X(LCFG_NODEMAP_DEL_RANGE);
+ CHECK_VALUE_X(LCFG_NODEMAP_ADD_UIDMAP);
+ CHECK_VALUE_X(LCFG_NODEMAP_DEL_UIDMAP);
+ CHECK_VALUE_X(LCFG_NODEMAP_ADD_GIDMAP);
+ CHECK_VALUE_X(LCFG_NODEMAP_DEL_GIDMAP);
+ CHECK_VALUE_X(LCFG_NODEMAP_ACTIVATE);
+ CHECK_VALUE_X(LCFG_NODEMAP_ADMIN);
+ CHECK_VALUE_X(LCFG_NODEMAP_TRUSTED);
+ CHECK_VALUE_X(LCFG_NODEMAP_SQUASH_UID);
+ CHECK_VALUE_X(LCFG_NODEMAP_SQUASH_GID);
+ CHECK_VALUE_X(LCFG_NODEMAP_ADD_SHKEY);
+ CHECK_VALUE_X(LCFG_NODEMAP_DEL_SHKEY);
+ CHECK_VALUE_X(LCFG_NODEMAP_TEST_NID);
+ CHECK_VALUE_X(LCFG_NODEMAP_TEST_ID);
+ CHECK_VALUE_X(LCFG_NODEMAP_SET_FILESET);
+ CHECK_VALUE_X(LCFG_NODEMAP_DENY_UNKNOWN);
+ CHECK_VALUE_X(LCFG_NODEMAP_MAP_MODE);
+ CHECK_VALUE_X(LCFG_NODEMAP_AUDIT_MODE);
+ CHECK_VALUE_X(LCFG_NODEMAP_SET_SEPOL);
+
+ CHECK_VALUE(PORTALS_CFG_TYPE);
+ CHECK_VALUE(LUSTRE_CFG_TYPE);