> @@ -319,7 +319,7 @@ static struct request *blk_mq_rq_ctx_init(struct blk_mq_alloc_data *data, > rq->cmd_flags = op; > if (data->flags & BLK_MQ_REQ_PREEMPT) > rq->rq_flags |= RQF_PREEMPT; > - if (blk_queue_io_stat(data->q)) > + if (blk_queue_io_stat(data->q) && !blk_rq_is_passthrough(rq)) > rq->rq_flags |= RQF_IO_STAT; This needs a comment why we don't account passthrough requests by default. And I'm really curious about the answer, because I don't know it myself. > * a) it's attached to a gendisk, and > * b) the queue had IO stats enabled when this request was started, and > - * c) it's a file system request > + * c) it's a file system request (RQF_IO_STAT will not be set otherwise) c) should just go away now based on your changes. > static inline bool blk_do_io_stat(struct request *rq) > { > return rq->rq_disk && > - (rq->rq_flags & RQF_IO_STAT) && > - !blk_rq_is_passthrough(rq); > + (rq->rq_flags & RQF_IO_STAT); The check can be collapsed onto a single line now.