Commit | Line | Data |
---|---|---|
c00c310e DW |
1 | /* |
2 | * JFFS2 -- Journalling Flash File System, Version 2. | |
3 | * | |
4 | * Copyright © 2001-2007 Red Hat, Inc. | |
5 | * | |
6 | * Created by David Woodhouse <dwmw2@infradead.org> | |
7 | * | |
8 | * For licensing information, see the file 'LICENCE' in this directory. | |
9 | * | |
10 | */ | |
1da177e4 LT |
11 | |
12 | #ifndef _JFFS2_FS_I | |
13 | #define _JFFS2_FS_I | |
14 | ||
1da177e4 | 15 | #include <linux/rbtree.h> |
aa98d7cf | 16 | #include <linux/posix_acl.h> |
cf9d1e42 | 17 | #include <linux/mutex.h> |
1da177e4 LT |
18 | |
19 | struct jffs2_inode_info { | |
1b1dcc1b | 20 | /* We need an internal mutex similar to inode->i_mutex. |
1da177e4 LT |
21 | Unfortunately, we can't used the existing one, because |
22 | either the GC would deadlock, or we'd have to release it | |
23 | before letting GC proceed. Or we'd have to put ugliness | |
1b1dcc1b | 24 | into the GC code so it didn't attempt to obtain the i_mutex |
1da177e4 | 25 | for the inode(s) which are already locked */ |
ced22070 | 26 | struct mutex sem; |
1da177e4 LT |
27 | |
28 | /* The highest (datanode) version number used for this ino */ | |
29 | uint32_t highest_version; | |
30 | ||
31 | /* List of data fragments which make up the file */ | |
32 | struct rb_root fragtree; | |
33 | ||
34 | /* There may be one datanode which isn't referenced by any of the | |
35 | above fragments, if it contains a metadata update but no actual | |
36 | data - or if this is a directory inode */ | |
182ec4ee | 37 | /* This also holds the _only_ dnode for symlinks/device nodes, |
1da177e4 LT |
38 | etc. */ |
39 | struct jffs2_full_dnode *metadata; | |
40 | ||
41 | /* Directory entries */ | |
42 | struct jffs2_full_dirent *dents; | |
43 | ||
2b79adcc AB |
44 | /* The target path if this is the inode of a symlink */ |
45 | unsigned char *target; | |
46 | ||
1da177e4 LT |
47 | /* Some stuff we just have to keep in-core at all times, for each inode. */ |
48 | struct jffs2_inode_cache *inocache; | |
49 | ||
50 | uint16_t flags; | |
51 | uint8_t usercompr; | |
1da177e4 | 52 | struct inode vfs_inode; |
1da177e4 LT |
53 | }; |
54 | ||
55 | #endif /* _JFFS2_FS_I */ |