Blob Blame History Raw
From: Josef Bacik <josef@toxicpanda.com>
Date: Tue, 21 Jul 2020 10:22:16 -0400
Subject: btrfs: make ALLOC_CHUNK use the space info flags
Git-commit: c6c453032ea3b9033f0a312175aab6519ff9bdf7
Patch-mainline: v5.10-rc1
References: bsc#1135481

We have traditionally used flush_space() to flush metadata space, so
we've been unconditionally using btrfs_metadata_alloc_profile() for our
profile to allocate a chunk. However if we're going to use this for
data we need to use btrfs_get_alloc_profile() on the space_info we pass
in.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Tested-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Josef Bacik <josef@toxicpanda.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Acked-by: Nikolay Borisov <nborisov@suse.com>
---
 fs/btrfs/space-info.c |    3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

--- a/fs/btrfs/space-info.c
+++ b/fs/btrfs/space-info.c
@@ -642,7 +642,8 @@ static int flush_space(struct btrfs_fs_i
 			break;
 		}
 		ret = btrfs_chunk_alloc(trans,
-				     btrfs_metadata_alloc_profile(fs_info),
+				     btrfs_get_alloc_profile(fs_info,
+							     space_info->flags),
 				     (state == ALLOC_CHUNK) ?
 				     CHUNK_ALLOC_NO_FORCE : CHUNK_ALLOC_FORCE);
 		btrfs_end_transaction(trans);