# ioctl_xfs_fsinumbers

## NAME



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


## SYNOPSIS



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


## DESCRIPTION



           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**.
    


## 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.
    


* * *