diff options
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-quota.c')
| -rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-quota.c | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-quota.c b/xlators/mgmt/glusterd/src/glusterd-quota.c index 7b793f6f0..318267199 100644 --- a/xlators/mgmt/glusterd/src/glusterd-quota.c +++ b/xlators/mgmt/glusterd/src/glusterd-quota.c @@ -25,7 +25,7 @@ #include <sys/wait.h> int -glusterd_handle_quota (rpcsvc_request_t *req) +__glusterd_handle_quota (rpcsvc_request_t *req) { int32_t ret = -1; gf_cli_req cli_req = {{0,}}; @@ -39,6 +39,7 @@ glusterd_handle_quota (rpcsvc_request_t *req) GF_ASSERT (req); this = THIS; + GF_ASSERT (this); ret = xdr_to_generic (req->msg[0], &cli_req, (xdrproc_t)xdr_gf_cli_req); if (ret < 0) { @@ -98,24 +99,25 @@ glusterd_handle_quota (rpcsvc_request_t *req) strncpy (operation, "remove", sizeof (operation)); break; } - ret = glusterd_op_begin (req, GD_OP_QUOTA, dict, msg, sizeof (msg)); + ret = glusterd_op_begin_synctask (req, GD_OP_QUOTA, dict); out: - glusterd_friend_sm (); - glusterd_op_sm (); - if (ret) { if (msg[0] == '\0') snprintf (msg, sizeof (msg), "Operation failed"); ret = glusterd_op_send_cli_response (cli_op, ret, 0, req, dict, msg); - if (dict) - dict_unref (dict); } return ret; } +int +glusterd_handle_quota (rpcsvc_request_t *req) +{ + return glusterd_big_locked_handler (req, __glusterd_handle_quota); +} + int32_t glusterd_check_if_quota_trans_enabled (glusterd_volinfo_t *volinfo) { @@ -261,7 +263,9 @@ glusterd_quota_initiate_fs_crawl (glusterd_conf_t *priv, char *volname) "-l", DEFAULT_LOG_FILE_DIRECTORY"/quota-crawl.log", mountdir, NULL); + synclock_unlock (&priv->big_lock); ret = runner_run_reuse (&runner); + synclock_lock (&priv->big_lock); if (ret == -1) { runner_log (&runner, "glusterd", GF_LOG_DEBUG, "command failed"); runner_end (&runner); @@ -380,18 +384,17 @@ glusterd_quota_get_limit_usages (glusterd_conf_t *priv, glusterd_volinfo_t *volinfo, char *volname, dict_t *dict, - char **op_errstr) + char **op_errstr, + dict_t *rsp_dict) { int32_t i = 0; int32_t ret = 0; int32_t count = 0; char *path = NULL; - dict_t *ctx = NULL; char cmd_str [1024] = {0, }; char *ret_str = NULL; - ctx = glusterd_op_get_ctx (); - if (ctx == NULL) + if (rsp_dict == NULL) return 0; ret = dict_get_int32 (dict, "count", &count); @@ -415,7 +418,7 @@ glusterd_quota_get_limit_usages (glusterd_conf_t *priv, } if (ret_str) { - ret = dict_set_dynstr (ctx, "limit_list", ret_str); + ret = dict_set_dynstr (rsp_dict, "limit_list", ret_str); } out: return ret; @@ -670,12 +673,11 @@ out: int -glusterd_op_quota (dict_t *dict, char **op_errstr) +glusterd_op_quota (dict_t *dict, char **op_errstr, dict_t *rsp_dict) { glusterd_volinfo_t *volinfo = NULL; int32_t ret = -1; char *volname = NULL; - dict_t *ctx = NULL; int type = -1; gf_boolean_t start_crawl = _gf_false; glusterd_conf_t *priv = NULL; @@ -740,7 +742,7 @@ glusterd_op_quota (dict_t *dict, char **op_errstr) } ret = glusterd_quota_get_limit_usages (priv, volinfo, volname, - dict, op_errstr); + dict, op_errstr, rsp_dict); goto out; } @@ -763,12 +765,11 @@ create_vol: ret = 0; out: - ctx = glusterd_op_get_ctx (); - if (ctx && start_crawl == _gf_true) + if (rsp_dict && start_crawl == _gf_true) glusterd_quota_initiate_fs_crawl (priv, volname); - if (ctx && *op_errstr) { - ret = dict_set_dynstr (ctx, "errstr", *op_errstr); + if (rsp_dict && *op_errstr) { + ret = dict_set_dynstr (rsp_dict, "errstr", *op_errstr); if (ret) { GF_FREE (*op_errstr); gf_log ("", GF_LOG_DEBUG, |
