|
1 #ifndef _REISER_FS_I |
|
2 #define _REISER_FS_I |
|
3 |
|
4 #include <linux/list.h> |
|
5 |
|
6 struct reiserfs_journal_list; |
|
7 |
|
8 /** bitmasks for i_flags field in reiserfs-specific part of inode */ |
|
9 typedef enum { |
|
10 /** this says what format of key do all items (but stat data) of |
|
11 an object have. If this is set, that format is 3.6 otherwise |
|
12 - 3.5 */ |
|
13 i_item_key_version_mask = 0x0001, |
|
14 /** If this is unset, object has 3.5 stat data, otherwise, it has |
|
15 3.6 stat data with 64bit size, 32bit nlink etc. */ |
|
16 i_stat_data_version_mask = 0x0002, |
|
17 /** file might need tail packing on close */ |
|
18 i_pack_on_close_mask = 0x0004, |
|
19 /** don't pack tail of file */ |
|
20 i_nopack_mask = 0x0008, |
|
21 /** If those is set, "safe link" was created for this file during |
|
22 truncate or unlink. Safe link is used to avoid leakage of disk |
|
23 space on crash with some files open, but unlinked. */ |
|
24 i_link_saved_unlink_mask = 0x0010, |
|
25 i_link_saved_truncate_mask = 0x0020, |
|
26 i_has_xattr_dir = 0x0040, |
|
27 i_data_log = 0x0080, |
|
28 i_ever_mapped = 0x0100 |
|
29 } reiserfs_inode_flags; |
|
30 |
|
31 struct reiserfs_inode_info { |
|
32 __u32 i_key[4]; /* key is still 4 32 bit integers */ |
|
33 /** transient inode flags that are never stored on disk. Bitmasks |
|
34 for this field are defined above. */ |
|
35 __u32 i_flags; |
|
36 |
|
37 __u32 i_first_direct_byte; // offset of first byte stored in direct item. |
|
38 |
|
39 /* copy of persistent inode flags read from sd_attrs. */ |
|
40 __u32 i_attrs; |
|
41 |
|
42 int i_prealloc_block; /* first unused block of a sequence of unused blocks */ |
|
43 int i_prealloc_count; /* length of that sequence */ |
|
44 struct list_head i_prealloc_list; /* per-transaction list of inodes which |
|
45 * have preallocated blocks */ |
|
46 |
|
47 unsigned new_packing_locality:1; /* new_packig_locality is created; new blocks |
|
48 * for the contents of this directory should be |
|
49 * displaced */ |
|
50 |
|
51 /* we use these for fsync or O_SYNC to decide which transaction |
|
52 ** needs to be committed in order for this inode to be properly |
|
53 ** flushed */ |
|
54 unsigned long i_trans_id; |
|
55 struct reiserfs_journal_list *i_jl; |
|
56 struct mutex i_mmap; |
|
57 #ifdef CONFIG_REISERFS_FS_POSIX_ACL |
|
58 struct posix_acl *i_acl_access; |
|
59 struct posix_acl *i_acl_default; |
|
60 #endif |
|
61 #ifdef CONFIG_REISERFS_FS_XATTR |
|
62 struct rw_semaphore xattr_sem; |
|
63 #endif |
|
64 struct inode vfs_inode; |
|
65 }; |
|
66 |
|
67 #endif |