block: always attach cgroup info into bio
blkcg_bio_issue_check() already gets blkcg for a BIO. bio_associate_blkcg() uses a percpu refcounter, so it's a very cheap operation. There is no point we don't attach the cgroup info into bio at blkcg_bio_issue_check. This also makes blktrace outputs correct cgroup info. Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
ca1136c99b
commit
007cc56b7e
2 changed files with 4 additions and 6 deletions
|
@ -2104,14 +2104,9 @@ static inline void throtl_update_latency_buckets(struct throtl_data *td)
|
||||||
static void blk_throtl_assoc_bio(struct throtl_grp *tg, struct bio *bio)
|
static void blk_throtl_assoc_bio(struct throtl_grp *tg, struct bio *bio)
|
||||||
{
|
{
|
||||||
#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
|
#ifdef CONFIG_BLK_DEV_THROTTLING_LOW
|
||||||
int ret;
|
if (bio->bi_css)
|
||||||
|
|
||||||
ret = bio_associate_current(bio);
|
|
||||||
if (ret == 0 || ret == -EBUSY)
|
|
||||||
bio->bi_cg_private = tg;
|
bio->bi_cg_private = tg;
|
||||||
blk_stat_set_issue(&bio->bi_issue_stat, bio_sectors(bio));
|
blk_stat_set_issue(&bio->bi_issue_stat, bio_sectors(bio));
|
||||||
#else
|
|
||||||
bio_associate_current(bio);
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -691,6 +691,9 @@ static inline bool blkcg_bio_issue_check(struct request_queue *q,
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
blkcg = bio_blkcg(bio);
|
blkcg = bio_blkcg(bio);
|
||||||
|
|
||||||
|
/* associate blkcg if bio hasn't attached one */
|
||||||
|
bio_associate_blkcg(bio, &blkcg->css);
|
||||||
|
|
||||||
blkg = blkg_lookup(blkcg, q);
|
blkg = blkg_lookup(blkcg, q);
|
||||||
if (unlikely(!blkg)) {
|
if (unlikely(!blkg)) {
|
||||||
spin_lock_irq(q->queue_lock);
|
spin_lock_irq(q->queue_lock);
|
||||||
|
|
Loading…
Add table
Reference in a new issue