summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2019-08-27 22:33:12 -0400
committerDavid Sterba <dsterba@suse.com>2019-10-25 13:11:34 -0400
commitc17add7a1c61a15578e4071ed7bfd460fd041c43 (patch)
tree764e7a2b98c426cb841852f5c60cdd6f883a90a3
parentba0b084ac309283db6e329785c1dc4f45fdbd379 (diff)
btrfs: Consider system chunk array size for new SYSTEM chunks
For SYSTEM chunks, despite the regular chunk item size limit, there is another limit due to system chunk array size. The extra limit was removed in a refactoring, so add it back. Fixes: e3ecdb3fdecf ("btrfs: factor out devs_max setting in __btrfs_alloc_chunk") CC: stable@vger.kernel.org # 5.3+ Reviewed-by: Nikolay Borisov <nborisov@suse.com> Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/volumes.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index bdfe4493e43a..e04409f85063 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -4967,6 +4967,7 @@ static int __btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
4967 } else if (type & BTRFS_BLOCK_GROUP_SYSTEM) { 4967 } else if (type & BTRFS_BLOCK_GROUP_SYSTEM) {
4968 max_stripe_size = SZ_32M; 4968 max_stripe_size = SZ_32M;
4969 max_chunk_size = 2 * max_stripe_size; 4969 max_chunk_size = 2 * max_stripe_size;
4970 devs_max = min_t(int, devs_max, BTRFS_MAX_DEVS_SYS_CHUNK);
4970 } else { 4971 } else {
4971 btrfs_err(info, "invalid chunk type 0x%llx requested", 4972 btrfs_err(info, "invalid chunk type 0x%llx requested",
4972 type); 4973 type);