Provided by: xfslibs-dev_5.16.0-1ubuntu1_amd64 bug


       ioctl_xfs_inumbers - query allocation information for groups of XFS inodes


       #include <xfs/xfs_fs.h>

       int ioctl(int fd, XFS_IOC_INUMBERS, struct xfs_inumbers_req *arg);


       Query  inode  allocation  information  for  groups  of XFS inodes.  This ioctl uses struct
       xfs_inumbers_req to set up a bulk transfer from the kernel:

           struct xfs_inumbers_req {
                struct xfs_bulk_ireq    hdr;
                struct xfs_inumbers     inumbers[];

       See below for the xfs_inumbers structure definition.

           struct xfs_bulk_ireq {
                uint64_t                ino;
                uint32_t                flags;
                uint32_t                icount;
                uint32_t                ocount;
                uint32_t                agno;
                uint64_t                reserved[5];

       hdr describes the information to query.  The layout and behavior  are  documented  in  the
       ioctl_xfs_bulkstat(2) manpage and will not be discussed further here.

       inumbers is an array of struct xfs_inumbers which is described below.  The array must have
       at least icount elements.

           struct xfs_inumbers {
                uint64_t                xi_startino;
                uint64_t                xi_allocmask;
                uint8_t                 xi_alloccount;
                uint8_t                 xi_version;
                uint8_t                 xi_padding[6];

       This structure describes inode usage information for  a  group  of  64  consecutive  inode

       xi_startino is the first inode number of this group.

       xi_allocmask  is  a bitmask telling which inodes in this group are allocated.  To clarify,
       bit N is set if inode xi_startino+N is allocated.

       xi_alloccount is the number of inodes in this group that are allocated.   This  should  be
       equal to popcnt(xi_allocmask).

       xi_version   is   the   version   of   this   data   structure.    This  will  be  set  to
       XFS_INUMBERS_VERSION_V5 by the kernel.

       xi_padding[6] is zeroed.


       On error, -1 is returned, and errno is set to indicate the error.


       Error codes can be one of, but are not limited to, the following:

       EFAULT The kernel was not able to copy into the userspace buffer.

              Metadata checksum validation failed while performing the query.

              Metadata corruption was encountered while performing the query.

       EINVAL One of the arguments was not valid.

       EIO    An I/O error was encountered while performing the query.

       ENOMEM There was insufficient memory to perform the query.


       This API is specific to XFS filesystem on the Linux kernel.


       ioctl(2), ioctl_xfs_bulkstat(2).