diff options
author | Vijaikumar M <vmallika@redhat.com> | 2014-05-06 14:56:23 +0530 |
---|---|---|
committer | Krishnan Parthasarathi <kparthas@redhat.com> | 2014-05-08 22:24:56 -0700 |
commit | 26043d1f8ed6892aca47abcb75cedfdc51e86a0a (patch) | |
tree | 20f096c086d26bbc2e80e09dda2b9def69e7719f /xlators/mgmt/glusterd/src/glusterd.h | |
parent | 5dda1d4e00b8235656b7e4e8de35f599bf033148 (diff) |
glusterd/snapshot: Don't release big_lock before completing snapshot creation
Releasing the big-lock can cause problem like deadlock or memory
corruption.
Same happened with bug 1091926 where glusterd on node-2 entered a commit
phase and released a big-lock.
The originator node received timeout for the commit phase and
triggered a post-validate cleanup to the node-2.
Now node-2 continued to work with the object that are alreday cleaned-up
and resulted in a crash.
Solution is to not to release big-lock in the commit phase of snapshot
creation.
Change-Id: I571194fdb0b0ecc91bd13f2a9fc92fe4338d14dc
BUG: 1091926
Signed-off-by: Vijaikumar M <vmallika@redhat.com>
Reviewed-on: http://review.gluster.org/7579
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Krishnan Parthasarathi <kparthas@redhat.com>
Diffstat (limited to 'xlators/mgmt/glusterd/src/glusterd.h')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd.h b/xlators/mgmt/glusterd/src/glusterd.h index 2304e75bc5b..bf4a8e283d6 100644 --- a/xlators/mgmt/glusterd/src/glusterd.h +++ b/xlators/mgmt/glusterd/src/glusterd.h @@ -946,7 +946,9 @@ int glusterd_op_statedump_volume_args_get (dict_t *dict, char **volname, int glusterd_op_gsync_args_get (dict_t *dict, char **op_errstr, char **master, char **slave, char **host_uuid); -int glusterd_start_volume (glusterd_volinfo_t *volinfo, int flags); +int glusterd_start_volume (glusterd_volinfo_t *volinfo, int flags, + gf_boolean_t wait); + int glusterd_stop_volume (glusterd_volinfo_t *volinfo); /* Synctask part */ |