Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3c394dda authored by Steve Dickson's avatar Steve Dickson Committed by J. Bruce Fields
Browse files

nfsd4: nfsv4 clients should cross mountpoints



Allow NFS v4 clients to seamlessly cross mount point without
have to set either the 'crossmnt' or the 'nohide' export
options.

Signed-Off-By: default avatarSteve Dickson <steved@redhat.com>
Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
parent 285a0f00
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -89,6 +89,12 @@ struct raparm_hbucket {
#define RAPARM_HASH_MASK	(RAPARM_HASH_SIZE-1)
static struct raparm_hbucket	raparm_hash[RAPARM_HASH_SIZE];

static inline int
nfsd_v4client(struct svc_rqst *rq)
{
    return rq->rq_prog == NFS_PROGRAM && rq->rq_vers == 4;
}

/* 
 * Called from nfsd_lookup and encode_dirent. Check if we have crossed 
 * a mount point.
@@ -115,7 +121,8 @@ nfsd_cross_mnt(struct svc_rqst *rqstp, struct dentry **dpp,
		path_put(&path);
		goto out;
	}
	if ((exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) {
	if (nfsd_v4client(rqstp) ||
		(exp->ex_flags & NFSEXP_CROSSMOUNT) || EX_NOHIDE(exp2)) {
		/* successfully crossed mount point */
		/*
		 * This is subtle: path.dentry is *not* on path.mnt