summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--fs/btrfs/extent-tree.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 5e2c0bf84075..54e63b273a64 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -6681,9 +6681,11 @@ try_reserve:
return block_rsv;
/*
* If we couldn't reserve metadata bytes try and use some from
- * the global reserve.
+ * the global reserve if its space type is the same as the global
+ * reservation.
*/
- if (block_rsv->type != BTRFS_BLOCK_RSV_GLOBAL) {
+ if (block_rsv->type != BTRFS_BLOCK_RSV_GLOBAL &&
+ block_rsv->space_info == global_rsv->space_info) {
ret = block_rsv_use_bytes(global_rsv, blocksize);
if (!ret)
return global_rsv;