Commit | Line | Data |
---|---|---|
2b79adcc | 1 | /* $Id: jffs2_fs_i.h,v 1.18 2005/07/17 11:13:48 dedekind Exp $ */ |
1da177e4 LT |
2 | |
3 | #ifndef _JFFS2_FS_I | |
4 | #define _JFFS2_FS_I | |
5 | ||
6 | #include <linux/version.h> | |
7 | #include <linux/rbtree.h> | |
8 | #include <asm/semaphore.h> | |
9 | ||
10 | struct jffs2_inode_info { | |
11 | /* We need an internal semaphore similar to inode->i_sem. | |
12 | Unfortunately, we can't used the existing one, because | |
13 | either the GC would deadlock, or we'd have to release it | |
14 | before letting GC proceed. Or we'd have to put ugliness | |
15 | into the GC code so it didn't attempt to obtain the i_sem | |
16 | for the inode(s) which are already locked */ | |
17 | struct semaphore sem; | |
18 | ||
19 | /* The highest (datanode) version number used for this ino */ | |
20 | uint32_t highest_version; | |
21 | ||
22 | /* List of data fragments which make up the file */ | |
23 | struct rb_root fragtree; | |
24 | ||
25 | /* There may be one datanode which isn't referenced by any of the | |
26 | above fragments, if it contains a metadata update but no actual | |
27 | data - or if this is a directory inode */ | |
28 | /* This also holds the _only_ dnode for symlinks/device nodes, | |
29 | etc. */ | |
30 | struct jffs2_full_dnode *metadata; | |
31 | ||
32 | /* Directory entries */ | |
33 | struct jffs2_full_dirent *dents; | |
34 | ||
2b79adcc AB |
35 | /* The target path if this is the inode of a symlink */ |
36 | unsigned char *target; | |
37 | ||
1da177e4 LT |
38 | /* Some stuff we just have to keep in-core at all times, for each inode. */ |
39 | struct jffs2_inode_cache *inocache; | |
40 | ||
41 | uint16_t flags; | |
42 | uint8_t usercompr; | |
43 | #if !defined (__ECOS) | |
44 | #if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,2) | |
45 | struct inode vfs_inode; | |
46 | #endif | |
47 | #endif | |
48 | }; | |
49 | ||
50 | #endif /* _JFFS2_FS_I */ |