• Naohiro Aota's avatar
    btrfs: zoned: activate block group properly on unlimited active zone device · ceb4f608
    Naohiro Aota authored
    btrfs_zone_activate() checks if it activated all the underlying zones in
    the loop. However, that check never hit on an unlimited activate zone
    device (max_active_zones == 0).
    
    Fortunately, it still works without ENOSPC because btrfs_zone_activate()
    returns true in the end, even if block_group->zone_is_active == 0. But, it
    is confusing to have non zone_is_active block group still usable for
    allocation. Also, we are wasting CPU time to iterate the loop every time
    btrfs_zone_activate() is called for the blog groups.
    
    Since error case in the loop is handled by out_unlock, we can just set
    zone_is_active and do the list stuff after the loop.
    
    Fixes: f9a912a3 ("btrfs: zoned: make zone activation multi stripe capable")
    Reviewed-by: default avatarJohannes Thumshirn <johannes.thumshirn@wdc.com>
    Signed-off-by: default avatarNaohiro Aota <naohiro.aota@wdc.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    ceb4f608
zoned.c 51.5 KB