We need to check in blkcg_bio_issue_check if the bio is flagged as
QUEUE_ENTERED, because if it is then we've already accounted for the IO
in the cgroup stats.

Reported-by: Tejun Heo <t...@kernel.org>
Signed-off-by: Josef Bacik <jo...@toxicpanda.com>
---
 include/linux/blk-cgroup.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index 3bed5e02a873..a977c31688ae 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -767,7 +767,8 @@ static inline bool blkcg_bio_issue_check(struct 
request_queue *q,
 
        throtl = blk_throtl_bio(q, blkg, bio);
 
-       if (!throtl) {
+       if (!throtl &&
+           !bio_flagged(bio, BIO_QUEUE_ENTERED)) {
                blkg = blkg ?: q->root_blkg;
                blkg_rwstat_add(&blkg->stat_bytes, bio->bi_opf,
                                bio->bi_iter.bi_size);
-- 
2.14.3

Reply via email to