[fedfs-utils] [PATCH] NFSD: Change name of extended attribute containing junction

J. Bruce Fields bfields at fieldses.org
Mon Dec 19 13:53:05 PST 2011


On Mon, Dec 19, 2011 at 02:38:43PM -0500, Chuck Lever wrote:
> As of fedfs-utils-0.8.0, user space stores all NFS junction
> information in a single extended attribute: "trusted.junction.nfs".

I suspect the break of backwards-compatibility is fine, but we should
add a note explaining it; would something like this be right?:

	This breaks compatibility with fedfs-utils versions before
	0.8.0.  As fedfs-utils has not been widely distributed, we don't
	believe this will affect anyone.

(Cc'ing jlayton: does this cause a problem for whatever just went into
Fedora?)

--b.

> 
> Both FedFS and NFS basic junctions are stored in this one attribute,
> and the intention is that all future forms of NFS junction metadata
> will be stored in this attribute.  Other protocols may use a different
> extended attribute.
> 
> Thus NFSD needs to look only for that one extended attribute.  The
> "trusted.junction.type" xattr is deprecated.
> 
> Signed-off-by: Chuck Lever <chuck.lever at oracle.com>
> ---
> 
>  fs/nfsd/vfs.c |   17 ++++++++++++++---
>  1 files changed, 14 insertions(+), 3 deletions(-)
> 
> diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
> index d1d4d5e..b494f86 100644
> --- a/fs/nfsd/vfs.c
> +++ b/fs/nfsd/vfs.c
> @@ -594,8 +594,19 @@ nfsd4_get_nfs4_acl(struct svc_rqst *rqstp, struct dentry *dentry, struct nfs4_ac
>  	return error;
>  }
>  
> -#define NFSD_XATTR_JUNCTION_PREFIX XATTR_TRUSTED_PREFIX "junction."
> -#define NFSD_XATTR_JUNCTION_TYPE NFSD_XATTR_JUNCTION_PREFIX "type"
> +/*
> + * NFS junction information is stored in an extended attribute.
> + */
> +#define NFSD_JUNCTION_XATTR_NAME	XATTR_TRUSTED_PREFIX "junction.nfs"
> +
> +/**
> + * nfsd4_is_junction - Test if an object could be an NFS junction
> + *
> + * @dentry: object to test
> + *
> + * Returns 1 if "dentry" appears to contain NFS junction information.
> + * Otherwise 0 is returned.
> + */
>  int nfsd4_is_junction(struct dentry *dentry)
>  {
>  	struct inode *inode = dentry->d_inode;
> @@ -606,7 +617,7 @@ int nfsd4_is_junction(struct dentry *dentry)
>  		return 0;
>  	if (!(inode->i_mode & S_ISVTX))
>  		return 0;
> -	if (vfs_getxattr(dentry, NFSD_XATTR_JUNCTION_TYPE, NULL, 0) <= 0)
> +	if (vfs_getxattr(dentry, NFSD_JUNCTION_XATTR_NAME, NULL, 0) <= 0)
>  		return 0;
>  	return 1;
>  }
> 



More information about the fedfs-utils-devel mailing list