+
+int jt_lcfg_setparam(int argc, char **argv)
+{
+ int fp;
+ int rc = 0, i;
+ struct param_opts popt;
+ char pattern[PATH_MAX];
+ char *path = NULL, *value = NULL;
+
+ rc = setparam_cmdline(argc, argv, &popt);
+ if (rc < 0 || rc >= argc)
+ return CMD_HELP;
+
+ for (i = rc; i < argc; i++) {
+ if ((value = strchr(argv[i], '=')) != NULL) {
+ /* format: set_param a=b */
+ *value = '\0';
+ value ++;
+ path = argv[i];
+ } else {
+ /* format: set_param a b */
+ if (path == NULL) {
+ path = argv[i];
+ continue;
+ } else {
+ value = argv[i];
+ }
+ }
+
+ clean_path(path);
+
+ /* If the entire path is specified as input */
+ fp = open(path, O_RDONLY);
+ if (fp < 0) {
+ snprintf(pattern, PATH_MAX, "/proc/{fs,sys}/{lnet,lustre}/%s",
+ path);
+ } else {
+ strcpy(pattern, path);
+ close(fp);
+ }
+
+ rc = setparam_display(&popt, pattern, value);
+ path = NULL;
+ value = NULL;
+ if (rc < 0)
+ return rc;
+ }
+
+ return 0;
+}