summaryrefslogtreecommitdiffstats
path: root/block/mq-deadline-main.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/mq-deadline-main.c')
-rw-r--r--block/mq-deadline-main.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/block/mq-deadline-main.c b/block/mq-deadline-main.c
index 4815e536091f..9db6da9ef4c6 100644
--- a/block/mq-deadline-main.c
+++ b/block/mq-deadline-main.c
@@ -719,6 +719,7 @@ static void dd_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
struct dd_per_prio *per_prio;
enum dd_prio prio;
struct dd_blkcg *blkcg;
+ LIST_HEAD(free);
lockdep_assert_held(&dd->lock);
@@ -742,8 +743,10 @@ static void dd_insert_request(struct blk_mq_hw_ctx *hctx, struct request *rq,
WARN_ON_ONCE(rq->elv.priv[0]);
rq->elv.priv[0] = blkcg;
- if (blk_mq_sched_try_insert_merge(q, rq))
+ if (blk_mq_sched_try_insert_merge(q, rq, &free)) {
+ blk_mq_free_requests(&free);
return;
+ }
trace_block_rq_insert(rq);