diff options
| -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) |
