diff options
Diffstat (limited to 'fs/nfs/dir.c')
| -rw-r--r-- | fs/nfs/dir.c | 16 | 
1 files changed, 15 insertions, 1 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index 627f108ede2..ce8cb926526 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c @@ -2072,7 +2072,7 @@ found:  	nfs_access_free_entry(entry);  } -static void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set) +void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set)  {  	struct nfs_access_entry *cache = kmalloc(sizeof(*cache), GFP_KERNEL);  	if (cache == NULL) @@ -2098,6 +2098,20 @@ static void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *s  		spin_unlock(&nfs_access_lru_lock);  	}  } +EXPORT_SYMBOL_GPL(nfs_access_add_cache); + +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; +} +EXPORT_SYMBOL_GPL(nfs_access_set_mask);  static int nfs_do_access(struct inode *inode, struct rpc_cred *cred, int mask)  {  |