aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <trond.myklebust@primarydata.com>2017-07-11 17:54:32 -0400
committerAnna Schumaker <Anna.Schumaker@Netapp.com>2017-07-21 11:51:19 -0400
commit15d4b73ac2232d6f2beb61d8b2400ea66e4da606 (patch)
tree18e3f28f6b4e33aed2750283eed0ae5f2116a685
parent3ffbc1d65583394be12801655781dd2b079ce169 (diff)
NFS: Refactor NFS access to kernel access mask calculation
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
-rw-r--r--fs/nfs/dir.c31
1 files changed, 23 insertions, 8 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 1255891e5695..24b3a6748062 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -2375,16 +2375,31 @@ void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set)
2375} 2375}
2376EXPORT_SYMBOL_GPL(nfs_access_add_cache); 2376EXPORT_SYMBOL_GPL(nfs_access_add_cache);
2377 2377
2378#define NFS_MAY_READ (NFS4_ACCESS_READ)
2379#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \
2380 NFS4_ACCESS_EXTEND | \
2381 NFS4_ACCESS_DELETE)
2382#define NFS_MAY_LOOKUP (NFS4_ACCESS_LOOKUP)
2383#define NFS_MAY_EXECUTE (NFS4_ACCESS_EXECUTE)
2384static int
2385nfs_access_calc_mask(u32 access_result)
2386{
2387 int mask = 0;
2388
2389 if (access_result & NFS_MAY_READ)
2390 mask |= MAY_READ;
2391 if (access_result & NFS_MAY_WRITE)
2392 mask |= MAY_WRITE;
2393 if (access_result & NFS_MAY_LOOKUP)
2394 mask |= MAY_EXEC;
2395 if (access_result & NFS_MAY_EXECUTE)
2396 mask |= MAY_EXEC;
2397 return mask;
2398}
2399
2378void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result) 2400void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result)
2379{ 2401{
2380 entry->mask = 0; 2402 entry->mask = nfs_access_calc_mask(access_result);
2381 if (access_result & NFS4_ACCESS_READ)
2382 entry->mask |= MAY_READ;
2383 if (access_result &
2384 (NFS4_ACCESS_MODIFY | NFS4_ACCESS_EXTEND | NFS4_ACCESS_DELETE))
2385 entry->mask |= MAY_WRITE;
2386 if (access_result & (NFS4_ACCESS_LOOKUP|NFS4_ACCESS_EXECUTE))
2387 entry->mask |= MAY_EXEC;
2388} 2403}
2389EXPORT_SYMBOL_GPL(nfs_access_set_mask); 2404EXPORT_SYMBOL_GPL(nfs_access_set_mask);
2390 2405