X-Git-Url: http://git.monstr.eu/?a=blobdiff_plain;f=block%2Fblk-flush.c;h=53abb5c73d99f90a90033855b60f2d27e3546104;hb=930e0eaddf810cfa90e114a0df02f48539e1346f;hp=6e1543c10493399fe23a2d60194e90e0d2ec828c;hpb=5bbec3cfe376ed0014d9456a9be11d5ed75d587b;p=linux-2.6-microblaze.git diff --git a/block/blk-flush.c b/block/blk-flush.c index 6e1543c10493..53abb5c73d99 100644 --- a/block/blk-flush.c +++ b/block/blk-flush.c @@ -308,9 +308,16 @@ static void blk_kick_flush(struct request_queue *q, struct blk_flush_queue *fq, flush_rq->mq_ctx = first_rq->mq_ctx; flush_rq->mq_hctx = first_rq->mq_hctx; - if (!q->elevator) + if (!q->elevator) { flush_rq->tag = first_rq->tag; - else + + /* + * We borrow data request's driver tag, so have to mark + * this flush request as INFLIGHT for avoiding double + * account of this driver tag + */ + flush_rq->rq_flags |= RQF_MQ_INFLIGHT; + } else flush_rq->internal_tag = first_rq->internal_tag; flush_rq->cmd_flags = REQ_OP_FLUSH | REQ_PREFLUSH;