Hi Nhat, Acked-by: Chris Li <chrisl@xxxxxxxxxx> On Mon, Nov 6, 2023 at 3:12 PM Nhat Pham <nphamcs@xxxxxxxxx> wrote: --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -219,6 +219,12 @@ struct mem_cgroup { #if defined(CONFIG_MEMCG_KMEM) && defined(CONFIG_ZSWAP) unsigned long zswap_max; + + /* + * Prevent pages from this memcg from being written back from zswap to + * swap, and from being swapped out on zswap store failures. + */ + bool zswap_writeback; #endif I notice the bool is between two integers. mem_cgroup structure has a few bool sprinkle in different locations. Arrange them together might save a few padding bytes. We can also consider using bit fields. It is a very minor point, the condition also exists before your change. > #endif /* _LINUX_ZSWAP_H */ > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index e43b5aba8efc..9cb3ea912cbe 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -5545,6 +5545,11 @@ mem_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) > WRITE_ONCE(memcg->soft_limit, PAGE_COUNTER_MAX); > #if defined(CONFIG_MEMCG_KMEM) && defined(CONFIG_ZSWAP) > memcg->zswap_max = PAGE_COUNTER_MAX; > + > + if (parent) > + WRITE_ONCE(memcg->zswap_writeback, READ_ONCE(parent->zswap_writeback)); > + else > + WRITE_ONCE(memcg->zswap_writeback, true); You can combine this two WRITE_ONCE to one bool writeback = !parent || READ_ONCE(parent->zswap_writeback); WRITE_ONCE(memcg->zswap_writeback, writeback); Chris