From: Xiu Jianfeng <xiujianfeng@xxxxxxxxxx> Currently proc_cgroupstats_show() is in cgroup-v1.c, however it can be used for v2 too, so it's better to move it cgroup.c. Signed-off-by: Xiu Jianfeng <xiujianfeng@xxxxxxxxxx> --- kernel/cgroup/cgroup-internal.h | 1 - kernel/cgroup/cgroup-v1.c | 21 --------------------- kernel/cgroup/cgroup.c | 21 +++++++++++++++++++++ 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/kernel/cgroup/cgroup-internal.h b/kernel/cgroup/cgroup-internal.h index 520b90dd97ec..9afb39da0d8d 100644 --- a/kernel/cgroup/cgroup-internal.h +++ b/kernel/cgroup/cgroup-internal.h @@ -284,7 +284,6 @@ extern struct cftype cgroup1_base_files[]; extern struct kernfs_syscall_ops cgroup1_kf_syscall_ops; extern const struct fs_parameter_spec cgroup1_fs_parameters[]; -int proc_cgroupstats_show(struct seq_file *m, void *v); bool cgroup1_ssid_disabled(int ssid); void cgroup1_pidlist_destroy_all(struct cgroup *cgrp); void cgroup1_release_agent(struct work_struct *work); diff --git a/kernel/cgroup/cgroup-v1.c b/kernel/cgroup/cgroup-v1.c index 520a11cb12f4..ca22f66b5c64 100644 --- a/kernel/cgroup/cgroup-v1.c +++ b/kernel/cgroup/cgroup-v1.c @@ -663,27 +663,6 @@ struct cftype cgroup1_base_files[] = { { } /* terminate */ }; -/* Display information about each subsystem and each hierarchy */ -int proc_cgroupstats_show(struct seq_file *m, void *v) -{ - struct cgroup_subsys *ss; - int i; - - seq_puts(m, "#subsys_name\thierarchy\tnum_cgroups\tenabled\n"); - /* - * Grab the subsystems state racily. No need to add avenue to - * cgroup_mutex contention. - */ - - for_each_subsys(ss, i) - seq_printf(m, "%s\t%d\t%d\t%d\n", - ss->legacy_name, ss->root->hierarchy_id, - atomic_read(&ss->root->nr_cgrps), - cgroup_ssid_enabled(i)); - - return 0; -} - /** * cgroupstats_build - build and fill cgroupstats * @stats: cgroupstats to fill information into diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index a66c088c851c..dcdc23d66aa0 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -6028,6 +6028,27 @@ static void __init cgroup_init_subsys(struct cgroup_subsys *ss, bool early) cgroup_unlock(); } +/* Display information about each subsystem and each hierarchy */ +static int proc_cgroupstats_show(struct seq_file *m, void *v) +{ + struct cgroup_subsys *ss; + int i; + + seq_puts(m, "#subsys_name\thierarchy\tnum_cgroups\tenabled\n"); + /* + * Grab the subsystems state racily. No need to add avenue to + * cgroup_mutex contention. + */ + + for_each_subsys(ss, i) + seq_printf(m, "%s\t%d\t%d\t%d\n", + ss->legacy_name, ss->root->hierarchy_id, + atomic_read(&ss->root->nr_cgrps), + cgroup_ssid_enabled(i)); + + return 0; +} + /** * cgroup_init_early - cgroup initialization at system boot * -- 2.34.1