aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosef Bacik <jbacik@fb.com>2016-03-25 13:25:58 -0400
committerDavid Sterba <dsterba@suse.com>2016-07-07 12:45:53 -0400
commit31bada7c4e5e80b9cc031e89247175bed58ed9e9 (patch)
tree597f4768ea598716995e8640b521aa5ae19a0bba
parentdce3afa5932776f7b925249fbef435c265014f91 (diff)
Btrfs: fix release reserved extents trace points
We were doing trace_btrfs_release_reserved_extent() in pin_down_extent which isn't quite right because we will go through and free that extent later when we unpin, so it messes up apps that are accounting for the reservation space. We were also unconditionally doing it in __btrfs_free_reserved_extent(), when we only actually free the reservation instead of pinning the extent. Thanks, Signed-off-by: Josef Bacik <jbacik@fb.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/extent-tree.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 31ded6aae1f0..a012fd49f214 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -6331,8 +6331,6 @@ static int pin_down_extent(struct btrfs_root *root,
6331 cache->space_info->flags, num_bytes, 1); 6331 cache->space_info->flags, num_bytes, 1);
6332 set_extent_dirty(root->fs_info->pinned_extents, bytenr, 6332 set_extent_dirty(root->fs_info->pinned_extents, bytenr,
6333 bytenr + num_bytes - 1, GFP_NOFS | __GFP_NOFAIL); 6333 bytenr + num_bytes - 1, GFP_NOFS | __GFP_NOFAIL);
6334 if (reserved)
6335 trace_btrfs_reserved_extent_free(root, bytenr, num_bytes);
6336 return 0; 6334 return 0;
6337} 6335}
6338 6336
@@ -8008,12 +8006,10 @@ static int __btrfs_free_reserved_extent(struct btrfs_root *root,
8008 ret = btrfs_discard_extent(root, start, len, NULL); 8006 ret = btrfs_discard_extent(root, start, len, NULL);
8009 btrfs_add_free_space(cache, start, len); 8007 btrfs_add_free_space(cache, start, len);
8010 btrfs_update_reserved_bytes(cache, len, RESERVE_FREE, delalloc); 8008 btrfs_update_reserved_bytes(cache, len, RESERVE_FREE, delalloc);
8009 trace_btrfs_reserved_extent_free(root, start, len);
8011 } 8010 }
8012 8011
8013 btrfs_put_block_group(cache); 8012 btrfs_put_block_group(cache);
8014
8015 trace_btrfs_reserved_extent_free(root, start, len);
8016
8017 return ret; 8013 return ret;
8018} 8014}
8019 8015