Re: [PATCH v3 00/12] vfs: change inode->i_ino from unsigned long to u64

Mimi Zohar <[email protected]> Mon, 09 Mar 2026 13:47:08 -0400
Newsgroups gmane.linux.can,gmane.linux.file-systems,gmane.linux.kernel,gmane.linux.kernel.mm,gmane.comp.file-systems.ext4,gmane.linux.file-systems.f2fs,gmane.linux.nfs,gmane.linux.kernel.cifs,gmane.network.samba.internals,gmane.comp.file-systems.nilfs.user,gmane.linux.kernel.autofs,gmane.comp.file-systems.ceph.devel,gmane.comp.file-systems.coda.general,gmane.comp.file-systems.ecryptfs.general,gmane.linux.drivers.mtd,gmane.linux.file-systems.union,gmane.comp.security.apparmor,gmane.linux.kernel.lsm,gmane.comp.freedesktop.amd-gfx,gmane.comp.video.dri.devel,gmane.linux.drivers.video-input-infrastructure,gmane.linux.network,gmane.linux.kernel.perf.user,gmane.linux.hams,gmane.linux.x25,gmane.linux.bluez.kernel,gmane.linux.kernel.bpf
Message-ID <[email protected]>
[ 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.
>=20
> The entire pile is in the "iino-u64" branch of my tree, if anyone is
> interested in testing this.
>=20
>     https://git.kernel.org/pub/scm/linux/kernel/git/jlayton/linux.git/
>=20
> Original cover letter follows:
>=20
> ----------------------8<-----------------------
>=20
> Christian said [1] to "just do it" when I proposed this, so here we are!
>=20
> 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.
>=20
> 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.
>=20
> 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.
>=20
> 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.
>=20
> 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.
>=20
> [1]: https://lore.kernel.org/linux-fsdevel/20260219-portrait-winkt-959070=
cee42f@brauner/
>=20
> Signed-off-by: Jeff Layton <[email protected]>

Jeff, missing from this patch set is EVM.  In hmac_add_misc() EVM copies th=
e
i_ino and calculates either an HMAC or file meta-data hash, which is then
signed.=20

Mimi