From: Muchun Song <songmuchun@bytedance.com>
To: NeilBrown <neilb@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Matthew Wilcox <willy@infradead.org>,
Johannes Weiner <hannes@cmpxchg.org>,
Michal Hocko <mhocko@kernel.org>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Shakeel Butt <shakeelb@google.com>,
Roman Gushchin <roman.gushchin@linux.dev>,
Yang Shi <shy828301@gmail.com>, Alex Shi <alexs@kernel.org>,
Wei Yang <richard.weiyang@gmail.com>,
Dave Chinner <david@fromorbit.com>,
trond.myklebust@hammerspace.com, anna.schumaker@netapp.com,
jaegeuk@kernel.org, chao@kernel.org,
Kari Argillander <kari.argillander@gmail.com>,
Vlastimil Babka <vbabka@suse.cz>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
LKML <linux-kernel@vger.kernel.org>,
Linux Memory Management List <linux-mm@kvack.org>,
linux-nfs@vger.kernel.org, Qi Zheng <zhengqi.arch@bytedance.com>,
Xiongchun duan <duanxiongchun@bytedance.com>,
Fam Zheng <fam.zheng@bytedance.com>,
Muchun Song <smuchun@gmail.com>
Subject: Re: [PATCH v6 12/16] mm: list_lru: replace linear array with xarray
Date: Fri, 1 Apr 2022 10:29:26 +0800 [thread overview]
Message-ID: <CAMZfGtUMyag7MHxmg7E1_xmyZ7NDPt62e-qXbqa8nJHFC72=3w@mail.gmail.com> (raw)
In-Reply-To: <164876616694.25542.14010655277238655246@noble.neil.brown.name>
On Fri, Apr 1, 2022 at 6:36 AM NeilBrown <neilb@suse.de> wrote:
>
> On Thu, 31 Mar 2022, Muchun Song wrote:
> >
> > Thanks for your report. I knew the reason. It is because the following
> > patch in this series was missed upstream. Could you help me test if it
> > works properly?
> >
> > [v6,06/16] nfs42: use a specific kmem_cache to allocate nfs4_xattr_entry
> >
>
> Thanks for the quick response! That patch helps, but has a bug. My
> testing resulted in refcount underflow errors.
>
> Problem is that kref_init() is called in nfs4_xattr_entry_init_once().
> This means that it is initialised to '1' the first time an entry is
> allocated, but it is left as zero the second time.
> I applied:
> --- a/fs/nfs/nfs42xattr.c
> +++ b/fs/nfs/nfs42xattr.c
> @@ -191,6 +191,7 @@ nfs4_xattr_alloc_entry(const char *name, const void *value,
> entry = kmem_cache_alloc_lru(nfs4_xattr_entry_cachep, lru, gfp);
> if (!entry)
> return NULL;
> + kref_init(&entry->ref);
> namep = kstrdup_const(name, gfp);
> if (!namep && name)
> goto free_buf;
> @@ -974,7 +975,6 @@ static void nfs4_xattr_entry_init_once(void *p)
> {
> struct nfs4_xattr_entry *entry = p;
>
> - kref_init(&entry->ref);
> entry->bucket = NULL;
> INIT_LIST_HEAD(&entry->lru);
> INIT_LIST_HEAD(&entry->dispose);
>
> and now it seems to work.
>
> The complete patch that I applied is below. I haven't reviewed it, just
> tested it.
> Tested-by: NeilBrown <neilb@suse.de>
>
Thanks for your test. I have looked at the latest code.
I found the following patch has removed GFP_ACCOUNT
on allocation.
5c60e89e71f8 ("NFSv4.2: Fix up an invalid combination of memory
allocation flags")
But this commit forgot to remove SLAB_ACCOUNT when creating
nfs4_xattr_cache_cachep (I think it is a bug). So I think the following
patch could work.
diff --git a/fs/nfs/nfs42xattr.c b/fs/nfs/nfs42xattr.c
index ad3405c64b9e..e7b34f7e0614 100644
--- a/fs/nfs/nfs42xattr.c
+++ b/fs/nfs/nfs42xattr.c
@@ -997,7 +997,7 @@ int __init nfs4_xattr_cache_init(void)
nfs4_xattr_cache_cachep = kmem_cache_create("nfs4_xattr_cache_cache",
sizeof(struct nfs4_xattr_cache), 0,
- (SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD|SLAB_ACCOUNT),
+ (SLAB_RECLAIM_ACCOUNT|SLAB_MEM_SPREAD),
nfs4_xattr_cache_init_once);
if (nfs4_xattr_cache_cachep == NULL)
return -ENOMEM;
next prev parent reply other threads:[~2022-04-01 2:30 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-28 12:21 [PATCH v6 00/16] Optimize list lru memory consumption Muchun Song
2022-02-28 12:21 ` [PATCH v6 01/16] mm: list_lru: transpose the array of per-node per-memcg lru lists Muchun Song
2022-02-28 12:21 ` [PATCH v6 02/16] mm: introduce kmem_cache_alloc_lru Muchun Song
2022-02-28 12:21 ` [PATCH v6 03/16] fs: introduce alloc_inode_sb() to allocate filesystems specific inode Muchun Song
2022-02-28 12:21 ` [PATCH v6 04/16] fs: allocate inode by using alloc_inode_sb() Muchun Song
2022-02-28 12:21 ` [PATCH v6 05/16] f2fs: " Muchun Song
2022-02-28 12:21 ` [PATCH v6 06/16] nfs42: use a specific kmem_cache to allocate nfs4_xattr_entry Muchun Song
2022-02-28 12:21 ` [PATCH v6 07/16] mm: dcache: use kmem_cache_alloc_lru() to allocate dentry Muchun Song
2022-02-28 12:21 ` [PATCH v6 08/16] xarray: use kmem_cache_alloc_lru to allocate xa_node Muchun Song
2022-02-28 12:21 ` [PATCH v6 09/16] mm: memcontrol: move memcg_online_kmem() to mem_cgroup_css_online() Muchun Song
2022-02-28 12:21 ` [PATCH v6 10/16] mm: list_lru: allocate list_lru_one only when needed Muchun Song
2022-02-28 12:21 ` [PATCH v6 11/16] mm: list_lru: rename memcg_drain_all_list_lrus to memcg_reparent_list_lrus Muchun Song
2022-02-28 12:21 ` [PATCH v6 12/16] mm: list_lru: replace linear array with xarray Muchun Song
2022-03-31 3:26 ` NeilBrown
2022-03-31 3:52 ` Muchun Song
2022-03-31 4:24 ` NeilBrown
2022-03-31 6:16 ` Muchun Song
2022-03-31 22:36 ` NeilBrown
2022-04-01 2:29 ` Muchun Song [this message]
2022-03-31 15:01 ` Matthew Wilcox
2022-04-01 3:23 ` Muchun Song
2022-02-28 12:21 ` [PATCH v6 13/16] mm: memcontrol: reuse memory cgroup ID for kmem ID Muchun Song
2022-02-28 12:21 ` [PATCH v6 14/16] mm: memcontrol: fix cannot alloc the maximum memcg ID Muchun Song
2022-02-28 12:21 ` [PATCH v6 15/16] mm: list_lru: rename list_lru_per_memcg to list_lru_memcg Muchun Song
2022-02-28 12:21 ` [PATCH v6 16/16] mm: memcontrol: rename memcg_cache_id to memcg_kmem_id Muchun Song
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='CAMZfGtUMyag7MHxmg7E1_xmyZ7NDPt62e-qXbqa8nJHFC72=3w@mail.gmail.com' \
--to=songmuchun@bytedance.com \
--cc=akpm@linux-foundation.org \
--cc=alexs@kernel.org \
--cc=anna.schumaker@netapp.com \
--cc=chao@kernel.org \
--cc=david@fromorbit.com \
--cc=duanxiongchun@bytedance.com \
--cc=fam.zheng@bytedance.com \
--cc=hannes@cmpxchg.org \
--cc=jaegeuk@kernel.org \
--cc=kari.argillander@gmail.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nfs@vger.kernel.org \
--cc=mhocko@kernel.org \
--cc=neilb@suse.de \
--cc=richard.weiyang@gmail.com \
--cc=roman.gushchin@linux.dev \
--cc=shakeelb@google.com \
--cc=shy828301@gmail.com \
--cc=smuchun@gmail.com \
--cc=trond.myklebust@hammerspace.com \
--cc=vbabka@suse.cz \
--cc=vdavydov.dev@gmail.com \
--cc=willy@infradead.org \
--cc=zhengqi.arch@bytedance.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox