Lines Matching defs:zone_info
188 struct btrfs_zoned_device_info *zone_info)
190 return (u64)zone_number << zone_info->zone_size_shift;
226 struct btrfs_zoned_device_info *zinfo = device->zone_info;
252 struct blk_zone *zone_info;
254 zone_info = &zinfo->zone_cache[zno + i];
255 if (!zone_info->len)
363 struct btrfs_zoned_device_info *zone_info = NULL;
382 if (device->zone_info)
385 zone_info = kzalloc(sizeof(*zone_info), GFP_KERNEL);
386 if (!zone_info)
389 device->zone_info = zone_info;
405 zone_info->zone_size = zone_sectors << SECTOR_SHIFT;
408 if (zone_info->zone_size > BTRFS_MAX_ZONE_SIZE) {
412 zone_info->zone_size, BTRFS_MAX_ZONE_SIZE);
415 } else if (zone_info->zone_size < BTRFS_MIN_ZONE_SIZE) {
419 zone_info->zone_size, BTRFS_MIN_ZONE_SIZE);
425 zone_info->zone_size_shift = ilog2(zone_info->zone_size);
426 zone_info->nr_zones = nr_sectors >> ilog2(zone_sectors);
428 zone_info->nr_zones++;
439 zone_info->max_active_zones = max_active_zones;
441 zone_info->seq_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
442 if (!zone_info->seq_zones) {
447 zone_info->empty_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
448 if (!zone_info->empty_zones) {
453 zone_info->active_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
454 if (!zone_info->active_zones) {
471 zone_info->zone_cache = vcalloc(zone_info->nr_zones,
473 if (!zone_info->zone_cache) {
493 __set_bit(nreported, zone_info->seq_zones);
496 __set_bit(nreported, zone_info->empty_zones);
501 __set_bit(nreported, zone_info->active_zones);
510 if (nreported != zone_info->nr_zones) {
514 zone_info->nr_zones);
528 atomic_set(&zone_info->active_zones_left,
540 sb_zone = sb_zone_number(zone_info->zone_size_shift, i);
541 if (sb_zone + 1 >= zone_info->nr_zones)
545 zone_start_physical(sb_zone, zone_info),
546 &zone_info->sb_zones[sb_pos],
563 if (zone_info->sb_zones[BTRFS_NR_SB_LOG_ZONES * i].type ==
568 &zone_info->sb_zones[sb_pos], &sb_wp);
605 model, rcu_str_deref(device->name), zone_info->nr_zones,
606 emulated, zone_info->zone_size);
620 struct btrfs_zoned_device_info *zone_info = device->zone_info;
622 if (!zone_info)
625 bitmap_free(zone_info->active_zones);
626 bitmap_free(zone_info->seq_zones);
627 bitmap_free(zone_info->empty_zones);
628 vfree(zone_info->zone_cache);
629 kfree(zone_info);
630 device->zone_info = NULL;
635 struct btrfs_zoned_device_info *zone_info;
637 zone_info = kmemdup(orig_dev->zone_info, sizeof(*zone_info), GFP_KERNEL);
638 if (!zone_info)
641 zone_info->seq_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
642 if (!zone_info->seq_zones)
645 bitmap_copy(zone_info->seq_zones, orig_dev->zone_info->seq_zones,
646 zone_info->nr_zones);
648 zone_info->empty_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
649 if (!zone_info->empty_zones)
652 bitmap_copy(zone_info->empty_zones, orig_dev->zone_info->empty_zones,
653 zone_info->nr_zones);
655 zone_info->active_zones = bitmap_zalloc(zone_info->nr_zones, GFP_KERNEL);
656 if (!zone_info->active_zones)
659 bitmap_copy(zone_info->active_zones, orig_dev->zone_info->active_zones,
660 zone_info->nr_zones);
661 zone_info->zone_cache = NULL;
663 return zone_info;
666 bitmap_free(zone_info->seq_zones);
667 bitmap_free(zone_info->empty_zones);
668 bitmap_free(zone_info->active_zones);
669 kfree(zone_info);
720 struct btrfs_zoned_device_info *zone_info = device->zone_info;
726 zone_size = zone_info->zone_size;
727 } else if (zone_info->zone_size != zone_size) {
730 zone_info->zone_size, zone_size);
918 struct btrfs_zoned_device_info *zinfo = device->zone_info;
961 struct btrfs_zoned_device_info *zinfo = device->zone_info;
1047 struct btrfs_zoned_device_info *zinfo = device->zone_info;
1105 struct btrfs_zoned_device_info *zone_info = device->zone_info;
1106 unsigned int zno = (pos >> zone_info->zone_size_shift);
1109 if (zone_info->max_active_zones == 0)
1112 if (!test_bit(zno, zone_info->active_zones)) {
1114 if (atomic_dec_if_positive(&zone_info->active_zones_left) < 0)
1116 if (test_and_set_bit(zno, zone_info->active_zones)) {
1118 atomic_inc(&zone_info->active_zones_left);
1127 struct btrfs_zoned_device_info *zone_info = device->zone_info;
1128 unsigned int zno = (pos >> zone_info->zone_size_shift);
1131 if (zone_info->max_active_zones == 0)
1134 if (test_and_clear_bit(zno, zone_info->active_zones))
1135 atomic_inc(&zone_info->active_zones_left);
1154 physical += device->zone_info->zone_size;
1155 length -= device->zone_info->zone_size;
1163 struct btrfs_zoned_device_info *zinfo = device->zone_info;
1379 if (!device->zone_info->max_active_zones)
1431 physical[i] >> device->zone_info->zone_size_shift,
1997 zinfo = device->zone_info;
2156 struct btrfs_zoned_device_info *zinfo = device->zone_info;
2211 struct btrfs_zoned_device_info *zinfo = device->zone_info;
2325 if (device->zone_info) {
2326 vfree(device->zone_info->zone_cache);
2327 device->zone_info->zone_cache = NULL;
2515 device->zone_info->reserved_active_zones =
2530 map->stripes[i].dev->zone_info->reserved_active_zones--;