diff options
-rw-r--r-- | fs/btrfs/inode.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c index 86cac431864b..b66ea03a3a1c 100644 --- a/fs/btrfs/inode.c +++ b/fs/btrfs/inode.c | |||
@@ -2145,6 +2145,7 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans, | |||
2145 | struct btrfs_path *path; | 2145 | struct btrfs_path *path; |
2146 | struct extent_buffer *leaf; | 2146 | struct extent_buffer *leaf; |
2147 | struct btrfs_key ins; | 2147 | struct btrfs_key ins; |
2148 | u64 qg_released; | ||
2148 | int extent_inserted = 0; | 2149 | int extent_inserted = 0; |
2149 | int ret; | 2150 | int ret; |
2150 | 2151 | ||
@@ -2200,13 +2201,17 @@ static int insert_reserved_file_extent(struct btrfs_trans_handle *trans, | |||
2200 | ins.objectid = disk_bytenr; | 2201 | ins.objectid = disk_bytenr; |
2201 | ins.offset = disk_num_bytes; | 2202 | ins.offset = disk_num_bytes; |
2202 | ins.type = BTRFS_EXTENT_ITEM_KEY; | 2203 | ins.type = BTRFS_EXTENT_ITEM_KEY; |
2203 | ret = btrfs_alloc_reserved_file_extent(trans, root->root_key.objectid, | 2204 | |
2204 | btrfs_ino(BTRFS_I(inode)), file_pos, ram_bytes, &ins); | ||
2205 | /* | 2205 | /* |
2206 | * Release the reserved range from inode dirty range map, as it is | 2206 | * Release the reserved range from inode dirty range map, as it is |
2207 | * already moved into delayed_ref_head | 2207 | * already moved into delayed_ref_head |
2208 | */ | 2208 | */ |
2209 | btrfs_qgroup_release_data(inode, file_pos, ram_bytes); | 2209 | ret = btrfs_qgroup_release_data(inode, file_pos, ram_bytes); |
2210 | if (ret < 0) | ||
2211 | goto out; | ||
2212 | qg_released = ret; | ||
2213 | ret = btrfs_alloc_reserved_file_extent(trans, root->root_key.objectid, | ||
2214 | btrfs_ino(BTRFS_I(inode)), file_pos, qg_released, &ins); | ||
2210 | out: | 2215 | out: |
2211 | btrfs_free_path(path); | 2216 | btrfs_free_path(path); |
2212 | 2217 | ||