IOCTL-XFS-INUMBERS(2) System Calls Manual IOCTL-XFS-INUMBERS(2)

# [NAME](#NAME)

ioctl\_xfs\_inumbers - query allocation information for groups of XFS inodes

# [SYNOPSIS](#SYNOPSIS)

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

**int ioctl(int fd, XFS\_IOC\_INUMBERS, struct xfs\_inumbers\_req \*arg);**

# [DESCRIPTION](#DESCRIPTION)

Query inode allocation information for groups of XFS inodes. This ioctl uses **struct xfs\_inumbers\_req** to set up a bulk transfer from the kernel:

```
struct xfs_inumbers_req {
	struct xfs_bulk_ireq    hdr;
	struct xfs_inumbers     inumbers[];
};
```

See below for the **xfs\_inumbers** structure definition.

```
struct xfs_bulk_ireq {
	uint64_t                ino;
	uint32_t                flags;
	uint32_t                icount;
	uint32_t                ocount;
	uint32_t                agno;
	uint64_t                reserved[5];
};
```

*hdr* describes the information to query. The layout and behavior are documented in the [**ioctl\_xfs\_bulkstat**(2)](/man/os/xfsprogs/ioctl_xfs_bulkstat.2) manpage and will not be discussed further here.

*inumbers* is an array of **struct xfs\_inumbers** which is described below. The array must have at least *icount* elements.

```
struct xfs_inumbers {
	uint64_t                xi_startino;
	uint64_t                xi_allocmask;
	uint8_t                 xi_alloccount;
	uint8_t                 xi_version;
	uint8_t                 xi_padding[6];
};
```

This structure describes inode usage information for a group of 64 consecutive inode numbers.

*xi\_startino* is the first inode number of this group.

*xi\_allocmask* is a bitmask telling which inodes in this group are allocated. To clarify, bit **N** is set if inode **xi\_startino**+**N** is allocated.

*xi\_alloccount* is the number of inodes in this group that are allocated. This should be equal to popcnt(xi\_allocmask).

*xi\_version* is the version of this data structure. This will be set to *XFS\_INUMBERS\_VERSION\_V5* by the kernel.

*xi\_padding\[6]* is zeroed.

# [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:

[**EFAULT**](#EFAULT)

The kernel was not able to copy into the userspace buffer.

[**EFSBADCRC**](#EFSBADCRC)

Metadata checksum validation failed while performing the query.

[**EFSCORRUPTED**](#EFSCORRUPTED)

Metadata corruption was encountered while performing the query.

[**EINVAL**](#EINVAL)

One of the arguments was not valid.

[**EIO**](#EIO)

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

[**ENOMEM**](#ENOMEM)

There was insufficient memory to perform 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), [**ioctl\_xfs\_bulkstat**(2)](/man/os/xfsprogs/ioctl_xfs_bulkstat.2).

2019-05-23 XFS

---

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