# ioctl_xfs_ag_geometry

## NAME



           ioctl_xfs_ag_geometry - query XFS allocation group geometry
           information
    


## SYNOPSIS



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


## DESCRIPTION



           This XFS ioctl retrieves the geometry information for a given
           allocation group.  The geometry information is conveyed in a
           structure of the following form:
    
               struct xfs_ag_geometry {
                    uint32_t  ag_number;
                    uint32_t  ag_length;
                    uint32_t  ag_freeblks;
                    uint32_t  ag_icount;
                    uint32_t  ag_ifree;
                    uint32_t  ag_sick;
                    uint32_t  ag_checked;
                    uint32_t  ag_flags;
                    uint64_t  ag_reserved[12];
               };
    
           _ag_number_
                  The caller must set this field to the index of the
                  allocation group that the caller wishes to learn about.
    
           _ag_length_
                  The length of the allocation group is returned in this
                  field, in units of filesystem blocks.
    
           _ag_freeblks_
                  The number of free blocks in the allocation group is
                  returned in this field, in units of filesystem blocks.
    
           _ag_icount_
                  The number of inode records allocated in this allocation
                  group is returned in this field.
    
           _ag_ifree_
                  The number of unused inode records (of the space allocated)
                  in this allocation group is returned in this field.
    
           _ag_flags_
                  The caller can set this field to change the operational
                  behavior of the ioctl.  Currently no flags are defined, so
                  this field must be zero.
    
           _ag_reserved_
                  All reserved fields will be set to zero on return.
    
           The fields _ag_sick_ and _ag_checked_ indicate the relative health of
           various allocation group metadata:
    
           • If a given sick flag is set in _ag_sick_ , then that piece of
             metadata has been observed to be damaged.  The same bit will be
             set in _ag_checked_.
    
           • If a given sick flag is set in _ag_checked_ and is not set in
             _ag_sick_ , then that piece of metadata has been checked and is not
             faulty.
    
           • If a given sick flag is not set in _ag_checked_ , then no
             conclusion can be made.
    
           The following flags apply to these fields:
    
               **XFS_AG_GEOM_SICK_SB**
                      Allocation group superblock.
    
               **XFS_AG_GEOM_SICK_AGF**
                      Free space header.
    
               **XFS_AG_GEOM_SICK_AGFL**
                      Free space reserve list.
    
               **XFS_AG_GEOM_SICK_AGI**
                      Inode header.
    
               **XFS_AG_GEOM_SICK_BNOBT** or **XFS_AG_GEOM_SICK_CNTBT**
                      Free space btrees.
    
               **XFS_AG_GEOM_SICK_INOBT** or **XFS_AG_GEOM_SICK_FINOBT**
                      Inode btrees.
    
               **XFS_AG_GEOM_SICK_RMAPBT**
                      Reverse mapping btree.
    
               **XFS_AG_GEOM_SICK_REFCNTBT**
                      Reference count btree.
    


## 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:
    
           **EFSBADCRC**
                  Metadata checksum validation failed while performing the
                  query.
    
           **EFSCORRUPTED**
                  Metadata corruption was encountered while performing the
                  query.
    
           **EINVAL** The specified allocation group number is not valid for this
                  filesystem.
    
           **EIO** An I/O error was encountered while performing the query.
    


## CONFORMING TO



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


* * *