block: introduce 'blk_mq_ctx' parameter to blk_get_flush_queue
[firefly-linux-kernel-4.4.55.git] / block / blk-flush.c
index 9bc5b4f35c23adc72dfc7a66f66042a2d1630b9a..004d95e4098e5e4227d28d2292eb0d1d7a38ff73 100644 (file)
@@ -223,7 +223,7 @@ static void flush_end_io(struct request *flush_rq, int error)
        bool queued = false;
        struct request *rq, *n;
        unsigned long flags = 0;
-       struct blk_flush_queue *fq = blk_get_flush_queue(q);
+       struct blk_flush_queue *fq = blk_get_flush_queue(q, flush_rq->mq_ctx);
 
        if (q->mq_ops) {
                spin_lock_irqsave(&fq->mq_flush_lock, flags);
@@ -319,7 +319,7 @@ static bool blk_kick_flush(struct request_queue *q, struct blk_flush_queue *fq)
 static void flush_data_end_io(struct request *rq, int error)
 {
        struct request_queue *q = rq->q;
-       struct blk_flush_queue *fq = blk_get_flush_queue(q);
+       struct blk_flush_queue *fq = blk_get_flush_queue(q, NULL);
 
        /*
         * After populating an empty queue, kick it to avoid stall.  Read
@@ -333,11 +333,10 @@ static void mq_flush_data_end_io(struct request *rq, int error)
 {
        struct request_queue *q = rq->q;
        struct blk_mq_hw_ctx *hctx;
-       struct blk_mq_ctx *ctx;
+       struct blk_mq_ctx *ctx = rq->mq_ctx;
        unsigned long flags;
-       struct blk_flush_queue *fq = blk_get_flush_queue(q);
+       struct blk_flush_queue *fq = blk_get_flush_queue(q, ctx);
 
-       ctx = rq->mq_ctx;
        hctx = q->mq_ops->map_queue(q, ctx->cpu);
 
        /*
@@ -367,7 +366,7 @@ void blk_insert_flush(struct request *rq)
        struct request_queue *q = rq->q;
        unsigned int fflags = q->flush_flags;   /* may change, cache */
        unsigned int policy = blk_flush_policy(fflags, rq);
-       struct blk_flush_queue *fq = blk_get_flush_queue(q);
+       struct blk_flush_queue *fq = blk_get_flush_queue(q, rq->mq_ctx);
 
        /*
         * @policy now records what operations need to be done.  Adjust