xfs: get root inode correctly at bulkstat
authorHironori Shiina <shiina.hironori@gmail.com>
Mon, 26 Dec 2022 18:11:19 +0000 (10:11 -0800)
committerDarrick J. Wong <djwong@kernel.org>
Tue, 3 Jan 2023 18:23:07 +0000 (10:23 -0800)
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@fujitsu.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
fs/xfs/xfs_ioctl.c

index 13f1b2add39041e0a6050e07440fdca207026d58..736510bc241b851d604b23c2874320cb8239c753 100644 (file)
@@ -754,7 +754,7 @@ xfs_bulkstat_fmt(
 static int
 xfs_bulk_ireq_setup(
        struct xfs_mount        *mp,
-       struct xfs_bulk_ireq    *hdr,
+       const struct xfs_bulk_ireq *hdr,
        struct xfs_ibulk        *breq,
        void __user             *ubuffer)
 {
@@ -780,7 +780,7 @@ xfs_bulk_ireq_setup(
 
                switch (hdr->ino) {
                case XFS_BULK_IREQ_SPECIAL_ROOT:
-                       hdr->ino = mp->m_sb.sb_rootino;
+                       breq->startino = mp->m_sb.sb_rootino;
                        break;
                default:
                        return -EINVAL;