diff options
author | David Sterba <dsterba@suse.com> | 2017-06-15 01:30:06 +0200 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2017-06-20 14:22:48 +0200 |
commit | 0d0c71b317207082856f40dbe8a2bac813f49677 (patch) | |
tree | c165272f5aded50b3c8b6be2490b7c787726153b /fs/btrfs/volumes.c | |
parent | btrfs: move fs_info::fs_frozen to the flags (diff) | |
download | linux-0d0c71b317207082856f40dbe8a2bac813f49677.tar.xz linux-0d0c71b317207082856f40dbe8a2bac813f49677.zip |
btrfs: obsolete and remove mount option alloc_start
The mount option alloc_start was used in the past for debugging and
stressing the chunk allocator. Not meant to be used by users, so we're
not breaking anybody's setup.
There was some added complexity handling changes of the value and when
it was not same as default. Such code has likely been untested and I
think it's better to remove it.
This patch kills all use of alloc_start, and by doing that also fixes
a bug when alloc_size is set, potentially called from statfs:
in btrfs_calc_avail_data_space, traversing the list in RCU, the RCU
protection is temporarily dropped so btrfs_account_dev_extents_size can
be called and then RCU is locked again! Doing that inside
list_for_each_entry_rcu is just asking for trouble, but unlikely to be
observed in practice.
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to '')
-rw-r--r-- | fs/btrfs/volumes.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 8bb1f4e5905a..fa3c6412be72 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -1353,15 +1353,13 @@ int find_free_dev_extent_start(struct btrfs_transaction *transaction, int ret; int slot; struct extent_buffer *l; - u64 min_search_start; /* * We don't want to overwrite the superblock on the drive nor any area * used by the boot loader (grub for example), so we make sure to start * at an offset of at least 1MB. */ - min_search_start = max(fs_info->alloc_start, 1024ull * 1024); - search_start = max(search_start, min_search_start); + search_start = max_t(u64, search_start, SZ_1M); path = btrfs_alloc_path(); if (!path) |