diff options
| author | Maxime Ripard <maxime.ripard@free-electrons.com> | 2013-04-08 21:36:54 +0200 | 
|---|---|---|
| committer | Maxime Ripard <maxime.ripard@free-electrons.com> | 2013-04-08 21:36:54 +0200 | 
| commit | 0b824f8dad9fdfc7c1bf9c1d3ac744075eb73ec6 (patch) | |
| tree | 7559859702f2fa02f6a4db64cf10f6c2e3f80c21 /fs/btrfs/volumes.c | |
| parent | 6dbe51c251a327e012439c4772097a13df43c5b8 (diff) | |
| parent | 3d5a96582303e28c48699f3faaf920ef7d43e6f2 (diff) | |
| download | olio-linux-3.10-0b824f8dad9fdfc7c1bf9c1d3ac744075eb73ec6.tar.xz olio-linux-3.10-0b824f8dad9fdfc7c1bf9c1d3ac744075eb73ec6.zip  | |
Merge remote-tracking branch 'arm-soc/clksrc/cleanup' into sunxi/core-for-3.10
Diffstat (limited to 'fs/btrfs/volumes.c')
| -rw-r--r-- | fs/btrfs/volumes.c | 14 | 
1 files changed, 12 insertions, 2 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 35bb2d4ed29..6b9cff42265 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -2379,7 +2379,11 @@ static int btrfs_relocate_chunk(struct btrfs_root *root,  		return ret;  	trans = btrfs_start_transaction(root, 0); -	BUG_ON(IS_ERR(trans)); +	if (IS_ERR(trans)) { +		ret = PTR_ERR(trans); +		btrfs_std_error(root->fs_info, ret); +		return ret; +	}  	lock_chunks(root); @@ -3050,7 +3054,8 @@ static void __cancel_balance(struct btrfs_fs_info *fs_info)  	unset_balance_control(fs_info);  	ret = del_balance_item(fs_info->tree_root); -	BUG_ON(ret); +	if (ret) +		btrfs_std_error(fs_info, ret);  	atomic_set(&fs_info->mutually_exclusive_operation_running, 0);  } @@ -3230,6 +3235,11 @@ int btrfs_balance(struct btrfs_balance_control *bctl,  		update_ioctl_balance_args(fs_info, 0, bargs);  	} +	if ((ret && ret != -ECANCELED && ret != -ENOSPC) || +	    balance_need_close(fs_info)) { +		__cancel_balance(fs_info); +	} +  	wake_up(&fs_info->balance_wait_q);  	return ret;  |