Re: [PATCH 1/1] NFSv4.1 fs_locations compound request fileid

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2011-06-02 at 11:17 -0400, andros@xxxxxxxxxx wrote: 
> From: Andy Adamson <andros@xxxxxxxxxx>
> 
> Commit 28331a46d88459788c8fca72dbb0415cd7f514c9 "Ensure we request the
> ordinary fileid when doing readdirplus"
> changed the meaning of NFS_ATTR_FATTR_FILEID which used to be set when
> FATTR4_WORD1_MOUNTED_ON_FILED was requested. Request FATTR4_WORD0_FILEID
> in the nfs4_proc_fs_locations GETATTR so that nfs_fhget succeeds and
> the referral is mounted.
> 
> Signed-off-by: Andy Adamson <andros@xxxxxxxxxx>
> ---
>  fs/nfs/nfs4proc.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
> index d2c4b59..d99c5f8 100644
> --- a/fs/nfs/nfs4proc.c
> +++ b/fs/nfs/nfs4proc.c
> @@ -4685,7 +4685,8 @@ int nfs4_proc_fs_locations(struct inode *dir, const struct qstr *name,
>  {
>  	struct nfs_server *server = NFS_SERVER(dir);
>  	u32 bitmask[2] = {
> -		[0] = FATTR4_WORD0_FSID | FATTR4_WORD0_FS_LOCATIONS,
> +		[0] = FATTR4_WORD0_FSID | FATTR4_WORD0_FS_LOCATIONS |
> +		      FATTR4_WORD0_FILEID,
>  		[1] = FATTR4_WORD1_MOUNTED_ON_FILEID,
>  	};
>  	struct nfs4_fs_locations_arg args = {

Nope. We can't do this...

The ordinary fileid is _not_ supposed to be supported for an absent
filesystem. See RFC3530bis, section 7.3.1.

The correct thing to do here is rather to allow the nfs_fhget() to
succeed with only a mounted_on_fileid if (and only if!)
NFS_ATTR_FATTR_MOUNTPOINT or NFS_ATTR_FATTR_V4_REFERRAL are set.

Cheers
  Trond

-- 
Trond Myklebust
Linux NFS client maintainer

NetApp
Trond.Myklebust@xxxxxxxxxx
www.netapp.com

--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux