ioctl_xfs_ag_geometry - query XFS allocation group geometry information
#include <xfs/xfs_fs.h>
int ioctl(int fd, XFS_IOC_AG_GEOMETRY, struct xfs_ag_geometry
*arg);
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.
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:
- 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.
This API is specific to XFS filesystem on the Linux kernel.
ioctl(2)