/* quietly strip the unnecessary '$' */
if (*name == '$' || *name == '%')
name++;
- if (isdigit(*name)) {
+ if (isdigit(*name)) {
/* We can't translate from dev # to name */
lcfg_devname = NULL;
} else {
}
} else {
lcfg_devname = NULL;
- }
+ }
return 0;
}
if (lcfg_devname == NULL) {
fprintf(stderr, "%s: please use 'device name' to set the "
- "device name for config commands.\n",
- jt_cmdname(argv[0]));
+ "device name for config commands.\n",
+ jt_cmdname(argv[0]));
return -EINVAL;
}
if (lcfg_devname == NULL) {
fprintf(stderr, "%s: please use 'device name' to set the "
- "device name for config commands.\n",
- jt_cmdname(argv[0]));
+ "device name for config commands.\n",
+ jt_cmdname(argv[0]));
return -EINVAL;
}
if (lcfg_devname == NULL) {
fprintf(stderr, "%s: please use 'device name' to set the "
- "device name for config commands.\n",
- jt_cmdname(argv[0]));
+ "device name for config commands.\n",
+ jt_cmdname(argv[0]));
return -EINVAL;
}
return rc;
}
-static
-int do_add_uuid(char * func, char *uuid, lnet_nid_t nid)
+static
+int do_add_uuid(char * func, char *uuid, lnet_nid_t nid)
{
int rc;
struct lustre_cfg_bufs bufs;
lcfg = lustre_cfg_new(LCFG_ADD_UUID, &bufs);
lcfg->lcfg_nid = nid;
- /* Poison NAL -- pre 1.4.6 will LASSERT on 0 NAL, this way it
+ /* Poison NAL -- pre 1.4.6 will LASSERT on 0 NAL, this way it
doesn't work without crashing (bz 10130) */
lcfg->lcfg_nal = 0x5a;
int jt_lcfg_add_uuid(int argc, char **argv)
{
lnet_nid_t nid;
-
- if (argc != 3) {
+
+ if (argc != 3) {
return CMD_HELP;
}
lustre_cfg_bufs_reset(&bufs, lcfg_devname);
if (strcmp (argv[1], "_all_"))
lustre_cfg_bufs_set_string(&bufs, 1, argv[1]);
-
+
lcfg = lustre_cfg_new(LCFG_DEL_UUID, &bufs);
rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg);
lustre_cfg_free(lcfg);
return 0;
}
-
-
-
int jt_lcfg_del_mount_option(int argc, char **argv)
{
int rc;
lustre_cfg_bufs_reset(&bufs, lcfg_devname);
lcfg = lustre_cfg_new(LCFG_SET_TIMEOUT, &bufs);
lcfg->lcfg_num = atoi(argv[1]);
-
+
rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg);
//rc = lcfg_mgs_ioctl(argv[0], OBD_DEV_ID, lcfg);
return rc;
}
-
-
int jt_lcfg_add_conn(int argc, char **argv)
{
struct lustre_cfg_bufs bufs;
if (lcfg_devname == NULL) {
fprintf(stderr, "%s: please use 'device name' to set the "
- "device name for config commands.\n",
- jt_cmdname(argv[0]));
+ "device name for config commands.\n",
+ jt_cmdname(argv[0]));
return -EINVAL;
}
if (lcfg_devname == NULL) {
fprintf(stderr, "%s: please use 'device name' to set the "
- "device name for config commands.\n",
- jt_cmdname(argv[0]));
+ "device name for config commands.\n",
+ jt_cmdname(argv[0]));
return -EINVAL;
}
}
lcfg = lustre_cfg_new(LCFG_PARAM, &bufs);
-
+
rc = lcfg_ioctl(argv[0], OBD_DEV_ID, lcfg);
lustre_cfg_free(lcfg);
if (rc < 0) {
fprintf(stderr, "error: %s: %s\n", jt_cmdname(argv[0]),
strerror(rc = errno));
}
-
+
return rc;
}
}
/* Find a character in a length limited string */
+/* BEWARE - kernel definition of strnchr has args in different order! */
static char *strnchr(const char *p, char c, size_t n)
{
if (!p)
return (0);
}
+static char *globerrstr(int glob_rc)
+{
+ switch(glob_rc) {
+ case GLOB_NOSPACE:
+ return "Out of memory";
+ case GLOB_ABORTED:
+ return "Read error";
+ case GLOB_NOMATCH:
+ return "Found no match";
+ }
+ return "Unknow error";
+}
+
+static void clean_path(char *path)
+{
+ char *tmp;
+
+ /* If the input is in form Eg. obdfilter.*.stats */
+ if (strchr(path, '.')) {
+ tmp = path;
+ while (*tmp != '\0') {
+ if ((*tmp == '.') &&
+ (tmp != path) && (*(tmp - 1) != '\\'))
+ *tmp = '/';
+ tmp ++;
+ }
+ }
+ /* get rid of '\', glob doesn't like it */
+ if ((tmp = strrchr(path, '\\')) != NULL) {
+ char *tail = path + strlen(path);
+ while (tmp != path) {
+ if (*tmp == '\\') {
+ memmove(tmp, tmp + 1, tail - tmp);
+ --tail;
+ }
+ --tmp;
+ }
+ }
+}
+
int jt_lcfg_getparam(int argc, char **argv)
{
int fp;
int rc = 0, i, show_path = 0, only_path = 0;
char pattern[PATH_MAX];
- char *path, *tmp, *buf;
+ char *path, *buf;
glob_t glob_info;
if (argc == 3 && (strcmp(argv[1], "-n") == 0 || strcmp(argv[1], "-N") == 0)) {
return CMD_HELP;
}
- /* If the input is in form Eg. obdfilter.*.stats */
- if (strchr(path, '.')) {
- tmp = path;
- while (*tmp != '\0') {
- if (*tmp == '.')
- *tmp = '/';
- tmp ++;
- }
- }
+ clean_path(path);
/* If the entire path is specified as input */
fp = open(path, O_RDONLY);
rc = glob(pattern, GLOB_BRACE, NULL, &glob_info);
if (rc) {
- fprintf(stderr, "error : glob %s: %s \n", pattern,strerror(rc));
+ fprintf(stderr, "error : glob %s: %s \n", pattern,
+ globerrstr(rc));
return rc;
}
return rc;
}
-
int jt_lcfg_setparam(int argc, char **argv)
{
int rc = 0, i;
int fp, show_path = 0;
char pattern[PATH_MAX];
- char *path, *value, *tmp;
+ char *path, *value;
glob_t glob_info;
path = argv[1];
return CMD_HELP;
}
- /* If the input is in form Eg. obdfilter.*.stats */
- if (strchr(path, '.')) {
- tmp = path;
- while (*tmp != '\0') {
- if (*tmp == '.')
- *tmp = '/';
- tmp ++;
- }
- }
+ clean_path(path);
fp = open(path, O_RDONLY);
if (fp < 0)
rc = glob(pattern, GLOB_BRACE, NULL, &glob_info);
if (rc) {
- fprintf(stderr, "error : glob %s: %s \n", pattern,strerror(rc));
+ fprintf(stderr, "error : glob %s: %s \n", pattern,
+ globerrstr(rc));
return rc;
}
for (i = 0; i < glob_info.gl_pathc; i++) {