diff options
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
-rw-r--r-- | cli/src/cli-rpc-ops.c | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index d1b39014dc9..0b6bcb54b81 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -4775,6 +4775,8 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, char *volname = NULL; char *brick = NULL; char str[1024] = {0,}; + int stats_cleared = 0; + gf1_cli_info_op info_op = GF_CLI_INFO_NONE; if (-1 == req->rpc_status) { goto out; @@ -4840,8 +4842,6 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, (rsp.op_ret) ? "unsuccessful": "successful"); break; case GF_CLI_STATS_INFO: - case GF_CLI_STATS_INFO_INCREMENTAL: - case GF_CLI_STATS_INFO_CUMULATIVE: break; default: cli_out ("volume profile on %s has been %s ", @@ -4856,11 +4856,15 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, goto out; } - if (op < GF_CLI_STATS_INFO || GF_CLI_STATS_INFO_CUMULATIVE < op) { + if (GF_CLI_STATS_INFO != op) { ret = 0; goto out; } + ret = dict_get_int32 (dict, "info-op", (int32_t*)&info_op); + if (ret) + goto out; + ret = dict_get_int32 (dict, "count", &brick_count); if (ret) goto out; @@ -4880,6 +4884,7 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, } ret = dict_get_str_boolean (dict, "nfs", _gf_false); + if (ret) snprintf (str, sizeof (str), "NFS Server : %s", brick); else @@ -4888,15 +4893,25 @@ gf_cli_profile_volume_cbk (struct rpc_req *req, struct iovec *iov, memset (str, '-', strlen (str)); cli_out ("%s", str); - snprintf (key, sizeof (key), "%d-cumulative", i); - ret = dict_get_int32 (dict, key, &interval); - if (ret == 0) { - cmd_profile_volume_brick_out (dict, i, interval); - } - snprintf (key, sizeof (key), "%d-interval", i); - ret = dict_get_int32 (dict, key, &interval); - if (ret == 0) { - cmd_profile_volume_brick_out (dict, i, interval); + if (GF_CLI_INFO_CLEAR == info_op) { + snprintf (key, sizeof (key), "%d-stats-cleared", i); + ret = dict_get_int32 (dict, key, &stats_cleared); + if (ret) + goto out; + cli_out (stats_cleared ? "Cleared stats." : + "Failed to clear stats."); + } else { + snprintf (key, sizeof (key), "%d-cumulative", i); + ret = dict_get_int32 (dict, key, &interval); + if (ret == 0) + cmd_profile_volume_brick_out (dict, i, + interval); + + snprintf (key, sizeof (key), "%d-interval", i); + ret = dict_get_int32 (dict, key, &interval); + if (ret == 0) + cmd_profile_volume_brick_out (dict, i, + interval); } i++; } |