IOCTL-XFS-AG-GEOMETRY(2) System Calls Manual IOCTL-XFS-AG-GEOMETRY(2)

# [NAME](#NAME)

ioctl\_xfs\_ag\_geometry - query XFS allocation group geometry information

# [SYNOPSIS](#SYNOPSIS)

**#include &lt;xfs/xfs\_fs.h&gt;**

**int ioctl(int fd, XFS\_IOC\_AG\_GEOMETRY, struct xfs\_ag\_geometry \*arg);**

# [DESCRIPTION](#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*](#ag_number)

The caller must set this field to the index of the allocation group that the caller wishes to learn about.

[*ag\_length*](#ag_length)

The length of the allocation group is returned in this field, in units of filesystem blocks.

[*ag\_freeblks*](#ag_freeblks)

The number of free blocks in the allocation group is returned in this field, in units of filesystem blocks.

[*ag\_icount*](#ag_icount)

The number of inode records allocated in this allocation group is returned in this field.

[*ag\_ifree*](#ag_ifree)

The number of unused inode records (of the space allocated) in this allocation group is returned in this field.

[*ag\_flags*](#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*](#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**](#XFS_AG_GEOM_SICK_SB)

Allocation group superblock.

[**XFS\_AG\_GEOM\_SICK\_AGF**](#XFS_AG_GEOM_SICK_AGF)

Free space header.

[**XFS\_AG\_GEOM\_SICK\_AGFL**](#XFS_AG_GEOM_SICK_AGFL)

Free space reserve list.

[**XFS\_AG\_GEOM\_SICK\_AGI**](#XFS_AG_GEOM_SICK_AGI)

Inode header.

[**XFS\_AG\_GEOM\_SICK\_BNOBT** or **XFS\_AG\_GEOM\_SICK\_CNTBT**](#XFS_AG_GEOM_SICK_BNOBT)

Free space btrees.

[**XFS\_AG\_GEOM\_SICK\_INOBT** or **XFS\_AG\_GEOM\_SICK\_FINOBT**](#XFS_AG_GEOM_SICK_INOBT)

Inode btrees.

[**XFS\_AG\_GEOM\_SICK\_RMAPBT**](#XFS_AG_GEOM_SICK_RMAPBT)

Reverse mapping btree.

[**XFS\_AG\_GEOM\_SICK\_REFCNTBT**](#XFS_AG_GEOM_SICK_REFCNTBT)

Reference count btree.

# [RETURN VALUE](#RETURN_VALUE)

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

# [ERRORS](#ERRORS)

Error codes can be one of, but are not limited to, the following:

[**EFSBADCRC**](#EFSBADCRC)

Metadata checksum validation failed while performing the query.

[**EFSCORRUPTED**](#EFSCORRUPTED)

Metadata corruption was encountered while performing the query.

[**EINVAL**](#EINVAL)

The specified allocation group number is not valid for this filesystem.

[**EIO**](#EIO)

An I/O error was encountered while performing the query.

# [CONFORMING TO](#CONFORMING_TO)

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

# [SEE ALSO](#SEE_ALSO)

[**ioctl**(2)](/man/os/xfsprogs/ioctl.2)

2019-08-30 XFS

---

Document: ioctl_xfs_ag_geometry(2) from xfsprogs 7.2.0-r0 (Chainguard OS)
Source: https://kernel.googlesource.com/pub/scm/fs/xfs/xfsprogs-dev
