From 29b664f062795614417b9348f40503360f9f9c56 Mon Sep 17 00:00:00 2001 From: Kaushik BV Date: Tue, 11 Jan 2011 04:47:00 +0000 Subject: mgmt/Glusterd: make nfs.mem-factor settable through CLI Signed-off-by: Kaushik BV Signed-off-by: Anand V. Avati BUG: 2277 (Regression in Gluster NFS re-read performance) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=2277 --- xlators/mgmt/glusterd/src/glusterd-volgen.c | 17 +++++++++++++++++ xlators/nfs/server/src/nfs.c | 21 ++++++++++++++++++--- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/xlators/mgmt/glusterd/src/glusterd-volgen.c b/xlators/mgmt/glusterd/src/glusterd-volgen.c index 5224a91d4af..15c5274c8fc 100644 --- a/xlators/mgmt/glusterd/src/glusterd-volgen.c +++ b/xlators/mgmt/glusterd/src/glusterd-volgen.c @@ -137,6 +137,7 @@ static struct volopt_map_entry glusterd_volopt_map[] = { {"performance.stat-prefetch", "performance/stat-prefetch", "!perf", "on"}, /* NODOC */ {"nfs.enable-ino32", "nfs/server", "nfs.enable-ino32",}, + {"nfs.mem-factor", "nfs/server", "nfs.mem-factor",}, {NULL, } }; @@ -1244,6 +1245,7 @@ build_nfs_graph (glusterfs_graph_t *graph, dict_t *mod_dict) xlator_t *nfsxl = NULL; char *skey = NULL; char *enable_ino32 = NULL; + char *mem_factor = NULL; char volume_id[64] = {0,}; int ret = 0; @@ -1316,6 +1318,21 @@ build_nfs_graph (glusterfs_graph_t *graph, dict_t *mod_dict) goto out; } } + + if (!dict_get (set_dict, "nfs.mem-factor")) { + ret = glusterd_volinfo_get (voliter, + "nfs.mem-factor", + &mem_factor); + if (ret) + goto out; + if (mem_factor) { + ret = dict_set_str (set_dict, + "nfs.mem-factor", + mem_factor); + if (ret) + goto out; + } + } memset (&cgraph, 0, sizeof (cgraph)); ret = build_client_graph (&cgraph, voliter, set_dict); if (ret) diff --git a/xlators/nfs/server/src/nfs.c b/xlators/nfs/server/src/nfs.c index f7def106005..bd53990b4b5 100644 --- a/xlators/nfs/server/src/nfs.c +++ b/xlators/nfs/server/src/nfs.c @@ -600,9 +600,10 @@ int validate_options (xlator_t *this, dict_t *options, char **op_errstr) { char *str=NULL; - gf_boolean_t nfs_ino32; - - int ret = 0; + gf_boolean_t nfs_ino32; + data_t *data = NULL; + long long lng = 0; + int ret = 0; @@ -620,6 +621,20 @@ validate_options (xlator_t *this, dict_t *options, char **op_errstr) goto out; } } + + data = dict_get (options, "nfs.mem-factor"); + if (data) { + if (gf_string2longlong (data->data, &lng) != 0) { + gf_log (this->name, GF_LOG_ERROR, "invalid number format" + "\"%s\" in option " + "\"nfs.mem-factor\" ", + data->data ); + *op_errstr = gf_strdup ("Error, Invalid number format"); + ret = -1; + goto out; + } + } + ret =0; out: return ret; -- cgit