summaryrefslogtreecommitdiffstats
path: root/fs/btrfs/block-rsv.h
diff options
context:
space:
mode:
authorQu Wenruo <wqu@suse.com>2019-09-25 10:13:27 +0800
committerDavid Sterba <dsterba@suse.com>2019-09-25 16:00:37 +0200
commitfab273595507a9ec7035df6d5512a955d80a80ba (patch)
tree722375c515bfb86b4b9e66cd4fde307e3c90eba1 /fs/btrfs/block-rsv.h
parent1fac4a54374f7ef385938f3c6cf7649c0fe4f6cd (diff)
downloadlinux-fab273595507a9ec7035df6d5512a955d80a80ba.tar.gz
linux-fab273595507a9ec7035df6d5512a955d80a80ba.tar.bz2
linux-fab273595507a9ec7035df6d5512a955d80a80ba.zip
btrfs: Fix a regression which we can't convert to SINGLE profile
[BUG] With v5.3 kernel, we can't convert to SINGLE profile: # 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@colorremedies.com> Fixes: 081db89b13cb ("btrfs: use raid_attr to get allowed profiles for balance conversion") CC: stable@vger.kernel.org # 5.3+ Reviewed-by: Anand Jain <anand.jain@oracle.com> Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/btrfs/block-rsv.h')
0 files changed, 0 insertions, 0 deletions