2007-04-25 17:16:47 +04:00
|
|
|
/*
|
|
|
|
* JFFS2 -- Journalling Flash File System, Version 2.
|
|
|
|
*
|
|
|
|
* Copyright © 2001-2007 Red Hat, Inc.
|
|
|
|
*
|
|
|
|
* Created by David Woodhouse <dwmw2@infradead.org>
|
|
|
|
*
|
|
|
|
* For licensing information, see the file 'LICENCE' in this directory.
|
|
|
|
*
|
|
|
|
*/
|
2005-04-17 02:20:36 +04:00
|
|
|
|
|
|
|
#ifndef _JFFS2_FS_I
|
|
|
|
#define _JFFS2_FS_I
|
|
|
|
|
|
|
|
#include <linux/version.h>
|
|
|
|
#include <linux/rbtree.h>
|
2006-05-13 10:09:47 +04:00
|
|
|
#include <linux/posix_acl.h>
|
2005-04-17 02:20:36 +04:00
|
|
|
#include <asm/semaphore.h>
|
|
|
|
|
|
|
|
struct jffs2_inode_info {
|
2006-01-10 02:59:24 +03:00
|
|
|
/* We need an internal mutex similar to inode->i_mutex.
|
2005-04-17 02:20:36 +04:00
|
|
|
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
|
2006-01-10 02:59:24 +03:00
|
|
|
into the GC code so it didn't attempt to obtain the i_mutex
|
2005-04-17 02:20:36 +04:00
|
|
|
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 */
|
2005-11-07 14:16:07 +03:00
|
|
|
/* This also holds the _only_ dnode for symlinks/device nodes,
|
2005-04-17 02:20:36 +04:00
|
|
|
etc. */
|
|
|
|
struct jffs2_full_dnode *metadata;
|
|
|
|
|
|
|
|
/* Directory entries */
|
|
|
|
struct jffs2_full_dirent *dents;
|
|
|
|
|
2005-07-17 15:13:51 +04:00
|
|
|
/* The target path if this is the inode of a symlink */
|
|
|
|
unsigned char *target;
|
|
|
|
|
2005-04-17 02:20:36 +04:00
|
|
|
/* 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;
|
|
|
|
struct inode vfs_inode;
|
2006-05-13 10:09:47 +04:00
|
|
|
#ifdef CONFIG_JFFS2_FS_POSIX_ACL
|
|
|
|
struct posix_acl *i_acl_access;
|
|
|
|
struct posix_acl *i_acl_default;
|
|
|
|
#endif
|
2005-04-17 02:20:36 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* _JFFS2_FS_I */
|