summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/mgmt')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-quota.c41
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-utils.c26
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volume-ops.c10
3 files changed, 46 insertions, 31 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-quota.c b/xlators/mgmt/glusterd/src/glusterd-quota.c
index ec4a6eb8..307b16d8 100644
--- a/xlators/mgmt/glusterd/src/glusterd-quota.c
+++ b/xlators/mgmt/glusterd/src/glusterd-quota.c
@@ -941,6 +941,36 @@ glusterd_set_quota_option (glusterd_volinfo_t *volinfo, dict_t *dict,
return 0;
}
+static int
+glusterd_quotad_op (int opcode)
+{
+ int ret = -1;
+
+ switch (opcode) {
+ case GF_QUOTA_OPTION_TYPE_ENABLE:
+ case GF_QUOTA_OPTION_TYPE_DISABLE:
+
+ if (glusterd_all_volumes_with_quota_stopped ())
+ ret = glusterd_quotad_stop ();
+ else
+ ret = glusterd_check_generate_start_quotad ();
+ break;
+
+ case GF_QUOTA_OPTION_TYPE_DEFAULT_SOFT_LIMIT:
+ case GF_QUOTA_OPTION_TYPE_HARD_TIMEOUT:
+ case GF_QUOTA_OPTION_TYPE_SOFT_TIMEOUT:
+ case GF_QUOTA_OPTION_TYPE_ALERT_TIME:
+
+ ret = glusterd_reconfigure_quotad ();
+ break;
+
+ default:
+ ret = 0;
+ break;
+ }
+ return ret;
+}
+
int
glusterd_op_quota (dict_t *dict, char **op_errstr, dict_t *rsp_dict)
{
@@ -1096,15 +1126,8 @@ out:
if (rsp_dict && start_crawl == _gf_true)
glusterd_quota_initiate_fs_crawl (priv, volname);
- if (priv->op_version > GD_OP_VERSION_MIN &&
- is_origin_glusterd ()) {
- if (type != GF_QUOTA_OPTION_TYPE_LIST) {
- if (glusterd_all_volumes_with_quota_stopped ())
- ret = glusterd_quotad_stop ();
- else
- ret = glusterd_check_generate_start_quotad ();
- }
- }
+ if (priv->op_version > GD_OP_VERSION_MIN)
+ ret = glusterd_quotad_op (type);
if (rsp_dict && *op_errstr) {
ret = dict_set_dynstr (rsp_dict, "errstr", *op_errstr);
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c
index 4a2b9454..5f02cc5b 100644
--- a/xlators/mgmt/glusterd/src/glusterd-utils.c
+++ b/xlators/mgmt/glusterd/src/glusterd-utils.c
@@ -3825,25 +3825,23 @@ glusterd_nodesvcs_batch_op (glusterd_volinfo_t *volinfo, int (*nfs_op) (),
if (ret)
goto out;
- if (volinfo && !glusterd_is_volume_replicate (volinfo))
- goto quotad_op;
+ if (volinfo && !glusterd_is_volume_replicate (volinfo)) {
+ ; //do nothing
+ } else {
+ ret = shd_op ();
+ if (ret)
+ goto out;
+ }
- ret = shd_op ();
- if (ret)
+ if (conf->op_version == GD_OP_VERSION_MIN)
goto out;
-quotad_op:
-
- if (conf->op_version == GD_OP_VERSION_MIN)
+ if (volinfo && !glusterd_is_volume_quota_enabled (volinfo))
goto out;
- if (is_origin_glusterd ()) {
- if (volinfo && !glusterd_is_volume_quota_enabled (volinfo))
- goto out;
- ret = qd_op ();
- if (ret)
- goto out;
- }
+ ret = qd_op ();
+ if (ret)
+ goto out;
out:
return ret;
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
index 1b860df2..e6d12f04 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
@@ -1860,16 +1860,10 @@ glusterd_op_statedump_volume (dict_t *dict, char **op_errstr)
goto out;
} else if (strstr (options, "quotad")) {
- if (is_origin_glusterd()) {
- ret = glusterd_quotad_statedump (options, option_cnt,
- op_errstr);
+ ret = glusterd_quotad_statedump (options, option_cnt,
+ op_errstr);
if (ret)
goto out;
- } else {
- ret = 0;
- goto out;
- }
-
} else {
list_for_each_entry (brickinfo, &volinfo->bricks,
brick_list) {