mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 14:13:01 -04:00
make generic_acl slightly more generic
Now that we cache the ACL pointers in the generic inode all the generic_acl cruft can go away and generic_acl.c can directly implement xattr handlers dealing with the full Posix ACL semantics for in-memory filesystems. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
431547b3c4
commit
1c7c474c31
6 changed files with 109 additions and 257 deletions
|
|
@ -1,36 +1,15 @@
|
|||
/*
|
||||
* include/linux/generic_acl.h
|
||||
*
|
||||
* (C) 2005 Andreas Gruenbacher <agruen@suse.de>
|
||||
*
|
||||
* This file is released under the GPL.
|
||||
*/
|
||||
#ifndef LINUX_GENERIC_ACL_H
|
||||
#define LINUX_GENERIC_ACL_H
|
||||
|
||||
#ifndef GENERIC_ACL_H
|
||||
#define GENERIC_ACL_H
|
||||
#include <linux/xattr.h>
|
||||
|
||||
#include <linux/posix_acl.h>
|
||||
#include <linux/posix_acl_xattr.h>
|
||||
struct inode;
|
||||
|
||||
/**
|
||||
* struct generic_acl_operations - filesystem operations
|
||||
*
|
||||
* Filesystems must make these operations available to the generic
|
||||
* operations.
|
||||
*/
|
||||
struct generic_acl_operations {
|
||||
struct posix_acl *(*getacl)(struct inode *, int);
|
||||
void (*setacl)(struct inode *, int, struct posix_acl *);
|
||||
};
|
||||
extern struct xattr_handler generic_acl_access_handler;
|
||||
extern struct xattr_handler generic_acl_default_handler;
|
||||
|
||||
size_t generic_acl_list(struct inode *, struct generic_acl_operations *, int,
|
||||
char *, size_t);
|
||||
int generic_acl_get(struct inode *, struct generic_acl_operations *, int,
|
||||
void *, size_t);
|
||||
int generic_acl_set(struct inode *, struct generic_acl_operations *, int,
|
||||
const void *, size_t);
|
||||
int generic_acl_init(struct inode *, struct inode *,
|
||||
struct generic_acl_operations *);
|
||||
int generic_acl_chmod(struct inode *, struct generic_acl_operations *);
|
||||
int generic_acl_init(struct inode *, struct inode *);
|
||||
int generic_acl_chmod(struct inode *);
|
||||
int generic_check_acl(struct inode *inode, int mask);
|
||||
|
||||
#endif
|
||||
#endif /* LINUX_GENERIC_ACL_H */
|
||||
|
|
|
|||
|
|
@ -41,20 +41,4 @@ static inline struct shmem_inode_info *SHMEM_I(struct inode *inode)
|
|||
extern int init_tmpfs(void);
|
||||
extern int shmem_fill_super(struct super_block *sb, void *data, int silent);
|
||||
|
||||
#ifdef CONFIG_TMPFS_POSIX_ACL
|
||||
int shmem_check_acl(struct inode *, int);
|
||||
int shmem_acl_init(struct inode *, struct inode *);
|
||||
|
||||
extern struct xattr_handler shmem_xattr_acl_access_handler;
|
||||
extern struct xattr_handler shmem_xattr_acl_default_handler;
|
||||
|
||||
extern struct generic_acl_operations shmem_acl_ops;
|
||||
|
||||
#else
|
||||
static inline int shmem_acl_init(struct inode *inode, struct inode *dir)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
#endif /* CONFIG_TMPFS_POSIX_ACL */
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue