diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 128e52489f817d7ecc49a0ecfc796623b0164c2f..415a6ad5ba225d354a3fa2b9fe25da188c30e3fd 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -9215,6 +9215,7 @@ static int btrfs_truncate(struct inode *inode)
 			break;
 		}
 
+		btrfs_block_rsv_release(fs_info, rsv, -1);
 		ret = btrfs_block_rsv_migrate(&fs_info->trans_block_rsv,
 					      rsv, min_size, 0);
 		BUG_ON(ret);	/* shouldn't happen */