Make it possible to test the REQ_ATOM_COMPLETE bit from outside the block layer core. Signed-off-by: Bart Van Assche <bvanassche@xxxxxxx> Cc: Jens Axboe <axboe@xxxxxx> Cc: Hannes Reinecke <hare@xxxxxxx> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Cc: Christoph Hellwig <hch@xxxxxxxxxxxxx> Cc: Joe Lawrence <joe.lawrence@xxxxxxxxxxx> --- block/blk-softirq.c | 13 +++++++++++++ include/linux/blkdev.h | 1 + 2 files changed, 14 insertions(+) diff --git a/block/blk-softirq.c b/block/blk-softirq.c index 53b1737..fc7d160 100644 --- a/block/blk-softirq.c +++ b/block/blk-softirq.c @@ -172,6 +172,19 @@ void blk_complete_request(struct request *req) } EXPORT_SYMBOL(blk_complete_request); +/** + * blk_rq_completed - whether or not a request has been completed + * + * Intended for debugging purposes only. Any completion handler code should go + * into the softirq_done_fn() and/or in the rq_timed_out_fn() request_queue + * callback functions. + */ +bool blk_rq_completed(struct request *rq) +{ + return test_bit(REQ_ATOM_COMPLETE, &rq->atomic_flags); +} +EXPORT_SYMBOL(blk_rq_completed); + static __init int blk_softirq_init(void) { int i; diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 0d84981..a621bc5 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -952,6 +952,7 @@ extern void blk_complete_request(struct request *); extern void __blk_complete_request(struct request *); extern void blk_abort_request(struct request *); extern void blk_unprep_request(struct request *); +extern bool blk_rq_completed(struct request *); /* * Access functions for manipulating queue properties -- 1.8.4.5 -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html