---
name: "ioctl_xfs_inumbers"
section: "2"
platform: "linux"
package: "xfsprogs"
version: "7.2.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ioctl_xfs_inumbers"
---

# ioctl\_xfs\_inumbers(2)

query allocation information for groups of XFS inodes

## NAME

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

## SYNOPSIS

**#include \<xfs/xfs\_fs.h\>**

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

## 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)](/ioctl_xfs_bulkstat/2.md) 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

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:

- **EFAULT**

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

- **EFSBADCRC**

  Metadata checksum validation failed while performing the query.

- **EFSCORRUPTED**

  Metadata corruption was encountered while performing the query.

- **EINVAL**

  One of the arguments was not valid.

- **EIO**

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

- **ENOMEM**

  There was insufficient memory to perform the query.

## CONFORMING TO

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

## SEE ALSO

[**ioctl**(2)](/ioctl/2.md), [**ioctl\_xfs\_bulkstat**(2)](/ioctl_xfs_bulkstat/2.md).
