mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2026-01-27 12:47:24 +01:00
btrfs: zoned: don't fail mount needlessly due to too many active zones
Previously BTRFS did not look at a device's reported max_open_zones limit, but starting with commit04147d8394("btrfs: zoned: limit active zones to max_open_zones"), zoned BTRFS limited the number of concurrently used block-groups to the number of max_open_zones a device reported, if it hadn't already reported a number of max_active_zones. Starting with commit04147d8394the number of open zones is treated the same way as active zones. But this leads to mount failures on filesystems which have been used before04147d8394because too many zones are in an open state. Ignore the new limitations on these filesystems, so zones can be finished or evacuated. Reported-by: Yuwei Han <hrx@bupt.moe> Link: https://lore.kernel.org/all/2F48A90AF7DDF380+1790bcfd-cb6f-456b-870d-7982f21b5eae@bupt.moe/ Fixes:04147d8394("btrfs: zoned: limit active zones to max_open_zones") Reviewed-by: Naohiro Aota <naohiro.aota@wdc.com> Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
f08d7147da
commit
c9ff83963a
|
|
@ -514,6 +514,11 @@ int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache)
|
|||
|
||||
if (max_active_zones) {
|
||||
if (nactive > max_active_zones) {
|
||||
if (bdev_max_active_zones(bdev) == 0) {
|
||||
max_active_zones = 0;
|
||||
zone_info->max_active_zones = 0;
|
||||
goto validate;
|
||||
}
|
||||
btrfs_err(device->fs_info,
|
||||
"zoned: %u active zones on %s exceeds max_active_zones %u",
|
||||
nactive, rcu_dereference(device->name),
|
||||
|
|
@ -526,6 +531,7 @@ int btrfs_get_dev_zone_info(struct btrfs_device *device, bool populate_cache)
|
|||
set_bit(BTRFS_FS_ACTIVE_ZONE_TRACKING, &fs_info->flags);
|
||||
}
|
||||
|
||||
validate:
|
||||
/* Validate superblock log */
|
||||
nr_zones = BTRFS_NR_SB_LOG_ZONES;
|
||||
for (i = 0; i < BTRFS_SUPER_MIRROR_MAX; i++) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user