diff options
Diffstat (limited to 'fs/btrfs/volumes.c')
-rw-r--r-- | fs/btrfs/volumes.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 76201d6f6ce4..6fc735869c18 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
@@ -3585,23 +3585,10 @@ int btrfs_balance(struct btrfs_balance_control *bctl, | |||
3585 | } while (read_seqretry(&fs_info->profiles_lock, seq)); | 3585 | } while (read_seqretry(&fs_info->profiles_lock, seq)); |
3586 | 3586 | ||
3587 | if (bctl->sys.flags & BTRFS_BALANCE_ARGS_CONVERT) { | 3587 | if (bctl->sys.flags & BTRFS_BALANCE_ARGS_CONVERT) { |
3588 | int num_tolerated_disk_barrier_failures; | 3588 | fs_info->num_tolerated_disk_barrier_failures = min( |
3589 | u64 target = bctl->sys.target; | 3589 | btrfs_calc_num_tolerated_disk_barrier_failures(fs_info), |
3590 | 3590 | btrfs_get_num_tolerated_disk_barrier_failures( | |
3591 | num_tolerated_disk_barrier_failures = | 3591 | bctl->sys.target)); |
3592 | btrfs_calc_num_tolerated_disk_barrier_failures(fs_info); | ||
3593 | if (num_tolerated_disk_barrier_failures > 0 && | ||
3594 | (target & | ||
3595 | (BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID0 | | ||
3596 | BTRFS_AVAIL_ALLOC_BIT_SINGLE))) | ||
3597 | num_tolerated_disk_barrier_failures = 0; | ||
3598 | else if (num_tolerated_disk_barrier_failures > 1 && | ||
3599 | (target & | ||
3600 | (BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID10))) | ||
3601 | num_tolerated_disk_barrier_failures = 1; | ||
3602 | |||
3603 | fs_info->num_tolerated_disk_barrier_failures = | ||
3604 | num_tolerated_disk_barrier_failures; | ||
3605 | } | 3592 | } |
3606 | 3593 | ||
3607 | ret = insert_balance_item(fs_info->tree_root, bctl); | 3594 | ret = insert_balance_item(fs_info->tree_root, bctl); |