From: Shaohua Li <shli@kernel.org>
To: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org
Cc: tj@kernel.org, lizefan@huawei.com, tglx@linutronix.de,
kernel-team@fb.com, axboe@kernel.dk, Shaohua Li <shli@fb.com>
Subject: [PATCH V2 3/4] block: make blkcg aware of kthread stored original cgroup info
Date: Wed, 13 Sep 2017 14:01:28 -0700 [thread overview]
Message-ID: <101ca17fd701ce7afbc6e4e7d1d4d7a9f091db1b.1505335620.git.shli@fb.com> (raw)
In-Reply-To: <cover.1505335620.git.shli@fb.com>
In-Reply-To: <cover.1505335620.git.shli@fb.com>
From: Shaohua Li <shli@fb.com>
bio_blkcg is the only API to get cgroup info for a bio right now. If
bio_blkcg finds current task is a kthread and has original blkcg
associated, it will use the css instead of associating the bio to
current task. This makes it possible that kthread dispatches bios on
behalf of other threads.
Signed-off-by: Shaohua Li <shli@fb.com>
---
include/linux/blk-cgroup.h | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/include/linux/blk-cgroup.h b/include/linux/blk-cgroup.h
index 0cfa8d2..f57e54d 100644
--- a/include/linux/blk-cgroup.h
+++ b/include/linux/blk-cgroup.h
@@ -19,6 +19,7 @@
#include <linux/radix-tree.h>
#include <linux/blkdev.h>
#include <linux/atomic.h>
+#include <linux/kthread.h>
/* percpu_counter batch for blkg_[rw]stats, per-cpu drift doesn't matter */
#define BLKG_STAT_CPU_BATCH (INT_MAX / 2)
@@ -223,16 +224,16 @@ static inline struct blkcg *css_to_blkcg(struct cgroup_subsys_state *css)
return css ? container_of(css, struct blkcg, css) : NULL;
}
-static inline struct blkcg *task_blkcg(struct task_struct *tsk)
-{
- return css_to_blkcg(task_css(tsk, io_cgrp_id));
-}
-
static inline struct blkcg *bio_blkcg(struct bio *bio)
{
+ struct cgroup_subsys_state *css;
+
if (bio && bio->bi_css)
return css_to_blkcg(bio->bi_css);
- return task_blkcg(current);
+ css = kthread_blkcg();
+ if (css)
+ return css_to_blkcg(css);
+ return css_to_blkcg(task_css(current, io_cgrp_id));
}
/**
--
2.9.5
next prev parent reply other threads:[~2017-09-13 21:02 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-09-13 21:01 [PATCH V2 0/4] block: make loop block device cgroup aware Shaohua Li
2017-09-13 21:01 ` [PATCH V2 1/4] kthread: add a mechanism to store cgroup info Shaohua Li
2017-09-13 21:38 ` Tejun Heo
2017-09-13 21:43 ` Tejun Heo
2017-09-13 22:30 ` Shaohua Li
2017-09-13 21:01 ` [PATCH V2 2/4] blkcg: delete unused APIs Shaohua Li
2017-09-13 21:40 ` Tejun Heo
2017-09-13 21:01 ` Shaohua Li [this message]
2017-09-13 21:42 ` [PATCH V2 3/4] block: make blkcg aware of kthread stored original cgroup info Tejun Heo
2017-09-13 21:01 ` [PATCH V2 4/4] block/loop: make loop cgroup aware Shaohua Li
2017-09-13 21:42 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=101ca17fd701ce7afbc6e4e7d1d4d7a9f091db1b.1505335620.git.shli@fb.com \
--to=shli@kernel.org \
--cc=axboe@kernel.dk \
--cc=kernel-team@fb.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=shli@fb.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®