On 1/10/23 08:27, Bart Van Assche wrote: > Introduce a function that makes it easy to verify whether a write > request is for a sequential write required or sequential write preferred > zone. > > Cc: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> > --- > include/linux/blk-mq.h | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h > index 6735db1ad24d..29f834e5c3a9 100644 > --- a/include/linux/blk-mq.h > +++ b/include/linux/blk-mq.h > @@ -1167,6 +1167,24 @@ static inline unsigned int blk_rq_zone_is_seq(struct request *rq) > return disk_zone_is_seq(rq->q->disk, blk_rq_pos(rq)); > } > > +/** > + * blk_rq_is_seq_zone_write() - Whether @rq is a write request for a sequential zone. > + * @rq: Request to examine. > + * > + * In this context sequential zone means either a sequential write required or > + * to a sequential write preferred zone. ...means either a sequential write required zone or a sequential write preferred zone. > + */ > +static inline bool blk_rq_is_seq_zone_write(struct request *rq) > +{ > + switch (req_op(rq)) { > + case REQ_OP_WRITE: > + case REQ_OP_WRITE_ZEROES: REQ_OP_ZONE_APPEND ? > + return blk_rq_zone_is_seq(rq); > + default: > + return false; > + } > +} > + > bool blk_req_needs_zone_write_lock(struct request *rq); > bool blk_req_zone_write_trylock(struct request *rq); > void __blk_req_zone_write_lock(struct request *rq); > @@ -1197,6 +1215,11 @@ static inline bool blk_req_can_dispatch_to_zone(struct request *rq) > return !blk_req_zone_is_write_locked(rq); > } > #else /* CONFIG_BLK_DEV_ZONED */ > +static inline bool blk_rq_is_seq_zone_write(struct request *rq) > +{ > + return false; > +} > + > static inline bool blk_req_needs_zone_write_lock(struct request *rq) > { > return false; -- Damien Le Moal Western Digital Research