On Wed, Sep 25, 2019 at 10:13:27AM +0800, Qu Wenruo wrote: > [BUG] > With v5.3 kernel, we just can't convert to SINGLE profile by all means: > # btrfs balance start -f -dconvert=single $mnt > ERROR: error during balancing '/mnt/btrfs': Invalid argument > # dmesg -t | tail > validate_convert_profile: data profile=0x1000000000000 allowed=0x20 > is_valid=1 final=0x1000000000000 ret=1 > BTRFS error (device dm-3): balance: invalid convert data profile single > > [CAUSE] > With the extra debug output added, it shows that the @allowed bit is > lacking the special in-memory only SINGLE profile bit. > > Thus we fail at that (profile & ~allowed) check. > > This regression is caused by commit 081db89b13cb ("btrfs: use raid_attr > to get allowed profiles for balance conversion") and the fact that we > don't use any bit to indicate SINGLE profile on-disk, but uses special > in-memory only bit to help distinguish different profiles. > > [FIX] > Add that BTRFS_AVAIL_ALLOC_BIT_SINGLE to @allowed, so the code should be > the same as it was and fix the regression. > > Reported-by: Chris Murphy <li...@colorremedies.com> > Fixes: 081db89b13cb ("btrfs: use raid_attr to get allowed profiles for > balance conversion") > Signed-off-by: Qu Wenruo <w...@suse.com>
Added to misc-next, thanks.