diff options
author | Li Zefan <lizefan@huawei.com> | 2012-07-09 22:21:07 -0400 |
---|---|---|
committer | Chris Mason <chris.mason@fusionio.com> | 2012-07-23 16:28:05 -0400 |
commit | b4d7c3c9456a311a45bc1ef8944b5ba5b176244f (patch) | |
tree | 217aeddfbcd502d8b61400cc0d87603f03c836f6 /fs/btrfs/extent-tree.c | |
parent | d5b025d510664382f9a197f7e7fb9fc60fe209bc (diff) |
Btrfs: kill free_space pointer from inode structure
Inodes always allocate free space with BTRFS_BLOCK_GROUP_DATA type,
which means every inode has the same BTRFS_I(inode)->free_space pointer.
This shrinks struct btrfs_inode by 4 bytes (or 8 bytes on 64 bits).
Signed-off-by: Li Zefan <lizefan@huawei.com>
Diffstat (limited to 'fs/btrfs/extent-tree.c')
-rw-r--r-- | fs/btrfs/extent-tree.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 7843542484c9..6621ed72f3c3 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
@@ -3139,6 +3139,8 @@ static int update_space_info(struct btrfs_fs_info *info, u64 flags, | |||
3139 | init_waitqueue_head(&found->wait); | 3139 | init_waitqueue_head(&found->wait); |
3140 | *space_info = found; | 3140 | *space_info = found; |
3141 | list_add_rcu(&found->list, &info->space_info); | 3141 | list_add_rcu(&found->list, &info->space_info); |
3142 | if (flags & BTRFS_BLOCK_GROUP_DATA) | ||
3143 | info->data_sinfo = found; | ||
3142 | return 0; | 3144 | return 0; |
3143 | } | 3145 | } |
3144 | 3146 | ||
@@ -3268,12 +3270,6 @@ u64 btrfs_get_alloc_profile(struct btrfs_root *root, int data) | |||
3268 | return get_alloc_profile(root, flags); | 3270 | return get_alloc_profile(root, flags); |
3269 | } | 3271 | } |
3270 | 3272 | ||
3271 | void btrfs_set_inode_space_info(struct btrfs_root *root, struct inode *inode) | ||
3272 | { | ||
3273 | BTRFS_I(inode)->space_info = __find_space_info(root->fs_info, | ||
3274 | BTRFS_BLOCK_GROUP_DATA); | ||
3275 | } | ||
3276 | |||
3277 | /* | 3273 | /* |
3278 | * This will check the space that the inode allocates from to make sure we have | 3274 | * This will check the space that the inode allocates from to make sure we have |
3279 | * enough space for bytes. | 3275 | * enough space for bytes. |
@@ -3282,6 +3278,7 @@ int btrfs_check_data_free_space(struct inode *inode, u64 bytes) | |||
3282 | { | 3278 | { |
3283 | struct btrfs_space_info *data_sinfo; | 3279 | struct btrfs_space_info *data_sinfo; |
3284 | struct btrfs_root *root = BTRFS_I(inode)->root; | 3280 | struct btrfs_root *root = BTRFS_I(inode)->root; |
3281 | struct btrfs_fs_info *fs_info = root->fs_info; | ||
3285 | u64 used; | 3282 | u64 used; |
3286 | int ret = 0, committed = 0, alloc_chunk = 1; | 3283 | int ret = 0, committed = 0, alloc_chunk = 1; |
3287 | 3284 | ||
@@ -3294,7 +3291,7 @@ int btrfs_check_data_free_space(struct inode *inode, u64 bytes) | |||
3294 | committed = 1; | 3291 | committed = 1; |
3295 | } | 3292 | } |
3296 | 3293 | ||
3297 | data_sinfo = BTRFS_I(inode)->space_info; | 3294 | data_sinfo = fs_info->data_sinfo; |
3298 | if (!data_sinfo) | 3295 | if (!data_sinfo) |
3299 | goto alloc; | 3296 | goto alloc; |
3300 | 3297 | ||
@@ -3335,10 +3332,9 @@ alloc: | |||
3335 | goto commit_trans; | 3332 | goto commit_trans; |
3336 | } | 3333 | } |
3337 | 3334 | ||
3338 | if (!data_sinfo) { | 3335 | if (!data_sinfo) |
3339 | btrfs_set_inode_space_info(root, inode); | 3336 | data_sinfo = fs_info->data_sinfo; |
3340 | data_sinfo = BTRFS_I(inode)->space_info; | 3337 | |
3341 | } | ||
3342 | goto again; | 3338 | goto again; |
3343 | } | 3339 | } |
3344 | 3340 | ||
@@ -3385,7 +3381,7 @@ void btrfs_free_reserved_data_space(struct inode *inode, u64 bytes) | |||
3385 | /* make sure bytes are sectorsize aligned */ | 3381 | /* make sure bytes are sectorsize aligned */ |
3386 | bytes = (bytes + root->sectorsize - 1) & ~((u64)root->sectorsize - 1); | 3382 | bytes = (bytes + root->sectorsize - 1) & ~((u64)root->sectorsize - 1); |
3387 | 3383 | ||
3388 | data_sinfo = BTRFS_I(inode)->space_info; | 3384 | data_sinfo = root->fs_info->data_sinfo; |
3389 | spin_lock(&data_sinfo->lock); | 3385 | spin_lock(&data_sinfo->lock); |
3390 | data_sinfo->bytes_may_use -= bytes; | 3386 | data_sinfo->bytes_may_use -= bytes; |
3391 | trace_btrfs_space_reservation(root->fs_info, "space_info", | 3387 | trace_btrfs_space_reservation(root->fs_info, "space_info", |