Skip to content

Commit 72832a2

Browse files
fllindenTrond Myklebust
authored andcommitted
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 <[email protected]> Signed-off-by: Trond Myklebust <[email protected]>
1 parent d2ae4f8 commit 72832a2

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

fs/nfs/dir.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2673,6 +2673,10 @@ static int nfs_do_access(struct inode *inode, const struct cred *cred, int mask)
26732673
* Determine which access bits we want to ask for...
26742674
*/
26752675
cache.mask = NFS_ACCESS_READ | NFS_ACCESS_MODIFY | NFS_ACCESS_EXTEND;
2676+
if (nfs_server_capable(inode, NFS_CAP_XATTR)) {
2677+
cache.mask |= NFS_ACCESS_XAREAD | NFS_ACCESS_XAWRITE |
2678+
NFS_ACCESS_XALIST;
2679+
}
26762680
if (S_ISDIR(inode->i_mode))
26772681
cache.mask |= NFS_ACCESS_DELETE | NFS_ACCESS_LOOKUP;
26782682
else

fs/nfs/nfs4proc.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,6 +1341,12 @@ static struct nfs4_opendata *nfs4_opendata_alloc(struct dentry *dentry,
13411341
NFS4_ACCESS_MODIFY |
13421342
NFS4_ACCESS_EXTEND |
13431343
NFS4_ACCESS_EXECUTE;
1344+
#ifdef CONFIG_NFS_V4_2
1345+
if (server->caps & NFS_CAP_XATTR)
1346+
p->o_arg.access |= NFS4_ACCESS_XAREAD |
1347+
NFS4_ACCESS_XAWRITE |
1348+
NFS4_ACCESS_XALIST;
1349+
#endif
13441350
}
13451351
}
13461352
p->o_arg.clientid = server->nfs_client->cl_clientid;

0 commit comments

Comments
 (0)