X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fs%2Fbtrfs%2Ffree-space-cache.c;h=4538e48581a5171b33af2d3d2c632dbff4e412e2;hb=451d7585a8bb1b9bec0d676ce3dece1923164e55;hp=ac23476beb6eac1e6c279cd269001bb67742f9a9;hpb=c604480171c510c1beeb81b82418e5bc4de8f1ae;p=linux-2.6-block.git diff --git a/fs/btrfs/free-space-cache.c b/fs/btrfs/free-space-cache.c index ac23476beb6e..4538e48581a5 100644 --- a/fs/btrfs/free-space-cache.c +++ b/fs/btrfs/free-space-cache.c @@ -579,6 +579,7 @@ out: * it returns -enospc */ int btrfs_find_space_cluster(struct btrfs_trans_handle *trans, + struct btrfs_root *root, struct btrfs_block_group_cache *block_group, struct btrfs_free_cluster *cluster, u64 offset, u64 bytes, u64 empty_size) @@ -595,7 +596,9 @@ int btrfs_find_space_cluster(struct btrfs_trans_handle *trans, int ret; /* for metadata, allow allocates with more holes */ - if (block_group->flags & BTRFS_BLOCK_GROUP_METADATA) { + if (btrfs_test_opt(root, SSD_SPREAD)) { + min_bytes = bytes + empty_size; + } else if (block_group->flags & BTRFS_BLOCK_GROUP_METADATA) { /* * we want to do larger allocations when we are * flushing out the delayed refs, it helps prevent