This is preparatory work for RAID1C3, making use of the raid_attr table
that replaces the hand crafted if-else-if sequences and bit mask checks.
Pluging a new bg profile is easy on top of that, though there are still
some possible cleanups left.
There's one user-visible change, patch 2/15, where the balance filters
allow conversion to the RAID56 profiles with the minimum number of
devices. This is for consistency with mkfs/mount.
So this will work:
$ mkfs.btrfs -d raid1 -m raid1 /dev/sda /dev/sdb
$ mount dev/sda /mnt
$ btrfs balance start -dconvert=raid5 -mconvert=raid5 /mnt
David Sterba (15):
btrfs: fix minimum number of chunk errors for DUP
btrfs: raid56: allow the exact minimum number of devices for balance
convert
btrfs: remove mapping tree structures indirection
btrfs: use raid_attr table in get_profile_num_devs
btrfs: use raid_attr in btrfs_chunk_max_errors
btrfs: use raid_attr table in calc_stripe_length for nparity
btrfs: use raid_attr to get allowed profiles for balance conversion
btrfs: use raid_attr table to find profiles for integrity lowering
btrfs: use raid_attr table for btrfs_bg_type_to_factor
btrfs: factor out helper for counting data stripes
btrfs: use u8 for raid_array members
btrfs: factor out devs_max setting in __btrfs_alloc_chunk
btrfs: refactor helper for bg flags to name conversion
btrfs: constify map parameter for nr_parity_stripes and
nr_data_stripes
btrfs: read number of data stripes from map only once
fs/btrfs/ctree.h | 6 +-
fs/btrfs/dev-replace.c | 2 +-
fs/btrfs/disk-io.c | 6 +-
fs/btrfs/extent-tree.c | 28 ++---
fs/btrfs/free-space-cache.c | 2 +-
fs/btrfs/raid56.h | 4 +-
fs/btrfs/scrub.c | 16 +--
fs/btrfs/volumes.c | 202 ++++++++++++++++--------------------
fs/btrfs/volumes.h | 24 ++---
9 files changed, 125 insertions(+), 165 deletions(-)
--
2.21.0