aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/inode.c11
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);
2210out: 2215out:
2211 btrfs_free_path(path); 2216 btrfs_free_path(path);
2212 2217