blob: f495e73cee7ec0ed2de0604588bec3297cc30d22 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
.\" Copyright (c) 2019, Oracle. All rights reserved.
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" SPDX-License-Identifier: GPL-2.0+
.\" %%%LICENSE_END
.TH IOCTL-XFS-INUMBERS 2 2019-05-23 "XFS"
.SH NAME
ioctl_xfs_inumbers \- query allocation information for groups of XFS inodes
.SH SYNOPSIS
.br
.B #include <xfs/xfs_fs.h>
.PP
.BI "int ioctl(int " fd ", XFS_IOC_INUMBERS, struct xfs_inumbers_req *" arg );
.SH DESCRIPTION
Query inode allocation information for groups of XFS inodes.
This ioctl uses
.B struct xfs_inumbers_req
to set up a bulk transfer from the kernel:
.PP
.in +4n
.nf
struct xfs_inumbers_req {
struct xfs_bulk_ireq hdr;
struct xfs_inumbers inumbers[];
};
.fi
.in
.PP
See below for the
.B xfs_inumbers
structure definition.
.PP
.in +4n
.nf
struct xfs_bulk_ireq {
uint64_t ino;
uint32_t flags;
uint32_t icount;
uint32_t ocount;
uint32_t agno;
uint64_t reserved[5];
};
.fi
.in
.PP
.I hdr
describes the information to query.
The layout and behavior are documented in the
.BR ioctl_xfs_bulkstat (2)
manpage and will not be discussed further here.
.PP
.I inumbers
is an array of
.B struct xfs_inumbers
which is described below.
The array must have at least
.I icount
elements.
.PP
.in +4n
.nf
struct xfs_inumbers {
uint64_t xi_startino;
uint64_t xi_allocmask;
uint8_t xi_alloccount;
uint8_t xi_version;
uint8_t xi_padding[6];
};
.fi
.in
.PP
This structure describes inode usage information for a group of 64 consecutive
inode numbers.
.PP
.I xi_startino
is the first inode number of this group.
.PP
.I xi_allocmask
is a bitmask telling which inodes in this group are allocated.
To clarify, bit
.B N
is set if inode
.BR xi_startino + N
is allocated.
.PP
.I xi_alloccount
is the number of inodes in this group that are allocated.
This should be equal to popcnt(xi_allocmask).
.PP
.I xi_version
is the version of this data structure.
This will be set to
.I XFS_INUMBERS_VERSION_V5
by the kernel.
.PP
.I xi_padding[6]
is zeroed.
.SH RETURN VALUE
On error, \-1 is returned, and
.I errno
is set to indicate the error.
.PP
.SH ERRORS
Error codes can be one of, but are not limited to, the following:
.TP
.B EFAULT
The kernel was not able to copy into the userspace buffer.
.TP
.B EFSBADCRC
Metadata checksum validation failed while performing the query.
.TP
.B EFSCORRUPTED
Metadata corruption was encountered while performing the query.
.TP
.B EINVAL
One of the arguments was not valid.
.TP
.B EIO
An I/O error was encountered while performing the query.
.TP
.B ENOMEM
There was insufficient memory to perform the query.
.SH CONFORMING TO
This API is specific to XFS filesystem on the Linux kernel.
.SH SEE ALSO
.BR ioctl (2),
.BR ioctl_xfs_bulkstat (2).
|