Lines Matching refs:zones
75 struct blk_zone *zones = data; in copy_zone_info_cb() local
77 memcpy(&zones[idx], zone, sizeof(*zone)); in copy_zone_info_cb()
82 static int sb_write_pointer(struct block_device *bdev, struct blk_zone *zones, in sb_write_pointer() argument
91 ASSERT(zones[i].type != BLK_ZONE_TYPE_CONVENTIONAL); in sb_write_pointer()
92 empty[i] = (zones[i].cond == BLK_ZONE_COND_EMPTY); in sb_write_pointer()
93 full[i] = sb_zone_is_full(&zones[i]); in sb_write_pointer()
115 *wp_ret = zones[0].start << SECTOR_SHIFT; in sb_write_pointer()
127 bytenr = ((zones[i].start + zones[i].len) in sb_write_pointer()
142 sector = zones[1].start; in sb_write_pointer()
144 sector = zones[0].start; in sb_write_pointer()
149 sector = zones[0].wp; in sb_write_pointer()
151 sector = zones[1].wp; in sb_write_pointer()
196 struct blk_zone *zones, unsigned int nr_zones) in emulate_report_zones() argument
204 zones[i].start = i * zone_sectors + pos; in emulate_report_zones()
205 zones[i].len = zone_sectors; in emulate_report_zones()
206 zones[i].capacity = zone_sectors; in emulate_report_zones()
207 zones[i].wp = zones[i].start + zone_sectors; in emulate_report_zones()
208 zones[i].type = BLK_ZONE_TYPE_CONVENTIONAL; in emulate_report_zones()
209 zones[i].cond = BLK_ZONE_COND_NOT_WP; in emulate_report_zones()
211 if (zones[i].wp >= bdev_size) { in emulate_report_zones()
221 struct blk_zone *zones, unsigned int *nr_zones) in btrfs_get_dev_zones() argument
230 ret = emulate_report_zones(device, pos, zones, *nr_zones); in btrfs_get_dev_zones()
258 memcpy(zones, zinfo->zone_cache + zno, in btrfs_get_dev_zones()
265 copy_zone_info_cb, zones); in btrfs_get_dev_zones()
281 memcpy(zinfo->zone_cache + zno, zones, in btrfs_get_dev_zones()
366 struct blk_zone *zones = NULL; in btrfs_get_dev_zone_info() local
456 zones = kvcalloc(BTRFS_REPORT_NR_ZONES, sizeof(struct blk_zone), GFP_KERNEL); in btrfs_get_dev_zone_info()
457 if (!zones) { in btrfs_get_dev_zone_info()
483 ret = btrfs_get_dev_zones(device, sector << SECTOR_SHIFT, zones, in btrfs_get_dev_zone_info()
489 if (zones[i].type == BLK_ZONE_TYPE_SEQWRITE_REQ) in btrfs_get_dev_zone_info()
491 switch (zones[i].cond) { in btrfs_get_dev_zone_info()
504 sector = zones[nr_zones - 1].start + zones[nr_zones - 1].len; in btrfs_get_dev_zone_info()
577 kvfree(zones); in btrfs_get_dev_zone_info()
609 kvfree(zones); in btrfs_get_dev_zone_info()
812 static int sb_log_location(struct block_device *bdev, struct blk_zone *zones, in sb_log_location() argument
818 if (zones[0].type == BLK_ZONE_TYPE_CONVENTIONAL) { in sb_log_location()
819 *bytenr_ret = zones[0].start << SECTOR_SHIFT; in sb_log_location()
823 ret = sb_write_pointer(bdev, zones, &wp); in sb_log_location()
830 if (wp == zones[0].start << SECTOR_SHIFT) in sb_log_location()
831 reset = &zones[0]; in sb_log_location()
832 else if (wp == zones[1].start << SECTOR_SHIFT) in sb_log_location()
833 reset = &zones[1]; in sb_log_location()
854 if (wp == zones[0].start << SECTOR_SHIFT) in sb_log_location()
855 zone_end = zones[1].start + zones[1].capacity; in sb_log_location()
856 else if (wp == zones[1].start << SECTOR_SHIFT) in sb_log_location()
857 zone_end = zones[0].start + zones[0].capacity; in sb_log_location()
873 struct blk_zone zones[BTRFS_NR_SB_LOG_ZONES]; in btrfs_sb_log_location_bdev() local
901 zones); in btrfs_sb_log_location_bdev()
907 return sb_log_location(bdev, zones, rw, bytenr_ret); in btrfs_sb_log_location_bdev()