From: Andreas Dilger Date: Fri, 29 Jun 2012 09:04:27 +0000 (-0600) Subject: LU-1415 utils: Process all {get,set}_param arguments X-Git-Tag: 2.2.91~23 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=5ad45a6b28a1a4da6f22a508c0a5029c4db5e4b5;ds=inline LU-1415 utils: Process all {get,set}_param arguments Process all arguments to get_param and set_param before returning an error, to allow accessing one of multiple parameters that have changed during code reorganization. Signed-off-by: Andreas Dilger Signed-off-by: Li Wei Change-Id: Icb3019c8bd6ed83ffbfeae1fa54084f34df00c1e Reviewed-on: http://review.whamcloud.com/3245 Tested-by: Hudson Reviewed-by: Yu Jian Tested-by: Maloo --- diff --git a/lustre/utils/lustre_cfg.c b/lustre/utils/lustre_cfg.c index 93adfb3..b409656 100644 --- a/lustre/utils/lustre_cfg.c +++ b/lustre/utils/lustre_cfg.c @@ -900,22 +900,24 @@ int jt_lcfg_getparam(int argc, char **argv) if (rc < 0 || rc >= argc) return CMD_HELP; - for (i = rc; i < argc; i++) { - path = argv[i]; + for (i = rc, rc = 0; i < argc; i++) { + int rc2; - clean_path(path); + path = argv[i]; - lprocfs_param_pattern(argv[0], path, pattern, sizeof(pattern)); + clean_path(path); - if (popt.only_path) - rc = listparam_display(&popt, pattern); - else - rc = getparam_display(&popt, pattern); - if (rc < 0) - return rc; - } + lprocfs_param_pattern(argv[0], path, pattern, sizeof(pattern)); - return 0; + if (popt.only_path) + rc2 = listparam_display(&popt, pattern); + else + rc2 = getparam_display(&popt, pattern); + if (rc2 < 0 && rc == 0) + rc = rc2; + } + + return rc; } static int setparam_cmdline(int argc, char **argv, struct param_opts *popt) @@ -994,7 +996,9 @@ int jt_lcfg_setparam(int argc, char **argv) if (rc < 0 || rc >= argc) return CMD_HELP; - for (i = rc; i < argc; i++) { + for (i = rc, rc = 0; i < argc; i++) { + int rc2; + if ((value = strchr(argv[i], '=')) != NULL) { /* format: set_param a=b */ *value = '\0'; @@ -1014,13 +1018,13 @@ int jt_lcfg_setparam(int argc, char **argv) lprocfs_param_pattern(argv[0], path, pattern, sizeof(pattern)); - rc = setparam_display(&popt, pattern, value); + rc2 = setparam_display(&popt, pattern, value); path = NULL; value = NULL; - if (rc < 0) - return rc; - } + if (rc2 < 0 && rc == 0) + rc = rc2; + } - return 0; + return rc; }