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 | ||
15 | #include <linux/version.h> | |
16 | #include <linux/rbtree.h> | |
aa98d7cf | 17 | #include <linux/posix_acl.h> |
1da177e4 LT |
18 | #include <asm/semaphore.h> |
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 LT |
26 | for the inode(s) which are already locked */ |
27 | struct semaphore sem; | |
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; |
aa98d7cf KK |
54 | #ifdef CONFIG_JFFS2_FS_POSIX_ACL |
55 | struct posix_acl *i_acl_access; | |
56 | struct posix_acl *i_acl_default; | |
57 | #endif | |
1da177e4 LT |
58 | }; |
59 | ||
60 | #endif /* _JFFS2_FS_I */ |