summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--block/blk-flush.c6
-rw-r--r--block/blk-mq.c2
2 files changed, 2 insertions, 6 deletions
diff --git a/block/blk-flush.c b/block/blk-flush.c
index 15ae0155ec07..21108a550fbf 100644
--- a/block/blk-flush.c
+++ b/block/blk-flush.c
@@ -240,7 +240,6 @@ static void flush_end_io(struct request *flush_rq, blk_status_t error)
blk_mq_tag_set_rq(hctx, flush_rq->tag, fq->orig_rq);
flush_rq->tag = -1;
} else {
- blk_mq_put_driver_tag(flush_rq);
flush_rq->internal_tag = -1;
}
@@ -341,11 +340,6 @@ static void mq_flush_data_end_io(struct request *rq, blk_status_t error)
unsigned long flags;
struct blk_flush_queue *fq = blk_get_flush_queue(q, ctx);
- if (q->elevator) {
- WARN_ON(rq->tag < 0);
- blk_mq_put_driver_tag(rq);
- }
-
/*
* After populating an empty queue, kick it to avoid stall. Read
* the comment in flush_end_io().
diff --git a/block/blk-mq.c b/block/blk-mq.c
index b8738b3c6d06..d07e55455726 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -674,6 +674,8 @@ bool blk_mq_complete_request_remote(struct request *rq)
{
WRITE_ONCE(rq->state, MQ_RQ_COMPLETE);
+ blk_mq_put_driver_tag(rq);
+
/*
* For a polled request, always complete locallly, it's pointless
* to redirect the completion.