Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
jffs2_fs_i.h
Go to the documentation of this file.
1 /*
2  * JFFS2 -- Journalling Flash File System, Version 2.
3  *
4  * Copyright © 2001-2007 Red Hat, Inc.
5  * Copyright © 2004-2010 David Woodhouse <[email protected]>
6  *
7  * Created by David Woodhouse <[email protected]>
8  *
9  * For licensing information, see the file 'LICENCE' in this directory.
10  *
11  */
12 
13 #ifndef _JFFS2_FS_I
14 #define _JFFS2_FS_I
15 
16 #include <linux/rbtree.h>
17 #include <linux/posix_acl.h>
18 #include <linux/mutex.h>
19 
21  /* We need an internal mutex similar to inode->i_mutex.
22  Unfortunately, we can't used the existing one, because
23  either the GC would deadlock, or we'd have to release it
24  before letting GC proceed. Or we'd have to put ugliness
25  into the GC code so it didn't attempt to obtain the i_mutex
26  for the inode(s) which are already locked */
27  struct mutex sem;
28 
29  /* The highest (datanode) version number used for this ino */
31 
32  /* List of data fragments which make up the file */
33  struct rb_root fragtree;
34 
35  /* There may be one datanode which isn't referenced by any of the
36  above fragments, if it contains a metadata update but no actual
37  data - or if this is a directory inode */
38  /* This also holds the _only_ dnode for symlinks/device nodes,
39  etc. */
41 
42  /* Directory entries */
44 
45  /* The target path if this is the inode of a symlink */
46  unsigned char *target;
47 
48  /* Some stuff we just have to keep in-core at all times, for each inode. */
50 
53  struct inode vfs_inode;
54 };
55 
56 #endif /* _JFFS2_FS_I */