diff options
author | Raghavendra G <rgowdapp@redhat.com> | 2013-12-23 14:54:05 +0530 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2014-01-28 22:46:35 -0800 |
commit | bae348ef599463a974781083a5999991dbb8ecbb (patch) | |
tree | e06f56c0db5d2138769f791a11e4c4e9bee02a88 /xlators/mgmt/glusterd/src/glusterd-utils.c | |
parent | 53ac35ebd24cffa420a73c3b2ab43c994c9b7861 (diff) |
mgmt/glusterd: make sure quota enforcer has established connection with quotad before marking quota as enabled.
without this patch there is a window of time when quota is marked as
enabled in quota-enforcer, but connection to quotad wouldn't have been
established. Any checklimit done during this period can result in a
failed fop because of unavailability of quotad.
Change-Id: I0d509fabc434dd55ce9ec59157123524197fcc80
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
BUG: 969461
Signed-off-by: Raghavendra G <rgowdapp@redhat.com>
Reviewed-on: http://review.gluster.org/6572
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Reviewed-on: http://review.gluster.org/6820
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index e2e363bc311..593bddfda78 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -3967,7 +3967,7 @@ glusterd_nodesvc_disconnect (char *server) } int32_t -glusterd_nodesvc_start (char *server) +glusterd_nodesvc_start (char *server, gf_boolean_t wait) { int32_t ret = -1; xlator_t *this = NULL; @@ -4053,7 +4053,16 @@ glusterd_nodesvc_start (char *server) runner_log (&runner, "", GF_LOG_DEBUG, "Starting the nfs/glustershd services"); - ret = runner_run_nowait (&runner); + if (!wait) { + ret = runner_run_nowait (&runner); + } else { + synclock_unlock (&priv->big_lock); + { + ret = runner_run (&runner); + } + synclock_lock (&priv->big_lock); + } + if (ret == 0) { glusterd_nodesvc_connect (server, sockfpath); } @@ -4064,19 +4073,19 @@ out: int glusterd_nfs_server_start () { - return glusterd_nodesvc_start ("nfs"); + return glusterd_nodesvc_start ("nfs", _gf_false); } int glusterd_shd_start () { - return glusterd_nodesvc_start ("glustershd"); + return glusterd_nodesvc_start ("glustershd", _gf_false); } int glusterd_quotad_start () { - return glusterd_nodesvc_start ("quotad"); + return glusterd_nodesvc_start ("quotad", _gf_true); } gf_boolean_t |