2007-04-25 17:16:47 +04:00
/*
* JFFS2 - - Journalling Flash File System , Version 2.
*
* Copyright © 2001 - 2007 Red Hat , Inc .
2010-08-08 17:15:22 +04:00
* Copyright © 2004 - 2010 David Woodhouse < dwmw2 @ infradead . org >
2007-04-25 17:16:47 +04:00
*
* 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/rbtree.h>
2006-05-13 10:09:47 +04:00
# include <linux/posix_acl.h>
2008-04-23 02:53:26 +04:00
# include <linux/mutex.h>
2005-04-17 02:20:36 +04:00
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 */
2008-04-22 18:13:40 +04:00
struct mutex sem ;
2005-04-17 02:20:36 +04:00
/* 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 ;
} ;
# endif /* _JFFS2_FS_I */