提交 a9c9bf68 编写于 作者: A Arne Jansen

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.
上级 bcd53741
...@@ -849,10 +849,7 @@ int find_free_dev_extent(struct btrfs_trans_handle *trans, ...@@ -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, /* we don't want to overwrite the superblock on the drive,
* so we make sure to start at an offset of at least 1MB * so we make sure to start at an offset of at least 1MB
*/ */
search_start = 1024 * 1024; search_start = max(root->fs_info->alloc_start, 1024ull * 1024);
if (root->fs_info->alloc_start + num_bytes <= search_end)
search_start = max(root->fs_info->alloc_start, search_start);
max_hole_start = search_start; max_hole_start = search_start;
max_hole_size = 0; max_hole_size = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册