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:

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.

See Also

ioctl(2)

Info

2019-08-30 XFS