From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from m16.mail.163.com (m16.mail.163.com [117.135.210.3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 58EF53D522F for ; Mon, 25 May 2026 07:54:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=117.135.210.3 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779695691; cv=none; b=o+7X72UhHrbMgaYvZjw8Q0hSbnL4qDgfawKoSi2s1a9/rixrYuZfw1I3l/axT9bz10rrHnCF/ERGmPOq8HQNnNIf95GrezxLwAO0K9tu02XUffwg4jcPvva/e3Gnpr8/DIPBOalOmlJP2vlwcKqW/65iSPDXbVKEVNIobr0Z6yI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779695691; c=relaxed/simple; bh=znKPzGP5VQe9X/BEvZX5Tq1MGe+rcuWPlKU5IQqLN5c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=XP+EzKwPkGaMKZXDxN3Q4ZUCu2FCXaRYrv1L84HvJXOI2yQ1+ibZ6+EzikD9P5h6nmRUhrSo7/N/SnelhfAEEGfsiYQleStXudx0n371R/d7oJpkXbGLs9Bbpps5JJUtKBSYs8q1gPyuOkApWvrb3zgdzkmgCMMLyZoKI2FGvxI= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com; spf=pass smtp.mailfrom=163.com; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b=VMQXeXls; arc=none smtp.client-ip=117.135.210.3 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=163.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=163.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=163.com header.i=@163.com header.b="VMQXeXls" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=ax QYDtMo/5SwDXs6nQsqVjyWpPLMRPpV/xSTSlWZZZw=; b=VMQXeXlsUSn6JqZdyX FGXaxLcl+8PyIZkPtumy/0+XKU/nasl/+aRqEEuOsycUszrRqbCu1zqd7ipMGcVV tKsXNP9G9mF0/cD6bkTkAOAUqHV4AdWsswINZ5iK7bawBfLROvYb+6j399J8snFd 8UWVHP71EyvRwMjNrfseP4Oto= Received: from ubuntu24-z.. (unknown []) by gzsmtp5 (Coremail) with SMTP id QCgvCgD3P8a1_xNqQ6RnFA--.147S2; Mon, 25 May 2026 15:52:25 +0800 (CST) From: ranxiaokai627@163.com To: ljs@kernel.org Cc: akpm@linux-foundation.org, baohua@kernel.org, baolin.wang@linux.alibaba.com, david@kernel.org, dev.jain@arm.com, hughd@google.com, lance.yang@linux.dev, leitao@debian.org, liam@infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, npache@redhat.com, ran.xiaokai@zte.com.cn, ranxiaokai627@163.com, ryan.roberts@arm.com, ziy@nvidia.com Subject: Re: [PATCH v3 1/2] mm: shmem: refactor thpsize_shmem_enabled_store() with sysfs_match_string() Date: Mon, 25 May 2026 07:52:21 +0000 Message-ID: <20260525075221.68631-1-ranxiaokai627@163.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-CM-TRANSID:QCgvCgD3P8a1_xNqQ6RnFA--.147S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxGry5Jr45WFyfWrW3ZrW5Wrg_yoW5XFyDpF s3G34SyrWUJF9rKrWxXF4rtryrtrs3t3W8Kry3G34fJ3ZYvwnIyFyktry09a4kZ34fJr4I kr18WF9xW3yqyrJanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0JUbVycUUUUU= X-CM-SenderInfo: xudq5x5drntxqwsxqiywtou0bp/xtbC7hmN2WoT-7lu0gAA3g >On Mon, May 18, 2026 at 12:32:37PM +0000, ranxiaokai627@163.com wrote: >> From: Ran Xiaokai >> --- >> mm/shmem.c | 107 ++++++++++++++++++++++++++++++----------------------- >> 1 file changed, 60 insertions(+), 47 deletions(-) >> >> diff --git a/mm/shmem.c b/mm/shmem.c >> index 3b5dc21b323c..46d2cfc30823 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_shmem_enabled_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_shmem_enabled_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_shmem_orders_by_mode[] = { >> + [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, >> +}; > >As Baolin suggested, we can probably rename these for bervity. > >We know it's shmem, as it's in shmem.c :) so drop that. > >huge_mode, huge_mode_strings, huge_mode_orders seems good to me? The old naming is indeed a bit verbose. I will send a new version based on Baolin and your suggestion. >> + >> 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_shmem_enabled_mode mode) >> +{ >> + bool changed = false; >> + enum huge_shmem_enabled_mode idx; >> + >> + spin_lock(&huge_shmem_orders_lock); >> + for (idx = 0; idx < ARRAY_SIZE(huge_shmem_orders_by_mode); idx++) { >> + if (idx == mode) >> + changed |= !__test_and_set_bit(order, huge_shmem_orders_by_mode[idx]); >> + else >> + changed |= __test_and_clear_bit(order, huge_shmem_orders_by_mode[idx]); >> + } >> + spin_unlock(&huge_shmem_orders_lock); >> + >> + return changed; >> +} >> + > >Thanks for separating this out! :)