diff options
author | Josef Bacik <jbacik@fb.com> | 2015-10-02 22:25:10 +0300 |
---|---|---|
committer | Chris Mason <clm@fb.com> | 2015-10-22 04:55:39 +0300 |
commit | c759c4e16179e47e099f491011e6acd7858f8625 (patch) | |
tree | 1b97ad895f5546f867d0b12df3910848e69f1016 /fs/btrfs/ctree.h | |
parent | a5e681d9bd641c4f0677e87d3a0c92a8f4f16293 (diff) | |
download | linux-c759c4e16179e47e099f491011e6acd7858f8625.tar.xz |
Btrfs: don't keep trying to build clusters if we are fragmented
If we are extremely fragmented then we won't be able to create a free_cluster.
So if this happens set last_ptr->fragmented so that all future allcations will
give up trying to create a cluster. When we unpin extents we will unset
->fragmented if we free up a sufficient amount of space in a block group.
Thanks,
Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
Diffstat (limited to 'fs/btrfs/ctree.h')
-rw-r--r-- | fs/btrfs/ctree.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 78a8f56c7e88..ced08c9608e2 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h @@ -1232,6 +1232,9 @@ struct btrfs_free_cluster { /* first extent starting offset */ u64 window_start; + /* We did a full search and couldn't create a cluster */ + bool fragmented; + struct btrfs_block_group_cache *block_group; /* * when a cluster is allocated from a block group, we put the |