diff options
Diffstat (limited to 'fs/btrfs/relocation.c')
| -rw-r--r-- | fs/btrfs/relocation.c | 12 | 
1 files changed, 8 insertions, 4 deletions
diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 776f0aa128f..242d6de4d8e 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -2074,7 +2074,8 @@ static noinline_for_stack int merge_reloc_root(struct reloc_control *rc,  		BUG_ON(IS_ERR(trans));  		trans->block_rsv = rc->block_rsv; -		ret = btrfs_block_rsv_refill(root, rc->block_rsv, min_reserved); +		ret = btrfs_block_rsv_refill(root, rc->block_rsv, min_reserved, +					     BTRFS_RESERVE_FLUSH_ALL);  		if (ret) {  			BUG_ON(ret != -EAGAIN);  			ret = btrfs_commit_transaction(trans, root); @@ -2184,7 +2185,8 @@ int prepare_to_merge(struct reloc_control *rc, int err)  again:  	if (!err) {  		num_bytes = rc->merging_rsv_size; -		ret = btrfs_block_rsv_add(root, rc->block_rsv, num_bytes); +		ret = btrfs_block_rsv_add(root, rc->block_rsv, num_bytes, +					  BTRFS_RESERVE_FLUSH_ALL);  		if (ret)  			err = ret;  	} @@ -2459,7 +2461,8 @@ static int reserve_metadata_space(struct btrfs_trans_handle *trans,  	num_bytes = calcu_metadata_size(rc, node, 1) * 2;  	trans->block_rsv = rc->block_rsv; -	ret = btrfs_block_rsv_add(root, rc->block_rsv, num_bytes); +	ret = btrfs_block_rsv_add(root, rc->block_rsv, num_bytes, +				  BTRFS_RESERVE_FLUSH_ALL);  	if (ret) {  		if (ret == -EAGAIN)  			rc->commit_transaction = 1; @@ -3685,7 +3688,8 @@ int prepare_to_relocate(struct reloc_control *rc)  	 * is no reservation in transaction handle.  	 */  	ret = btrfs_block_rsv_add(rc->extent_root, rc->block_rsv, -				  rc->extent_root->nodesize * 256); +				  rc->extent_root->nodesize * 256, +				  BTRFS_RESERVE_FLUSH_ALL);  	if (ret)  		return ret;  |