block: mq flush: clear flush_rq's tag in flush_end_io()
authorMing Lei <tom.leiming@gmail.com>
Wed, 4 Jun 2014 16:23:55 +0000 (00:23 +0800)
committerJens Axboe <axboe@fb.com>
Wed, 4 Jun 2014 16:40:16 +0000 (10:40 -0600)
blk_mq_tag_to_rq() needs to be able to tell if it should return
the original request, or the flush request if we are doing a flush
sequence. Clear the flush tag when IO completes for a flush, since
that is what we are comparing against.

Signed-off-by: Ming Lei <tom.leiming@gmail.com>
Signed-off-by: Jens Axboe <axboe@fb.com>
block/blk-flush.c

index ff87c66..8ffee4b 100644 (file)
@@ -225,7 +225,7 @@ static void flush_end_io(struct request *flush_rq, int error)
 
        if (q->mq_ops) {
                spin_lock_irqsave(&q->mq_flush_lock, flags);
-               q->flush_rq->cmd_flags = 0;
+               q->flush_rq->tag = -1;
        }
 
        running = &q->flush_queue[q->flush_running_idx];