diff options
Diffstat (limited to 'fs/btrfs/btrfs_inode.h')
-rw-r--r-- | fs/btrfs/btrfs_inode.h | 54 |
1 files changed, 51 insertions, 3 deletions
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index 0577fda2168a..0b2e623cf421 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h | |||
@@ -25,27 +25,58 @@ | |||
25 | 25 | ||
26 | /* in memory btrfs inode */ | 26 | /* in memory btrfs inode */ |
27 | struct btrfs_inode { | 27 | struct btrfs_inode { |
28 | /* which subvolume this inode belongs to */ | ||
28 | struct btrfs_root *root; | 29 | struct btrfs_root *root; |
30 | |||
31 | /* the block group preferred for allocations. This pointer is buggy | ||
32 | * and needs to be replaced with a bytenr instead | ||
33 | */ | ||
29 | struct btrfs_block_group_cache *block_group; | 34 | struct btrfs_block_group_cache *block_group; |
35 | |||
36 | /* key used to find this inode on disk. This is used by the code | ||
37 | * to read in roots of subvolumes | ||
38 | */ | ||
30 | struct btrfs_key location; | 39 | struct btrfs_key location; |
40 | |||
41 | /* the extent_tree has caches of all the extent mappings to disk */ | ||
31 | struct extent_map_tree extent_tree; | 42 | struct extent_map_tree extent_tree; |
43 | |||
44 | /* the io_tree does range state (DIRTY, LOCKED etc) */ | ||
32 | struct extent_io_tree io_tree; | 45 | struct extent_io_tree io_tree; |
46 | |||
47 | /* special utility tree used to record which mirrors have already been | ||
48 | * tried when checksums fail for a given block | ||
49 | */ | ||
33 | struct extent_io_tree io_failure_tree; | 50 | struct extent_io_tree io_failure_tree; |
51 | |||
52 | /* held while inserting checksums to avoid races */ | ||
34 | struct mutex csum_mutex; | 53 | struct mutex csum_mutex; |
54 | |||
55 | /* held while inesrting or deleting extents from files */ | ||
35 | struct mutex extent_mutex; | 56 | struct mutex extent_mutex; |
57 | |||
58 | /* held while logging the inode in tree-log.c */ | ||
36 | struct mutex log_mutex; | 59 | struct mutex log_mutex; |
37 | struct inode vfs_inode; | 60 | |
61 | /* used to order data wrt metadata */ | ||
38 | struct btrfs_ordered_inode_tree ordered_tree; | 62 | struct btrfs_ordered_inode_tree ordered_tree; |
39 | 63 | ||
64 | /* standard acl pointers */ | ||
40 | struct posix_acl *i_acl; | 65 | struct posix_acl *i_acl; |
41 | struct posix_acl *i_default_acl; | 66 | struct posix_acl *i_default_acl; |
42 | 67 | ||
43 | /* for keeping track of orphaned inodes */ | 68 | /* for keeping track of orphaned inodes */ |
44 | struct list_head i_orphan; | 69 | struct list_head i_orphan; |
45 | 70 | ||
71 | /* list of all the delalloc inodes in the FS. There are times we need | ||
72 | * to write all the delalloc pages to disk, and this list is used | ||
73 | * to walk them all. | ||
74 | */ | ||
46 | struct list_head delalloc_inodes; | 75 | struct list_head delalloc_inodes; |
47 | 76 | ||
48 | /* full 64 bit generation number */ | 77 | /* full 64 bit generation number, struct vfs_inode doesn't have a big |
78 | * enough field for this. | ||
79 | */ | ||
49 | u64 generation; | 80 | u64 generation; |
50 | 81 | ||
51 | /* | 82 | /* |
@@ -57,10 +88,25 @@ struct btrfs_inode { | |||
57 | */ | 88 | */ |
58 | u64 logged_trans; | 89 | u64 logged_trans; |
59 | 90 | ||
60 | /* trans that last made a change that should be fully fsync'd */ | 91 | /* |
92 | * trans that last made a change that should be fully fsync'd. This | ||
93 | * gets reset to zero each time the inode is logged | ||
94 | */ | ||
61 | u64 log_dirty_trans; | 95 | u64 log_dirty_trans; |
96 | |||
97 | /* total number of bytes pending delalloc, used by stat to calc the | ||
98 | * real block usage of the file | ||
99 | */ | ||
62 | u64 delalloc_bytes; | 100 | u64 delalloc_bytes; |
101 | |||
102 | /* | ||
103 | * the size of the file stored in the metadata on disk. data=ordered | ||
104 | * means the in-memory i_size might be larger than the size on disk | ||
105 | * because not all the blocks are written yet. | ||
106 | */ | ||
63 | u64 disk_i_size; | 107 | u64 disk_i_size; |
108 | |||
109 | /* flags field from the on disk inode */ | ||
64 | u32 flags; | 110 | u32 flags; |
65 | 111 | ||
66 | /* | 112 | /* |
@@ -68,6 +114,8 @@ struct btrfs_inode { | |||
68 | * number for new files that are created | 114 | * number for new files that are created |
69 | */ | 115 | */ |
70 | u64 index_cnt; | 116 | u64 index_cnt; |
117 | |||
118 | struct inode vfs_inode; | ||
71 | }; | 119 | }; |
72 | 120 | ||
73 | static inline struct btrfs_inode *BTRFS_I(struct inode *inode) | 121 | static inline struct btrfs_inode *BTRFS_I(struct inode *inode) |