* [PATCH v4 0/2] refactors thpsize_shmem_enabled_store() and thpsize_shmem_enabled_show()
@ 2026-05-25 10:26 ranxiaokai627
2026-05-25 10:26 ` [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() ranxiaokai627
2026-05-25 10:27 ` [PATCH v4 2/2] mm: shmem: refactor thpsize_shmem_enabled_show() with helper arrays ranxiaokai627
0 siblings, 2 replies; 6+ messages in thread
From: ranxiaokai627 @ 2026-05-25 10:26 UTC (permalink / raw)
To: ljs, hughd, baolin.wang, akpm
Cc: leitao, ziy, liam, npache, ryan.roberts, dev.jain, baohua,
lance.yang, david, linux-mm, linux-kernel, ran.xiaokai,
ranxiaokai627
From: Ran Xiaokai <ran.xiaokai@zte.com.cn>
This is v4 of the refactor of thpsize_shmem_enabled_store() and
thpsize_shmem_enabled_show() series.
Changes since v3:
- Simplified verbose variable names to huge_mode, huge_mode_strings, huge_mode_orders
as suggested by Lorenzo and Baolin.
- Add Reviewed-by and Tested-by tags.
Changes since v2:
- Fix subject prefix to "mm: shmem:" as suggested by Baolin.
- Some changes according to Lorenzo's comments:
- Add cover letter and fix threading.
- Add THP maintainers to the cc list.
- Document the behavioral change regarding start_stop_khugepaged() in commit message.
- Improve single letter variable names.
- Simplify error handling and return values.
Ran Xiaokai (2):
mm: shmem: refactor thpsize_shmem_enabled_store() with
sysfs_match_string()
mm: shmem: refactor thpsize_shmem_enabled_show() with helper arrays
mm/shmem.c | 143 +++++++++++++++++++++++++++++++----------------------
1 file changed, 83 insertions(+), 60 deletions(-)
--
2.25.1
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() 2026-05-25 10:26 [PATCH v4 0/2] refactors thpsize_shmem_enabled_store() and thpsize_shmem_enabled_show() ranxiaokai627 @ 2026-05-25 10:26 ` ranxiaokai627 2026-05-26 11:22 ` Lorenzo Stoakes 2026-05-26 12:27 ` David Hildenbrand (Arm) 2026-05-25 10:27 ` [PATCH v4 2/2] mm: shmem: refactor thpsize_shmem_enabled_show() with helper arrays ranxiaokai627 1 sibling, 2 replies; 6+ messages in thread From: ranxiaokai627 @ 2026-05-25 10:26 UTC (permalink / raw) To: ljs, hughd, baolin.wang, akpm Cc: leitao, ziy, liam, npache, ryan.roberts, dev.jain, baohua, lance.yang, david, linux-mm, linux-kernel, ran.xiaokai, ranxiaokai627 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. Behavioral change: Call start_stop_khugepaged() only when the mode actually changes. If unchanged, call set_recommended_min_free_kbytes() to preserve legacy watermark behavior. This avoids unnecessary khugepaged restarts. Tested with selftests ./run_kselftest.sh -t mm:ksft_thp.sh, all test cases passed. Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn> Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Barry Song <baohua@kernel.org> Tested-by: Baolin Wang <baolin.wang@linux.alibaba.com> Tested-by: Lance Yang <lance.yang@linux.dev> --- mm/shmem.c | 107 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 60 insertions(+), 47 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 3b5dc21b323c..288942b44db6 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -5526,6 +5526,29 @@ static ssize_t shmem_enabled_store(struct kobject *kobj, struct kobj_attribute shmem_enabled_attr = __ATTR_RW(shmem_enabled); static DEFINE_SPINLOCK(huge_shmem_orders_lock); +enum huge_mode { + HUGE_SHMEM_ENABLED_ALWAYS = 0, + HUGE_SHMEM_ENABLED_INHERIT, + HUGE_SHMEM_ENABLED_WITHIN_SIZE, + HUGE_SHMEM_ENABLED_ADVISE, + HUGE_SHMEM_ENABLED_NEVER, +}; + +static const char * const huge_mode_strings[] = { + [HUGE_SHMEM_ENABLED_ALWAYS] = "always", + [HUGE_SHMEM_ENABLED_INHERIT] = "inherit", + [HUGE_SHMEM_ENABLED_WITHIN_SIZE] = "within_size", + [HUGE_SHMEM_ENABLED_ADVISE] = "advise", + [HUGE_SHMEM_ENABLED_NEVER] = "never", +}; + +static unsigned long * const huge_mode_orders[] = { + [HUGE_SHMEM_ENABLED_ALWAYS] = &huge_shmem_orders_always, + [HUGE_SHMEM_ENABLED_INHERIT] = &huge_shmem_orders_inherit, + [HUGE_SHMEM_ENABLED_WITHIN_SIZE] = &huge_shmem_orders_within_size, + [HUGE_SHMEM_ENABLED_ADVISE] = &huge_shmem_orders_madvise, +}; + static ssize_t thpsize_shmem_enabled_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { @@ -5546,63 +5569,53 @@ static ssize_t thpsize_shmem_enabled_show(struct kobject *kobj, return sysfs_emit(buf, "%s\n", output); } +static bool set_shmem_enabled_mode(int order, enum huge_mode mode) +{ + bool changed = false; + enum huge_mode idx; + + spin_lock(&huge_shmem_orders_lock); + for (idx = 0; idx < ARRAY_SIZE(huge_mode_orders); idx++) { + if (idx == mode) + changed |= !__test_and_set_bit(order, huge_mode_orders[idx]); + else + changed |= __test_and_clear_bit(order, huge_mode_orders[idx]); + } + spin_unlock(&huge_shmem_orders_lock); + + return changed; +} + static ssize_t thpsize_shmem_enabled_store(struct kobject *kobj, struct kobj_attribute *attr, const char *buf, size_t count) { int order = to_thpsize(kobj)->order; - ssize_t ret = count; - - if (sysfs_streq(buf, "always")) { - spin_lock(&huge_shmem_orders_lock); - clear_bit(order, &huge_shmem_orders_inherit); - clear_bit(order, &huge_shmem_orders_madvise); - clear_bit(order, &huge_shmem_orders_within_size); - set_bit(order, &huge_shmem_orders_always); - spin_unlock(&huge_shmem_orders_lock); - } else if (sysfs_streq(buf, "inherit")) { - /* Do not override huge allocation policy with non-PMD sized mTHP */ - if (shmem_huge == SHMEM_HUGE_FORCE && !is_pmd_order(order)) - return -EINVAL; + int mode; - spin_lock(&huge_shmem_orders_lock); - clear_bit(order, &huge_shmem_orders_always); - clear_bit(order, &huge_shmem_orders_madvise); - clear_bit(order, &huge_shmem_orders_within_size); - set_bit(order, &huge_shmem_orders_inherit); - spin_unlock(&huge_shmem_orders_lock); - } else if (sysfs_streq(buf, "within_size")) { - spin_lock(&huge_shmem_orders_lock); - clear_bit(order, &huge_shmem_orders_always); - clear_bit(order, &huge_shmem_orders_inherit); - clear_bit(order, &huge_shmem_orders_madvise); - set_bit(order, &huge_shmem_orders_within_size); - spin_unlock(&huge_shmem_orders_lock); - } else if (sysfs_streq(buf, "advise")) { - spin_lock(&huge_shmem_orders_lock); - clear_bit(order, &huge_shmem_orders_always); - clear_bit(order, &huge_shmem_orders_inherit); - clear_bit(order, &huge_shmem_orders_within_size); - set_bit(order, &huge_shmem_orders_madvise); - spin_unlock(&huge_shmem_orders_lock); - } else if (sysfs_streq(buf, "never")) { - spin_lock(&huge_shmem_orders_lock); - clear_bit(order, &huge_shmem_orders_always); - clear_bit(order, &huge_shmem_orders_inherit); - clear_bit(order, &huge_shmem_orders_within_size); - clear_bit(order, &huge_shmem_orders_madvise); - spin_unlock(&huge_shmem_orders_lock); - } else { - ret = -EINVAL; - } + mode = sysfs_match_string(huge_mode_strings, buf); + if (mode < 0) + return mode; - if (ret > 0) { - int err = start_stop_khugepaged(); + /* 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 (set_shmem_enabled_mode(order, mode)) { + int err = start_stop_khugepaged(); if (err) - ret = err; + return 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; } struct kobj_attribute thpsize_shmem_enabled_attr = -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() 2026-05-25 10:26 ` [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() ranxiaokai627 @ 2026-05-26 11:22 ` Lorenzo Stoakes 2026-05-26 12:27 ` David Hildenbrand (Arm) 1 sibling, 0 replies; 6+ messages in thread From: Lorenzo Stoakes @ 2026-05-26 11:22 UTC (permalink / raw) To: ranxiaokai627 Cc: hughd, baolin.wang, akpm, leitao, ziy, liam, npache, ryan.roberts, dev.jain, baohua, lance.yang, david, linux-mm, linux-kernel, ran.xiaokai On Mon, May 25, 2026 at 10:26:59AM +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. > > Behavioral change: > Call start_stop_khugepaged() only when the mode actually changes. > If unchanged, call set_recommended_min_free_kbytes() to preserve > legacy watermark behavior. This avoids unnecessary khugepaged restarts. > > Tested with selftests ./run_kselftest.sh -t mm:ksft_thp.sh, > all test cases passed. > > Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn> LGTM, so: Reviewed-by: Lorenzo Stoakes <ljs@kernel.org> > Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> > Reviewed-by: Barry Song <baohua@kernel.org> > Tested-by: Baolin Wang <baolin.wang@linux.alibaba.com> > Tested-by: Lance Yang <lance.yang@linux.dev> > --- > mm/shmem.c | 107 ++++++++++++++++++++++++++++++----------------------- > 1 file changed, 60 insertions(+), 47 deletions(-) > > diff --git a/mm/shmem.c b/mm/shmem.c > index 3b5dc21b323c..288942b44db6 100644 > --- a/mm/shmem.c > +++ b/mm/shmem.c > @@ -5526,6 +5526,29 @@ static ssize_t shmem_enabled_store(struct kobject *kobj, > struct kobj_attribute shmem_enabled_attr = __ATTR_RW(shmem_enabled); > static DEFINE_SPINLOCK(huge_shmem_orders_lock); > > +enum huge_mode { > + HUGE_SHMEM_ENABLED_ALWAYS = 0, > + HUGE_SHMEM_ENABLED_INHERIT, > + HUGE_SHMEM_ENABLED_WITHIN_SIZE, > + HUGE_SHMEM_ENABLED_ADVISE, > + HUGE_SHMEM_ENABLED_NEVER, > +}; > + > +static const char * const huge_mode_strings[] = { > + [HUGE_SHMEM_ENABLED_ALWAYS] = "always", > + [HUGE_SHMEM_ENABLED_INHERIT] = "inherit", > + [HUGE_SHMEM_ENABLED_WITHIN_SIZE] = "within_size", > + [HUGE_SHMEM_ENABLED_ADVISE] = "advise", > + [HUGE_SHMEM_ENABLED_NEVER] = "never", > +}; > + > +static unsigned long * const huge_mode_orders[] = { > + [HUGE_SHMEM_ENABLED_ALWAYS] = &huge_shmem_orders_always, > + [HUGE_SHMEM_ENABLED_INHERIT] = &huge_shmem_orders_inherit, > + [HUGE_SHMEM_ENABLED_WITHIN_SIZE] = &huge_shmem_orders_within_size, > + [HUGE_SHMEM_ENABLED_ADVISE] = &huge_shmem_orders_madvise, > +}; > + > static ssize_t thpsize_shmem_enabled_show(struct kobject *kobj, > struct kobj_attribute *attr, char *buf) > { > @@ -5546,63 +5569,53 @@ static ssize_t thpsize_shmem_enabled_show(struct kobject *kobj, > return sysfs_emit(buf, "%s\n", output); > } > > +static bool set_shmem_enabled_mode(int order, enum huge_mode mode) > +{ > + bool changed = false; > + enum huge_mode idx; > + > + spin_lock(&huge_shmem_orders_lock); > + for (idx = 0; idx < ARRAY_SIZE(huge_mode_orders); idx++) { > + if (idx == mode) > + changed |= !__test_and_set_bit(order, huge_mode_orders[idx]); > + else > + changed |= __test_and_clear_bit(order, huge_mode_orders[idx]); > + } > + spin_unlock(&huge_shmem_orders_lock); > + > + return changed; > +} > + > static ssize_t thpsize_shmem_enabled_store(struct kobject *kobj, > struct kobj_attribute *attr, > const char *buf, size_t count) > { > int order = to_thpsize(kobj)->order; > - ssize_t ret = count; > - > - if (sysfs_streq(buf, "always")) { > - spin_lock(&huge_shmem_orders_lock); > - clear_bit(order, &huge_shmem_orders_inherit); > - clear_bit(order, &huge_shmem_orders_madvise); > - clear_bit(order, &huge_shmem_orders_within_size); > - set_bit(order, &huge_shmem_orders_always); > - spin_unlock(&huge_shmem_orders_lock); > - } else if (sysfs_streq(buf, "inherit")) { > - /* Do not override huge allocation policy with non-PMD sized mTHP */ > - if (shmem_huge == SHMEM_HUGE_FORCE && !is_pmd_order(order)) > - return -EINVAL; > + int mode; > > - spin_lock(&huge_shmem_orders_lock); > - clear_bit(order, &huge_shmem_orders_always); > - clear_bit(order, &huge_shmem_orders_madvise); > - clear_bit(order, &huge_shmem_orders_within_size); > - set_bit(order, &huge_shmem_orders_inherit); > - spin_unlock(&huge_shmem_orders_lock); > - } else if (sysfs_streq(buf, "within_size")) { > - spin_lock(&huge_shmem_orders_lock); > - clear_bit(order, &huge_shmem_orders_always); > - clear_bit(order, &huge_shmem_orders_inherit); > - clear_bit(order, &huge_shmem_orders_madvise); > - set_bit(order, &huge_shmem_orders_within_size); > - spin_unlock(&huge_shmem_orders_lock); > - } else if (sysfs_streq(buf, "advise")) { > - spin_lock(&huge_shmem_orders_lock); > - clear_bit(order, &huge_shmem_orders_always); > - clear_bit(order, &huge_shmem_orders_inherit); > - clear_bit(order, &huge_shmem_orders_within_size); > - set_bit(order, &huge_shmem_orders_madvise); > - spin_unlock(&huge_shmem_orders_lock); > - } else if (sysfs_streq(buf, "never")) { > - spin_lock(&huge_shmem_orders_lock); > - clear_bit(order, &huge_shmem_orders_always); > - clear_bit(order, &huge_shmem_orders_inherit); > - clear_bit(order, &huge_shmem_orders_within_size); > - clear_bit(order, &huge_shmem_orders_madvise); > - spin_unlock(&huge_shmem_orders_lock); > - } else { > - ret = -EINVAL; > - } > + mode = sysfs_match_string(huge_mode_strings, buf); > + if (mode < 0) > + return mode; > > - if (ret > 0) { > - int err = start_stop_khugepaged(); > + /* 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 (set_shmem_enabled_mode(order, mode)) { > + int err = start_stop_khugepaged(); > if (err) > - ret = err; > + return 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; > } > > struct kobj_attribute thpsize_shmem_enabled_attr = > -- > 2.25.1 > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() 2026-05-25 10:26 ` [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() ranxiaokai627 2026-05-26 11:22 ` Lorenzo Stoakes @ 2026-05-26 12:27 ` David Hildenbrand (Arm) 1 sibling, 0 replies; 6+ messages in thread From: David Hildenbrand (Arm) @ 2026-05-26 12:27 UTC (permalink / raw) To: ranxiaokai627, ljs, hughd, baolin.wang, akpm Cc: leitao, ziy, liam, npache, ryan.roberts, dev.jain, baohua, lance.yang, linux-mm, linux-kernel, ran.xiaokai On 5/25/26 12:26, 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. > > Behavioral change: > Call start_stop_khugepaged() only when the mode actually changes. > If unchanged, call set_recommended_min_free_kbytes() to preserve > legacy watermark behavior. This avoids unnecessary khugepaged restarts. > > Tested with selftests ./run_kselftest.sh -t mm:ksft_thp.sh, > all test cases passed. > > Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn> > Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> > Reviewed-by: Barry Song <baohua@kernel.org> > Tested-by: Baolin Wang <baolin.wang@linux.alibaba.com> > Tested-by: Lance Yang <lance.yang@linux.dev> > --- Acked-by: David Hildenbrand (arm) <david@kernel.org> -- Cheers, David ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v4 2/2] mm: shmem: refactor thpsize_shmem_enabled_show() with helper arrays 2026-05-25 10:26 [PATCH v4 0/2] refactors thpsize_shmem_enabled_store() and thpsize_shmem_enabled_show() ranxiaokai627 2026-05-25 10:26 ` [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() ranxiaokai627 @ 2026-05-25 10:27 ` ranxiaokai627 2026-05-26 12:28 ` David Hildenbrand (Arm) 1 sibling, 1 reply; 6+ messages in thread From: ranxiaokai627 @ 2026-05-25 10:27 UTC (permalink / raw) To: ljs, hughd, baolin.wang, akpm Cc: leitao, ziy, liam, npache, ryan.roberts, dev.jain, baohua, lance.yang, david, linux-mm, linux-kernel, ran.xiaokai, ranxiaokai627 From: Ran Xiaokai <ran.xiaokai@zte.com.cn> Replace the hardcoded if/else chain of test_bit() calls and string literals in thpsize_shmem_enabled_show() with a loop over huge_shmem_orders_by_mode[] and huge_shmem_enabled_mode_strings[] arrays. This makes thpsize_shmem_enabled_show() consistent with thpsize_shmem_enabled_store() and eliminates duplicated mode name strings. Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn> Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Barry Song <baohua@kernel.org> Reviewed-by: Breno Leitao <leitao@debian.org> Reviewed-by: Lorenzo Stoakes <ljs@kernel.org> Tested-by: Baolin Wang <baolin.wang@linux.alibaba.com> Tested-by: Lance Yang <lance.yang@linux.dev> --- mm/shmem.c | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/mm/shmem.c b/mm/shmem.c index 288942b44db6..d9b499860433 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -5553,20 +5553,30 @@ static ssize_t thpsize_shmem_enabled_show(struct kobject *kobj, struct kobj_attribute *attr, char *buf) { int order = to_thpsize(kobj)->order; - const char *output; - - if (test_bit(order, &huge_shmem_orders_always)) - output = "[always] inherit within_size advise never"; - else if (test_bit(order, &huge_shmem_orders_inherit)) - output = "always [inherit] within_size advise never"; - else if (test_bit(order, &huge_shmem_orders_within_size)) - output = "always inherit [within_size] advise never"; - else if (test_bit(order, &huge_shmem_orders_madvise)) - output = "always inherit within_size [advise] never"; - else - output = "always inherit within_size advise [never]"; + int active = HUGE_SHMEM_ENABLED_NEVER; + int len = 0; + int i; + + for (i = 0; i < ARRAY_SIZE(huge_mode_orders); i++) { + if (test_bit(order, huge_mode_orders[i])) { + active = i; + break; + } + } + + for (i = 0; i < ARRAY_SIZE(huge_mode_strings); i++) { + if (i == active) + len += sysfs_emit_at(buf, len, "[%s] ", + huge_mode_strings[i]); + else + len += sysfs_emit_at(buf, len, "%s ", + huge_mode_strings[i]); + } + + /* Replace trailing space with newline */ + buf[len - 1] = '\n'; - return sysfs_emit(buf, "%s\n", output); + return len; } static bool set_shmem_enabled_mode(int order, enum huge_mode mode) -- 2.25.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v4 2/2] mm: shmem: refactor thpsize_shmem_enabled_show() with helper arrays 2026-05-25 10:27 ` [PATCH v4 2/2] mm: shmem: refactor thpsize_shmem_enabled_show() with helper arrays ranxiaokai627 @ 2026-05-26 12:28 ` David Hildenbrand (Arm) 0 siblings, 0 replies; 6+ messages in thread From: David Hildenbrand (Arm) @ 2026-05-26 12:28 UTC (permalink / raw) To: ranxiaokai627, ljs, hughd, baolin.wang, akpm Cc: leitao, ziy, liam, npache, ryan.roberts, dev.jain, baohua, lance.yang, linux-mm, linux-kernel, ran.xiaokai On 5/25/26 12:27, ranxiaokai627@163.com wrote: > From: Ran Xiaokai <ran.xiaokai@zte.com.cn> > > Replace the hardcoded if/else chain of test_bit() calls and string > literals in thpsize_shmem_enabled_show() with a loop over > huge_shmem_orders_by_mode[] and huge_shmem_enabled_mode_strings[] arrays. > > This makes thpsize_shmem_enabled_show() consistent with > thpsize_shmem_enabled_store() and eliminates duplicated mode name strings. > > Signed-off-by: Ran Xiaokai <ran.xiaokai@zte.com.cn> > Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> > Reviewed-by: Barry Song <baohua@kernel.org> > Reviewed-by: Breno Leitao <leitao@debian.org> > Reviewed-by: Lorenzo Stoakes <ljs@kernel.org> > Tested-by: Baolin Wang <baolin.wang@linux.alibaba.com> > Tested-by: Lance Yang <lance.yang@linux.dev> > --- Acked-by: David Hildenbrand (arm) <david@kernel.org> -- Cheers, David ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-05-26 12:28 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-05-25 10:26 [PATCH v4 0/2] refactors thpsize_shmem_enabled_store() and thpsize_shmem_enabled_show() ranxiaokai627 2026-05-25 10:26 ` [PATCH v4 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() ranxiaokai627 2026-05-26 11:22 ` Lorenzo Stoakes 2026-05-26 12:27 ` David Hildenbrand (Arm) 2026-05-25 10:27 ` [PATCH v4 2/2] mm: shmem: refactor thpsize_shmem_enabled_show() with helper arrays ranxiaokai627 2026-05-26 12:28 ` David Hildenbrand (Arm)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox