Re: [PATCH V2 1/4] kthread: add a mechanism to store cgroup info
From: Shaohua Li <shli@kernel.org>
Date: 2017-09-13 22:30:08
Also in:
lkml
On Wed, Sep 13, 2017 at 02:38:20PM -0700, Tejun Heo wrote:
Hello, On Wed, Sep 13, 2017 at 02:01:26PM -0700, Shaohua Li wrote:quoted
diff --git a/kernel/kthread.c b/kernel/kthread.c index 26db528..3107eee 100644 --- a/kernel/kthread.c +++ b/kernel/kthread.c@@ -20,7 +20,6 @@ #include <linux/freezer.h> #include <linux/ptrace.h> #include <linux/uaccess.h> -#include <linux/cgroup.h> #include <trace/events/sched.h> static DEFINE_SPINLOCK(kthread_create_lock);@@ -47,6 +46,7 @@ struct kthread { void *data; struct completion parked; struct completion exited;maybe #ifdef CONFIG_CGROUPS?quoted
+ struct cgroup_subsys_state *blkcg_css;
Ah, I thought cgroup_subsys_state is always defined, let me double check.
quoted
};...quoted
+void kthread_associate_blkcg(struct cgroup_subsys_state *css) +{ + struct kthread *kthread; + + if (!(current->flags & PF_KTHREAD) || !current->set_child_tid) + return; + kthread = to_kthread(current); + if (css) { + css_get(css); + kthread->blkcg_css = css; + } else if (kthread->blkcg_css) { + css_put(kthread->blkcg_css); + kthread->blkcg_css = NULL; + } +} +EXPORT_SYMBOL(kthread_associate_blkcg);Maybe doing sth like the following is less error-prone? kthread_associate_blkcg(@css) { if (current's kthread->blkcg_css) put kthread->blkcg_css and set it to NULL; if (@css) get @css and set kthread->blkcg; }
Sounds good. Thanks, Shaohua