From: Jeff Layton <jlayton@kernel.org>
To: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
Steven Rostedt <rostedt@goodmis.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
"Theodore Y. Ts'o" <tytso@mit.edu>
Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 02/61] vfs: change i_ino from unsigned long to u64
Date: Thu, 26 Feb 2026 11:35:41 -0500 [thread overview]
Message-ID: <df0b9e26fca0dc56a10e2f6792892c7b5f23c84b.camel@kernel.org> (raw)
In-Reply-To: <06c94e29-32d8-4753-a78c-8f5497680cf4@efficios.com>
On Thu, 2026-02-26 at 11:16 -0500, Mathieu Desnoyers wrote:
> On 2026-02-26 10:55, Jeff Layton wrote:
> > Change the type of i_ino in struct inode from unsigned long to u64.
> >
> > On 64-bit architectures, unsigned long is already 64 bits, so this is
> > effectively a type alias change with no runtime impact. On 32-bit
> > architectures, this widens i_ino from 32 to 64 bits, allowing
> > filesystems like NFS, CIFS, XFS, Ceph, and FUSE to store their native
> > 64-bit inode numbers without folding/hashing.
> >
> > The VFS already handles 64-bit inode numbers in kstat.ino (u64) and
> > statx.stx_ino (__u64). The existing overflow checks in cp_new_stat(),
> > cp_old_stat(), and cp_compat_stat() handle narrowing to 32-bit st_ino
> > with -EOVERFLOW, so userspace ABI is preserved.
> >
> > struct inode will grow by 4 bytes on 32-bit architectures.
>
> Changing this type first without changing its associated format strings
> breaks git bisect.
>
> One alternative would be to introduce something like the PRIu64 macro
> but for printing inode values. This would allow gradually introducing
> the change without breaking the world as you do so.
>
>
True, but it makes all of the format strings even harder to read. After
the conversion, we could go back and eliminate the macro though and it
would keep things more bisectable. I'm not sure what to do about
tracepoints though. I guess we could declare a new typedef and change
its definition when i_ino's type changes?
I'll let others chime in first, but I'm open to going back and doing it
that way if we don't want to live with the compiler warnings during a
bisect.
--
Jeff Layton <jlayton@kernel.org>
next prev parent reply other threads:[~2026-02-26 16:35 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-26 15:55 [PATCH 00/61] vfs: change inode->i_ino " Jeff Layton
2026-02-26 15:55 ` [PATCH 01/61] vfs: widen inode hash/lookup functions " Jeff Layton
2026-02-26 17:00 ` Jan Kara
2026-02-26 17:14 ` Jan Kara
2026-02-26 22:56 ` Damien Le Moal
2026-02-26 15:55 ` [PATCH 02/61] vfs: change i_ino from unsigned long " Jeff Layton
2026-02-26 16:16 ` Mathieu Desnoyers
2026-02-26 16:35 ` Jeff Layton [this message]
2026-02-26 16:40 ` Mathieu Desnoyers
2026-02-26 16:45 ` Jeff Layton
2026-02-26 16:48 ` Mathieu Desnoyers
2026-02-26 17:19 ` Jan Kara
2026-02-26 17:59 ` Jeff Layton
2026-02-26 18:12 ` David Laight
2026-02-26 15:55 ` [PATCH 03/61] trace: update VFS-layer trace events for u64 i_ino Jeff Layton
2026-02-26 17:11 ` Jan Kara
2026-02-26 17:53 ` Jeff Layton
2026-02-26 17:48 ` Steven Rostedt
2026-02-27 21:05 ` Jeff Layton
2026-02-26 22:51 ` Damien Le Moal
2026-02-26 15:55 ` [PATCH 04/61] ext4: update " Jeff Layton
2026-02-26 15:55 ` [PATCH 05/61] jbd2: update format strings " Jeff Layton
2026-02-26 15:55 ` [PATCH 06/61] f2fs: update " Jeff Layton
2026-02-26 15:55 ` [PATCH 07/61] lockd: update format strings " Jeff Layton
2026-02-26 15:55 ` [PATCH 08/61] nfs: update " Jeff Layton
2026-02-26 15:55 ` [PATCH 09/61] nfs: remove nfs_fattr_to_ino_t() and nfs_fileid_to_ino_t() Jeff Layton
2026-02-26 15:55 ` [PATCH 10/61] nfs: remove nfs_compat_user_ino64() Jeff Layton
2026-02-26 15:55 ` [PATCH 11/61] nfs: remove enable_ino64 module parameter Jeff Layton
2026-02-26 15:55 ` [PATCH 12/61] nfsd: update format strings for u64 i_ino Jeff Layton
2026-02-26 19:48 ` Chuck Lever
2026-02-26 20:06 ` Jeff Layton
2026-02-26 15:55 ` [PATCH 13/61] smb: store full 64-bit uniqueid in i_ino Jeff Layton
2026-02-26 16:57 ` Paulo Alcantara
2026-02-26 15:55 ` [PATCH 14/61] smb: remove cifs_uniqueid_to_ino_t() Jeff Layton
2026-02-26 16:58 ` Paulo Alcantara
2026-02-26 15:55 ` [PATCH 15/61] locks: update /proc/locks format for u64 i_ino Jeff Layton
2026-02-26 15:55 ` [PATCH 16/61] proc: update /proc/PID/maps " Jeff Layton
2026-02-26 15:55 ` [PATCH 17/61] nilfs2: update " Jeff Layton
2026-02-26 19:46 ` Viacheslav Dubeyko
2026-02-26 20:06 ` Jeff Layton
2026-02-26 20:09 ` Viacheslav Dubeyko
2026-02-26 15:55 ` [PATCH 18/61] 9p: update format strings " Jeff Layton
2026-02-26 15:55 ` [PATCH 19/61] affs: " Jeff Layton
2026-02-26 16:49 ` David Sterba
2026-02-26 15:55 ` [PATCH 20/61] afs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 21/61] autofs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 22/61] befs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 23/61] bfs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 24/61] cachefiles: " Jeff Layton
2026-02-26 16:08 ` Mathieu Desnoyers
2026-02-26 15:55 ` [PATCH 25/61] ceph: " Jeff Layton
2026-02-26 19:37 ` Viacheslav Dubeyko
2026-02-26 15:55 ` [PATCH 26/61] coda: " Jeff Layton
2026-02-26 15:55 ` [PATCH 27/61] cramfs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 28/61] ecryptfs: " Jeff Layton
2026-02-26 18:21 ` Tyler Hicks
2026-02-26 15:55 ` [PATCH 29/61] efs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 30/61] exportfs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 31/61] ext2: " Jeff Layton
2026-02-26 15:55 ` [PATCH 32/61] freevxfs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 33/61] hfs: " Jeff Layton
2026-02-26 19:33 ` Viacheslav Dubeyko
2026-02-26 15:55 ` [PATCH 34/61] hfsplus: " Jeff Layton
2026-02-26 19:35 ` Viacheslav Dubeyko
2026-02-26 15:55 ` [PATCH 35/61] hpfs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 36/61] isofs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 37/61] jffs2: " Jeff Layton
2026-02-26 21:06 ` Richard Weinberger
2026-02-26 15:55 ` [PATCH 38/61] jfs: " Jeff Layton
2026-02-26 16:30 ` Dave Kleikamp
2026-02-26 15:55 ` [PATCH 39/61] minix: " Jeff Layton
2026-02-26 15:55 ` [PATCH 40/61] nsfs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 41/61] ntfs3: " Jeff Layton
2026-02-26 15:55 ` [PATCH 42/61] ocfs2: " Jeff Layton
2026-02-26 15:55 ` [PATCH 43/61] orangefs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 44/61] overlayfs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 45/61] qnx4: " Jeff Layton
2026-02-26 15:55 ` [PATCH 46/61] qnx6: " Jeff Layton
2026-02-26 15:55 ` [PATCH 47/61] ubifs: " Jeff Layton
2026-02-26 21:06 ` Richard Weinberger
2026-02-27 8:16 ` Zhihao Cheng
2026-02-26 15:55 ` [PATCH 48/61] udf: " Jeff Layton
2026-02-26 15:55 ` [PATCH 49/61] ufs: " Jeff Layton
2026-02-26 15:55 ` [PATCH 50/61] zonefs: " Jeff Layton
2026-02-26 22:45 ` Damien Le Moal
2026-02-27 11:55 ` Johannes Thumshirn
2026-02-26 15:55 ` [PATCH 51/61] security: update audit " Jeff Layton
2026-02-26 21:11 ` Paul Moore
2026-02-27 16:46 ` Ryan Lee
2026-02-26 15:55 ` [PATCH 52/61] drm/amdgpu: update " Jeff Layton
2026-02-26 15:55 ` [PATCH 53/61] fsnotify: update fdinfo format strings " Jeff Layton
2026-02-26 15:55 ` [PATCH 54/61] net: update socket dname format " Jeff Layton
2026-02-26 15:55 ` [PATCH 55/61] uprobes: update format strings " Jeff Layton
2026-02-26 15:55 ` [PATCH 56/61] dma-buf: update format string " Jeff Layton
2026-02-26 15:55 ` [PATCH 57/61] fscrypt: update format strings " Jeff Layton
2026-02-26 17:10 ` Eric Biggers
2026-02-26 15:56 ` [PATCH 58/61] fsverity: update format string " Jeff Layton
2026-02-26 15:56 ` [PATCH 59/61] iomap: " Jeff Layton
2026-02-26 16:21 ` Darrick J. Wong
2026-02-26 15:56 ` [PATCH 60/61] net: update legacy protocol format strings " Jeff Layton
2026-02-26 15:56 ` [PATCH 61/61] vfs: update core " Jeff Layton
2026-02-26 16:11 ` Mathieu Desnoyers
2026-02-26 16:22 ` Darrick J. Wong
2026-02-26 16:49 ` [PATCH 00/61] vfs: change inode->i_ino from unsigned long to u64 Matthew Wilcox
2026-02-26 17:01 ` Jeff Layton
2026-02-27 17:19 ` Jeff Layton
2026-02-27 19:01 ` Mathieu Desnoyers
2026-02-27 19:35 ` Jeff Layton
2026-02-27 9:30 ` Christian König
2026-02-27 11:52 ` Jeff Layton
2026-02-27 10:06 ` Christian Brauner
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=df0b9e26fca0dc56a10e2f6792892c7b5f23c84b.camel@kernel.org \
--to=jlayton@kernel.org \
--cc=brauner@kernel.org \
--cc=jack@suse.cz \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=rostedt@goodmis.org \
--cc=tytso@mit.edu \
--cc=viro@zeniv.linux.org.uk \
/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
Powered by JetHome