Provided by: xfslibs-dev_6.1.0-1ubuntu1_amd64 bug


       ioctl_xfs_fsinumbers - extract a list of valid inode numbers from an XFS filesystem


       #include <xfs/xfs_fs.h>

       int ioctl(int fd, XFS_IOC_FSINUMBERS, struct xfs_fsop_bulkreq *arg);


       Queries  inode allocation information from an XFS filesystem.  It is intended to be called
       iteratively to obtain the entire set of inodes.  These ioctls use struct  xfs_fsop_bulkreq
       to set up a bulk transfer with the kernel:

           struct xfs_fsop_bulkreq {
                __u64   *lastip;
                __s32   count;
                void    *ubuffer;
                __s32   *ocount;

       lastip points to a value that will receive the number of the "last inode."  This should be
       set to one less than the number of the first inode for which the caller wants information,
       or  zero to start with the first inode in the filesystem.  After the call, this value will
       be set to the number of the last inode for which information is supplied.  This field will
       not be updated if ocount is NULL.

       count  is  the  number  of elements in the ubuffer array and therefore the number of inode
       groups for which to return allocation information.

       ocount points to a value that will receive the number  of  records  returned.   An  output
       value  of zero means that there are no more inode groups left to enumerate.  If this value
       is NULL, then neither ocount nor lastip will be updated.

       ubuffer points to a memory buffer where inode group  information  will  be  copied.   This
       buffer  must  be  an  array of struct xfs_inogrp which is described below.  The array must
       have at least count elements.

           struct xfs_inogrp {
                __u64   xi_startino;
                __s32   xi_alloccount;
                __u64   xi_allocmask;

       This structure describes inode usage information for  a  group  of  64  consecutive  inode
       numbers.  The fields are as follows:

       xi_startino is the first inode number of this group.

       xi_alloccount  is  the number of bits that are set in xi_allocmask.  This is the number of
       inodes allocated in this group.

       xi_allocmask is a bitmask of inodes that are allocated in this inode group.   The  bitmask
       is 64 bits long, and the least significant bit corresponds to inode xi_startino.


       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.