Btrfs: fix release reserved extents trace points
authorJosef Bacik <jbacik@fb.com>
Fri, 25 Mar 2016 17:25:58 +0000 (13:25 -0400)
committerDavid Sterba <dsterba@suse.com>
Thu, 7 Jul 2016 16:45:53 +0000 (18:45 +0200)
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>
fs/btrfs/extent-tree.c

index 31ded6aae1f098d7ca8963d182d1f42547555a22..a012fd49f214fbaf5f4d8fbece60e17a1a39e801 100644 (file)
@@ -6331,8 +6331,6 @@ static int pin_down_extent(struct btrfs_root *root,
                                      cache->space_info->flags, num_bytes, 1);
        set_extent_dirty(root->fs_info->pinned_extents, bytenr,
                         bytenr + num_bytes - 1, GFP_NOFS | __GFP_NOFAIL);
-       if (reserved)
-               trace_btrfs_reserved_extent_free(root, bytenr, num_bytes);
        return 0;
 }
 
@@ -8008,12 +8006,10 @@ static int __btrfs_free_reserved_extent(struct btrfs_root *root,
                        ret = btrfs_discard_extent(root, start, len, NULL);
                btrfs_add_free_space(cache, start, len);
                btrfs_update_reserved_bytes(cache, len, RESERVE_FREE, delalloc);
+               trace_btrfs_reserved_extent_free(root, start, len);
        }
 
        btrfs_put_block_group(cache);
-
-       trace_btrfs_reserved_extent_free(root, start, len);
-
        return ret;
 }