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.

Reply via email to