提交 5881cfc9 编写于 作者: M Miao Xie 提交者: Josef Bacik

Btrfs: don't steal the reserved space from the global reserve if their space type is different

If the type of the space we need is different with the global reserve, we
can not steal the space from the global reserve, because we can not allocate
the space from the free space cache that the global reserve points to.

Cc: Tsutomu Itoh <t-itoh@jp.fujitsu.com>
Signed-off-by: NMiao Xie <miaox@cn.fujitsu.com>
Signed-off-by: NJosef Bacik <jbacik@fusionio.com>
上级 b586b323
...@@ -6681,9 +6681,11 @@ use_block_rsv(struct btrfs_trans_handle *trans, ...@@ -6681,9 +6681,11 @@ use_block_rsv(struct btrfs_trans_handle *trans,
return block_rsv; return block_rsv;
/* /*
* If we couldn't reserve metadata bytes try and use some from * 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); ret = block_rsv_use_bytes(global_rsv, blocksize);
if (!ret) if (!ret)
return global_rsv; return global_rsv;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册