blk-mq: introduce blk_rq_has_data()

Add blk_rq_has_data(), an analogue of bio_has_data() for struct request.
This skips one dereference relative to bio_has_data(rq->bio).

Signed-off-by: Caleb Sander Mateos <csander@purestorage.com>
Reviewed-by: Ming Lei <tom.leiming@gmail.com>
Link: https://patch.msgid.link/20260513211846.1956810-2-csander@purestorage.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Caleb Sander Mateos 2026-05-13 15:18:45 -06:00 committed by Jens Axboe
parent be34ec59ef
commit 999722b344

View File

@ -1104,6 +1104,7 @@ struct req_iterator {
/*
* blk_rq_pos() : the current sector
* blk_rq_bytes() : bytes left in the entire request
* blk_rq_has_data() : whether the request carries data
* blk_rq_cur_bytes() : bytes left in the current segment
* blk_rq_sectors() : sectors left in the entire request
* blk_rq_cur_sectors() : sectors left in the current segment
@ -1119,6 +1120,14 @@ static inline unsigned int blk_rq_bytes(const struct request *rq)
return rq->__data_len;
}
static inline bool blk_rq_has_data(const struct request *rq)
{
return blk_rq_bytes(rq) &&
req_op(rq) != REQ_OP_DISCARD &&
req_op(rq) != REQ_OP_SECURE_ERASE &&
req_op(rq) != REQ_OP_WRITE_ZEROES;
}
static inline int blk_rq_cur_bytes(const struct request *rq)
{
if (!rq->bio)