mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-08-26 19:00:25 +00:00
![Chuck Lever](/assets/img/avatar_default.png)
Clean up. The nfsacl_encode() and nfsacl_decode() functions return negative errno values, and each call site verifies that the returned value is not negative. Change the synopsis of both of these functions to reflect this usage. Document the synopsis and return values. Reported-by: Trond Myklebust <trond.myklebust@netapp.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
62 lines
1.5 KiB
C
62 lines
1.5 KiB
C
/*
|
|
* File: linux/nfsacl.h
|
|
*
|
|
* (C) 2003 Andreas Gruenbacher <agruen@suse.de>
|
|
*/
|
|
#ifndef __LINUX_NFSACL_H
|
|
#define __LINUX_NFSACL_H
|
|
|
|
#define NFS_ACL_PROGRAM 100227
|
|
|
|
#define ACLPROC2_GETACL 1
|
|
#define ACLPROC2_SETACL 2
|
|
#define ACLPROC2_GETATTR 3
|
|
#define ACLPROC2_ACCESS 4
|
|
|
|
#define ACLPROC3_GETACL 1
|
|
#define ACLPROC3_SETACL 2
|
|
|
|
|
|
/* Flags for the getacl/setacl mode */
|
|
#define NFS_ACL 0x0001
|
|
#define NFS_ACLCNT 0x0002
|
|
#define NFS_DFACL 0x0004
|
|
#define NFS_DFACLCNT 0x0008
|
|
|
|
/* Flag for Default ACL entries */
|
|
#define NFS_ACL_DEFAULT 0x1000
|
|
|
|
#ifdef __KERNEL__
|
|
|
|
#include <linux/posix_acl.h>
|
|
#include <linux/sunrpc/xdr.h>
|
|
|
|
/* Maximum number of ACL entries over NFS */
|
|
#define NFS_ACL_MAX_ENTRIES 1024
|
|
|
|
#define NFSACL_MAXWORDS (2*(2+3*NFS_ACL_MAX_ENTRIES))
|
|
#define NFSACL_MAXPAGES ((2*(8+12*NFS_ACL_MAX_ENTRIES) + PAGE_SIZE-1) \
|
|
>> PAGE_SHIFT)
|
|
|
|
#define NFS_ACL_MAX_ENTRIES_INLINE (5)
|
|
#define NFS_ACL_INLINE_BUFSIZE ((2*(2+3*NFS_ACL_MAX_ENTRIES_INLINE)) << 2)
|
|
|
|
static inline unsigned int
|
|
nfsacl_size(struct posix_acl *acl_access, struct posix_acl *acl_default)
|
|
{
|
|
unsigned int w = 16;
|
|
w += max(acl_access ? (int)acl_access->a_count : 3, 4) * 12;
|
|
if (acl_default)
|
|
w += max((int)acl_default->a_count, 4) * 12;
|
|
return w;
|
|
}
|
|
|
|
extern int
|
|
nfsacl_encode(struct xdr_buf *buf, unsigned int base, struct inode *inode,
|
|
struct posix_acl *acl, int encode_entries, int typeflag);
|
|
extern int
|
|
nfsacl_decode(struct xdr_buf *buf, unsigned int base, unsigned int *aclcnt,
|
|
struct posix_acl **pacl);
|
|
|
|
#endif /* __KERNEL__ */
|
|
#endif /* __LINUX_NFSACL_H */
|