Introduce the helper functions bio_zone_no() and bio_zone_is_seq(). Both are the BIO counterparts of the request helpers blk_rq_zone_no() and blk_rq_zone_is_seq(), respectively returning the number of the target zone of a bio and true if the BIO target zone is sequential.
Unified · Split
| @@ -1008,6 +1008,18 @@ static inline unsigned int blk_rq_stats_sectors(const struct request *rq) · 1007 unmodified lines | ||
| 1008 | 1008 | /* Helper to convert BLK_ZONE_ZONE_XXX to its string format XXX */ |
| 1009 | 1009 | const char *blk_zone_cond_str(enum blk_zone_cond zone_cond); |
| 1010 | 1010 | |
| 1011 | +static inline unsigned int bio_zone_no(struct bio *bio) | |
| 1012 | +{ | |
| 1013 | + return blk_queue_zone_no(bdev_get_queue(bio->bi_bdev), | |
| 1014 | + bio->bi_iter.bi_sector); | |
| 1015 | +} | |
| 1016 | + | |
| 1017 | +static inline unsigned int bio_zone_is_seq(struct bio *bio) | |
| 1018 | +{ | |
| 1019 | + return blk_queue_zone_is_seq(bdev_get_queue(bio->bi_bdev), | |
| 1020 | + bio->bi_iter.bi_sector); | |
| 1021 | +} | |
| 1022 | + | |
| 1011 | 1023 | static inline unsigned int blk_rq_zone_no(struct request *rq) |
| 1012 | 1024 | { |
| 1013 | 1025 | return blk_queue_zone_no(rq->q, blk_rq_pos(rq)); |