From e3808ac86f8ff5baebea59e610a791cef5f5f2c9 Mon Sep 17 00:00:00 2001 From: Shehjar Tikoo Date: Mon, 8 Nov 2010 06:25:18 +0000 Subject: nfs: Support nfs.port to allow changing nfs port numbers Signed-off-by: Shehjar Tikoo Signed-off-by: Anand V. Avati BUG: 1743 (XenServer is not compatible with GlusterNFS) URL: http://bugs.gluster.com/cgi-bin/bugzilla3/show_bug.cgi?id=1743 --- xlators/nfs/server/src/nfs.c | 25 +++++++++++++++++++++++++ xlators/nfs/server/src/nfs.h | 1 + 2 files changed, 26 insertions(+) (limited to 'xlators/nfs') diff --git a/xlators/nfs/server/src/nfs.c b/xlators/nfs/server/src/nfs.c index 3dbb0bc45..ec939a55e 100644 --- a/xlators/nfs/server/src/nfs.c +++ b/xlators/nfs/server/src/nfs.c @@ -120,6 +120,8 @@ nfs_init_versions (struct nfs_state *nfs, xlator_t *this) goto err; } + if (nfs->override_portnum) + prog->progport = nfs->override_portnum; gf_log (GF_NFS, GF_LOG_DEBUG, "Starting program: %s", prog->progname); ret = nfs_rpcsvc_program_register (nfs->rpcsvc, *prog); @@ -539,6 +541,24 @@ nfs_init_state (xlator_t *this) if (boolt == _gf_true) nfs->enable_ino32 = 1; } + + nfs->override_portnum = 0; + if (dict_get (this->options, "nfs.port")) { + ret = dict_get_str (this->options, "nfs.port", + &optstr); + if (ret < 0) { + gf_log (GF_NFS, GF_LOG_ERROR, "Failed to parse dict"); + goto free_foppool; + } + + ret = gf_string2uint (optstr, &nfs->override_portnum); + if (ret < 0) { + gf_log (GF_NFS, GF_LOG_ERROR, "Failed to parse uint " + "string"); + goto free_foppool; + } + } + this->private = (void *)nfs; INIT_LIST_HEAD (&nfs->versions); @@ -865,6 +885,11 @@ struct volume_options options[] = { "portmap service. Use this option to turn off portmap " "registration for Gluster NFS. On by default" }, + { .key = {"nfs.port"}, + .type = GF_OPTION_TYPE_INT, + .description = "Use this option on systems that need Gluster NFS to " + "be associated with a non-default port number." + }, { .key = {NULL} }, }; diff --git a/xlators/nfs/server/src/nfs.h b/xlators/nfs/server/src/nfs.h index 8cbcf63bb..6d7ed2f04 100644 --- a/xlators/nfs/server/src/nfs.h +++ b/xlators/nfs/server/src/nfs.h @@ -74,6 +74,7 @@ struct nfs_state { int subvols_started; int dynamicvolumes; int enable_ino32; + unsigned int override_portnum; }; #define gf_nfs_dvm_on(nfsstt) (((struct nfs_state *)nfsstt)->dynamicvolumes == GF_NFS_DVM_ON) -- cgit