Re: [PATCH v2 007/110] ext4: use PRIino format for i_ino
Jeff Layton <[email protected]> Tue, 03 Mar 2026 06:41:52 -0500
| Newsgroups | org.kernel.vger.autofs,dev.linux.lists.fsverity,dev.linux.lists.netfs,dev.linux.lists.ntfs3,dev.linux.lists.nvdimm,dev.linux.lists.ocfs2-devel,dev.linux.lists.v9fs,net.sourceforge.lists.linux-f2fs-devel,org.freedesktop.lists.amd-gfx,org.freedesktop.lists.dri-devel,org.infradead.lists.linux-mtd,org.kernel.vger.audit,org.kernel.vger.bpf,org.kernel.vger.ceph-devel,org.kernel.vger.ecryptfs,org.kernel.vger.linux-bluetooth,org.kernel.vger.linux-can,org.kernel.vger.linux-cifs,org.kernel.vger.linux-ext4,org.kernel.vger.linux-fscrypt,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-hams,org.kernel.vger.linux-integrity,org.kernel.vger.linux-kernel,org.kernel.vger.linux-media,org.kernel.vger.linux-nfs,org.kernel.vger.linux-nilfs,org.kernel.vger.linux-perf-users,org.kernel.vger.linux-sctp,org.kernel.vger.linux-security-module,org.kernel.vger.linux-trace-kernel,org.kernel.vger.linux-unionfs,org.kernel.vger.linux-x25,org.kernel.vger.linux-xfs,org.kernel.vger.netdev,org.kernel.vger.selinux,org.kvack.linux-mm |
|---|---|
| Message-ID | <[email protected]> |
On Tue, 2026-03-03 at 12:20 +0100, Jan Kara wrote: > On Mon 02-03-26 15:23:51, Jeff Layton wrote: > > Convert ext4 i_ino format strings to use the PRIino format > > macro in preparation for the widening of i_ino via kino_t. > >=20 > > In trace events, change __field(ino_t, ...) to __field(u64, ...) > > and update TP_printk format strings to %llu/%llx to match the > > widened field type. > >=20 > > Update local variables and function parameters that hold i_ino > > values from unsigned long to kino_t. > >=20 > > Signed-off-by: Jeff Layton <[email protected]> >=20 > Two small comments. Otherwise feel free to add: >=20 > Reviewed-by: Jan Kara <[email protected]> >=20 > > diff --git a/fs/ext4/migrate.c b/fs/ext4/migrate.c > > index 96ab95167bd6e10ba86e61a60cb0be9fbafe157f..43103816b80ef4901858bcd= 789acb0ffb2612317 100644 > > --- a/fs/ext4/migrate.c > > +++ b/fs/ext4/migrate.c > > @@ -455,7 +455,7 @@ int ext4_ext_migrate(struct inode *inode) > > * log, so disable fast commits for this transaction. > > */ > > ext4_fc_mark_ineligible(inode->i_sb, EXT4_FC_REASON_MIGRATE, handle); > > - goal =3D (((inode->i_ino - 1) / EXT4_INODES_PER_GROUP(inode->i_sb)) * > > + goal =3D (div_u64(inode->i_ino - 1, EXT4_INODES_PER_GROUP(inode->i_sb= )) * >=20 > Ext4 doesn't support more than 2^32 inodes (due to on-disk format). Thus > i_ino is always guaranteed to be a number that fits in 32-bits. Thus I'd > here just type i_ino to (unsigned int) and be done with it like you've do= ne > it at other places. >=20 > ... >=20 Thanks. Fixed both places. I ended up casting the above to a u32 since this patchset has given me a stronger affinity for explicit-width types. > > @@ -1823,7 +1823,7 @@ TRACE_EVENT(ext4_journal_start_inode, > > TP_ARGS(inode, blocks, rsv_blocks, revoke_creds, type, IP), > > =20 > > TP_STRUCT__entry( > > - __field( unsigned long, ino ) > > + __field( u64, ino ) > > __field( dev_t, dev ) > > __field( unsigned long, ip ) > > __field( int, blocks ) > > @@ -1843,9 +1843,10 @@ TRACE_EVENT(ext4_journal_start_inode, > > ), > > =20 > > TP_printk("dev %d,%d blocks %d, rsv_blocks %d, revoke_creds %d," > > - " type %d, ino %lu, caller %pS", MAJOR(__entry->dev), > > + " type %d, ino %llu, caller %pS", MAJOR(__entry->dev), > > MINOR(__entry->dev), __entry->blocks, __entry->rsv_blocks, > > - __entry->revoke_creds, __entry->type, __entry->ino, > > + __entry->revoke_creds, __entry->type, > > + (unsigned long long) __entry->ino, >=20 > Not point in the type cast? >=20 > Honza --=20 Jeff Layton <[email protected]>