From: "David Hildenbrand (Arm)" <david@kernel.org>
To: Luiz Capitulino <luizcap@redhat.com>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
baolin.wang@linux.alibaba.com, ziy@nvidia.com,
lance.yang@linux.dev
Cc: corbet@lwn.net, tsbogend@alpha.franken.de, maddy@linux.ibm.com,
mpe@ellerman.id.au, agordeev@linux.ibm.com,
gerald.schaefer@linux.ibm.com, hca@linux.ibm.com,
gor@linux.ibm.com, x86@kernel.org, tglx@kernel.org,
mingo@redhat.com, bp@alien8.de, hughd@google.com,
dave.hansen@linux.intel.com, djbw@kernel.org,
vishal.l.verma@intel.com, dave.jiang@intel.com,
akpm@linux-foundation.org, yintirui@huawei.com, dev.jain@arm.com,
usama.arif@linux.dev
Subject: Re: [PATCH v8 02/14] mm: shmem: shmem_getattr(): set blksize to highest supported THP order
Date: Fri, 2 Oct 2026 21:11:22 +0200 [thread overview]
Message-ID: <7bd00f36-3f48-490e-ab4c-7ed15be931d2@kernel.org> (raw)
In-Reply-To: <0f18a45baec44d193f8dbc760ef57c0430e04bdb.1789695931.git.luizcap@redhat.com>
On 9/18/26 03:45, Luiz Capitulino wrote:
> Today, shmem_getattr() sets stat->blksize to PMD size whenever
> shmem_huge_global_enabled() returns non-zero. While this works fine
> for the normal THP-enabled case as explained by Baolin in [1], this
> has two problems:
>
> 1. Theoretically, when shmem is configured for within_size, this
> could set blksize to PMD size even though the allocation may
> be a smaller mTHP order
>
> 2. A future commit will allow shmem THP support to be enabled
> even when the CPU doesn't support PMD-sized pages. We should
> not allow blksize to be set to PMD size in this case
>
> In order to fix #1 and prepare for #2, this commit sets blksize
> to the size of the highest supported order returned by
> shmem_huge_global_enabled().
>
> [1] https://lore.kernel.org/linux-mm/6591a74c-7ef9-4614-9ae9-cb2fbed86ebf@linux.alibaba.com/
>
> Suggested-by: Baolin Wang <baolin.wang@linux.alibaba.com>
> Acked-by: Zi Yan <ziy@nvidia.com>
> Signed-off-by: Luiz Capitulino <luizcap@redhat.com>
> ---
> mm/shmem.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/mm/shmem.c b/mm/shmem.c
> index b572c60f2af8..776dff8a848e 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -1506,6 +1506,7 @@ static int shmem_getattr(struct mnt_idmap *idmap,
> {
> struct inode *inode = path->dentry->d_inode;
> struct shmem_inode_info *info = SHMEM_I(inode);
> + unsigned int orders;
>
> /* Fast-path hint; recalc under info->lock corrects any stale read. */
> if (data_race(info->alloced - info->swapped != inode->i_mapping->nrpages))
> @@ -1522,8 +1523,9 @@ static int shmem_getattr(struct mnt_idmap *idmap,
> STATX_ATTR_NODUMP);
> generic_fillattr(idmap, request_mask, inode, stat);
>
> - if (shmem_huge_global_enabled(inode, 0, 0, false, NULL, 0))
> - stat->blksize = HPAGE_PMD_SIZE;
> + orders = shmem_huge_global_enabled(inode, 0, 0, false, NULL, 0);
> + if (orders)
> + stat->blksize = PAGE_SIZE << highest_order(orders);
>
> if (request_mask & STATX_BTIME) {
> stat->result_mask |= STATX_BTIME;
Heh, looking into the history of this I stumble over
commit 89fdcd262fd40712da65e922558872a12b203332
Author: Yang Shi <yang.shi@linux.alibaba.com>
Date: Thu Jun 7 17:06:59 2018 -0700
mm: shmem: make stat.st_blksize return huge page size if THP is on
Since tmpfs THP was supported in 4.8, hugetlbfs is not the only
filesystem with huge page support anymore. tmpfs can use huge page via
THP when mounting by "huge=" mount option.
Which is a good read, especially regarding Hugh's comments:
"
: Sorry, I have no enthusiasm for this patch; but do I feel strongly
: enough to override you and everyone else to NAK it? No, I don't feel
: that strongly, maybe st_blksize isn't worth arguing over.
:
: We did look at struct stat when designing huge tmpfs, to see if there
: were any fields that should be adjusted for it; but concluded none.
: Yes, it would sometimes be nice to have a quickly accessible indicator
: for when tmpfs has been mounted huge (scanning /proc/mounts for options
: can be tiresome, agreed); but since tmpfs tries to supply huge (or not)
: pages transparently, no difference seemed right.
"
(I agree with Hugh, also I find it odd to indicate for THP something > PAGE_SIZE)
Anyhow, that ship has sailed.
Effectively, I think "stat->blksize" is not that relevant. But indeed, today it
gives us the highest *possible* size we could see on that system.
shmem_huge_global_enabled() does not seem to depend on any runtime toggles that
could change, only on inode properties.
So your change looks good to me.
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
--
Cheers,
David
next prev parent reply other threads:[~2026-10-02 19:11 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-18 1:45 [PATCH v8 00/14] mm: thp: always enable mTHP support Luiz Capitulino
2026-09-18 1:45 ` [PATCH v8 01/14] docs: tmpfs: remove implementation detail reference Luiz Capitulino
2026-09-18 1:45 ` [PATCH v8 02/14] mm: shmem: shmem_getattr(): set blksize to highest supported THP order Luiz Capitulino
2026-10-02 19:11 ` David Hildenbrand (Arm) [this message]
2026-09-18 1:45 ` [PATCH v8 03/14] mm: introduce pgtable_has_pmd_leaves() Luiz Capitulino
2026-09-22 2:07 ` Zi Yan
2026-10-02 19:13 ` David Hildenbrand (Arm)
2026-09-18 1:45 ` [PATCH v8 04/14] drivers: dax: use pgtable_has_pmd_leaves() Luiz Capitulino
2026-09-22 2:08 ` Zi Yan
2026-10-02 19:15 ` David Hildenbrand (Arm)
2026-10-03 14:55 ` Luiz Capitulino
2026-09-18 1:45 ` [PATCH v8 05/14] drivers: nvdimm: " Luiz Capitulino
2026-10-02 19:18 ` David Hildenbrand (Arm)
2026-09-18 1:45 ` [PATCH v8 06/14] mm: debug_vm_pgtable: " Luiz Capitulino
2026-10-02 19:19 ` David Hildenbrand (Arm)
2026-10-03 14:55 ` Luiz Capitulino
2026-09-18 1:45 ` [PATCH v8 07/14] mm: shmem: allow THP support determination at folio allocation time Luiz Capitulino
2026-09-22 2:20 ` Zi Yan
2026-09-23 1:37 ` Luiz Capitulino
2026-10-02 19:23 ` David Hildenbrand (Arm)
2026-10-03 15:09 ` Luiz Capitulino
2026-09-18 1:45 ` [PATCH v8 08/14] s390: move has_transparent_hugepage() out of THP guard Luiz Capitulino
2026-09-22 2:21 ` Zi Yan
2026-10-02 19:24 ` David Hildenbrand (Arm)
2026-09-18 1:45 ` [PATCH v8 09/14] powerpc: " Luiz Capitulino
2026-10-02 19:28 ` David Hildenbrand (Arm)
2026-10-03 15:44 ` Luiz Capitulino
2026-09-18 1:45 ` [PATCH v8 10/14] mips: " Luiz Capitulino
2026-10-02 19:29 ` David Hildenbrand (Arm)
2026-09-18 1:45 ` [PATCH v8 11/14] x86: " Luiz Capitulino
2026-09-18 1:45 ` [PATCH v8 12/14] treewide: introduce arch_has_pmd_leaves() Luiz Capitulino
2026-09-22 2:26 ` Zi Yan
2026-09-18 1:45 ` [PATCH v8 13/14] mm: replace thp_disabled_by_hw() with pgtable_has_pmd_leaves() Luiz Capitulino
2026-10-02 19:32 ` David Hildenbrand (Arm)
2026-09-18 1:45 ` [PATCH v8 14/14] mm: thp: always enable mTHP support Luiz Capitulino
2026-09-18 9:01 ` Baolin Wang
2026-09-21 10:29 ` Usama Arif
2026-09-22 2:06 ` Luiz Capitulino
2026-10-03 3:13 ` Lance Yang
2026-10-03 15:50 ` Luiz Capitulino
2026-09-18 10:37 ` [PATCH v8 00/14] " Usama Arif
2026-09-18 14:01 ` Luiz Capitulino
2026-09-18 20:23 ` David Hildenbrand (Arm)
2026-09-21 10:36 ` Usama Arif
2026-09-22 2:11 ` Luiz Capitulino
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=7bd00f36-3f48-490e-ab4c-7ed15be931d2@kernel.org \
--to=david@kernel.org \
--cc=agordeev@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=dave.jiang@intel.com \
--cc=dev.jain@arm.com \
--cc=djbw@kernel.org \
--cc=gerald.schaefer@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=hughd@google.com \
--cc=lance.yang@linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=luizcap@redhat.com \
--cc=maddy@linux.ibm.com \
--cc=mingo@redhat.com \
--cc=mpe@ellerman.id.au \
--cc=tglx@kernel.org \
--cc=tsbogend@alpha.franken.de \
--cc=usama.arif@linux.dev \
--cc=vishal.l.verma@intel.com \
--cc=x86@kernel.org \
--cc=yintirui@huawei.com \
--cc=ziy@nvidia.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
all inboxes | Powered by JetHome®