Thread (24 messages) 24 messages, 6 authors, 2021-04-20

Re: [PATCH v4 1/5] mm/memcg: Move mod_objcg_state() to memcontrol.c

From: Johannes Weiner <hidden>
Date: 2021-04-19 17:13:47
Also in: linux-mm, lkml

On Mon, Apr 19, 2021 at 12:18:29PM -0400, Waiman Long wrote:
On 4/19/21 11:21 AM, Waiman Long wrote:
quoted
On 4/19/21 11:14 AM, Johannes Weiner wrote:
quoted
On Sun, Apr 18, 2021 at 08:00:28PM -0400, Waiman Long wrote:
quoted
The mod_objcg_state() function is moved from mm/slab.h to
mm/memcontrol.c
so that further optimization can be done to it in later patches without
exposing unnecessary details to other mm components.

Signed-off-by: Waiman Long <redacted>
---
  mm/memcontrol.c | 13 +++++++++++++
  mm/slab.h       | 16 ++--------------
  2 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index e064ac0d850a..dc9032f28f2e 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -3150,6 +3150,19 @@ void __memcg_kmem_uncharge_page(struct
page *page, int order)
      css_put(&memcg->css);
  }
  +void mod_objcg_state(struct obj_cgroup *objcg, struct
pglist_data *pgdat,
+             enum node_stat_item idx, int nr)
+{
+    struct mem_cgroup *memcg;
+    struct lruvec *lruvec = NULL;
+
+    rcu_read_lock();
+    memcg = obj_cgroup_memcg(objcg);
+    lruvec = mem_cgroup_lruvec(memcg, pgdat);
+    mod_memcg_lruvec_state(lruvec, idx, nr);
+    rcu_read_unlock();
+}
It would be more naturally placed next to the others, e.g. below
__mod_lruvec_kmem_state().

But no deal breaker if there isn't another revision.

Acked-by: Johannes Weiner <redacted>
Yes, there will be another revision by rebasing patch series on the
linux-next. I will move the function then.
OK, it turns out that mod_objcg_state() is only defined if
CONFIG_MEMCG_KMEM. That was why I put it in the CONFIG_MEMCG_KMEM block with
the other obj_stock functions. I think I will keep it there.
The CONFIG_MEMCG_KMEM has become sort of useless now. It used to be
configurable, but now it just means CONFIG_MEMCG && !CONFIG_SLOB. And
even that doesn't make sense because while slob doesn't support slab
object tracking, we can still do all the other stuff we do under
KMEM. I have a patch in the works to remove the symbol and ifdefs.

With that in mind, it's better to group the functions based on what
they do rather than based on CONFIG_MEMCG_KMEM. It's easier to just
remove another ifdef later than it is to reorder the functions.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help