diff options
Diffstat (limited to 'fs/btrfs/inode.c')
-rw-r--r-- | fs/btrfs/inode.c | 64 |
1 files changed, 28 insertions, 36 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index d53cad1afe26..f44425081c02 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -3596,40 +3596,10 @@ again: | |||
3596 | return 0; | 3596 | return 0; |
3597 | } | 3597 | } |
3598 | 3598 | ||
3599 | static noinline void init_btrfs_i(struct inode *inode) | ||
3600 | { | ||
3601 | struct btrfs_inode *bi = BTRFS_I(inode); | ||
3602 | |||
3603 | bi->generation = 0; | ||
3604 | bi->sequence = 0; | ||
3605 | bi->last_trans = 0; | ||
3606 | bi->last_sub_trans = 0; | ||
3607 | bi->logged_trans = 0; | ||
3608 | bi->delalloc_bytes = 0; | ||
3609 | bi->reserved_bytes = 0; | ||
3610 | bi->disk_i_size = 0; | ||
3611 | bi->flags = 0; | ||
3612 | bi->index_cnt = (u64)-1; | ||
3613 | bi->last_unlink_trans = 0; | ||
3614 | bi->ordered_data_close = 0; | ||
3615 | bi->force_compress = 0; | ||
3616 | extent_map_tree_init(&BTRFS_I(inode)->extent_tree, GFP_NOFS); | ||
3617 | extent_io_tree_init(&BTRFS_I(inode)->io_tree, | ||
3618 | inode->i_mapping, GFP_NOFS); | ||
3619 | extent_io_tree_init(&BTRFS_I(inode)->io_failure_tree, | ||
3620 | inode->i_mapping, GFP_NOFS); | ||
3621 | INIT_LIST_HEAD(&BTRFS_I(inode)->delalloc_inodes); | ||
3622 | INIT_LIST_HEAD(&BTRFS_I(inode)->ordered_operations); | ||
3623 | RB_CLEAR_NODE(&BTRFS_I(inode)->rb_node); | ||
3624 | btrfs_ordered_inode_tree_init(&BTRFS_I(inode)->ordered_tree); | ||
3625 | mutex_init(&BTRFS_I(inode)->log_mutex); | ||
3626 | } | ||
3627 | |||
3628 | static int btrfs_init_locked_inode(struct inode *inode, void *p) | 3599 | static int btrfs_init_locked_inode(struct inode *inode, void *p) |
3629 | { | 3600 | { |
3630 | struct btrfs_iget_args *args = p; | 3601 | struct btrfs_iget_args *args = p; |
3631 | inode->i_ino = args->ino; | 3602 | inode->i_ino = args->ino; |
3632 | init_btrfs_i(inode); | ||
3633 | BTRFS_I(inode)->root = args->root; | 3603 | BTRFS_I(inode)->root = args->root; |
3634 | btrfs_set_inode_space_info(args->root, inode); | 3604 | btrfs_set_inode_space_info(args->root, inode); |
3635 | return 0; | 3605 | return 0; |
@@ -3692,8 +3662,6 @@ static struct inode *new_simple_dir(struct super_block *s, | |||
3692 | if (!inode) | 3662 | if (!inode) |
3693 | return ERR_PTR(-ENOMEM); | 3663 | return ERR_PTR(-ENOMEM); |
3694 | 3664 | ||
3695 | init_btrfs_i(inode); | ||
3696 | |||
3697 | BTRFS_I(inode)->root = root; | 3665 | BTRFS_I(inode)->root = root; |
3698 | memcpy(&BTRFS_I(inode)->location, key, sizeof(*key)); | 3666 | memcpy(&BTRFS_I(inode)->location, key, sizeof(*key)); |
3699 | BTRFS_I(inode)->dummy_inode = 1; | 3667 | BTRFS_I(inode)->dummy_inode = 1; |
@@ -4092,7 +4060,6 @@ static struct inode *btrfs_new_inode(struct btrfs_trans_handle *trans, | |||
4092 | * btrfs_get_inode_index_count has an explanation for the magic | 4060 | * btrfs_get_inode_index_count has an explanation for the magic |
4093 | * number | 4061 | * number |
4094 | */ | 4062 | */ |
4095 | init_btrfs_i(inode); | ||
4096 | BTRFS_I(inode)->index_cnt = 2; | 4063 | BTRFS_I(inode)->index_cnt = 2; |
4097 | BTRFS_I(inode)->root = root; | 4064 | BTRFS_I(inode)->root = root; |
4098 | BTRFS_I(inode)->generation = trans->transid; | 4065 | BTRFS_I(inode)->generation = trans->transid; |
@@ -5263,21 +5230,46 @@ unsigned long btrfs_force_ra(struct address_space *mapping, | |||
5263 | struct inode *btrfs_alloc_inode(struct super_block *sb) | 5230 | struct inode *btrfs_alloc_inode(struct super_block *sb) |
5264 | { | 5231 | { |
5265 | struct btrfs_inode *ei; | 5232 | struct btrfs_inode *ei; |
5233 | struct inode *inode; | ||
5266 | 5234 | ||
5267 | ei = kmem_cache_alloc(btrfs_inode_cachep, GFP_NOFS); | 5235 | ei = kmem_cache_alloc(btrfs_inode_cachep, GFP_NOFS); |
5268 | if (!ei) | 5236 | if (!ei) |
5269 | return NULL; | 5237 | return NULL; |
5238 | |||
5239 | ei->root = NULL; | ||
5240 | ei->space_info = NULL; | ||
5241 | ei->generation = 0; | ||
5242 | ei->sequence = 0; | ||
5270 | ei->last_trans = 0; | 5243 | ei->last_trans = 0; |
5271 | ei->last_sub_trans = 0; | 5244 | ei->last_sub_trans = 0; |
5272 | ei->logged_trans = 0; | 5245 | ei->logged_trans = 0; |
5246 | ei->delalloc_bytes = 0; | ||
5247 | ei->reserved_bytes = 0; | ||
5248 | ei->disk_i_size = 0; | ||
5249 | ei->flags = 0; | ||
5250 | ei->index_cnt = (u64)-1; | ||
5251 | ei->last_unlink_trans = 0; | ||
5252 | |||
5253 | spin_lock_init(&ei->accounting_lock); | ||
5273 | ei->outstanding_extents = 0; | 5254 | ei->outstanding_extents = 0; |
5274 | ei->reserved_extents = 0; | 5255 | ei->reserved_extents = 0; |
5275 | ei->root = NULL; | 5256 | |
5276 | spin_lock_init(&ei->accounting_lock); | 5257 | ei->ordered_data_close = 0; |
5258 | ei->dummy_inode = 0; | ||
5259 | ei->force_compress = 0; | ||
5260 | |||
5261 | inode = &ei->vfs_inode; | ||
5262 | extent_map_tree_init(&ei->extent_tree, GFP_NOFS); | ||
5263 | extent_io_tree_init(&ei->io_tree, &inode->i_data, GFP_NOFS); | ||
5264 | extent_io_tree_init(&ei->io_failure_tree, &inode->i_data, GFP_NOFS); | ||
5265 | mutex_init(&ei->log_mutex); | ||
5277 | btrfs_ordered_inode_tree_init(&ei->ordered_tree); | 5266 | btrfs_ordered_inode_tree_init(&ei->ordered_tree); |
5278 | INIT_LIST_HEAD(&ei->i_orphan); | 5267 | INIT_LIST_HEAD(&ei->i_orphan); |
5268 | INIT_LIST_HEAD(&ei->delalloc_inodes); | ||
5279 | INIT_LIST_HEAD(&ei->ordered_operations); | 5269 | INIT_LIST_HEAD(&ei->ordered_operations); |
5280 | return &ei->vfs_inode; | 5270 | RB_CLEAR_NODE(&ei->rb_node); |
5271 | |||
5272 | return inode; | ||
5281 | } | 5273 | } |
5282 | 5274 | ||
5283 | void btrfs_destroy_inode(struct inode *inode) | 5275 | void btrfs_destroy_inode(struct inode *inode) |