diff options
author | Kaushal M <kaushal@redhat.com> | 2014-06-16 18:56:18 +0530 |
---|---|---|
committer | Krishnan Parthasarathi <kparthas@redhat.com> | 2014-06-16 19:36:18 -0700 |
commit | 84d370774cdbc6847f4f2f64a7f47abb27a7471b (patch) | |
tree | c7c7e7a7f77c2ef03aedf47f03163bcc01462666 /xlators/mgmt/glusterd/src/glusterd-utils.c | |
parent | d3bd3319afb208acfa905696fb0be5545f5883f6 (diff) |
glusterd: Use blocking quotad start only on quota enable
Having quotad always being using the blocking runner variant is
problematic. In some cases where quotad was started from the epoll
thread, it lead to a deadlock which lead to glusterd becoming
unresponsive.
This patch makes the default quotad_start function use the non-blocking
runner_nowait variant. The blocking start is used only when quotad is
started on quota enable command.
Change-Id: Ib27042748d69ea28e68badcfaddf61589aae4eba
BUG: 1109872
Signed-off-by: Kaushal M <kaushal@redhat.com>
Reviewed-on: http://review.gluster.org/8082
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-utils.c')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index 66eb9408a6b..9c6414905c3 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -6037,6 +6037,12 @@ glusterd_shd_start () int glusterd_quotad_start () { + return glusterd_nodesvc_start ("quotad", _gf_false); +} + +int +glusterd_quotad_start_wait () +{ return glusterd_nodesvc_start ("quotad", _gf_true); } @@ -6416,6 +6422,20 @@ glusterd_check_generate_start_quotad () return ret; } +/* Blocking start variant of glusterd_check_generate_start_quotad */ +int +glusterd_check_generate_start_quotad_wait () +{ + int ret = 0; + + ret = glusterd_check_generate_start_service + (glusterd_create_quotad_volfile, glusterd_quotad_stop, + glusterd_quotad_start_wait); + if (ret == -EINVAL) + ret = 0; + return ret; +} + int glusterd_nodesvcs_batch_op (glusterd_volinfo_t *volinfo, int (*nfs_op) (), int (*shd_op) (), int (*qd_op) ()) |