From: Kairui Song <ryncsn@gmail.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: kernel test robot <lkp@intel.com>,
Kairui Song <kasong@tencent.com>,
oe-kbuild-all@lists.linux.dev,
David Hildenbrand <david@kernel.org>,
Linux Memory Management List <linux-mm@kvack.org>,
mm-commits@vger.kernel.org
Subject: Re: [akpm-mm:mm-new 323/362] mm/memcontrol-v1.c:651:31: error: implicit declaration of function 'swp_cluster_offset'
Date: Wed, 20 May 2026 14:23:41 +0800 [thread overview]
Message-ID: <ag0mdxBWcrZ8hxPP@KASONG-MC4> (raw)
In-Reply-To: <20260519152620.b7b5fd2d68d635ec8d34ad2c@linux-foundation.org>
On Tue, May 19, 2026 at 03:26:20PM +0800, Andrew Morton wrote:
> On Wed, 20 May 2026 06:16:25 +0800 kernel test robot <lkp@intel.com> wrote:
>
> > tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-new
> > head: ac33089a65a951edf4365b1ff7fbe5b5e8062d06
> > commit: dc1675a14ba774891fdf5212b7bedc7f50661862 [323/362] mm/memcg, swap: store cgroup id in cluster table directly
> > config: sh-allmodconfig (https://download.01.org/0day-ci/archive/20260520/202605200624.e9eMvkBW-lkp@intel.com/config)
> > compiler: sh4-linux-gcc (GCC) 15.2.0
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260520/202605200624.e9eMvkBW-lkp@intel.com/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202605200624.e9eMvkBW-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
> >
> > mm/memcontrol-v1.c: In function '__memcg1_swapout':
> > >> mm/memcontrol-v1.c:651:31: error: implicit declaration of function 'swp_cluster_offset' [-Wimplicit-function-declaration]
> > 651 | __swap_cgroup_set(ci, swp_cluster_offset(folio->swap), nr_entries,
> > | ^~~~~~~~~~~~~~~~~~
>
> Thanks. I added the below to fix the build, but I've no reason to
> believe that it's correct.
>
> From: Andrew Morton <akpm@linux-foundation.org>
> Subject: mm-memcg-swap-store-cgroup-id-in-cluster-table-directly-fix
> Date: Tue May 19 03:23:38 PM PDT 2026
>
> "fix" CONFIG_SWAP=n build
>
> Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
> Cc: Baoquan He <bhe@redhat.com>
> Cc: Barry Song <baohua@kernel.org>
> Cc: Chengming Zhou <chengming.zhou@linux.dev>
> Cc: Chris Li <chrisl@kernel.org>
> Cc: David Hildenbrand <david@kernel.org>
> Cc: Hugh Dickins <hughd@google.com>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> Cc: Kairui Song <kasong@tencent.com>
> Cc: Kemeng Shi <shikemeng@huaweicloud.com>
> Cc: Lorenzo Stoakes <ljs@kernel.org>
> Cc: Muchun Song <muchun.song@linux.dev>
> Cc: Nhat Pham <nphamcs@gmail.com>
> Cc: Roman Gushchin <roman.gushchin@linux.dev>
> Cc: Shakeel Butt <shakeel.butt@linux.dev>
> Cc: Youngjun Park <youngjun.park@lge.com>
> Cc: Zi Yan <ziy@nvidia.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---
>
> mm/swap.h | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> --- a/mm/swap.h~mm-memcg-swap-store-cgroup-id-in-cluster-table-directly-fix
> +++ a/mm/swap.h
> @@ -482,5 +482,11 @@ static inline int swap_zeromap_batch(swp
> {
> return 0;
> }
> +
> +static inline unsigned int swp_cluster_offset(swp_entry_t entry)
> +{
> + return 0;
> +}
> +
> #endif /* CONFIG_SWAP */
> #endif /* _MM_SWAP_H */
> _
>
Thanks for the fix, this is not wrong at the moment, memcg1's swap code
is dead code with !CONFIG_SWAP so filling anything there is fine.
I didn't notice that memcg1 won't filter out the swap code when
!CONFIG_SWAP. So following patch should be better:
Just eliminate the dead code. It should be put before this series,
there will be a minor conflict in memcontrol.h as a few declarations
are moved by this, but should be easy to solve. I can send a rebased
version of this series if the conflict is too trouble some to solve,
or we can clean this up later and just keep this dummy swp_cluster_offset
for now.
From 55dd3196e47f3d148edb01f2a37057e6af4bcdaf Mon Sep 17 00:00:00 2001
From: Kairui Song <kasong@tencent.com>
Date: Wed, 20 May 2026 11:14:13 +0800
Subject: [PATCH] mm/memcg: v1: guard swap helpers under CONFIG_SWAP
These helpers are essentially dead weight when CONFIG_SWAP is disabled,
so just guard them with the right ifdef, we will have a smaller vmlinux:
./scripts/bloat-o-meter mm/memcontrol-v1.o.old mm/memcontrol-v1.o
add/remove: 0/3 grow/shrink: 0/0 up/down: 0/-473 (-473)
Function old new delta
__UNIQUE_ID_addressable___SCK__preempt_schedule_53 8 - -8
memcg1_swapin 12 - -12
memcg1_swapout 453 - -453
Total: Before=17932, After=17459, chg -2.64%
Signed-off-by: Kairui Song <kasong@tencent.com>
---
include/linux/memcontrol.h | 11 ++++++-----
mm/memcontrol-v1.c | 2 ++
2 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index dc3fa687759b..1e02f0afecb6 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -1899,9 +1899,6 @@ static inline void mem_cgroup_exit_user_fault(void)
current->in_user_fault = 0;
}
-void memcg1_swapout(struct folio *folio, swp_entry_t entry);
-void memcg1_swapin(swp_entry_t entry, unsigned int nr_pages);
-
#else /* CONFIG_MEMCG_V1 */
static inline
unsigned long memcg1_soft_limit_reclaim(pg_data_t *pgdat, int order,
@@ -1928,7 +1925,12 @@ static inline void mem_cgroup_enter_user_fault(void)
static inline void mem_cgroup_exit_user_fault(void)
{
}
+#endif /* CONFIG_MEMCG_V1 */
+#if defined(CONFIG_SWAP) && defined(CONFIG_MEMCG_V1)
+void memcg1_swapout(struct folio *folio, swp_entry_t entry);
+void memcg1_swapin(swp_entry_t entry, unsigned int nr_pages);
+#else
static inline void memcg1_swapout(struct folio *folio, swp_entry_t entry)
{
}
@@ -1936,7 +1938,6 @@ static inline void memcg1_swapout(struct folio *folio, swp_entry_t entry)
static inline void memcg1_swapin(swp_entry_t entry, unsigned int nr_pages)
{
}
-
-#endif /* CONFIG_MEMCG_V1 */
+#endif
#endif /* _LINUX_MEMCONTROL_H */
diff --git a/mm/memcontrol-v1.c b/mm/memcontrol-v1.c
index 433bba9dfe71..8fb02dc5b259 100644
--- a/mm/memcontrol-v1.c
+++ b/mm/memcontrol-v1.c
@@ -603,6 +603,7 @@ void memcg1_commit_charge(struct folio *folio, struct mem_cgroup *memcg)
local_irq_restore(flags);
}
+#ifdef CONFIG_SWAP
/**
* memcg1_swapout - transfer a memsw charge to swap
* @folio: folio whose memsw charge to transfer
@@ -704,6 +705,7 @@ void memcg1_swapin(swp_entry_t entry, unsigned int nr_pages)
mem_cgroup_uncharge_swap(entry, nr_pages);
}
}
+#endif /* CONFIG_SWAP */
void memcg1_uncharge_batch(struct mem_cgroup *memcg, unsigned long pgpgout,
unsigned long nr_memory, int nid)
--
2.54.0
prev parent reply other threads:[~2026-05-20 6:23 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-19 22:16 [akpm-mm:mm-new 323/362] mm/memcontrol-v1.c:651:31: error: implicit declaration of function 'swp_cluster_offset' kernel test robot
2026-05-19 22:26 ` Andrew Morton
2026-05-20 6:23 ` Kairui Song [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ag0mdxBWcrZ8hxPP@KASONG-MC4 \
--to=ryncsn@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=david@kernel.org \
--cc=kasong@tencent.com \
--cc=linux-mm@kvack.org \
--cc=lkp@intel.com \
--cc=mm-commits@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.