On Wed, Dec 21, 2022 at 10:22:21AM -0500, Hironori Shiina wrote: > The root inode number should be set to `breq->startino` for getting stat > information of the root when XFS_BULK_IREQ_SPECIAL_ROOT is used. > Otherwise, the inode search is started from 1 > (XFS_BULK_IREQ_SPECIAL_ROOT) and the inode with the lowest number in a > filesystem is returned. > > Fixes: bf3cb3944792 ("xfs: allow single bulkstat of special inodes") > Signed-off-by: Hironori Shiina <shiina.hironori@xxxxxxxxxxx> D'oh. Nobody noticed this because .... the root dir is usually the first inode in the first inode chunk, and XFS_BULK_IREQ_SPECIAL_ROOT==1, so that usually lines us up to find the root dir. Except in that weird case where we format with a big stripe alignment, mount with zeroed stripe alignment, and then stuff gets allocated before the ichunk containing the root inode, right? > --- > fs/xfs/xfs_ioctl.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/xfs/xfs_ioctl.c b/fs/xfs/xfs_ioctl.c > index 13f1b2add390..020111f0f2a2 100644 > --- a/fs/xfs/xfs_ioctl.c > +++ b/fs/xfs/xfs_ioctl.c > @@ -780,7 +780,7 @@ xfs_bulk_ireq_setup( > > switch (hdr->ino) { I might change @hdr to be a const pointer to prevent further accidents here when I commit this. Reviewed-by: Darrick J. Wong <djwong@xxxxxxxxxx> --D > case XFS_BULK_IREQ_SPECIAL_ROOT: > - hdr->ino = mp->m_sb.sb_rootino; > + breq->startino = mp->m_sb.sb_rootino; > break; > default: > return -EINVAL; > -- > 2.38.1 >