diff --git a/block/blk-mq.c b/block/blk-mq.c index a2b735263dffcea929c032c768f7ecd6174d6044..c77f1204f2d7c102d616c58c1844a494dba337e1 100644 --- a/block/blk-mq.c +++ b/block/blk-mq.c @@ -627,6 +627,12 @@ int blk_mq_request_started(struct request *rq) } EXPORT_SYMBOL_GPL(blk_mq_request_started); +int blk_mq_request_completed(struct request *rq) +{ + return blk_mq_rq_state(rq) == MQ_RQ_COMPLETE; +} +EXPORT_SYMBOL_GPL(blk_mq_request_completed); + void blk_mq_start_request(struct request *rq) { struct request_queue *q = rq->q; diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h index 4878d8ed491456a5a11c9e60d23dc1cc8f7ef6b2..b414cad68024b3bb4131b859a4a4c4d3ff012d48 100644 --- a/include/linux/blk-mq.h +++ b/include/linux/blk-mq.h @@ -288,6 +288,7 @@ static inline u16 blk_mq_unique_tag_to_tag(u32 unique_tag) int blk_mq_request_started(struct request *rq); +int blk_mq_request_completed(struct request *rq); void blk_mq_start_request(struct request *rq); void blk_mq_end_request(struct request *rq, blk_status_t error); void __blk_mq_end_request(struct request *rq, blk_status_t error);