blk-mq: Return true if request was completed
A driver may have internal state to cleanup if we're pretending a request didn't complete. Return 'false' if the command wasn't actually completed due to the timeout error injection, and true otherwise. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Keith Busch <keith.busch@intel.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
4ab32bf330
commit
16c15eb16a
@ -638,11 +638,12 @@ static void hctx_lock(struct blk_mq_hw_ctx *hctx, int *srcu_idx)
|
|||||||
* Ends all I/O on a request. It does not handle partial completions.
|
* Ends all I/O on a request. It does not handle partial completions.
|
||||||
* The actual completion happens out-of-order, through a IPI handler.
|
* The actual completion happens out-of-order, through a IPI handler.
|
||||||
**/
|
**/
|
||||||
void blk_mq_complete_request(struct request *rq)
|
bool blk_mq_complete_request(struct request *rq)
|
||||||
{
|
{
|
||||||
if (unlikely(blk_should_fake_timeout(rq->q)))
|
if (unlikely(blk_should_fake_timeout(rq->q)))
|
||||||
return;
|
return false;
|
||||||
__blk_mq_complete_request(rq);
|
__blk_mq_complete_request(rq);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(blk_mq_complete_request);
|
EXPORT_SYMBOL(blk_mq_complete_request);
|
||||||
|
|
||||||
|
@ -298,7 +298,7 @@ void blk_mq_add_to_requeue_list(struct request *rq, bool at_head,
|
|||||||
bool kick_requeue_list);
|
bool kick_requeue_list);
|
||||||
void blk_mq_kick_requeue_list(struct request_queue *q);
|
void blk_mq_kick_requeue_list(struct request_queue *q);
|
||||||
void blk_mq_delay_kick_requeue_list(struct request_queue *q, unsigned long msecs);
|
void blk_mq_delay_kick_requeue_list(struct request_queue *q, unsigned long msecs);
|
||||||
void blk_mq_complete_request(struct request *rq);
|
bool blk_mq_complete_request(struct request *rq);
|
||||||
bool blk_mq_bio_list_merge(struct request_queue *q, struct list_head *list,
|
bool blk_mq_bio_list_merge(struct request_queue *q, struct list_head *list,
|
||||||
struct bio *bio);
|
struct bio *bio);
|
||||||
bool blk_mq_queue_stopped(struct request_queue *q);
|
bool blk_mq_queue_stopped(struct request_queue *q);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user