alistair23-linux/fs/jffs2/acl.h
KaiGai Kohei aa98d7cf59 [JFFS2][XATTR] XATTR support on JFFS2 (version. 5)
This attached patches provide xattr support including POSIX-ACL and
SELinux support on JFFS2 (version.5).

There are some significant differences from previous version posted
at last December.
The biggest change is addition of EBS(Erase Block Summary) support.
Currently, both kernel and usermode utility (sumtool) can recognize
xattr nodes which have JFFS2_NODETYPE_XATTR/_XREF nodetype.

In addition, some bugs are fixed.
- A potential race condition was fixed.
- Unexpected fail when updating a xattr by same name/value pair was fixed.
- A bug when removing xattr name/value pair was fixed.

The fundamental structures (such as using two new nodetypes and exclusion
mechanism by rwsem) are unchanged. But most of implementation were reviewed
and updated if necessary.
Espacially, we had to change several internal implementations related to
load_xattr_datum() to avoid a potential race condition.

[1/2] xattr_on_jffs2.kernel.version-5.patch
[2/2] xattr_on_jffs2.utils.version-5.patch

Signed-off-by: KaiGai Kohei <kaigai@ak.jp.nec.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
2006-05-13 15:09:47 +09:00

47 lines
1.2 KiB
C

/*-------------------------------------------------------------------------*
* File: fs/jffs2/acl.h
* POSIX ACL support on JFFS2 FileSystem
*
* Implemented by KaiGai Kohei <kaigai@ak.jp.nec.com>
* Copyright (C) 2006 NEC Corporation
*
* For licensing information, see the file 'LICENCE' in the jffs2 directory.
*-------------------------------------------------------------------------*/
typedef struct {
jint16_t e_tag;
jint16_t e_perm;
jint32_t e_id;
} jffs2_acl_entry;
typedef struct {
jint16_t e_tag;
jint16_t e_perm;
} jffs2_acl_entry_short;
typedef struct {
jint32_t a_version;
} jffs2_acl_header;
#ifdef __KERNEL__
#ifdef CONFIG_JFFS2_FS_POSIX_ACL
#define JFFS2_ACL_NOT_CACHED ((void *)-1)
extern int jffs2_permission(struct inode *, int, struct nameidata *);
extern int jffs2_acl_chmod(struct inode *);
extern int jffs2_init_acl(struct inode *, struct inode *);
extern void jffs2_clear_acl(struct inode *);
extern struct xattr_handler jffs2_acl_access_xattr_handler;
extern struct xattr_handler jffs2_acl_default_xattr_handler;
#else
#define jffs2_permission NULL
#define jffs2_acl_chmod(inode) (0)
#define jffs2_init_acl(inode,dir) (0)
#define jffs2_clear_acl(inode)
#endif /* CONFIG_JFFS2_FS_POSIX_ACL */
#endif /* __KERNEL__ */