btrfs: only enforce free space tree if v1 cache is required for bs < ps cases

[BUG]
Since the introduction of btrfs bs < ps support, v1 cache was never on
the plan due to its hard coded PAGE_SIZE usage, and the future plan to
properly deprecate it.

However for bs < ps cases, even if 'nospace_cache,clear_cache' mount
option is specified, it's never respected and free space tree is always
enabled:

mkfs.btrfs -f -O ^bgt,fst $dev
mount $dev $mnt -o clear_cache,nospace_cache
umount $mnt
btrfs ins dump-super $dev
...
compat_ro_flags 0x3
( FREE_SPACE_TREE |
FREE_SPACE_TREE_VALID )
...

This means a different behavior compared to bs >= ps cases.

[CAUSE]
The forcing usage of v2 space cache is done inside
btrfs_set_free_space_cache_settings(), however it never checks if we're
even using space cache but always enabling v2 cache.

[FIX]
Instead unconditionally enable v2 cache, only forcing v2 cache if the
old v1 cache is required.

Now v2 space cache can be properly disabled on bs < ps cases:

mkfs.btrfs -f -O ^bgt,fst $dev
mount $dev $mnt -o clear_cache,nospace_cache
umount $mnt
btrfs ins dump-super $dev
...
compat_ro_flags 0x0
...

Fixes: 9f73f1aef98b ("btrfs: force v2 space cache usage for subpage mount")
Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>

authored by Qu Wenruo and committed by David Sterba 30bcf4e8 8731f2c5

Changed files
+5 -7
fs
btrfs
+5 -7
fs/btrfs/super.c
··· 736 736 */ 737 737 void btrfs_set_free_space_cache_settings(struct btrfs_fs_info *fs_info) 738 738 { 739 - if (fs_info->sectorsize < PAGE_SIZE) { 739 + if (fs_info->sectorsize < PAGE_SIZE && btrfs_test_opt(fs_info, SPACE_CACHE)) { 740 + btrfs_info(fs_info, 741 + "forcing free space tree for sector size %u with page size %lu", 742 + fs_info->sectorsize, PAGE_SIZE); 740 743 btrfs_clear_opt(fs_info->mount_opt, SPACE_CACHE); 741 - if (!btrfs_test_opt(fs_info, FREE_SPACE_TREE)) { 742 - btrfs_info(fs_info, 743 - "forcing free space tree for sector size %u with page size %lu", 744 - fs_info->sectorsize, PAGE_SIZE); 745 - btrfs_set_opt(fs_info->mount_opt, FREE_SPACE_TREE); 746 - } 744 + btrfs_set_opt(fs_info->mount_opt, FREE_SPACE_TREE); 747 745 } 748 746 749 747 /*