# ioctl_xfs_inumbers

## NAME



           ioctl_xfs_inumbers - query allocation information for groups of
           XFS inodes
    


## SYNOPSIS



           **#include <xfs/xfs_fs.h>**
    
           **int ioctl(int** _fd_**, XFS_IOC_INUMBERS, struct xfs_inumbers_req ***_arg_**);**
    


## DESCRIPTION



           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 numbers.
    
           _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.
    


## RETURN VALUE



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


## ERRORS



           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.
    
           **EFSBADCRC**
                  Metadata checksum validation failed while performing the
                  query.
    
           **EFSCORRUPTED**
                  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.
    


## CONFORMING TO



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


* * *