[linux-yocto] [PATCH 2/2] Fix [RFC] cgroups: Resource controller for open files.
zhe.he at windriver.com
zhe.he at windriver.com
Wed Jul 30 01:58:52 PDT 2014
From: He Zhe <zhe.he at windriver.com>
The original patch is based on:
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
fad01e866afdbe01a1f3ec06a39c3a8b9e197014
3.15-rc8
Modify variable and macro in fs/filescontrol.c and include/linux/cgroup_subsys.h
according to target version. Correct wrong handling which causes boot failure in
fs/file.c.
Signed-off-by: He Zhe <zhe.he at windriver.com>
---
fs/file.c | 6 ++++--
fs/filescontrol.c | 12 +++++++-----
include/linux/cgroup_subsys.h | 2 +-
3 files changed, 12 insertions(+), 8 deletions(-)
diff --git a/fs/file.c b/fs/file.c
index 4b84070..e615dc9 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -820,8 +820,10 @@ static int do_dup2(struct files_struct *files,
#ifdef CONFIG_CGROUP_FILES
if (!tofree)
- if (!files_cgroup_alloc_fd(files, 1))
- goto Ebusy;
+ if (files_cgroup_alloc_fd(files, 1)) {
+ spin_unlock(&files->file_lock);
+ return -EMFILE;
+ }
#endif
get_file(file);
diff --git a/fs/filescontrol.c b/fs/filescontrol.c
index c532d02..0ba8ffa 100644
--- a/fs/filescontrol.c
+++ b/fs/filescontrol.c
@@ -23,8 +23,8 @@
#include <linux/fs.h>
#include <linux/fdtable.h>
-struct cgroup_subsys files_cgrp_subsys __read_mostly;
-EXPORT_SYMBOL(files_cgrp_subsys);
+struct cgroup_subsys files_subsys __read_mostly;
+EXPORT_SYMBOL(files_subsys);
struct files_cgroup {
struct cgroup_subsys_state css;
@@ -92,9 +92,10 @@ u64 files_cgroup_count_fds(struct files_struct *files)
static u64 files_in_taskset(struct cgroup_taskset *tset)
{
+ struct cgroup_subsys_state *css = NULL;
struct task_struct *task;
u64 files = 0;
- cgroup_taskset_for_each(task, tset) {
+ cgroup_taskset_for_each(task, css, tset) {
if (!thread_group_leader(task))
continue;
@@ -212,13 +213,14 @@ static struct cftype files[] = {
{ }
};
-struct cgroup_subsys files_cgrp_subsys = {
+struct cgroup_subsys files_subsys = {
.name = "files",
.css_alloc = files_cgroup_css_alloc,
.css_free = files_cgroup_css_free,
.can_attach = files_cgroup_can_attach,
.attach = files_cgroup_attach,
.base_cftypes = files,
+ .subsys_id = files_subsys_id,
};
void files_cgroup_assign(struct files_struct *files)
@@ -227,7 +229,7 @@ void files_cgroup_assign(struct files_struct *files)
struct cgroup_subsys_state *css;
task_lock(tsk);
- css = task_css(tsk, files_cgrp_id);
+ css = task_css(tsk, files_subsys_id);
css_get(css);
files->files_cgroup = container_of(css, struct files_cgroup, css);
task_unlock(tsk);
diff --git a/include/linux/cgroup_subsys.h b/include/linux/cgroup_subsys.h
index e6c9a40..defadc0 100644
--- a/include/linux/cgroup_subsys.h
+++ b/include/linux/cgroup_subsys.h
@@ -51,7 +51,7 @@ SUBSYS(net_prio)
SUBSYS(hugetlb)
#endif
-#if IS_ENABLED(CONFIG_CGROUP_FILES)
+#if IS_SUBSYS_ENABLED(CONFIG_CGROUP_FILES)
SUBSYS(files)
#endif
--
1.7.9.5
More information about the linux-yocto
mailing list