Commit | Line | Data |
---|---|---|
c00c310e DW |
1 | /* |
2 | * JFFS2 -- Journalling Flash File System, Version 2. | |
3 | * | |
4 | * Copyright © 2001-2007 Red Hat, Inc. | |
6088c058 | 5 | * Copyright © 2004-2010 David Woodhouse <dwmw2@infradead.org> |
c00c310e DW |
6 | * |
7 | * Created by David Woodhouse <dwmw2@infradead.org> | |
8 | * | |
9 | * For licensing information, see the file 'LICENCE' in this directory. | |
10 | * | |
11 | */ | |
1da177e4 LT |
12 | |
13 | #ifndef _JFFS2_FS_I | |
14 | #define _JFFS2_FS_I | |
15 | ||
1da177e4 | 16 | #include <linux/rbtree.h> |
aa98d7cf | 17 | #include <linux/posix_acl.h> |
cf9d1e42 | 18 | #include <linux/mutex.h> |
1da177e4 LT |
19 | |
20 | struct jffs2_inode_info { | |
1b1dcc1b | 21 | /* We need an internal mutex similar to inode->i_mutex. |
1da177e4 LT |
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 | |
1b1dcc1b | 25 | into the GC code so it didn't attempt to obtain the i_mutex |
1da177e4 | 26 | for the inode(s) which are already locked */ |
ced22070 | 27 | struct mutex sem; |
1da177e4 LT |
28 | |
29 | /* The highest (datanode) version number used for this ino */ | |
30 | uint32_t highest_version; | |
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 */ | |
182ec4ee | 38 | /* This also holds the _only_ dnode for symlinks/device nodes, |
1da177e4 LT |
39 | etc. */ |
40 | struct jffs2_full_dnode *metadata; | |
41 | ||
42 | /* Directory entries */ | |
43 | struct jffs2_full_dirent *dents; | |
44 | ||
2b79adcc AB |
45 | /* The target path if this is the inode of a symlink */ |
46 | unsigned char *target; | |
47 | ||
1da177e4 LT |
48 | /* Some stuff we just have to keep in-core at all times, for each inode. */ |
49 | struct jffs2_inode_cache *inocache; | |
50 | ||
51 | uint16_t flags; | |
52 | uint8_t usercompr; | |
1da177e4 | 53 | struct inode vfs_inode; |
1da177e4 LT |
54 | }; |
55 | ||
56 | #endif /* _JFFS2_FS_I */ |