|
@@ -8502,6 +8502,7 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
|
|
|
struct btrfs_key ins;
|
|
|
u64 cur_offset = start;
|
|
|
u64 i_size;
|
|
|
+ u64 cur_bytes;
|
|
|
int ret = 0;
|
|
|
bool own_trans = true;
|
|
|
|
|
@@ -8516,8 +8517,9 @@ static int __btrfs_prealloc_file_range(struct inode *inode, int mode,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- ret = btrfs_reserve_extent(trans, root,
|
|
|
- min(num_bytes, 256ULL * 1024 * 1024),
|
|
|
+ cur_bytes = min(num_bytes, 256ULL * 1024 * 1024);
|
|
|
+ cur_bytes = max(cur_bytes, min_size);
|
|
|
+ ret = btrfs_reserve_extent(trans, root, cur_bytes,
|
|
|
min_size, 0, *alloc_hint, &ins, 1);
|
|
|
if (ret) {
|
|
|
if (own_trans)
|