[glusterd/snapshot] Glusterd crashes when a same command

eg snapshot create is fired simultaneously on a node

Cause: In glusterd_mgmt_v3_initiate_snap_phases() , the function
glusterd_mgmt_v3_post_validate() asserts on the NULL value of
req_dic. req_dic is not initialized as
glusterd_mgmt_v3_initiate_lockdown() is not able to acquire the lock
and comes to the "out" section, before initializing req_dic
(via glusterd_mgmt_v3_build_payload)

Fix: Call glusterd_mgmt_v3_post_validate() only if the lock is
acquired.

Change-Id: I7cb55b6c0013ad1c8bbb922a62c34aab097bafe9
BUG: 1090047
Signed-off-by: Joseph Fernandes <josferna@redhat.com>
Reviewed-on: http://review.gluster.org/7500
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Rajesh Joseph <rjoseph@redhat.com>
Reviewed-by: Vijay Bellur <vbellur@redhat.com>
This commit is contained in:
Joseph Fernandes 2014-04-17 19:42:06 +05:30 committed by Vijay Bellur
parent 45d70cc748
commit 48043e3c11

View File

@ -1306,7 +1306,7 @@ glusterd_mgmt_v3_post_validate (glusterd_conf_t *conf, glusterd_op_t op,
GF_ASSERT (this);
GF_ASSERT (conf);
GF_ASSERT (dict);
GF_ASSERT (req_dict);
GF_VALIDATE_OR_GOTO (this->name, req_dict, out);
GF_ASSERT (op_errstr);
peers = &conf->xaction_peers;