diff options
Diffstat (limited to 'patches/0001-cgroup-Remove-css_rstat_flush.patch')
-rw-r--r-- | patches/0001-cgroup-Remove-css_rstat_flush.patch | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/patches/0001-cgroup-Remove-css_rstat_flush.patch b/patches/0001-cgroup-Remove-css_rstat_flush.patch new file mode 100644 index 000000000000..03382aec6302 --- /dev/null +++ b/patches/0001-cgroup-Remove-css_rstat_flush.patch @@ -0,0 +1,116 @@ +From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +Date: Thu, 15 Aug 2019 18:14:16 +0200 +Subject: [PATCH 1/4] cgroup: Remove ->css_rstat_flush() + +I was looking at the lifetime of the the ->css_rstat_flush() to see if +cgroup_rstat_cpu_lock should remain a raw_spinlock_t. I didn't find any +users and is unused since it was introduced in commit + 8f53470bab042 ("cgroup: Add cgroup_subsys->css_rstat_flush()") + +Remove the css_rstat_flush callback because it has no users. + +Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> +--- + include/linux/cgroup-defs.h | 5 ----- + kernel/cgroup/cgroup.c | 12 ------------ + kernel/cgroup/rstat.c | 10 +--------- + 3 files changed, 1 insertion(+), 26 deletions(-) + +--- a/include/linux/cgroup-defs.h ++++ b/include/linux/cgroup-defs.h +@@ -144,9 +144,6 @@ struct cgroup_subsys_state { + struct list_head sibling; + struct list_head children; + +- /* flush target list anchored at cgrp->rstat_css_list */ +- struct list_head rstat_css_node; +- + /* + * PI: Subsys-unique ID. 0 is unused and root is always 1. The + * matching css can be looked up using css_from_id(). +@@ -455,7 +452,6 @@ struct cgroup { + + /* per-cpu recursive resource statistics */ + struct cgroup_rstat_cpu __percpu *rstat_cpu; +- struct list_head rstat_css_list; + + /* cgroup basic resource statistics */ + struct cgroup_base_stat pending_bstat; /* pending from children */ +@@ -633,7 +629,6 @@ struct cgroup_subsys { + void (*css_released)(struct cgroup_subsys_state *css); + void (*css_free)(struct cgroup_subsys_state *css); + void (*css_reset)(struct cgroup_subsys_state *css); +- void (*css_rstat_flush)(struct cgroup_subsys_state *css, int cpu); + int (*css_extra_stat_show)(struct seq_file *seq, + struct cgroup_subsys_state *css); + +--- a/kernel/cgroup/cgroup.c ++++ b/kernel/cgroup/cgroup.c +@@ -1957,7 +1957,6 @@ static void init_cgroup_housekeeping(str + cgrp->dom_cgrp = cgrp; + cgrp->max_descendants = INT_MAX; + cgrp->max_depth = INT_MAX; +- INIT_LIST_HEAD(&cgrp->rstat_css_list); + prev_cputime_init(&cgrp->prev_cputime); + + for_each_subsys(ss, ssid) +@@ -5013,12 +5012,6 @@ static void css_release_work_fn(struct w + list_del_rcu(&css->sibling); + + if (ss) { +- /* css release path */ +- if (!list_empty(&css->rstat_css_node)) { +- cgroup_rstat_flush(cgrp); +- list_del_rcu(&css->rstat_css_node); +- } +- + cgroup_idr_replace(&ss->css_idr, NULL, css->id); + if (ss->css_released) + ss->css_released(css); +@@ -5080,7 +5073,6 @@ static void init_and_link_css(struct cgr + css->id = -1; + INIT_LIST_HEAD(&css->sibling); + INIT_LIST_HEAD(&css->children); +- INIT_LIST_HEAD(&css->rstat_css_node); + css->serial_nr = css_serial_nr_next++; + atomic_set(&css->online_cnt, 0); + +@@ -5089,9 +5081,6 @@ static void init_and_link_css(struct cgr + css_get(css->parent); + } + +- if (cgroup_on_dfl(cgrp) && ss->css_rstat_flush) +- list_add_rcu(&css->rstat_css_node, &cgrp->rstat_css_list); +- + BUG_ON(cgroup_css(cgrp, ss)); + } + +@@ -5193,7 +5182,6 @@ static struct cgroup_subsys_state *css_c + err_list_del: + list_del_rcu(&css->sibling); + err_free_css: +- list_del_rcu(&css->rstat_css_node); + INIT_RCU_WORK(&css->destroy_rwork, css_free_rwork_fn); + queue_rcu_work(cgroup_destroy_wq, &css->destroy_rwork); + return ERR_PTR(err); +--- a/kernel/cgroup/rstat.c ++++ b/kernel/cgroup/rstat.c +@@ -162,17 +162,9 @@ static void cgroup_rstat_flush_locked(st + struct cgroup *pos = NULL; + + raw_spin_lock(cpu_lock); +- while ((pos = cgroup_rstat_cpu_pop_updated(pos, cgrp, cpu))) { +- struct cgroup_subsys_state *css; +- ++ while ((pos = cgroup_rstat_cpu_pop_updated(pos, cgrp, cpu))) + cgroup_base_stat_flush(pos, cpu); + +- rcu_read_lock(); +- list_for_each_entry_rcu(css, &pos->rstat_css_list, +- rstat_css_node) +- css->ss->css_rstat_flush(css, cpu); +- rcu_read_unlock(); +- } + raw_spin_unlock(cpu_lock); + + /* if @may_sleep, play nice and yield if necessary */ |