Lines Matching refs:zone

32 				       struct nullb_zone *zone)  in null_init_zone_lock()  argument
35 spin_lock_init(&zone->spinlock); in null_init_zone_lock()
37 mutex_init(&zone->mutex); in null_init_zone_lock()
41 struct nullb_zone *zone) in null_lock_zone() argument
44 spin_lock_irq(&zone->spinlock); in null_lock_zone()
46 mutex_lock(&zone->mutex); in null_lock_zone()
50 struct nullb_zone *zone) in null_unlock_zone() argument
53 spin_unlock_irq(&zone->spinlock); in null_unlock_zone()
55 mutex_unlock(&zone->mutex); in null_unlock_zone()
61 struct nullb_zone *zone; in null_init_zoned_dev() local
121 zone = &dev->zones[i]; in null_init_zoned_dev()
123 null_init_zone_lock(dev, zone); in null_init_zoned_dev()
124 zone->start = sector; in null_init_zoned_dev()
125 zone->len = dev->zone_size_sects; in null_init_zoned_dev()
126 zone->capacity = zone->len; in null_init_zoned_dev()
127 zone->wp = zone->start + zone->len; in null_init_zoned_dev()
128 zone->type = BLK_ZONE_TYPE_CONVENTIONAL; in null_init_zoned_dev()
129 zone->cond = BLK_ZONE_COND_NOT_WP; in null_init_zoned_dev()
135 zone = &dev->zones[i]; in null_init_zoned_dev()
137 null_init_zone_lock(dev, zone); in null_init_zoned_dev()
138 zone->start = zone->wp = sector; in null_init_zoned_dev()
139 if (zone->start + dev->zone_size_sects > dev_capacity_sects) in null_init_zoned_dev()
140 zone->len = dev_capacity_sects - zone->start; in null_init_zoned_dev()
142 zone->len = dev->zone_size_sects; in null_init_zoned_dev()
143 zone->capacity = in null_init_zoned_dev()
144 min_t(sector_t, zone->len, zone_capacity_sects); in null_init_zoned_dev()
145 zone->type = BLK_ZONE_TYPE_SEQWRITE_REQ; in null_init_zoned_dev()
146 zone->cond = BLK_ZONE_COND_EMPTY; in null_init_zoned_dev()
192 struct nullb_zone *zone; in null_report_zones() local
204 zone = &dev->zones[first_zone]; in null_report_zones()
205 for (i = 0; i < nr_zones; i++, zone++) { in null_report_zones()
212 null_lock_zone(dev, zone); in null_report_zones()
213 blkz.start = zone->start; in null_report_zones()
214 blkz.len = zone->len; in null_report_zones()
215 blkz.wp = zone->wp; in null_report_zones()
216 blkz.type = zone->type; in null_report_zones()
217 blkz.cond = zone->cond; in null_report_zones()
218 blkz.capacity = zone->capacity; in null_report_zones()
219 null_unlock_zone(dev, zone); in null_report_zones()
237 struct nullb_zone *zone = &dev->zones[null_zone_no(dev, sector)]; in null_zone_valid_read_len() local
241 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL || in null_zone_valid_read_len()
242 sector + nr_sectors <= zone->wp) in null_zone_valid_read_len()
245 if (sector > zone->wp) in null_zone_valid_read_len()
248 return (zone->wp - sector) << SECTOR_SHIFT; in null_zone_valid_read_len()
252 struct nullb_zone *zone) in __null_close_zone() argument
254 switch (zone->cond) { in __null_close_zone()
270 if (zone->wp == zone->start) { in __null_close_zone()
271 zone->cond = BLK_ZONE_COND_EMPTY; in __null_close_zone()
273 zone->cond = BLK_ZONE_COND_CLOSED; in __null_close_zone()
282 struct nullb_zone *zone; in null_close_imp_open_zone() local
290 zone = &dev->zones[zno]; in null_close_imp_open_zone()
295 if (zone->cond == BLK_ZONE_COND_IMP_OPEN) { in null_close_imp_open_zone()
296 __null_close_zone(dev, zone); in null_close_imp_open_zone()
347 struct nullb_zone *zone) in null_check_zone_resources() argument
351 switch (zone->cond) { in null_check_zone_resources()
371 struct nullb_zone *zone = &dev->zones[zno]; in null_zone_write() local
374 trace_nullb_zone_op(cmd, zno, zone->cond); in null_zone_write()
376 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) { in null_zone_write()
382 null_lock_zone(dev, zone); in null_zone_write()
384 if (zone->cond == BLK_ZONE_COND_FULL) { in null_zone_write()
397 sector = zone->wp; in null_zone_write()
402 } else if (sector != zone->wp) { in null_zone_write()
407 if (zone->wp + nr_sectors > zone->start + zone->capacity) { in null_zone_write()
412 if (zone->cond == BLK_ZONE_COND_CLOSED || in null_zone_write()
413 zone->cond == BLK_ZONE_COND_EMPTY) { in null_zone_write()
416 ret = null_check_zone_resources(dev, zone); in null_zone_write()
421 if (zone->cond == BLK_ZONE_COND_CLOSED) { in null_zone_write()
424 } else if (zone->cond == BLK_ZONE_COND_EMPTY) { in null_zone_write()
428 if (zone->cond != BLK_ZONE_COND_EXP_OPEN) in null_zone_write()
429 zone->cond = BLK_ZONE_COND_IMP_OPEN; in null_zone_write()
438 zone->wp += nr_sectors; in null_zone_write()
439 if (zone->wp == zone->start + zone->capacity) { in null_zone_write()
441 if (zone->cond == BLK_ZONE_COND_EXP_OPEN) in null_zone_write()
443 else if (zone->cond == BLK_ZONE_COND_IMP_OPEN) in null_zone_write()
445 zone->cond = BLK_ZONE_COND_FULL; in null_zone_write()
452 null_unlock_zone(dev, zone); in null_zone_write()
458 struct nullb_zone *zone) in null_open_zone() argument
462 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_open_zone()
467 switch (zone->cond) { in null_open_zone()
472 ret = null_check_zone_resources(dev, zone); in null_open_zone()
480 ret = null_check_zone_resources(dev, zone); in null_open_zone()
491 zone->cond = BLK_ZONE_COND_EXP_OPEN; in null_open_zone()
501 struct nullb_zone *zone) in null_close_zone() argument
505 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_close_zone()
509 ret = __null_close_zone(dev, zone); in null_close_zone()
516 struct nullb_zone *zone) in null_finish_zone() argument
520 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_finish_zone()
525 switch (zone->cond) { in null_finish_zone()
530 ret = null_check_zone_resources(dev, zone); in null_finish_zone()
541 ret = null_check_zone_resources(dev, zone); in null_finish_zone()
551 zone->cond = BLK_ZONE_COND_FULL; in null_finish_zone()
552 zone->wp = zone->start + zone->len; in null_finish_zone()
561 struct nullb_zone *zone) in null_reset_zone() argument
563 if (zone->type == BLK_ZONE_TYPE_CONVENTIONAL) in null_reset_zone()
568 switch (zone->cond) { in null_reset_zone()
589 zone->cond = BLK_ZONE_COND_EMPTY; in null_reset_zone()
590 zone->wp = zone->start; in null_reset_zone()
595 return null_handle_discard(dev, zone->start, zone->len); in null_reset_zone()
605 struct nullb_zone *zone; in null_zone_mgmt() local
611 zone = &dev->zones[i]; in null_zone_mgmt()
612 null_lock_zone(dev, zone); in null_zone_mgmt()
613 if (zone->cond != BLK_ZONE_COND_EMPTY) { in null_zone_mgmt()
614 null_reset_zone(dev, zone); in null_zone_mgmt()
615 trace_nullb_zone_op(cmd, i, zone->cond); in null_zone_mgmt()
617 null_unlock_zone(dev, zone); in null_zone_mgmt()
623 zone = &dev->zones[zone_no]; in null_zone_mgmt()
625 null_lock_zone(dev, zone); in null_zone_mgmt()
629 ret = null_reset_zone(dev, zone); in null_zone_mgmt()
632 ret = null_open_zone(dev, zone); in null_zone_mgmt()
635 ret = null_close_zone(dev, zone); in null_zone_mgmt()
638 ret = null_finish_zone(dev, zone); in null_zone_mgmt()
646 trace_nullb_zone_op(cmd, zone_no, zone->cond); in null_zone_mgmt()
648 null_unlock_zone(dev, zone); in null_zone_mgmt()
657 struct nullb_zone *zone; in null_process_zoned_cmd() local
673 zone = &dev->zones[null_zone_no(dev, sector)]; in null_process_zoned_cmd()
675 null_lock_zone(dev, zone); in null_process_zoned_cmd()
677 null_unlock_zone(dev, zone); in null_process_zoned_cmd()