From: Mimi Zohar <zohar@linux.ibm.com>
To: Jeff Layton <jlayton@kernel.org>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-trace-kernel@vger.kernel.org, nvdimm@lists.linux.dev,
fsverity@lists.linux.dev, linux-mm@kvack.org,
netfs@lists.linux.dev, linux-ext4@vger.kernel.org,
linux-f2fs-devel@lists.sourceforge.net,
linux-nfs@vger.kernel.org, linux-cifs@vger.kernel.org,
samba-technical@lists.samba.org, linux-nilfs@vger.kernel.org,
v9fs@lists.linux.dev, linux-afs@lists.infradead.org,
autofs@vger.kernel.org, ceph-devel@vger.kernel.org,
codalist@coda.cs.cmu.edu, ecryptfs@vger.kernel.org,
linux-mtd@lists.infradead.org,
jfs-discussion@lists.sourceforge.net, ntfs3@lists.linux.dev,
ocfs2-devel@lists.linux.dev, devel@lists.orangefs.org,
linux-unionfs@vger.kernel.org, apparmor@lists.ubuntu.com,
linux-security-module@vger.kernel.org,
linux-integrity@vger.kernel.org, selinux@vger.kernel.org,
amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org,
linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
netdev@vger.kernel.org, linux-perf-users@vger.kernel.org,
linux-fscrypt@vger.kernel.org, linux-xfs@vger.kernel.org,
linux-hams@vger.kernel.org, linux-x25@vger.kernel.org,
audit@vger.kernel.org, linux-bluetooth@vger.kernel.org,
linux-can@vger.kernel.org, linux-sctp@vger.kernel.org,
bpf@vger.kernel.org
Subject: Re: [PATCH v3 00/12] vfs: change inode->i_ino from unsigned long to u64
Date: Mon, 09 Mar 2026 16:11:02 -0400 [thread overview]
Message-ID: <0bd92b4fce00a6111a0fc7764904f7e6ae0ece3a.camel@linux.ibm.com> (raw)
In-Reply-To: <dd3f9873c7939fba0ca2366effd24e4b6326f17b.camel@kernel.org>
On Mon, 2026-03-09 at 15:33 -0400, Jeff Layton wrote:
> On Mon, 2026-03-09 at 15:00 -0400, Mimi Zohar wrote:
> > On Mon, 2026-03-09 at 13:59 -0400, Jeff Layton wrote:
> > > On Mon, 2026-03-09 at 13:47 -0400, Mimi Zohar wrote:
> > > > [ I/O socket time out. Trimming the To list.]
> > > >
> > > > On Wed, 2026-03-04 at 10:32 -0500, Jeff Layton wrote:
> > > > > This version squashes all of the format-string changes and the i_ino
> > > > > type change into the same patch. This results in a giant 600+ line patch
> > > > > at the end of the series, but it does remain bisectable. Because the
> > > > > patchset was reorganized (again) some of the R-b's and A-b's have been
> > > > > dropped.
> > > > >
> > > > > The entire pile is in the "iino-u64" branch of my tree, if anyone is
> > > > > interested in testing this.
> > > > >
> > > > > https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git/
> > > > >
> > > > > Original cover letter follows:
> > > > >
> > > > > ----------------------8<-----------------------
> > > > >
> > > > > Christian said [1] to "just do it" when I proposed this, so here we are!
> > > > >
> > > > > For historical reasons, the inode->i_ino field is an unsigned long,
> > > > > which means that it's 32 bits on 32 bit architectures. This has caused a
> > > > > number of filesystems to implement hacks to hash a 64-bit identifier
> > > > > into a 32-bit field, and deprives us of a universal identifier field for
> > > > > an inode.
> > > > >
> > > > > This patchset changes the inode->i_ino field from an unsigned long to a
> > > > > u64. This shouldn't make any material difference on 64-bit hosts, but
> > > > > 32-bit hosts will see struct inode grow by at least 4 bytes. This could
> > > > > have effects on slabcache sizes and field alignment.
> > > > >
> > > > > The bulk of the changes are to format strings and tracepoints, since the
> > > > > kernel itself doesn't care that much about the i_ino field. The first
> > > > > patch changes some vfs function arguments, so check that one out
> > > > > carefully.
> > > > >
> > > > > With this change, we may be able to shrink some inode structures. For
> > > > > instance, struct nfs_inode has a fileid field that holds the 64-bit
> > > > > inode number. With this set of changes, that field could be eliminated.
> > > > > I'd rather leave that sort of cleanups for later just to keep this
> > > > > simple.
> > > > >
> > > > > Much of this set was generated by LLM, but I attributed it to myself
> > > > > since I consider this to be in the "menial tasks" category of LLM usage.
> > > > >
> > > > > [1]: https://lore.kernel.org/linux-fsdevel/20260219-portrait-winkt-959070cee42f@brauner/
> > > > >
> > > > > Signed-off-by: Jeff Layton <jlayton@kernel.org>
> > > >
> > > > Jeff, missing from this patch set is EVM. In hmac_add_misc() EVM copies the
> > > > i_ino and calculates either an HMAC or file meta-data hash, which is then
> > > > signed.
> > > >
> > > >
> > >
> > > Thanks Mimi, good catch.
> > >
> > > It looks like we should just be able to change the ino field to a u64
> > > alongside everything else. Something like this:
> > >
> > > diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
> > > index c0ca4eedb0fe..77b6c2fa345e 100644
> > > --- a/security/integrity/evm/evm_crypto.c
> > > +++ b/security/integrity/evm/evm_crypto.c
> > > @@ -144,7 +144,7 @@ static void hmac_add_misc(struct shash_desc *desc, struct inode *inode,
> > > char type, char *digest)
> > > {
> > > struct h_misc {
> > > - unsigned long ino;
> > > + u64 ino;
> > > __u32 generation;
> > > uid_t uid;
> > > gid_t gid;
> > >
> >
> > Agreed.
> >
> > >
> > > That should make no material difference on 64-bit hosts. What's the
> > > effect on 32-bit? Will they just need to remeasure everything or would
> > > the consequences be more dire? Do we have any clue whether anyone is
> > > using EVM in 32-bit environments?
> >
> > All good questions. Unfortunately I don't know the answer to most of them. What
> > we do know: changing the size of the i_ino field would affect EVM file metadata
> > verification and would require relabeling the filesystem. Even packages
> > containing EVM portable signatures, which don't include or verify the i_ino
> > number, would be affected.
> >
>
> Ouch. Technically, I guess this is ABI...
>
> While converting to u64 seems like the ideal thing to do, the other
> option might be to just keep this as an unsigned long for now.
>
> No effect on 64-bit, but that could keep things working 32-bit when the
> i_ino casts properly to a u32. ext4 would be fine since they don't
> issue inode numbers larger than UINT_MAX. xfs and btrfs are a bit more
> iffy, but worst case they'd just need to be relabeled (which is what
> they'll need to do anyway).
>
> If we do that, then we should probably add a comment to this function
> explaining why it's an unsigned long.
Agreed.
>
> Thoughts?
My concern would be embedded/IoT devices, but I don't have any insight into who
might be using it on 32 bit.
Mimi
next prev parent reply other threads:[~2026-03-09 20:11 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-04 15:32 [PATCH v3 00/12] vfs: change inode->i_ino from unsigned long to u64 Jeff Layton
2026-03-04 15:32 ` [PATCH v3 01/12] vfs: widen inode hash/lookup functions " Jeff Layton
2026-03-05 14:24 ` Christoph Hellwig
2026-03-06 12:03 ` Jeff Layton
2026-03-06 13:28 ` Christian Brauner
2026-03-04 15:32 ` [PATCH v3 02/12] audit: widen ino fields " Jeff Layton
2026-03-06 3:09 ` Paul Moore
2026-03-04 15:32 ` [PATCH v3 03/12] net: change sock.sk_ino and sock_i_ino() " Jeff Layton
2026-03-04 15:32 ` [PATCH v3 04/12] vfs: widen trace event i_ino fields " Jeff Layton
2026-03-05 9:43 ` Jan Kara
2026-03-04 15:32 ` [PATCH v3 05/12] cachefiles: " Jeff Layton
2026-03-04 15:32 ` [PATCH v3 06/12] ext2: " Jeff Layton
2026-03-05 9:44 ` Jan Kara
2026-03-04 15:32 ` [PATCH v3 07/12] hugetlbfs: " Jeff Layton
2026-03-04 15:32 ` [PATCH v3 08/12] zonefs: " Jeff Layton
2026-03-04 21:41 ` Damien Le Moal
2026-03-04 15:32 ` [PATCH v3 09/12] ext4: " Jeff Layton
2026-03-04 15:32 ` [PATCH v3 10/12] f2fs: " Jeff Layton
2026-03-04 15:32 ` [PATCH v3 11/12] nilfs2: " Jeff Layton
2026-03-04 15:32 ` [PATCH v3 12/12] treewide: change inode->i_ino from unsigned long " Jeff Layton
2026-03-04 15:49 ` Chuck Lever
2026-03-04 21:41 ` Damien Le Moal
2026-03-05 9:57 ` Jan Kara
2026-03-05 14:25 ` Christoph Hellwig
2026-03-06 9:09 ` [PATCH v3 00/12] vfs: " Christian Brauner
2026-03-09 17:47 ` Mimi Zohar
2026-03-09 17:59 ` Jeff Layton
2026-03-09 19:00 ` Mimi Zohar
2026-03-09 19:33 ` Jeff Layton
2026-03-09 20:11 ` Mimi Zohar [this message]
2026-03-09 20:50 ` Jeff Layton
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=0bd92b4fce00a6111a0fc7764904f7e6ae0ece3a.camel@linux.ibm.com \
--to=zohar@linux.ibm.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=apparmor@lists.ubuntu.com \
--cc=audit@vger.kernel.org \
--cc=autofs@vger.kernel.org \
--cc=bpf@vger.kernel.org \
--cc=ceph-devel@vger.kernel.org \
--cc=codalist@coda.cs.cmu.edu \
--cc=devel@lists.orangefs.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=ecryptfs@vger.kernel.org \
--cc=fsverity@lists.linux.dev \
--cc=jfs-discussion@lists.sourceforge.net \
--cc=jlayton@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-afs@lists.infradead.org \
--cc=linux-bluetooth@vger.kernel.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-fscrypt@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-hams@vger.kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-mtd@lists.infradead.org \
--cc=linux-nfs@vger.kernel.org \
--cc=linux-nilfs@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=linux-sctp@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=linux-unionfs@vger.kernel.org \
--cc=linux-x25@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=netfs@lists.linux.dev \
--cc=ntfs3@lists.linux.dev \
--cc=nvdimm@lists.linux.dev \
--cc=ocfs2-devel@lists.linux.dev \
--cc=samba-technical@lists.samba.org \
--cc=selinux@vger.kernel.org \
--cc=v9fs@lists.linux.dev \
/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