Re: [PATCH] btrfs: Fix a regression which we can't convert to SINGLE profile

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/25/19 10:13 AM, 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 <lists@xxxxxxxxxxxxxxxxx>
Fixes: 081db89b13cb ("btrfs: use raid_attr to get allowed profiles for balance conversion")
Signed-off-by: Qu Wenruo <wqu@xxxxxxxx>

Reviewed-by: Anand Jain <anand.jain@xxxxxxxxxx>

Thanks, Anand



[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux