Lines Matching refs:zno
329 static int dm_update_zone_wp_offset(struct mapped_device *md, unsigned int zno, in dm_update_zone_wp_offset() argument
332 sector_t sector = zno * bdev_zone_sectors(md->disk->part0); in dm_update_zone_wp_offset()
369 unsigned int zno, struct bio *clone) in dm_zone_map_bio_begin() argument
372 unsigned int zwp_offset = READ_ONCE(md->zwp_offset[zno]); in dm_zone_map_bio_begin()
381 if (dm_update_zone_wp_offset(md, zno, &zwp_offset)) in dm_zone_map_bio_begin()
383 WRITE_ONCE(md->zwp_offset[zno], zwp_offset); in dm_zone_map_bio_begin()
424 static blk_status_t dm_zone_map_bio_end(struct mapped_device *md, unsigned int zno, in dm_zone_map_bio_end() argument
428 unsigned int zwp_offset = READ_ONCE(md->zwp_offset[zno]); in dm_zone_map_bio_end()
437 WRITE_ONCE(md->zwp_offset[zno], 0); in dm_zone_map_bio_end()
440 WRITE_ONCE(md->zwp_offset[zno], in dm_zone_map_bio_end()
445 WRITE_ONCE(md->zwp_offset[zno], zwp_offset + nr_sectors); in dm_zone_map_bio_end()
456 WRITE_ONCE(md->zwp_offset[zno], zwp_offset + nr_sectors); in dm_zone_map_bio_end()
464 static inline void dm_zone_lock(struct gendisk *disk, unsigned int zno, in dm_zone_lock() argument
470 wait_on_bit_lock_io(disk->seq_zones_wlock, zno, TASK_UNINTERRUPTIBLE); in dm_zone_lock()
474 static inline void dm_zone_unlock(struct gendisk *disk, unsigned int zno, in dm_zone_unlock() argument
480 WARN_ON_ONCE(!test_bit(zno, disk->seq_zones_wlock)); in dm_zone_unlock()
481 clear_bit_unlock(zno, disk->seq_zones_wlock); in dm_zone_unlock()
483 wake_up_bit(disk->seq_zones_wlock, zno); in dm_zone_unlock()
520 unsigned int zno; in dm_zone_map_bio() local
532 zno = bio_zone_no(clone); in dm_zone_map_bio()
533 dm_zone_lock(md->disk, zno, clone); in dm_zone_map_bio()
542 if (!dm_zone_map_bio_begin(md, zno, clone)) { in dm_zone_map_bio()
543 dm_zone_unlock(md->disk, zno, clone); in dm_zone_map_bio()
555 sts = dm_zone_map_bio_end(md, zno, &orig_bio_details, in dm_zone_map_bio()
564 sts = dm_zone_map_bio_end(md, zno, &orig_bio_details, in dm_zone_map_bio()
567 dm_zone_unlock(md->disk, zno, clone); in dm_zone_map_bio()
572 dm_zone_unlock(md->disk, zno, clone); in dm_zone_map_bio()
592 unsigned int zno; in dm_zone_endio() local
622 zno = bio_zone_no(orig_bio); in dm_zone_endio()
632 WRITE_ONCE(md->zwp_offset[zno], DM_ZONE_INVALID_WP_OFST); in dm_zone_endio()
638 zwp_offset = READ_ONCE(md->zwp_offset[zno]); in dm_zone_endio()
640 WRITE_ONCE(md->zwp_offset[zno], in dm_zone_endio()
647 dm_zone_unlock(disk, zno, clone); in dm_zone_endio()