summaryrefslogtreecommitdiffstats
path: root/cli
diff options
context:
space:
mode:
authorMeghana Madhusudhan <mmadhusu@redhat.com>2015-04-20 10:41:47 +0530
committerNiels de Vos <ndevos@redhat.com>2015-05-07 02:08:43 -0700
commit4aad69a8f88acf384c812316aaa985cde2229cd7 (patch)
tree12318360918c95e89f7a40a24855e626cae0a014 /cli
parent6d82215ab95d95ace13465a3efd384e50942ea67 (diff)
NFS-Ganesha : Locking global options file
Global option gluster features.ganesha enable writes into the global 'option' file. The snapshot feature also writes into the same file. To handle concurrent multiple transactions correctly, a new lock has to be introduced on this file. Every operation using this file needs to contest for the new lock type. This is a back-port of the patch, http://review.gluster.org/#/c/10130/ Change-Id: I1fdd285814e615a13dbf8c88ad2b7ee311247f90 BUG: 1218963 Signed-off-by: Meghana Madhusudhan <mmadhusu@redhat.com> Reviewed-on: http://review.gluster.org/10606 Tested-by: Gluster Build System <jenkins@build.gluster.com> Reviewed-by: Niels de Vos <ndevos@redhat.com> Tested-by: NetBSD Build System Reviewed-by: Avra Sengupta <asengupt@redhat.com>
Diffstat (limited to 'cli')
-rw-r--r--cli/src/cli-cmd-parser.c25
-rw-r--r--cli/src/cli-rpc-ops.c4
2 files changed, 27 insertions, 2 deletions
diff --git a/cli/src/cli-cmd-parser.c b/cli/src/cli-cmd-parser.c
index d4aa61ca6b8..4fd205ed5fe 100644
--- a/cli/src/cli-cmd-parser.c
+++ b/cli/src/cli-cmd-parser.c
@@ -903,6 +903,20 @@ cli_cmd_ganesha_parse (struct cli_state *state,
goto out;
}
+ ret = dict_set_str (dict, "globalname", "All");
+ if (ret) {
+ gf_log (THIS->name, GF_LOG_ERROR, "dict set on global"
+ " key failed.");
+ goto out;
+ }
+
+ ret = dict_set_int32 (dict, "hold_global_locks", _gf_true);
+ if (ret) {
+ gf_log (THIS->name, GF_LOG_ERROR, "dict set on global key "
+ "failed.");
+ goto out;
+ }
+
*options = dict;
out:
if (ret)
@@ -4240,6 +4254,17 @@ cli_snap_config_limit_parse (const char **words, dict_t *dict,
goto out;
}
+ ret = dict_set_dynstr_with_alloc (dict, "globalname", "All");
+ if (ret) {
+ gf_log ("cli", GF_LOG_ERROR, "Could not set global key");
+ goto out;
+ }
+ ret = dict_set_int32 (dict, "hold_global_locks", _gf_true);
+ if (ret) {
+ gf_log ("cli", GF_LOG_ERROR, "Could not set global locks");
+ goto out;
+ }
+
out:
return ret;
}
diff --git a/cli/src/cli-rpc-ops.c b/cli/src/cli-rpc-ops.c
index 07fb8dc7e67..3c32e6d8a09 100644
--- a/cli/src/cli-rpc-ops.c
+++ b/cli/src/cli-rpc-ops.c
@@ -1870,9 +1870,9 @@ gf_cli_ganesha_cbk (struct rpc_req *req, struct iovec *iov,
if (rsp.op_ret) {
if (strcmp (rsp.op_errstr, ""))
- cli_err ("ganesha enable: failed: %s", rsp.op_errstr);
+ cli_err ("nfs-ganesha: failed: %s", rsp.op_errstr);
else
- cli_err ("ganesha enable: failed");
+ cli_err ("nfs-ganesha: failed");
}
else {