On Tue, Mar 01, 2022 at 04:09:27PM +0530, Chandan Babu R wrote: > A future commit will introduce a 64-bit on-disk data extent counter and a > 32-bit on-disk attr extent counter. This commit promotes xfs_extnum_t and > xfs_aextnum_t to 64 and 32-bits in order to correctly handle in-core versions > of these quantities. > > Reported-by: kernel test robot <lkp@xxxxxxxxx> What was reported by the test robot? This change isn't a bug that needed fixing, it's a core part of the patchset... > Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> > Signed-off-by: Chandan Babu R <chandan.babu@xxxxxxxxxx> > --- > fs/xfs/libxfs/xfs_bmap.c | 6 +++--- > fs/xfs/libxfs/xfs_inode_fork.c | 2 +- > fs/xfs/libxfs/xfs_inode_fork.h | 2 +- > fs/xfs/libxfs/xfs_types.h | 4 ++-- > fs/xfs/xfs_inode.c | 4 ++-- > fs/xfs/xfs_trace.h | 2 +- > 6 files changed, 10 insertions(+), 10 deletions(-) > > diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c > index 98541be873d8..9df98339a43a 100644 > --- a/fs/xfs/libxfs/xfs_bmap.c > +++ b/fs/xfs/libxfs/xfs_bmap.c > @@ -52,9 +52,9 @@ xfs_bmap_compute_maxlevels( > xfs_mount_t *mp, /* file system mount structure */ > int whichfork) /* data or attr fork */ > { > + xfs_extnum_t maxleafents; /* max leaf entries possible */ > int level; /* btree level */ > uint maxblocks; /* max blocks at this level */ > - xfs_extnum_t maxleafents; /* max leaf entries possible */ > int maxrootrecs; /* max records in root block */ > int minleafrecs; /* min records in leaf block */ > int minnoderecs; /* min records in node block */ Unnecessary. > @@ -83,7 +83,7 @@ xfs_bmap_compute_maxlevels( > maxrootrecs = xfs_bmdr_maxrecs(sz, 0); > minleafrecs = mp->m_bmap_dmnr[0]; > minnoderecs = mp->m_bmap_dmnr[1]; > - maxblocks = (maxleafents + minleafrecs - 1) / minleafrecs; > + maxblocks = howmany_64(maxleafents, minleafrecs); > for (level = 1; maxblocks > 1; level++) { > if (maxblocks <= maxrootrecs) > maxblocks = 1; > @@ -467,7 +467,7 @@ xfs_bmap_check_leaf_extents( > if (bp_release) > xfs_trans_brelse(NULL, bp); > error_norelse: > - xfs_warn(mp, "%s: BAD after btree leaves for %d extents", > + xfs_warn(mp, "%s: BAD after btree leaves for %llu extents", > __func__, i); > xfs_err(mp, "%s: CORRUPTED BTREE OR SOMETHING", __func__); > xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); > diff --git a/fs/xfs/libxfs/xfs_inode_fork.c b/fs/xfs/libxfs/xfs_inode_fork.c > index 829739e249b6..ce690abe5dce 100644 > --- a/fs/xfs/libxfs/xfs_inode_fork.c > +++ b/fs/xfs/libxfs/xfs_inode_fork.c > @@ -117,7 +117,7 @@ xfs_iformat_extents( > * we just bail out rather than crash in kmem_alloc() or memcpy() below. > */ > if (unlikely(size < 0 || size > XFS_DFORK_SIZE(dip, mp, whichfork))) { > - xfs_warn(ip->i_mount, "corrupt inode %Lu ((a)extents = %d).", > + xfs_warn(ip->i_mount, "corrupt inode %llu ((a)extents = %llu).", > (unsigned long long) ip->i_ino, nex); Isn't ip->i_ino explicitly defined as an unsigned long long? If you are going to fix one part of the printk formatting for ip->i_ino, you should probably should get rid of the unnecessary cast, too. Otherwise looks OK. -Dave. -- Dave Chinner david@xxxxxxxxxxxxx