* [PATCH 00/61] vfs: change inode->i_ino from unsigned long to u64
@ 2026-02-26 15:55 Jeff Layton
2026-02-26 15:55 ` [PATCH 52/61] drm/amdgpu: update for u64 i_ino Jeff Layton
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Jeff Layton @ 2026-02-26 15:55 UTC (permalink / raw)
To: Alexander Viro, Christian Brauner, Jan Kara, Steven Rostedt,
Masami Hiramatsu, Mathieu Desnoyers, Dan Williams, Matthew Wilcox,
Eric Biggers, Theodore Y. Ts'o, Muchun Song, Oscar Salvador,
David Hildenbrand, David Howells, Paulo Alcantara, Andreas Dilger,
Jan Kara, Jaegeuk Kim, Chao Yu, Trond Myklebust, Anna Schumaker,
Chuck Lever, NeilBrown, Olga Kornievskaia, Dai Ngo, Tom Talpey,
Steve French, Ronnie Sahlberg, Shyam Prasad N, Bharath SM,
Alexander Aring, Ryusuke Konishi, Viacheslav Dubeyko,
Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet,
Christian Schoenebeck, David Sterba, Marc Dionne, Ian Kent,
Luis de Bethencourt, Salah Triki, Tigran A. Aivazian,
Ilya Dryomov, Alex Markuze, Jan Harkes, coda, Nicolas Pitre,
Tyler Hicks, Amir Goldstein, Christoph Hellwig,
John Paul Adrian Glaubitz, Yangtao Li, Mikulas Patocka,
David Woodhouse, Richard Weinberger, Dave Kleikamp,
Konstantin Komarov, Mark Fasheh, Joel Becker, Joseph Qi,
Mike Marshall, Martin Brandenburg, Miklos Szeredi, Anders Larsen,
Zhihao Cheng, Damien Le Moal, Naohiro Aota, Johannes Thumshirn,
John Johansen, Paul Moore, James Morris, Serge E. Hallyn,
Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Fan Wu,
Stephen Smalley, Ondrej Mosnacek, Casey Schaufler, Alex Deucher,
Christian König, David Airlie, Simona Vetter, Sumit Semwal,
Eric Dumazet, Kuniyuki Iwashima, Paolo Abeni, Willem de Bruijn,
David S. Miller, Jakub Kicinski, Simon Horman, Oleg Nesterov,
Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
Ian Rogers, Adrian Hunter, James Clark, Darrick J. Wong,
Martin Schiller
Cc: linux-fsdevel, linux-kernel, linux-trace-kernel, nvdimm, fsverity,
linux-mm, netfs, linux-ext4, linux-f2fs-devel, linux-nfs,
linux-cifs, samba-technical, linux-nilfs, v9fs, linux-afs, autofs,
ceph-devel, codalist, ecryptfs, linux-mtd, jfs-discussion, ntfs3,
ocfs2-devel, devel, linux-unionfs, apparmor,
linux-security-module, linux-integrity, selinux, amd-gfx,
dri-devel, linux-media, linaro-mm-sig, netdev, linux-perf-users,
linux-fscrypt, linux-xfs, linux-hams, linux-x25, Jeff Layton
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 Layton (61):
vfs: widen inode hash/lookup functions to u64
vfs: change i_ino from unsigned long to u64
trace: update VFS-layer trace events for u64 i_ino
ext4: update for u64 i_ino
jbd2: update format strings for u64 i_ino
f2fs: update for u64 i_ino
lockd: update format strings for u64 i_ino
nfs: update for u64 i_ino
nfs: remove nfs_fattr_to_ino_t() and nfs_fileid_to_ino_t()
nfs: remove nfs_compat_user_ino64()
nfs: remove enable_ino64 module parameter
nfsd: update format strings for u64 i_ino
smb: store full 64-bit uniqueid in i_ino
smb: remove cifs_uniqueid_to_ino_t()
locks: update /proc/locks format for u64 i_ino
proc: update /proc/PID/maps for u64 i_ino
nilfs2: update for u64 i_ino
9p: update format strings for u64 i_ino
affs: update format strings for u64 i_ino
afs: update format strings for u64 i_ino
autofs: update format strings for u64 i_ino
befs: update format strings for u64 i_ino
bfs: update format strings for u64 i_ino
cachefiles: update format strings for u64 i_ino
ceph: update format strings for u64 i_ino
coda: update format strings for u64 i_ino
cramfs: update format strings for u64 i_ino
ecryptfs: update format strings for u64 i_ino
efs: update format strings for u64 i_ino
exportfs: update format strings for u64 i_ino
ext2: update format strings for u64 i_ino
freevxfs: update format strings for u64 i_ino
hfs: update format strings for u64 i_ino
hfsplus: update format strings for u64 i_ino
hpfs: update format strings for u64 i_ino
isofs: update format strings for u64 i_ino
jffs2: update format strings for u64 i_ino
jfs: update format strings for u64 i_ino
minix: update format strings for u64 i_ino
nsfs: update format strings for u64 i_ino
ntfs3: update format strings for u64 i_ino
ocfs2: update format strings for u64 i_ino
orangefs: update format strings for u64 i_ino
overlayfs: update format strings for u64 i_ino
qnx4: update format strings for u64 i_ino
qnx6: update format strings for u64 i_ino
ubifs: update format strings for u64 i_ino
udf: update format strings for u64 i_ino
ufs: update format strings for u64 i_ino
zonefs: update format strings for u64 i_ino
security: update audit format strings for u64 i_ino
drm/amdgpu: update for u64 i_ino
fsnotify: update fdinfo format strings for u64 i_ino
net: update socket dname format for u64 i_ino
uprobes: update format strings for u64 i_ino
dma-buf: update format string for u64 i_ino
fscrypt: update format strings for u64 i_ino
fsverity: update format string for u64 i_ino
iomap: update format string for u64 i_ino
net: update legacy protocol format strings for u64 i_ino
vfs: update core format strings for u64 i_ino
drivers/dma-buf/dma-buf.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 +-
fs/9p/vfs_addr.c | 4 +-
fs/9p/vfs_inode.c | 6 +-
fs/9p/vfs_inode_dotl.c | 6 +-
fs/affs/amigaffs.c | 8 +-
fs/affs/bitmap.c | 2 +-
fs/affs/dir.c | 2 +-
fs/affs/file.c | 20 +-
fs/affs/inode.c | 12 +-
fs/affs/namei.c | 14 +-
fs/affs/symlink.c | 2 +-
fs/afs/dir.c | 10 +-
fs/afs/dir_search.c | 2 +-
fs/afs/dynroot.c | 2 +-
fs/afs/inode.c | 2 +-
fs/autofs/inode.c | 2 +-
fs/befs/linuxvfs.c | 28 +-
fs/bfs/dir.c | 4 +-
fs/cachefiles/io.c | 6 +-
fs/cachefiles/namei.c | 12 +-
fs/cachefiles/xattr.c | 2 +-
fs/ceph/crypto.c | 4 +-
fs/coda/dir.c | 2 +-
fs/coda/inode.c | 2 +-
fs/cramfs/inode.c | 2 +-
fs/crypto/crypto.c | 2 +-
fs/crypto/hooks.c | 2 +-
fs/crypto/keysetup.c | 2 +-
fs/dcache.c | 4 +-
fs/ecryptfs/crypto.c | 6 +-
fs/ecryptfs/file.c | 2 +-
fs/efs/inode.c | 6 +-
fs/eventpoll.c | 2 +-
fs/exportfs/expfs.c | 4 +-
fs/ext2/dir.c | 10 +-
fs/ext2/ialloc.c | 9 +-
fs/ext2/inode.c | 2 +-
fs/ext2/xattr.c | 14 +-
fs/ext4/dir.c | 2 +-
fs/ext4/ext4.h | 4 +-
fs/ext4/extents.c | 8 +-
fs/ext4/extents_status.c | 28 +-
fs/ext4/fast_commit.c | 8 +-
fs/ext4/ialloc.c | 10 +-
fs/ext4/indirect.c | 2 +-
fs/ext4/inline.c | 14 +-
fs/ext4/inode.c | 22 +-
fs/ext4/ioctl.c | 4 +-
fs/ext4/mballoc.c | 6 +-
fs/ext4/migrate.c | 2 +-
fs/ext4/move_extent.c | 20 +-
fs/ext4/namei.c | 10 +-
fs/ext4/orphan.c | 16 +-
fs/ext4/page-io.c | 10 +-
fs/ext4/super.c | 22 +-
fs/ext4/xattr.c | 10 +-
fs/f2fs/compress.c | 4 +-
fs/f2fs/dir.c | 2 +-
fs/f2fs/extent_cache.c | 8 +-
fs/f2fs/f2fs.h | 6 +-
fs/f2fs/file.c | 12 +-
fs/f2fs/gc.c | 2 +-
fs/f2fs/inline.c | 4 +-
fs/f2fs/inode.c | 48 ++--
fs/f2fs/namei.c | 8 +-
fs/f2fs/node.c | 12 +-
fs/f2fs/recovery.c | 10 +-
fs/f2fs/xattr.c | 10 +-
fs/freevxfs/vxfs_bmap.c | 4 +-
fs/fserror.c | 2 +-
fs/hfs/catalog.c | 2 +-
fs/hfs/extent.c | 4 +-
fs/hfs/inode.c | 4 +-
fs/hfsplus/attributes.c | 10 +-
fs/hfsplus/catalog.c | 2 +-
fs/hfsplus/dir.c | 6 +-
fs/hfsplus/extents.c | 6 +-
fs/hfsplus/inode.c | 8 +-
fs/hfsplus/super.c | 6 +-
fs/hfsplus/xattr.c | 10 +-
fs/hpfs/dir.c | 4 +-
fs/hpfs/dnode.c | 4 +-
fs/hpfs/ea.c | 4 +-
fs/hpfs/inode.c | 4 +-
fs/inode.c | 46 ++--
fs/iomap/ioend.c | 2 +-
fs/isofs/compress.c | 2 +-
fs/isofs/dir.c | 2 +-
fs/isofs/inode.c | 6 +-
fs/isofs/namei.c | 2 +-
fs/jbd2/journal.c | 4 +-
fs/jbd2/transaction.c | 2 +-
fs/jffs2/dir.c | 4 +-
fs/jffs2/file.c | 4 +-
fs/jffs2/fs.c | 18 +-
fs/jfs/inode.c | 2 +-
fs/jfs/jfs_imap.c | 2 +-
fs/jfs/jfs_metapage.c | 2 +-
fs/lockd/svclock.c | 8 +-
fs/lockd/svcsubs.c | 2 +-
fs/locks.c | 6 +-
fs/minix/inode.c | 10 +-
fs/nfs/dir.c | 22 +-
fs/nfs/file.c | 8 +-
fs/nfs/filelayout/filelayout.c | 8 +-
fs/nfs/flexfilelayout/flexfilelayout.c | 8 +-
fs/nfs/inode.c | 54 +---
fs/nfs/nfs4proc.c | 4 +-
fs/nfs/pnfs.c | 12 +-
fs/nfsd/export.c | 2 +-
fs/nfsd/nfs4state.c | 4 +-
fs/nfsd/nfsfh.c | 4 +-
fs/nfsd/vfs.c | 2 +-
fs/nilfs2/alloc.c | 10 +-
fs/nilfs2/bmap.c | 2 +-
fs/nilfs2/btnode.c | 2 +-
fs/nilfs2/btree.c | 12 +-
fs/nilfs2/dir.c | 12 +-
fs/nilfs2/direct.c | 4 +-
fs/nilfs2/gcinode.c | 2 +-
fs/nilfs2/inode.c | 8 +-
fs/nilfs2/mdt.c | 2 +-
fs/nilfs2/namei.c | 2 +-
fs/nilfs2/segment.c | 2 +-
fs/notify/fdinfo.c | 4 +-
fs/nsfs.c | 4 +-
fs/ntfs3/super.c | 2 +-
fs/ocfs2/alloc.c | 2 +-
fs/ocfs2/aops.c | 4 +-
fs/ocfs2/dir.c | 8 +-
fs/ocfs2/dlmfs/dlmfs.c | 10 +-
fs/ocfs2/extent_map.c | 12 +-
fs/ocfs2/inode.c | 2 +-
fs/ocfs2/quota_local.c | 2 +-
fs/ocfs2/refcounttree.c | 10 +-
fs/ocfs2/xattr.c | 4 +-
fs/orangefs/inode.c | 2 +-
fs/overlayfs/export.c | 2 +-
fs/overlayfs/namei.c | 4 +-
fs/overlayfs/util.c | 2 +-
fs/pipe.c | 2 +-
fs/proc/fd.c | 2 +-
fs/proc/task_mmu.c | 4 +-
fs/qnx4/inode.c | 4 +-
fs/qnx6/inode.c | 2 +-
fs/smb/client/cifsfs.h | 17 --
fs/smb/client/inode.c | 6 +-
fs/smb/client/readdir.c | 2 +-
fs/ubifs/debug.c | 8 +-
fs/ubifs/dir.c | 28 +-
fs/ubifs/file.c | 28 +-
fs/ubifs/journal.c | 6 +-
fs/ubifs/super.c | 16 +-
fs/ubifs/tnc.c | 4 +-
fs/ubifs/xattr.c | 14 +-
fs/udf/directory.c | 18 +-
fs/udf/file.c | 2 +-
fs/udf/inode.c | 12 +-
fs/udf/namei.c | 8 +-
fs/udf/super.c | 2 +-
fs/ufs/balloc.c | 6 +-
fs/ufs/dir.c | 10 +-
fs/ufs/ialloc.c | 6 +-
fs/ufs/inode.c | 18 +-
fs/ufs/ufs_fs.h | 6 +-
fs/ufs/util.c | 2 +-
fs/verity/init.c | 2 +-
fs/zonefs/super.c | 8 +-
include/linux/fs.h | 28 +-
include/linux/nfs_fs.h | 10 -
include/trace/events/cachefiles.h | 18 +-
include/trace/events/ext4.h | 427 +++++++++++++++--------------
include/trace/events/f2fs.h | 172 ++++++------
include/trace/events/filelock.h | 16 +-
include/trace/events/filemap.h | 20 +-
include/trace/events/fs_dax.h | 20 +-
include/trace/events/fsverity.h | 30 +-
include/trace/events/hugetlbfs.h | 28 +-
include/trace/events/netfs.h | 4 +-
include/trace/events/nilfs2.h | 12 +-
include/trace/events/readahead.h | 12 +-
include/trace/events/timestamp.h | 12 +-
include/trace/events/writeback.h | 148 +++++-----
kernel/events/uprobes.c | 4 +-
net/netrom/af_netrom.c | 4 +-
net/rose/af_rose.c | 4 +-
net/socket.c | 2 +-
net/x25/x25_proc.c | 4 +-
security/apparmor/apparmorfs.c | 4 +-
security/integrity/integrity_audit.c | 2 +-
security/ipe/audit.c | 2 +-
security/lsm_audit.c | 10 +-
security/selinux/hooks.c | 4 +-
security/smack/smack_lsm.c | 12 +-
195 files changed, 1101 insertions(+), 1166 deletions(-)
---
base-commit: 2bf35e96cf6c6c3a290b69b777d34be15888e364
change-id: 20260224-iino-u64-b44a3a72543c
Best regards,
--
Jeff Layton <jlayton@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 52/61] drm/amdgpu: update for u64 i_ino
2026-02-26 15:55 [PATCH 00/61] vfs: change inode->i_ino from unsigned long to u64 Jeff Layton
@ 2026-02-26 15:55 ` Jeff Layton
2026-02-27 1:50 ` Claude review: " Claude Code Review Bot
2026-02-26 15:55 ` [PATCH 56/61] dma-buf: update format string " Jeff Layton
2026-02-27 1:50 ` Claude review: vfs: change inode->i_ino from unsigned long to u64 Claude Code Review Bot
2 siblings, 1 reply; 7+ messages in thread
From: Jeff Layton @ 2026-02-26 15:55 UTC (permalink / raw)
To: Alexander Viro, Christian Brauner, Jan Kara, Steven Rostedt,
Masami Hiramatsu, Mathieu Desnoyers, Dan Williams, Matthew Wilcox,
Eric Biggers, Theodore Y. Ts'o, Muchun Song, Oscar Salvador,
David Hildenbrand, David Howells, Paulo Alcantara, Andreas Dilger,
Jan Kara, Jaegeuk Kim, Chao Yu, Trond Myklebust, Anna Schumaker,
Chuck Lever, NeilBrown, Olga Kornievskaia, Dai Ngo, Tom Talpey,
Steve French, Ronnie Sahlberg, Shyam Prasad N, Bharath SM,
Alexander Aring, Ryusuke Konishi, Viacheslav Dubeyko,
Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet,
Christian Schoenebeck, David Sterba, Marc Dionne, Ian Kent,
Luis de Bethencourt, Salah Triki, Tigran A. Aivazian,
Ilya Dryomov, Alex Markuze, Jan Harkes, coda, Nicolas Pitre,
Tyler Hicks, Amir Goldstein, Christoph Hellwig,
John Paul Adrian Glaubitz, Yangtao Li, Mikulas Patocka,
David Woodhouse, Richard Weinberger, Dave Kleikamp,
Konstantin Komarov, Mark Fasheh, Joel Becker, Joseph Qi,
Mike Marshall, Martin Brandenburg, Miklos Szeredi, Anders Larsen,
Zhihao Cheng, Damien Le Moal, Naohiro Aota, Johannes Thumshirn,
John Johansen, Paul Moore, James Morris, Serge E. Hallyn,
Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Fan Wu,
Stephen Smalley, Ondrej Mosnacek, Casey Schaufler, Alex Deucher,
Christian König, David Airlie, Simona Vetter, Sumit Semwal,
Eric Dumazet, Kuniyuki Iwashima, Paolo Abeni, Willem de Bruijn,
David S. Miller, Jakub Kicinski, Simon Horman, Oleg Nesterov,
Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
Ian Rogers, Adrian Hunter, James Clark, Darrick J. Wong,
Martin Schiller
Cc: linux-fsdevel, linux-kernel, linux-trace-kernel, nvdimm, fsverity,
linux-mm, netfs, linux-ext4, linux-f2fs-devel, linux-nfs,
linux-cifs, samba-technical, linux-nilfs, v9fs, linux-afs, autofs,
ceph-devel, codalist, ecryptfs, linux-mtd, jfs-discussion, ntfs3,
ocfs2-devel, devel, linux-unionfs, apparmor,
linux-security-module, linux-integrity, selinux, amd-gfx,
dri-devel, linux-media, linaro-mm-sig, netdev, linux-perf-users,
linux-fscrypt, linux-xfs, linux-hams, linux-x25, Jeff Layton
Update %lu to %llu in drm_info() calls that print inode->i_ino, since
i_ino is now u64.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index 1fb95640069667bf731df05990b57c6e0a0d2c16..aaa8cdc122c49ebf0b5b6c55edb3a1db2a4fd710 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -1676,9 +1676,9 @@ u64 amdgpu_bo_print_info(int id, struct amdgpu_bo *bo, struct seq_file *m)
attachment = READ_ONCE(bo->tbo.base.import_attach);
if (attachment)
- seq_printf(m, " imported from ino:%lu", file_inode(dma_buf->file)->i_ino);
+ seq_printf(m, " imported from ino:%llu", file_inode(dma_buf->file)->i_ino);
else if (dma_buf)
- seq_printf(m, " exported as ino:%lu", file_inode(dma_buf->file)->i_ino);
+ seq_printf(m, " exported as ino:%llu", file_inode(dma_buf->file)->i_ino);
amdgpu_bo_print_flag(m, bo, CPU_ACCESS_REQUIRED);
amdgpu_bo_print_flag(m, bo, NO_CPU_ACCESS);
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Claude review: drm/amdgpu: update for u64 i_ino
2026-02-26 15:55 ` [PATCH 52/61] drm/amdgpu: update for u64 i_ino Jeff Layton
@ 2026-02-27 1:50 ` Claude Code Review Bot
0 siblings, 0 replies; 7+ messages in thread
From: Claude Code Review Bot @ 2026-02-27 1:50 UTC (permalink / raw)
To: dri-devel-reviews
Patch Review
**Status: Correct, no issues.**
This patch updates two `seq_printf` format specifiers in `amdgpu_bo_print_info()` from `%lu` to `%llu` to match the new `u64` type of `i_ino`.
The change:
```c
- seq_printf(m, " imported from ino:%lu", file_inode(dma_buf->file)->i_ino);
+ seq_printf(m, " imported from ino:%llu", file_inode(dma_buf->file)->i_ino);
else if (dma_buf)
- seq_printf(m, " exported as ino:%lu", file_inode(dma_buf->file)->i_ino);
+ seq_printf(m, " exported as ino:%llu", file_inode(dma_buf->file)->i_ino);
```
Both changes are correct. The `%llu` format specifier matches `u64` (which is `unsigned long long` on all architectures). The expressions `file_inode(dma_buf->file)->i_ino` are the only uses of `i_ino` in this file, so coverage is complete.
No functional, semantic, or style concerns.
---
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 56/61] dma-buf: update format string for u64 i_ino
2026-02-26 15:55 [PATCH 00/61] vfs: change inode->i_ino from unsigned long to u64 Jeff Layton
2026-02-26 15:55 ` [PATCH 52/61] drm/amdgpu: update for u64 i_ino Jeff Layton
@ 2026-02-26 15:55 ` Jeff Layton
2026-02-27 1:50 ` Claude review: " Claude Code Review Bot
2026-02-27 1:50 ` Claude review: vfs: change inode->i_ino from unsigned long to u64 Claude Code Review Bot
2 siblings, 1 reply; 7+ messages in thread
From: Jeff Layton @ 2026-02-26 15:55 UTC (permalink / raw)
To: Alexander Viro, Christian Brauner, Jan Kara, Steven Rostedt,
Masami Hiramatsu, Mathieu Desnoyers, Dan Williams, Matthew Wilcox,
Eric Biggers, Theodore Y. Ts'o, Muchun Song, Oscar Salvador,
David Hildenbrand, David Howells, Paulo Alcantara, Andreas Dilger,
Jan Kara, Jaegeuk Kim, Chao Yu, Trond Myklebust, Anna Schumaker,
Chuck Lever, NeilBrown, Olga Kornievskaia, Dai Ngo, Tom Talpey,
Steve French, Ronnie Sahlberg, Shyam Prasad N, Bharath SM,
Alexander Aring, Ryusuke Konishi, Viacheslav Dubeyko,
Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet,
Christian Schoenebeck, David Sterba, Marc Dionne, Ian Kent,
Luis de Bethencourt, Salah Triki, Tigran A. Aivazian,
Ilya Dryomov, Alex Markuze, Jan Harkes, coda, Nicolas Pitre,
Tyler Hicks, Amir Goldstein, Christoph Hellwig,
John Paul Adrian Glaubitz, Yangtao Li, Mikulas Patocka,
David Woodhouse, Richard Weinberger, Dave Kleikamp,
Konstantin Komarov, Mark Fasheh, Joel Becker, Joseph Qi,
Mike Marshall, Martin Brandenburg, Miklos Szeredi, Anders Larsen,
Zhihao Cheng, Damien Le Moal, Naohiro Aota, Johannes Thumshirn,
John Johansen, Paul Moore, James Morris, Serge E. Hallyn,
Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Fan Wu,
Stephen Smalley, Ondrej Mosnacek, Casey Schaufler, Alex Deucher,
Christian König, David Airlie, Simona Vetter, Sumit Semwal,
Eric Dumazet, Kuniyuki Iwashima, Paolo Abeni, Willem de Bruijn,
David S. Miller, Jakub Kicinski, Simon Horman, Oleg Nesterov,
Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
Ian Rogers, Adrian Hunter, James Clark, Darrick J. Wong,
Martin Schiller
Cc: linux-fsdevel, linux-kernel, linux-trace-kernel, nvdimm, fsverity,
linux-mm, netfs, linux-ext4, linux-f2fs-devel, linux-nfs,
linux-cifs, samba-technical, linux-nilfs, v9fs, linux-afs, autofs,
ceph-devel, codalist, ecryptfs, linux-mtd, jfs-discussion, ntfs3,
ocfs2-devel, devel, linux-unionfs, apparmor,
linux-security-module, linux-integrity, selinux, amd-gfx,
dri-devel, linux-media, linaro-mm-sig, netdev, linux-perf-users,
linux-fscrypt, linux-xfs, linux-hams, linux-x25, Jeff Layton
Update %lu to %llu in debugfs seq_printf for printing i_ino, since
i_ino is now u64.
Signed-off-by: Jeff Layton <jlayton@kernel.org>
---
drivers/dma-buf/dma-buf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/dma-buf/dma-buf.c b/drivers/dma-buf/dma-buf.c
index 11711874a325b954940fb289f09936de0152e683..8c16c8c425cc84cf379d7f790d054e140471c8ac 100644
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
@@ -1708,7 +1708,7 @@ static int dma_buf_debug_show(struct seq_file *s, void *unused)
spin_lock(&buf_obj->name_lock);
- seq_printf(s, "%08zu\t%08x\t%08x\t%08ld\t%s\t%08lu\t%s\n",
+ seq_printf(s, "%08zu\t%08x\t%08x\t%08ld\t%s\t%08llu\t%s\n",
buf_obj->size,
buf_obj->file->f_flags, buf_obj->file->f_mode,
file_count(buf_obj->file),
--
2.53.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Claude review: dma-buf: update format string for u64 i_ino
2026-02-26 15:55 ` [PATCH 56/61] dma-buf: update format string " Jeff Layton
@ 2026-02-27 1:50 ` Claude Code Review Bot
0 siblings, 0 replies; 7+ messages in thread
From: Claude Code Review Bot @ 2026-02-27 1:50 UTC (permalink / raw)
To: dri-devel-reviews
Patch Review
**Status: Correct, no issues.**
This patch updates one `seq_printf` format specifier in `dma_buf_debug_show()` from `%08lu` to `%08llu`.
The change:
```c
- seq_printf(s, "%08zu\t%08x\t%08x\t%08ld\t%s\t%08lu\t%s\n",
+ seq_printf(s, "%08zu\t%08x\t%08x\t%08ld\t%s\t%08llu\t%s\n",
```
This correctly updates the format specifier for the `file_inode(buf_obj->file)->i_ino` argument (the 6th argument after the format string, at line 1716 of the current source). The `%08` width/padding prefix is preserved, which is correct — the field width specifier is orthogonal to the length modifier.
No functional, semantic, or style concerns. The only `i_ino` usage in this file is covered by this change.
---
**Summary:** Both patches are trivially correct mechanical changes. For the DRM/dma-buf subsystem:
Acked-by for both patches.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 7+ messages in thread
* Claude review: vfs: change inode->i_ino from unsigned long to u64
2026-02-26 15:55 [PATCH 00/61] vfs: change inode->i_ino from unsigned long to u64 Jeff Layton
2026-02-26 15:55 ` [PATCH 52/61] drm/amdgpu: update for u64 i_ino Jeff Layton
2026-02-26 15:55 ` [PATCH 56/61] dma-buf: update format string " Jeff Layton
@ 2026-02-27 1:50 ` Claude Code Review Bot
2 siblings, 0 replies; 7+ messages in thread
From: Claude Code Review Bot @ 2026-02-27 1:50 UTC (permalink / raw)
To: dri-devel-reviews
Overall Series Review
Subject: vfs: change inode->i_ino from unsigned long to u64
Author: Jeff Layton <jlayton@kernel.org>
Patches: 3
Reviewed: 2026-02-27T11:50:53.889328
---
This is a 61-patch series from Jeff Layton that changes `inode->i_ino` from `unsigned long` to `u64` across the kernel. The mbox has been filtered to show only the 3 messages relevant to DRM/dma-buf subsystems: the cover letter (patch 0/61), patch 52/61 (drm/amdgpu), and patch 56/61 (dma-buf).
The overall goal is well-motivated: `unsigned long` is 32 bits on 32-bit architectures, forcing filesystems to hash 64-bit identifiers into 32 bits. Changing to `u64` eliminates those hacks and provides a universal 64-bit inode identifier. The two patches touching DRM/dma-buf code are straightforward mechanical format string updates and are clearly correct.
**Recommendation: Acked-by for both drm/amdgpu and dma-buf patches.** These are trivially correct format string changes that follow directly from the type change in patch 2 of the series.
---
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 000/110] vfs: change inode->i_ino from unsigned long to u64
@ 2026-03-02 20:23 Jeff Layton
2026-03-03 22:15 ` Claude review: " Claude Code Review Bot
0 siblings, 1 reply; 7+ messages in thread
From: Jeff Layton @ 2026-03-02 20:23 UTC (permalink / raw)
To: Alexander Viro, Christian Brauner, Jan Kara, Steven Rostedt,
Masami Hiramatsu, Mathieu Desnoyers, Dan Williams, Matthew Wilcox,
Eric Biggers, Theodore Y. Ts'o, Muchun Song, Oscar Salvador,
David Hildenbrand, David Howells, Paulo Alcantara, Andreas Dilger,
Jan Kara, Jaegeuk Kim, Chao Yu, Trond Myklebust, Anna Schumaker,
Chuck Lever, NeilBrown, Olga Kornievskaia, Dai Ngo, Tom Talpey,
Steve French, Ronnie Sahlberg, Shyam Prasad N, Bharath SM,
Alexander Aring, Ryusuke Konishi, Viacheslav Dubeyko,
Eric Van Hensbergen, Latchesar Ionkov, Dominique Martinet,
Christian Schoenebeck, David Sterba, Marc Dionne, Ian Kent,
Luis de Bethencourt, Salah Triki, Tigran A. Aivazian,
Ilya Dryomov, Alex Markuze, Jan Harkes, coda, Nicolas Pitre,
Tyler Hicks, Amir Goldstein, Christoph Hellwig,
John Paul Adrian Glaubitz, Yangtao Li, Mikulas Patocka,
David Woodhouse, Richard Weinberger, Dave Kleikamp,
Konstantin Komarov, Mark Fasheh, Joel Becker, Joseph Qi,
Mike Marshall, Martin Brandenburg, Miklos Szeredi, Anders Larsen,
Zhihao Cheng, Damien Le Moal, Naohiro Aota, Johannes Thumshirn,
John Johansen, Paul Moore, James Morris, Serge E. Hallyn,
Mimi Zohar, Roberto Sassu, Dmitry Kasatkin, Eric Snowberg, Fan Wu,
Stephen Smalley, Ondrej Mosnacek, Casey Schaufler, Alex Deucher,
Christian König, David Airlie, Simona Vetter, Sumit Semwal,
Eric Dumazet, Kuniyuki Iwashima, Paolo Abeni, Willem de Bruijn,
David S. Miller, Jakub Kicinski, Simon Horman, Oleg Nesterov,
Peter Zijlstra, Ingo Molnar, Arnaldo Carvalho de Melo,
Namhyung Kim, Mark Rutland, Alexander Shishkin, Jiri Olsa,
Ian Rogers, Adrian Hunter, James Clark, Darrick J. Wong,
Martin Schiller, Eric Paris, Joerg Reuter, Marcel Holtmann,
Johan Hedberg, Luiz Augusto von Dentz, Oliver Hartkopp,
Marc Kleine-Budde, David Ahern, Neal Cardwell, Steffen Klassert,
Herbert Xu, Remi Denis-Courmont, Marcelo Ricardo Leitner,
Xin Long, Magnus Karlsson, Maciej Fijalkowski, Stanislav Fomichev,
Alexei Starovoitov, Daniel Borkmann, Jesper Dangaard Brouer,
John Fastabend
Cc: linux-fsdevel, linux-kernel, linux-trace-kernel, nvdimm, fsverity,
linux-mm, netfs, linux-ext4, linux-f2fs-devel, linux-nfs,
linux-cifs, samba-technical, linux-nilfs, v9fs, linux-afs, autofs,
ceph-devel, codalist, ecryptfs, linux-mtd, jfs-discussion, ntfs3,
ocfs2-devel, devel, linux-unionfs, apparmor,
linux-security-module, linux-integrity, selinux, amd-gfx,
dri-devel, linux-media, linaro-mm-sig, netdev, linux-perf-users,
linux-fscrypt, linux-xfs, linux-hams, linux-x25, audit,
linux-bluetooth, linux-can, linux-sctp, bpf, Jeff Layton
This version splits the change up to be more bisectable. It first adds a
new kino_t typedef and a new "PRIino" macro to hold the width specifier
for format strings. The conversion is done, and then everything is
changed to remove the new macro and typedef.
I also missed a few places in the earlier set. This one hopefully does a
bit more thorough job.
My thanks and apologies to everyone who sent R-b/A-b for the v1 series.
v2 breaks a lot of the changes up into two patches so many of those
didn't carry over. Please resend those if you're still OK with it.
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>
---
Changes in v2:
- Use a typedef and macro and do the change in two steps to make it cleanly bisectable
- Fix check_for_busy_inodes() in fscrypt
- Added patch to reorganize tracepoint structs for better packing
- Added patch to change sock.sk_ino to u64
- Added patch to clean up internal handling of inode numbers in audit subsystem
- Drop some unnecessary casts
- Link to v1: https://lore.kernel.org/r/20260226-iino-u64-v1-0-ccceff366db9@kernel.org
---
Jeff Layton (110):
vfs: introduce kino_t typedef and PRIino format macro
vfs: widen inode hash/lookup functions to u64
audit: widen ino fields to u64
net: change sock.sk_ino and sock_i_ino() to u64
trace: store i_ino as u64 instead of ino_t/unsigned long
trace: reorder TP_STRUCT__entry fields for better packing on 32-bit
ext4: use PRIino format for i_ino
jbd2: use PRIino format for i_ino
f2fs: use PRIino format for i_ino
lockd: use PRIino format for i_ino
nfs: use PRIino format for i_ino
nfsd: use PRIino format for i_ino
locks: use PRIino format for i_ino
proc: use PRIino format for i_ino
nilfs2: use PRIino format for i_ino
9p: use PRIino format for i_ino
affs: use PRIino format for i_ino
afs: use PRIino format for i_ino
autofs: use PRIino format for i_ino
befs: use PRIino format for i_ino
bfs: use PRIino format for i_ino
cachefiles: use PRIino format for i_ino
ceph: use PRIino format for i_ino
coda: use PRIino format for i_ino
cramfs: use PRIino format for i_ino
ecryptfs: use PRIino format for i_ino
efs: use PRIino format for i_ino
exportfs: use PRIino format for i_ino
ext2: use PRIino format for i_ino
freevxfs: use PRIino format for i_ino
hfs: use PRIino format for i_ino
hfsplus: use PRIino format for i_ino
hpfs: use PRIino format for i_ino
isofs: use PRIino format for i_ino
jffs2: use PRIino format for i_ino
jfs: use PRIino format for i_ino
minix: use PRIino format for i_ino
nsfs: use PRIino format for i_ino
ntfs3: use PRIino format for i_ino
ocfs2: use PRIino format for i_ino
orangefs: use PRIino format for i_ino
overlayfs: use PRIino format for i_ino
qnx4: use PRIino format for i_ino
qnx6: use PRIino format for i_ino
ubifs: use PRIino format for i_ino
udf: use PRIino format for i_ino
ufs: use PRIino format for i_ino
zonefs: use PRIino format for i_ino
security: use PRIino format for i_ino
drm/amdgpu: use PRIino format for i_ino
fsnotify: use PRIino format for i_ino
net: use PRIino format for i_ino
uprobes: use PRIino format for i_ino
dma-buf: use PRIino format for i_ino
fscrypt: use PRIino format for i_ino
fsverity: use PRIino format for i_ino
iomap: use PRIino format for i_ino
net: use PRIino format for i_ino
vfs: use PRIino format for i_ino
vfs: change kino_t from unsigned long to u64
ext4: replace PRIino with %llu/%llx format strings
jbd2: replace PRIino with %llu/%llx format strings
f2fs: replace PRIino with %llu/%llx format strings
lockd: replace PRIino with %llu/%llx format strings
nfs: replace PRIino with %llu/%llx format strings
nfsd: replace PRIino with %llu/%llx format strings
proc: replace PRIino with %llu/%llx format strings
nilfs2: replace PRIino with %llu/%llx format strings
9p: replace PRIino with %llu/%llx format strings
affs: replace PRIino with %llu/%llx format strings
afs: replace PRIino with %llu/%llx format strings
autofs: replace PRIino with %llu/%llx format strings
befs: replace PRIino with %llu/%llx format strings
bfs: replace PRIino with %llu/%llx format strings
cachefiles: replace PRIino with %llu/%llx format strings
ceph: replace PRIino with %llu/%llx format strings
coda: replace PRIino with %llu/%llx format strings
cramfs: replace PRIino with %llu/%llx format strings
ecryptfs: replace PRIino with %llu/%llx format strings
efs: replace PRIino with %llu/%llx format strings
exportfs: replace PRIino with %llu/%llx format strings
ext2: replace PRIino with %llu/%llx format strings
freevxfs: replace PRIino with %llu/%llx format strings
hfs: replace PRIino with %llu/%llx format strings
hfsplus: replace PRIino with %llu/%llx format strings
hpfs: replace PRIino with %llu/%llx format strings
isofs: replace PRIino with %llu/%llx format strings
jffs2: replace PRIino with %llu/%llx format strings
jfs: replace PRIino with %llu/%llx format strings
minix: replace PRIino with %llu/%llx format strings
ntfs3: replace PRIino with %llu/%llx format strings
ocfs2: replace PRIino with %llu/%llx format strings
orangefs: replace PRIino with %llu/%llx format strings
overlayfs: replace PRIino with %llu/%llx format strings
qnx4: replace PRIino with %llu/%llx format strings
qnx6: replace PRIino with %llu/%llx format strings
ubifs: replace PRIino with %llu/%llx format strings
udf: replace PRIino with %llu/%llx format strings
ufs: replace PRIino with %llu/%llx format strings
zonefs: replace PRIino with %llu/%llx format strings
fscrypt: replace PRIino with %llu/%llx format strings
fsverity: replace PRIino with %llu/%llx format strings
iomap: replace PRIino with %llu/%llx format strings
fsnotify: replace PRIino with %llu/%llx format strings
security: replace PRIino with %llu/%llx format strings
drm/amdgpu: replace PRIino with %llu/%llx format strings
dma-buf: replace PRIino with %llu/%llx format strings
net: replace PRIino with %llu/%llx format strings
uprobes: replace PRIino with %llu/%llx format strings
vfs: remove kino_t typedef and PRIino format macro
drivers/dma-buf/dma-buf.c | 2 +-
drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | 4 +-
fs/9p/vfs_addr.c | 4 +-
fs/9p/vfs_inode.c | 6 +-
fs/9p/vfs_inode_dotl.c | 6 +-
fs/affs/amigaffs.c | 8 +-
fs/affs/bitmap.c | 2 +-
fs/affs/dir.c | 2 +-
fs/affs/file.c | 20 +-
fs/affs/inode.c | 12 +-
fs/affs/namei.c | 14 +-
fs/affs/symlink.c | 2 +-
fs/afs/dir.c | 10 +-
fs/afs/dir_search.c | 2 +-
fs/afs/dynroot.c | 2 +-
fs/afs/inode.c | 2 +-
fs/autofs/inode.c | 2 +-
fs/befs/linuxvfs.c | 28 +-
fs/bfs/dir.c | 4 +-
fs/cachefiles/io.c | 6 +-
fs/cachefiles/namei.c | 12 +-
fs/cachefiles/xattr.c | 2 +-
fs/ceph/crypto.c | 4 +-
fs/coda/dir.c | 2 +-
fs/coda/inode.c | 2 +-
fs/cramfs/inode.c | 2 +-
fs/crypto/crypto.c | 2 +-
fs/crypto/hooks.c | 2 +-
fs/crypto/keyring.c | 4 +-
fs/crypto/keysetup.c | 2 +-
fs/dcache.c | 4 +-
fs/ecryptfs/crypto.c | 6 +-
fs/ecryptfs/file.c | 2 +-
fs/efs/inode.c | 6 +-
fs/eventpoll.c | 2 +-
fs/exportfs/expfs.c | 4 +-
fs/ext2/dir.c | 10 +-
fs/ext2/ialloc.c | 9 +-
fs/ext2/inode.c | 2 +-
fs/ext2/trace.h | 8 +-
fs/ext2/xattr.c | 14 +-
fs/ext4/dir.c | 2 +-
fs/ext4/ext4.h | 4 +-
fs/ext4/extents.c | 8 +-
fs/ext4/extents_status.c | 28 +-
fs/ext4/fast_commit.c | 8 +-
fs/ext4/ialloc.c | 10 +-
fs/ext4/indirect.c | 2 +-
fs/ext4/inline.c | 14 +-
fs/ext4/inode.c | 22 +-
fs/ext4/ioctl.c | 4 +-
fs/ext4/mballoc.c | 6 +-
fs/ext4/migrate.c | 2 +-
fs/ext4/move_extent.c | 20 +-
fs/ext4/namei.c | 10 +-
fs/ext4/orphan.c | 16 +-
fs/ext4/page-io.c | 10 +-
fs/ext4/super.c | 22 +-
fs/ext4/xattr.c | 10 +-
fs/f2fs/compress.c | 4 +-
fs/f2fs/dir.c | 2 +-
fs/f2fs/extent_cache.c | 8 +-
fs/f2fs/f2fs.h | 6 +-
fs/f2fs/file.c | 12 +-
fs/f2fs/gc.c | 2 +-
fs/f2fs/inline.c | 4 +-
fs/f2fs/inode.c | 48 ++--
fs/f2fs/namei.c | 8 +-
fs/f2fs/node.c | 12 +-
fs/f2fs/recovery.c | 10 +-
fs/f2fs/xattr.c | 10 +-
fs/freevxfs/vxfs_bmap.c | 4 +-
fs/fserror.c | 2 +-
fs/hfs/catalog.c | 2 +-
fs/hfs/extent.c | 4 +-
fs/hfs/inode.c | 4 +-
fs/hfsplus/attributes.c | 10 +-
fs/hfsplus/catalog.c | 2 +-
fs/hfsplus/dir.c | 6 +-
fs/hfsplus/extents.c | 6 +-
fs/hfsplus/inode.c | 8 +-
fs/hfsplus/super.c | 6 +-
fs/hfsplus/xattr.c | 10 +-
fs/hpfs/dir.c | 4 +-
fs/hpfs/dnode.c | 4 +-
fs/hpfs/ea.c | 4 +-
fs/hpfs/inode.c | 4 +-
fs/inode.c | 49 ++--
fs/iomap/ioend.c | 2 +-
fs/iomap/trace.h | 8 +-
fs/isofs/compress.c | 2 +-
fs/isofs/dir.c | 2 +-
fs/isofs/inode.c | 6 +-
fs/isofs/namei.c | 2 +-
fs/jbd2/journal.c | 4 +-
fs/jbd2/transaction.c | 2 +-
fs/jffs2/dir.c | 4 +-
fs/jffs2/file.c | 4 +-
fs/jffs2/fs.c | 18 +-
fs/jfs/inode.c | 2 +-
fs/jfs/jfs_imap.c | 2 +-
fs/jfs/jfs_metapage.c | 2 +-
fs/lockd/svclock.c | 8 +-
fs/lockd/svcsubs.c | 2 +-
fs/locks.c | 6 +-
fs/minix/inode.c | 10 +-
fs/nfs/dir.c | 20 +-
fs/nfs/file.c | 8 +-
fs/nfs/filelayout/filelayout.c | 8 +-
fs/nfs/flexfilelayout/flexfilelayout.c | 8 +-
fs/nfs/inode.c | 6 +-
fs/nfs/nfs4proc.c | 4 +-
fs/nfs/pnfs.c | 12 +-
fs/nfsd/export.c | 2 +-
fs/nfsd/nfs4state.c | 4 +-
fs/nfsd/nfsfh.c | 4 +-
fs/nfsd/vfs.c | 2 +-
fs/nilfs2/alloc.c | 10 +-
fs/nilfs2/bmap.c | 2 +-
fs/nilfs2/btnode.c | 2 +-
fs/nilfs2/btree.c | 12 +-
fs/nilfs2/dir.c | 12 +-
fs/nilfs2/direct.c | 4 +-
fs/nilfs2/gcinode.c | 2 +-
fs/nilfs2/inode.c | 8 +-
fs/nilfs2/mdt.c | 2 +-
fs/nilfs2/namei.c | 2 +-
fs/nilfs2/segment.c | 2 +-
fs/notify/fdinfo.c | 4 +-
fs/nsfs.c | 4 +-
fs/ntfs3/super.c | 2 +-
fs/ocfs2/alloc.c | 2 +-
fs/ocfs2/aops.c | 4 +-
fs/ocfs2/dir.c | 8 +-
fs/ocfs2/dlmfs/dlmfs.c | 10 +-
fs/ocfs2/extent_map.c | 12 +-
fs/ocfs2/inode.c | 2 +-
fs/ocfs2/quota_local.c | 2 +-
fs/ocfs2/refcounttree.c | 10 +-
fs/ocfs2/xattr.c | 4 +-
fs/orangefs/inode.c | 2 +-
fs/overlayfs/export.c | 2 +-
fs/overlayfs/namei.c | 4 +-
fs/overlayfs/util.c | 2 +-
fs/pipe.c | 2 +-
fs/proc/fd.c | 2 +-
fs/proc/task_mmu.c | 4 +-
fs/qnx4/inode.c | 4 +-
fs/qnx6/inode.c | 2 +-
fs/ubifs/debug.c | 8 +-
fs/ubifs/dir.c | 28 +-
fs/ubifs/file.c | 28 +-
fs/ubifs/journal.c | 6 +-
fs/ubifs/super.c | 16 +-
fs/ubifs/tnc.c | 4 +-
fs/ubifs/xattr.c | 14 +-
fs/udf/directory.c | 18 +-
fs/udf/file.c | 2 +-
fs/udf/inode.c | 12 +-
fs/udf/namei.c | 8 +-
fs/udf/super.c | 2 +-
fs/ufs/balloc.c | 6 +-
fs/ufs/dir.c | 10 +-
fs/ufs/ialloc.c | 6 +-
fs/ufs/inode.c | 18 +-
fs/ufs/ufs_fs.h | 6 +-
fs/ufs/util.c | 2 +-
fs/verity/init.c | 2 +-
fs/zonefs/super.c | 8 +-
fs/zonefs/trace.h | 18 +-
include/linux/audit.h | 2 +-
include/linux/fs.h | 28 +-
include/net/sock.h | 4 +-
include/trace/events/cachefiles.h | 18 +-
include/trace/events/ext4.h | 423 +++++++++++++++--------------
include/trace/events/f2fs.h | 172 ++++++------
include/trace/events/filelock.h | 34 +--
include/trace/events/filemap.h | 20 +-
include/trace/events/fs_dax.h | 20 +-
include/trace/events/fsverity.h | 30 +-
include/trace/events/hugetlbfs.h | 42 +--
include/trace/events/netfs.h | 8 +-
include/trace/events/nilfs2.h | 12 +-
include/trace/events/readahead.h | 18 +-
include/trace/events/timestamp.h | 16 +-
include/trace/events/writeback.h | 162 +++++------
kernel/audit.h | 9 +-
kernel/audit_fsnotify.c | 4 +-
kernel/audit_watch.c | 8 +-
kernel/auditsc.c | 2 +-
kernel/events/uprobes.c | 4 +-
net/ax25/af_ax25.c | 2 +-
net/bluetooth/af_bluetooth.c | 4 +-
net/can/bcm.c | 2 +-
net/ipv4/ping.c | 2 +-
net/ipv4/raw.c | 2 +-
net/ipv4/tcp_ipv4.c | 2 +-
net/ipv4/udp.c | 2 +-
net/ipv6/datagram.c | 2 +-
net/ipv6/tcp_ipv6.c | 2 +-
net/key/af_key.c | 2 +-
net/netlink/af_netlink.c | 2 +-
net/netlink/diag.c | 2 +-
net/netrom/af_netrom.c | 4 +-
net/packet/af_packet.c | 2 +-
net/packet/diag.c | 2 +-
net/phonet/socket.c | 4 +-
net/rose/af_rose.c | 4 +-
net/sctp/proc.c | 4 +-
net/socket.c | 2 +-
net/unix/af_unix.c | 2 +-
net/unix/diag.c | 6 +-
net/x25/x25_proc.c | 4 +-
net/xdp/xsk_diag.c | 2 +-
security/apparmor/apparmorfs.c | 4 +-
security/integrity/integrity_audit.c | 2 +-
security/ipe/audit.c | 2 +-
security/lsm_audit.c | 10 +-
security/selinux/hooks.c | 10 +-
security/smack/smack_lsm.c | 12 +-
220 files changed, 1181 insertions(+), 1181 deletions(-)
---
base-commit: 842cfe0733c5a03982a7ae496de6fdc0dd661a41
change-id: 20260224-iino-u64-b44a3a72543c
Best regards,
--
Jeff Layton <jlayton@kernel.org>
^ permalink raw reply [flat|nested] 7+ messages in thread* Claude review: vfs: change inode->i_ino from unsigned long to u64
2026-03-02 20:23 [PATCH v2 000/110] " Jeff Layton
@ 2026-03-03 22:15 ` Claude Code Review Bot
0 siblings, 0 replies; 7+ messages in thread
From: Claude Code Review Bot @ 2026-03-03 22:15 UTC (permalink / raw)
To: dri-devel-reviews
Overall Series Review
Subject: vfs: change inode->i_ino from unsigned long to u64
Author: Jeff Layton <jlayton@kernel.org>
Patches: 166
Reviewed: 2026-03-04T08:15:01.964295
---
This is a well-structured 110-patch series by Jeff Layton that widens `struct inode`'s `i_ino` field from `unsigned long` to `u64`. The motivation is sound: on 32-bit architectures, `unsigned long` is only 32 bits, forcing filesystems like NFS, CIFS, XFS, Ceph, and FUSE to hash or fold their native 64-bit inode numbers, losing information and creating collision risks.
**Strategy**: The series uses a clean three-phase approach for bisectability:
1. Patches 1-59: Introduce `kino_t` typedef (initially `unsigned long`) and `PRIino` format macro (initially `"l"`), convert all format strings and trace events to use them.
2. Patch 60: Flip `kino_t` from `unsigned long` to `u64` and `PRIino` from `"l"` to `"ll"` -- the actual type widening.
3. Patches 61-110: Replace `PRIino` with concrete `%llu`/`%llx` and `kino_t` with `u64`, then remove the typedef/macro.
This is a good strategy that ensures every intermediate commit compiles warning-free on both 32-bit and 64-bit. The series touches 220 files but the vast majority of changes are mechanical format string updates.
**Key concerns**:
1. **`hash()` function truncation on 32-bit**: In patch 002, the `hash()` function in `fs/inode.c` accepts `u64 hashval` but the function body operates entirely on `unsigned long` intermediates and returns `unsigned long`. On 32-bit, the upper 32 bits of a 64-bit inode number are silently truncated in the hash computation. This is not a regression (the hash table is sized for the machine's address space), but it means two inodes differing only in the upper 32 bits will hash to the same bucket on 32-bit. Since the lookup functions compare the full `u64 ino`, this is safe for correctness, just suboptimal for hash distribution. Worth a comment.
2. **ext4 arithmetic casts**: Patch 007 introduces `(unsigned int)` casts for `i_ino % ngroups` and `i_ino % s_mb_nr_global_goals`. Since ext4 inode numbers are always 32-bit (the on-disk format is `__le32`), this truncation is correct in practice, but the cast to `unsigned int` rather than `u32` is slightly inconsistent with kernel conventions. Also, the `div_u64()` usage in `fs/ext4/migrate.c` is correct and necessary since `EXT4_INODES_PER_GROUP` is `unsigned long` (32-bit on 32-bit arches), and 64-bit division by a 32-bit value needs `div_u64()` on 32-bit.
3. **UAPI/procfs format change**: Patch 004 changes `/proc/net/tcp`, `/proc/net/udp`, etc. from `%lu` to `%llu` for the inode number column. While the actual values won't change on 64-bit (same width), on 32-bit the field width could theoretically expand. Userspace parsers that use positional field extraction should be fine since the format is space-delimited, but this is a visible change worth noting in the commit message. The commit message does mention the UAPI diag struct truncation, which is good.
4. **`struct sock` packing on 32-bit**: Patch 004 widens `sk_ino` from `unsigned long` to `u64` in `struct sock`. The cover letter mentions struct inode growing by 4 bytes on 32-bit, but doesn't mention the `struct sock` growth. This is a hot networking structure and the packing impact on 32-bit should be considered.
5. **LLM attribution**: The cover letter notes "Much of this set was generated by LLM" which is honest and appropriate, and the mechanical nature of the bulk conversions makes this a reasonable use case.
Overall, the series is in good shape. The approach is sound, the changes are largely mechanical and correct, and the few non-trivial changes (VFS API widening, ext4 arithmetic, audit, networking) are handled appropriately.
---
Generated by Claude Code Patch Reviewer
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-03-03 22:15 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-26 15:55 [PATCH 00/61] vfs: change inode->i_ino from unsigned long to u64 Jeff Layton
2026-02-26 15:55 ` [PATCH 52/61] drm/amdgpu: update for u64 i_ino Jeff Layton
2026-02-27 1:50 ` Claude review: " Claude Code Review Bot
2026-02-26 15:55 ` [PATCH 56/61] dma-buf: update format string " Jeff Layton
2026-02-27 1:50 ` Claude review: " Claude Code Review Bot
2026-02-27 1:50 ` Claude review: vfs: change inode->i_ino from unsigned long to u64 Claude Code Review Bot
-- strict thread matches above, loose matches on Subject: below --
2026-03-02 20:23 [PATCH v2 000/110] " Jeff Layton
2026-03-03 22:15 ` Claude review: " Claude Code Review Bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox