summaryrefslogtreecommitdiffstats
path: root/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
diff options
context:
space:
mode:
authorSanju Rakonde <srakonde@redhat.com>2018-09-11 14:19:42 +0530
committerAtin Mukherjee <amukherj@redhat.com>2018-09-18 04:09:01 +0000
commit484f417da945cf83afdbf136bb4817311862a8d2 (patch)
tree677eaa9f90b4cf5de59598fded7abd8984014962 /xlators/mgmt/glusterd/src/glusterd-volume-ops.c
parentd345ac09548dbb486c1619a27cb70149b3ca962a (diff)
glusterd: acquire lock to update volinfo structure
Problem: With commit cb0339f92, we are using a separate syntask for restart_bricks. There can be a situation where two threads are accessing the same volinfo structure at the same time and updating volinfo structure. This can lead volinfo to have inconsistent values and assertion failures because of unexpected values. Solution: While updating the volinfo structure, acquire a store_volinfo_lock, and release the lock only when the thread completed its critical section part. Fixes: bz#1627610 Signed-off-by: Sanju Rakonde <srakonde@redhat.com> Change-Id: I545e4e2368e3285d8f7aa28081ff4448abb72f5d
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd-volume-ops.c')
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-volume-ops.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
index d4dd1dc11a8..a6561e101d5 100644
--- a/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
+++ b/xlators/mgmt/glusterd/src/glusterd-volume-ops.c
@@ -2283,6 +2283,8 @@ glusterd_op_create_volume(dict_t *dict, char **op_errstr)
goto out;
}
+ pthread_mutex_init(&volinfo->store_volinfo_lock, NULL);
+
ret = dict_get_strn(dict, "volname", SLEN("volname"), &volname);
if (ret) {