diff options
author | Krutika Dhananjay <kdhananj@redhat.com> | 2013-11-25 15:16:23 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-11-30 10:15:05 -0800 |
commit | 182bad8bfd099da5e742da28c4820936eb1f3867 (patch) | |
tree | 50cbf409e303d5bef128c5da08809aef75dc62b4 /cli/src/cli-rpc-ops.c | |
parent | 72f733a64abeffee23fb87a3cb397baea1dc22a4 (diff) |
cli, glusterd: More quota fixes ...
... which may be grouped under the following categories:
1. Fix incorrect cli exit status for 'quota list' cmd
2. Print appropriate error message on quota parse errors in cli
Authored by: Anuradha Talur <atalur@redhat.com>
3. glusterd: Improve quota validation during stage-op
4. Fix peer probe issues resulting from quota conf checksum mismatches
5. Enhancements to CLI output in the event of quota command failures
Authored by: Kaushal Madappa <kmadappa@redhat.com>
7. Move aux mount location from /tmp to /var/run/gluster
Authored by: Krishnan Parthasarathi <kparthas@redhat.com>
8. Fix performance issues in quota limit-usage
Authored by: Krutika Dhananjay <kdhananj@redhat.com>
Note: Some functions that were used in earlier version of quota,
that aren't called anymore have been removed.
Change-Id: I9d874f839ae5fdcfbe6d4f2d727eac091f27ac57
BUG: 969461
Signed-off-by: Krutika Dhananjay <kdhananj@redhat.com>
Reviewed-on: http://review.gluster.org/6366
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'cli/src/cli-rpc-ops.c')
-rw-r--r-- | cli/src/cli-rpc-ops.c | 64 |
1 files changed, 46 insertions, 18 deletions
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c index 07c081aff..d125a9284 100644 --- a/cli/src/cli-rpc-ops.c +++ b/cli/src/cli-rpc-ops.c @@ -2288,8 +2288,8 @@ out: static int print_quota_list_output (char *mountdir, char *default_sl, char *path) { - uint64_t used_space = 0; - uint64_t avail = 0; + int64_t used_space = 0; + int64_t avail = 0; char *used_str = NULL; char *avail_str = NULL; int ret = -1; @@ -2309,6 +2309,20 @@ print_quota_list_output (char *mountdir, char *default_sl, char *path) gf_log ("cli", GF_LOG_ERROR, "Failed to get the xattr " "trusted.glusterfs.quota.limit-set on %s. Reason : %s", mountdir, strerror (errno)); + switch (errno) { +#if defined(ENODATA) + case ENODATA: +#endif +#if defined(ENOATTR) && (ENOATTR != ENODATA) + case ENOATTR: +#endif + cli_err ("%-40s %s", path, "Limit not set"); + break; + default: + cli_err ("%-40s %s", path, strerror (errno)); + break; + } + goto out; } @@ -2371,10 +2385,20 @@ gf_cli_print_limit_list_from_dict (char *volname, dict_t *dict, if (!dict|| count <= 0) goto out; - /*To-Do: - * Proper error reporting to handle the case where none of the given - * path arguments are present or have their limits set. + /* Need to check if any quota limits are set on the volume before trying + * to list them */ + if (!_limits_set_on_volume (volname)) { + ret = 0; + cli_out ("quota: No quota configured on volume %s", volname); + goto out; + } + + /* Check if the mount is online before doing any listing */ + if (!_quota_aux_mount_online (volname)) { + ret = -1; + goto out; + } cli_out (" Path Hard-limit " "Soft-limit Used Available"); @@ -2394,9 +2418,7 @@ gf_cli_print_limit_list_from_dict (char *volname, dict_t *dict, ret = gf_canonicalize_path (path); if (ret) goto out; - snprintf (mountdir, sizeof (mountdir), "/tmp/%s%s", volname, - path); - + GLUSTERD_GET_QUOTA_AUX_MOUNT_PATH (mountdir, volname, path); ret = print_quota_list_output (mountdir, default_sl, path); } @@ -2520,12 +2542,14 @@ cli_quotad_getlimit_cbk (struct rpc_req *req, struct iovec *iov, goto out; } - if (rsp.op_ret && strcmp (rsp.op_errstr, "") == 0) { - cli_err ("quota command : failed"); - goto out; - - } else if (strcmp (rsp.op_errstr, "")) + if (rsp.op_ret) { + ret = -1; + if (strcmp (rsp.op_errstr, "")) cli_err ("quota command failed : %s", rsp.op_errstr); + else + cli_err ("quota command : failed"); + goto out; + } if (rsp.dict.dict_len) { /* Unserialize the dictionary */ @@ -2633,14 +2657,18 @@ gf_cli_quota_cbk (struct rpc_req *req, struct iovec *iov, goto out; } - if (rsp.op_ret && strcmp (rsp.op_errstr, "") == 0) { - cli_err ("quota command : failed"); - + if (rsp.op_ret) { + ret = -1; if (global_state->mode & GLUSTER_MODE_XML) goto xml_output; - goto out; - } else if (strcmp (rsp.op_errstr, "")) + + if (strcmp (rsp.op_errstr, "")) cli_err ("quota command failed : %s", rsp.op_errstr); + else + cli_err ("quota command : failed"); + + goto out; + } if (rsp.dict.dict_len) { /* Unserialize the dictionary */ |