From: Arne Jansen Date: Tue, 12 Apr 2011 09:01:20 +0000 (+0200) Subject: btrfs: heed alloc_start X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=a9c9bf68276c36898e23db770a65bd9b75bfac58;p=openwrt%2Fstaging%2Fblogic.git btrfs: heed alloc_start currently alloc_start is disregarded if the requested chunk size is bigger than (device size - alloc_start), but smaller than the device size. The only situation where I see this could have made sense was when a chunk equal the size of the device has been requested. This was possible as the allocator failed to take alloc_start into account when calculating the request chunk size. As this gets fixed by this patch, the workaround is not necessary anymore. --- diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index a9f1fc23278b..45c592a7335e 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -849,10 +849,7 @@ int find_free_dev_extent(struct btrfs_trans_handle *trans, /* we don't want to overwrite the superblock on the drive, * so we make sure to start at an offset of at least 1MB */ - search_start = 1024 * 1024; - - if (root->fs_info->alloc_start + num_bytes <= search_end) - search_start = max(root->fs_info->alloc_start, search_start); + search_start = max(root->fs_info->alloc_start, 1024ull * 1024); max_hole_start = search_start; max_hole_size = 0;