NFSv4.2: query the extended attribute access bits
RFC 8276 defines separate ACCESS bits for extended attribute checking. Query them in nfs_do_access and opendata. Signed-off-by: Frank van der Linden <fllinden@amazon.com> Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
This commit is contained in:
parent
d2ae4f8b21
commit
72832a2453
|
@ -2673,6 +2673,10 @@ static int nfs_do_access(struct inode *inode, const struct cred *cred, int mask)
|
|||
* Determine which access bits we want to ask for...
|
||||
*/
|
||||
cache.mask = NFS_ACCESS_READ | NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND;
|
||||
if (nfs_server_capable(inode, NFS_CAP_XATTR)) {
|
||||
cache.mask |= NFS_ACCESS_XAREAD | NFS_ACCESS_XAWRITE |
|
||||
NFS_ACCESS_XALIST;
|
||||
}
|
||||
if (S_ISDIR(inode->i_mode))
|
||||
cache.mask |= NFS_ACCESS_DELETE | NFS_ACCESS_LOOKUP;
|
||||
else
|
||||
|
|
|
@ -1341,6 +1341,12 @@ static struct nfs4_opendata *nfs4_opendata_alloc(struct dentry *dentry,
|
|||
NFS4_ACCESS_MODIFY |
|
||||
NFS4_ACCESS_EXTEND |
|
||||
NFS4_ACCESS_EXECUTE;
|
||||
#ifdef CONFIG_NFS_V4_2
|
||||
if (server->caps & NFS_CAP_XATTR)
|
||||
p->o_arg.access |= NFS4_ACCESS_XAREAD |
|
||||
NFS4_ACCESS_XAWRITE |
|
||||
NFS4_ACCESS_XALIST;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
p->o_arg.clientid = server->nfs_client->cl_clientid;
|
||||
|
|
Loading…
Reference in New Issue