diff options
author | Bipin Kunal <bkunal@redhat.com> | 2017-02-27 15:23:04 +0530 |
---|---|---|
committer | Raghavendra Talur <rtalur@redhat.com> | 2017-04-27 10:44:44 +0000 |
commit | 04730eda1794d89e1cc186c16a504e4586196988 (patch) | |
tree | 1acffe586a180031124fc3a463761f3cf6ff6c7e /api | |
parent | 03eaf84c17d13eff24396e3bf51acae1f219c681 (diff) |
nfs: make subdir mounting work for Solaris 10 clients
This fixes the segfault caused by solaris client in Gluster/NFS.
Volname was not being parsed properly, Instead of volume
name complete path was being used in nfs_mntpath_to_xlator().
Fixed it by striping volume name from complete path in nfs_mntpath_to_xlator().
Modified function name nfs3_funge_solaris_zerolen_fh() to
nfs3_funge_webnfs_zerolen_fh() as zero-filled filehandle is specific to WebNFS.
RFC : https://tools.ietf.org/html/rfc2055
Solaris uses WebNFS, the zero-filled FH is defined in the WebNFS spec.
Logic was even added in fuction nfs3_funge_webnfs_zerolen_fh() to send
subdir path in function glfs_resolve_at() instead of complete path for
subdir mount.
> Change-Id: I19aae3547b8910e7ed4974ee5385424cab3e834a
> BUG: 1426667
> Signed-off-by: Bipin Kunal <bkunal@redhat.com>
> Reviewed-on: https://review.gluster.org/16770
> Reviewed-by: Niels de Vos <ndevos@redhat.com>
> Smoke: Gluster Build System <jenkins@build.gluster.org>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
> (cherry picked from commit 40e571339b3c19ab2a5b6a93bc46eadf2252d006)
Change-Id: I0adfb1555be0c5bb43941530c5d87a820929a3cf
BUG: 1440278
Signed-off-by: Bipin Kunal <bkunal@redhat.com>
Reviewed-on: https://review.gluster.org/17018
Smoke: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Niels de Vos <ndevos@redhat.com>
Diffstat (limited to 'api')
-rw-r--r-- | api/src/glfs-resolve.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/api/src/glfs-resolve.c b/api/src/glfs-resolve.c index f8b437bab0e..d495cd21413 100644 --- a/api/src/glfs-resolve.c +++ b/api/src/glfs-resolve.c @@ -385,6 +385,9 @@ priv_glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at, int ret = -1; struct iatt ciatt = {0, }; + DECLARE_OLD_THIS; + __GLFS_ENTRY_VALIDATE_FS(fs, invalid_fs); + path = gf_strdup (origpath); if (!path) { errno = ENOMEM; @@ -510,9 +513,10 @@ priv_glfs_resolve_at (struct glfs *fs, xlator_t *subvol, inode_t *at, } out: GF_FREE (path); + __GLFS_EXIT_FS; /* do NOT loc_wipe here as only last component might be missing */ - +invalid_fs: return ret; } |