From 4aad69a8f88acf384c812316aaa985cde2229cd7 Mon Sep 17 00:00:00 2001 From: Meghana Madhusudhan Date: Mon, 20 Apr 2015 10:41:47 +0530 Subject: 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 Reviewed-on: http://review.gluster.org/10606 Tested-by: Gluster Build System Reviewed-by: Niels de Vos Tested-by: NetBSD Build System Reviewed-by: Avra Sengupta --- cli/src/cli-cmd-parser.c | 25 +++++++++++++++++++++++++ cli/src/cli-rpc-ops.c | 4 ++-- 2 files changed, 27 insertions(+), 2 deletions(-) (limited to 'cli') 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 { -- cgit