]> git.hungrycats.org Git - linux/commitdiff
btrfs: use BTRFS_MAX_EXTENT_SIZE in prealloc misc-next/topics/prealloc-size
authorZygo Blaxell <ce3g8jdj@umail.furryterror.org>
Sat, 21 Dec 2024 15:48:03 +0000 (10:48 -0500)
committerZygo Blaxell <ce3g8jdj@umail.furryterror.org>
Fri, 18 Sep 2026 21:36:17 +0000 (17:36 -0400)
The prealloc size limit of 256M was set in
commit 24542bf7ea5e ("btrfs: limit fallocate extent reservation to 256MB")
while the 128M extent size limit used everywhere else was set in
commit b888db2bd7b6 ("Btrfs: Add delayed allocation to the extent based
page tree code"), i.e. since the beginning of btrfs.

Excessively large extents cause problems for relocations already, and
there is no need for prealloc to create any more.  Bring the prealloc size
down to the same size used by normal write allocations.

Zoned devices can't use prealloc, so we don't need to do anything special
for them like we do for normal writes.

Signed-off-by: Zygo Blaxell <ce3g8jdj@umail.furryterror.org>
fs/btrfs/inode.c

index f4b68205f621e37199799701b546e6efc5e24159..2626d008e3209d411e3901c435b7b24dea7b92fc 100644 (file)
@@ -9187,7 +9187,7 @@ int btrfs_prealloc_file_range(struct inode *inode, int mode,
        u64 end = start + num_bytes - 1;
 
        while (num_bytes > 0) {
-               cur_bytes = min_t(u64, num_bytes, SZ_256M);
+               cur_bytes = min_t(u64, num_bytes, BTRFS_MAX_EXTENT_SIZE);
                cur_bytes = max(cur_bytes, min_size);
                /*
                 * If we are severely fragmented we could end up with really