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 | /* Helper to convert BLK_ZONE_ZONE_XXX to its string format XXX */ | 1008 | /* Helper to convert BLK_ZONE_ZONE_XXX to its string format XXX */ |
| 1009 | const char *blk_zone_cond_str(enum blk_zone_cond zone_cond); | 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 | static inline unsigned int blk_rq_zone_no(struct request *rq) | 1023 | static inline unsigned int blk_rq_zone_no(struct request *rq) |
| 1012 | { | 1024 | { |
| 1013 | return blk_queue_zone_no(rq->q, blk_rq_pos(rq)); | 1025 | return blk_queue_zone_no(rq->q, blk_rq_pos(rq)); |