forked from Minki/linux
btrfs: zoned: do not load fs_info::zoned from incompat flag
Don't set the zoned flag in fs_info as soon as we're encountering the incompat filesystem flag for a zoned filesystem on mount. The zoned flag in fs_info is in a union together with the zone_size, so setting it too early will result in setting an incorrect zone_size as well. Once the correct zone_size is read from the device, we can rely on the zoned flag in fs_info as well to determine if the filesystem is zoned. Reviewed-by: Anand Jain <anand.jain@oracle.com> Reviewed-by: Josef Bacik <josef@toxicpanda.com> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
4afd2fe835
commit
b53429bad3
@ -3201,8 +3201,6 @@ int __cold open_ctree(struct super_block *sb, struct btrfs_fs_devices *fs_device
|
||||
if (features & BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA)
|
||||
btrfs_info(fs_info, "has skinny extents");
|
||||
|
||||
fs_info->zoned = (features & BTRFS_FEATURE_INCOMPAT_ZONED);
|
||||
|
||||
/*
|
||||
* flag our filesystem as having big metadata blocks if
|
||||
* they are bigger than the page size
|
||||
|
@ -432,6 +432,14 @@ int btrfs_check_zoned_mode(struct btrfs_fs_info *fs_info)
|
||||
fs_info->zone_size = zone_size;
|
||||
fs_info->max_zone_append_size = max_zone_append_size;
|
||||
|
||||
/*
|
||||
* Check mount options here, because we might change fs_info->zoned
|
||||
* from fs_info->zone_size.
|
||||
*/
|
||||
ret = btrfs_check_mountopts_zoned(fs_info);
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
btrfs_info(fs_info, "zoned mode enabled with zone size %llu", zone_size);
|
||||
out:
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user