NFS: Refactor NFS access to kernel access mask calculation
authorTrond Myklebust <trond.myklebust@primarydata.com>
Tue, 11 Jul 2017 21:54:32 +0000 (17:54 -0400)
committerAnna Schumaker <Anna.Schumaker@Netapp.com>
Fri, 21 Jul 2017 15:51:19 +0000 (11:51 -0400)
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
fs/nfs/dir.c

index 1255891e56955c79d47da0a2d934a139cf18ed8d..24b3a6748062b33de1aced7c522b9d39cc7a4cae 100644 (file)
@@ -2375,16 +2375,31 @@ void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set)
 }
 EXPORT_SYMBOL_GPL(nfs_access_add_cache);
 
+#define NFS_MAY_READ (NFS4_ACCESS_READ)
+#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \
+               NFS4_ACCESS_EXTEND | \
+               NFS4_ACCESS_DELETE)
+#define NFS_MAY_LOOKUP (NFS4_ACCESS_LOOKUP)
+#define NFS_MAY_EXECUTE (NFS4_ACCESS_EXECUTE)
+static int
+nfs_access_calc_mask(u32 access_result)
+{
+       int mask = 0;
+
+       if (access_result & NFS_MAY_READ)
+               mask |= MAY_READ;
+       if (access_result & NFS_MAY_WRITE)
+               mask |= MAY_WRITE;
+       if (access_result & NFS_MAY_LOOKUP)
+               mask |= MAY_EXEC;
+       if (access_result & NFS_MAY_EXECUTE)
+               mask |= MAY_EXEC;
+       return mask;
+}
+
 void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result)
 {
-       entry->mask = 0;
-       if (access_result & NFS4_ACCESS_READ)
-               entry->mask |= MAY_READ;
-       if (access_result &
-           (NFS4_ACCESS_MODIFY | NFS4_ACCESS_EXTEND | NFS4_ACCESS_DELETE))
-               entry->mask |= MAY_WRITE;
-       if (access_result & (NFS4_ACCESS_LOOKUP|NFS4_ACCESS_EXECUTE))
-               entry->mask |= MAY_EXEC;
+       entry->mask = nfs_access_calc_mask(access_result);
 }
 EXPORT_SYMBOL_GPL(nfs_access_set_mask);