![KaiGai Kohei](/assets/img/avatar_default.png)
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>
56 lines
1.6 KiB
C
56 lines
1.6 KiB
C
/* $Id: jffs2_fs_i.h,v 1.19 2005/11/07 11:14:52 gleixner Exp $ */
|
|
|
|
#ifndef _JFFS2_FS_I
|
|
#define _JFFS2_FS_I
|
|
|
|
#include <linux/version.h>
|
|
#include <linux/rbtree.h>
|
|
#include <linux/posix_acl.h>
|
|
#include <asm/semaphore.h>
|
|
|
|
struct jffs2_inode_info {
|
|
/* We need an internal mutex similar to inode->i_mutex.
|
|
Unfortunately, we can't used the existing one, because
|
|
either the GC would deadlock, or we'd have to release it
|
|
before letting GC proceed. Or we'd have to put ugliness
|
|
into the GC code so it didn't attempt to obtain the i_mutex
|
|
for the inode(s) which are already locked */
|
|
struct semaphore sem;
|
|
|
|
/* The highest (datanode) version number used for this ino */
|
|
uint32_t highest_version;
|
|
|
|
/* List of data fragments which make up the file */
|
|
struct rb_root fragtree;
|
|
|
|
/* There may be one datanode which isn't referenced by any of the
|
|
above fragments, if it contains a metadata update but no actual
|
|
data - or if this is a directory inode */
|
|
/* This also holds the _only_ dnode for symlinks/device nodes,
|
|
etc. */
|
|
struct jffs2_full_dnode *metadata;
|
|
|
|
/* Directory entries */
|
|
struct jffs2_full_dirent *dents;
|
|
|
|
/* The target path if this is the inode of a symlink */
|
|
unsigned char *target;
|
|
|
|
/* Some stuff we just have to keep in-core at all times, for each inode. */
|
|
struct jffs2_inode_cache *inocache;
|
|
|
|
uint16_t flags;
|
|
uint8_t usercompr;
|
|
#if !defined (__ECOS)
|
|
#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2)
|
|
struct inode vfs_inode;
|
|
#endif
|
|
#endif
|
|
#ifdef CONFIG_JFFS2_FS_POSIX_ACL
|
|
struct posix_acl *i_acl_access;
|
|
struct posix_acl *i_acl_default;
|
|
#endif
|
|
};
|
|
|
|
#endif /* _JFFS2_FS_I */
|