Commit c454edc2 authored by Josef Bacik's avatar Josef Bacik Committed by Jens Axboe

block: don't account for split bio's size in cgroup stats

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
size of the IO in the cgroup stats.  We can still however account for
the extra IO since it'll be another request.
Reported-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 55690c07
...@@ -769,8 +769,14 @@ static inline bool blkcg_bio_issue_check(struct request_queue *q, ...@@ -769,8 +769,14 @@ static inline bool blkcg_bio_issue_check(struct request_queue *q,
if (!throtl) { if (!throtl) {
blkg = blkg ?: q->root_blkg; blkg = blkg ?: q->root_blkg;
blkg_rwstat_add(&blkg->stat_bytes, bio->bi_opf, /*
bio->bi_iter.bi_size); * If the bio is flagged with BIO_QUEUE_ENTERED it means this
* is a split bio and we would have already accounted for the
* size of the bio.
*/
if (!bio_flagged(bio, BIO_QUEUE_ENTERED))
blkg_rwstat_add(&blkg->stat_bytes, bio->bi_opf,
bio->bi_iter.bi_size);
blkg_rwstat_add(&blkg->stat_ios, bio->bi_opf, 1); blkg_rwstat_add(&blkg->stat_ios, bio->bi_opf, 1);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment