From: Lorenzo Stoakes <ljs@kernel.org>
To: ranxiaokai627@163.com
Cc: akpm@linux-foundation.org, baolin.wang@linux.alibaba.com,
hughd@google.com, leitao@debian.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
ran.xiaokai@zte.com.cn
Subject: Re: [PATCH v2 1/2] mm: huge_memory: refactor thpsize_shmem_enabled_store() with sysfs_match_string()
Date: Fri, 15 May 2026 12:34:21 +0100 [thread overview]
Message-ID: <agcEn02SSsh7fPcN@lucifer> (raw)
In-Reply-To: <20260515072336.53287-1-ranxiaokai627@163.com>
On Fri, May 15, 2026 at 07:23:36AM +0000, ranxiaokai627@163.com wrote:
> >On Wed, May 13, 2026 at 09:45:07AM +0000, ranxiaokai627@163.com wrote:
> >> From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
> >>
> >> Inspired by commit 82d9ff648c6c ("mm: huge_memory: refactor
> >> anon_enabled_store() with set_anon_enabled_mode()"), refactor
> >> thpsize_shmem_enabled_store() using sysfs_match_string().
> >> This eliminates the duplicated spin_lock/unlock(), set/clear_bit(),
> >> calls across all branches, reducing code duplication.
> >
> >> + /* Do not override huge allocation policy with non-PMD sized mTHP */
> >> + if (mode == HUGE_SHMEM_ENABLED_INHERIT &&
> >> + shmem_huge == SHMEM_HUGE_FORCE && !is_pmd_order(order))
> >> + return -EINVAL;
> >>
> >> - if (ret > 0) {
> >> - int err = start_stop_khugepaged();
> >> + spin_lock(&huge_shmem_orders_lock);
> >> + for (m = 0; m < ARRAY_SIZE(huge_shmem_orders_by_mode); m++) {
> >> + if (m == mode)
> >> + changed |= !__test_and_set_bit(order, huge_shmem_orders_by_mode[m]);
> >> + else
> >> + changed |= __test_and_clear_bit(order, huge_shmem_orders_by_mode[m]);
> >> + }
> >> + spin_unlock(&huge_shmem_orders_lock);
> >
> >You're copy/pasta'ing anon_enabled_store() but not the nicer refactoring that's
> >there.
> >
> >Please split this out like set_anon_enabled_mode() does. And put:
> >
> > static unsigned long *enabled_orders[] = {
> > &huge_shmem_orders_always,
> > &huge_shmem_orders_inherit,
> > &huge_shmem_orders_within_size,
> > &huge_shmem_orders_madvise,
> > };
> >
> >At the start of it like that does also.
> >
> >Please don't reproduce the single letter var name though :)
> >
>
> Arrays huge_shmem_orders_by_mode are shared by both store() and
> show() in patch2, so we should keeping at file scope to avoid duplication,
> what do you think ?
Ah yeah ok, in that case keep that separated out, but the other points in the
review stand!
Thanks :)
>
> >> +};
> >
> >>
> >> + if (changed) {
> >> + err = start_stop_khugepaged();
> >> if (err)
> >> ret = err;
> >
> >
> >> + } else {
> >> + /*
> >> + * Recalculate watermarks even when the mode hasn't changed
> >> + * to preserve the legacy behavior, as this is always called
> >> + * inside start_stop_khugepaged().
> >> + */
> >> + set_recommended_min_free_kbytes();
> >> }
> >> +
> >> return ret;
> >
> >return count;
> >
> >> }
> >>
> >> --
> >> 2.25.1
> >>
> >>
> >
> >Cheers, Lorenzo
>
prev parent reply other threads:[~2026-05-15 11:34 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-13 9:45 [PATCH v2 1/2] mm: huge_memory: refactor thpsize_shmem_enabled_store() with sysfs_match_string() ranxiaokai627
2026-05-13 9:45 ` [PATCH v2 2/2] mm: huge_memory: refactor thpsize_shmem_enabled_show() with helper arrays ranxiaokai627
2026-05-14 2:41 ` Baolin Wang
2026-05-14 9:08 ` Breno Leitao
2026-05-14 12:22 ` Lorenzo Stoakes
2026-05-15 6:04 ` ranxiaokai627
2026-05-15 11:36 ` Lorenzo Stoakes
2026-05-14 2:36 ` [PATCH v2 1/2] mm: huge_memory: refactor thpsize_shmem_enabled_store() with sysfs_match_string() Baolin Wang
2026-05-14 10:10 ` ranxiaokai627
2026-05-14 12:05 ` Lorenzo Stoakes
2026-05-14 8:33 ` Breno Leitao
2026-05-14 9:26 ` ranxiaokai627
2026-05-14 12:48 ` Lorenzo Stoakes
2026-05-15 6:21 ` ranxiaokai627
2026-05-15 7:23 ` ranxiaokai627
2026-05-15 11:34 ` Lorenzo Stoakes [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=agcEn02SSsh7fPcN@lucifer \
--to=ljs@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=hughd@google.com \
--cc=leitao@debian.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=ran.xiaokai@zte.com.cn \
--cc=ranxiaokai627@163.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 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.