Lines Matching refs:zone
88 struct blk_zone *zone = &dev->zones[i]; in null_init_zoned_dev() local
90 zone->start = sector; in null_init_zoned_dev()
91 zone->len = dev->zone_size_sects; in null_init_zoned_dev()
92 zone->capacity = zone->len; in null_init_zoned_dev()
93 zone->wp = zone->start + zone->len; in null_init_zoned_dev()
94 zone->type = BLK_ZONE_TYPE_CONVENTIONAL; in null_init_zoned_dev()
95 zone->cond = BLK_ZONE_COND_NOT_WP; in null_init_zoned_dev()
101 struct blk_zone *zone = &dev->zones[i]; in null_init_zoned_dev() local
103 zone->start = zone->wp = sector; in null_init_zoned_dev()
104 zone->len = dev->zone_size_sects; in null_init_zoned_dev()
105 zone->capacity = dev->zone_capacity << ZONE_SIZE_SHIFT; in null_init_zoned_dev()
106 zone->type = BLK_ZONE_TYPE_SEQWRITE_REQ; in null_init_zoned_dev()
107 zone->cond = BLK_ZONE_COND_EMPTY; in null_init_zoned_dev()
168 struct blk_zone zone; in null_report_zones() local
187 memcpy(&zone, &dev->zones[zno], sizeof(struct blk_zone)); in null_report_zones()
190 error = cb(&zone, i, data); in null_report_zones()
206 struct blk_zone *zone = &dev->zones[null_zone_no(dev, sector)]; in null_zone_valid_read_len() local
210 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL || in null_zone_valid_read_len()
211 sector + nr_sectors <= zone->wp) in null_zone_valid_read_len()
214 if (sector > zone->wp) in null_zone_valid_read_len()
217 return (zone->wp - sector) << SECTOR_SHIFT; in null_zone_valid_read_len()
220 static blk_status_t null_close_zone(struct nullb_device *dev, struct blk_zone *zone) in null_close_zone() argument
222 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_close_zone()
225 switch (zone->cond) { in null_close_zone()
241 if (zone->wp == zone->start) { in null_close_zone()
242 zone->cond = BLK_ZONE_COND_EMPTY; in null_close_zone()
244 zone->cond = BLK_ZONE_COND_CLOSED; in null_close_zone()
306 static blk_status_t null_check_zone_resources(struct nullb_device *dev, struct blk_zone *zone) in null_check_zone_resources() argument
310 switch (zone->cond) { in null_check_zone_resources()
330 struct blk_zone *zone = &dev->zones[zno]; in null_zone_write() local
333 trace_nullb_zone_op(cmd, zno, zone->cond); in null_zone_write()
335 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_zone_write()
340 switch (zone->cond) { in null_zone_write()
347 ret = null_check_zone_resources(dev, zone); in null_zone_write()
367 sector = zone->wp; in null_zone_write()
372 } else if (sector != zone->wp) { in null_zone_write()
377 if (zone->wp + nr_sectors > zone->start + zone->capacity) { in null_zone_write()
382 if (zone->cond == BLK_ZONE_COND_CLOSED) { in null_zone_write()
385 } else if (zone->cond == BLK_ZONE_COND_EMPTY) { in null_zone_write()
388 if (zone->cond != BLK_ZONE_COND_EXP_OPEN) in null_zone_write()
389 zone->cond = BLK_ZONE_COND_IMP_OPEN; in null_zone_write()
405 zone->wp += nr_sectors; in null_zone_write()
406 if (zone->wp == zone->start + zone->capacity) { in null_zone_write()
407 if (zone->cond == BLK_ZONE_COND_EXP_OPEN) in null_zone_write()
409 else if (zone->cond == BLK_ZONE_COND_IMP_OPEN) in null_zone_write()
411 zone->cond = BLK_ZONE_COND_FULL; in null_zone_write()
421 static blk_status_t null_open_zone(struct nullb_device *dev, struct blk_zone *zone) in null_open_zone() argument
425 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_open_zone()
428 switch (zone->cond) { in null_open_zone()
433 ret = null_check_zone_resources(dev, zone); in null_open_zone()
441 ret = null_check_zone_resources(dev, zone); in null_open_zone()
451 zone->cond = BLK_ZONE_COND_EXP_OPEN; in null_open_zone()
457 static blk_status_t null_finish_zone(struct nullb_device *dev, struct blk_zone *zone) in null_finish_zone() argument
461 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_finish_zone()
464 switch (zone->cond) { in null_finish_zone()
469 ret = null_check_zone_resources(dev, zone); in null_finish_zone()
480 ret = null_check_zone_resources(dev, zone); in null_finish_zone()
489 zone->cond = BLK_ZONE_COND_FULL; in null_finish_zone()
490 zone->wp = zone->start + zone->len; in null_finish_zone()
495 static blk_status_t null_reset_zone(struct nullb_device *dev, struct blk_zone *zone) in null_reset_zone() argument
497 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_reset_zone()
500 switch (zone->cond) { in null_reset_zone()
519 zone->cond = BLK_ZONE_COND_EMPTY; in null_reset_zone()
520 zone->wp = zone->start; in null_reset_zone()
530 struct blk_zone *zone; in null_zone_mgmt() local
537 zone = &dev->zones[i]; in null_zone_mgmt()
538 if (zone->cond != BLK_ZONE_COND_EMPTY) { in null_zone_mgmt()
539 null_reset_zone(dev, zone); in null_zone_mgmt()
540 trace_nullb_zone_op(cmd, i, zone->cond); in null_zone_mgmt()
548 zone = &dev->zones[zone_no]; in null_zone_mgmt()
554 ret = null_reset_zone(dev, zone); in null_zone_mgmt()
557 ret = null_open_zone(dev, zone); in null_zone_mgmt()
560 ret = null_close_zone(dev, zone); in null_zone_mgmt()
563 ret = null_finish_zone(dev, zone); in null_zone_mgmt()
571 trace_nullb_zone_op(cmd, zone_no, zone->cond); in null_zone_mgmt()