1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18#ifndef __XFS_IOCTL32_H__
19#define __XFS_IOCTL32_H__
20
21#include <linux/compat.h>
22
23
24
25
26
27
28
29
30
31
32#define XFS_IOC_GETXFLAGS_32 FS_IOC32_GETFLAGS
33#define XFS_IOC_SETXFLAGS_32 FS_IOC32_SETFLAGS
34#define XFS_IOC_GETVERSION_32 FS_IOC32_GETVERSION
35
36
37
38
39#if defined(CONFIG_IA64) || defined(CONFIG_X86_64)
40#define BROKEN_X86_ALIGNMENT
41#define __compat_packed __attribute__((packed))
42#else
43#define __compat_packed
44#endif
45
46typedef struct compat_xfs_bstime {
47 compat_time_t tv_sec;
48 __s32 tv_nsec;
49} compat_xfs_bstime_t;
50
51typedef struct compat_xfs_bstat {
52 __u64 bs_ino;
53 __u16 bs_mode;
54 __u16 bs_nlink;
55 __u32 bs_uid;
56 __u32 bs_gid;
57 __u32 bs_rdev;
58 __s32 bs_blksize;
59 __s64 bs_size;
60 compat_xfs_bstime_t bs_atime;
61 compat_xfs_bstime_t bs_mtime;
62 compat_xfs_bstime_t bs_ctime;
63 int64_t bs_blocks;
64 __u32 bs_xflags;
65 __s32 bs_extsize;
66 __s32 bs_extents;
67 __u32 bs_gen;
68 __u16 bs_projid_lo;
69#define bs_projid bs_projid_lo
70 __u16 bs_projid_hi;
71 unsigned char bs_pad[12];
72 __u32 bs_dmevmask;
73 __u16 bs_dmstate;
74 __u16 bs_aextents;
75} __compat_packed compat_xfs_bstat_t;
76
77typedef struct compat_xfs_fsop_bulkreq {
78 compat_uptr_t lastip;
79 __s32 icount;
80 compat_uptr_t ubuffer;
81 compat_uptr_t ocount;
82} compat_xfs_fsop_bulkreq_t;
83
84#define XFS_IOC_FSBULKSTAT_32 \
85 _IOWR('X', 101, struct compat_xfs_fsop_bulkreq)
86#define XFS_IOC_FSBULKSTAT_SINGLE_32 \
87 _IOWR('X', 102, struct compat_xfs_fsop_bulkreq)
88#define XFS_IOC_FSINUMBERS_32 \
89 _IOWR('X', 103, struct compat_xfs_fsop_bulkreq)
90
91typedef struct compat_xfs_fsop_handlereq {
92 __u32 fd;
93 compat_uptr_t path;
94 __u32 oflags;
95 compat_uptr_t ihandle;
96 __u32 ihandlen;
97 compat_uptr_t ohandle;
98 compat_uptr_t ohandlen;
99} compat_xfs_fsop_handlereq_t;
100
101#define XFS_IOC_PATH_TO_FSHANDLE_32 \
102 _IOWR('X', 104, struct compat_xfs_fsop_handlereq)
103#define XFS_IOC_PATH_TO_HANDLE_32 \
104 _IOWR('X', 105, struct compat_xfs_fsop_handlereq)
105#define XFS_IOC_FD_TO_HANDLE_32 \
106 _IOWR('X', 106, struct compat_xfs_fsop_handlereq)
107#define XFS_IOC_OPEN_BY_HANDLE_32 \
108 _IOWR('X', 107, struct compat_xfs_fsop_handlereq)
109#define XFS_IOC_READLINK_BY_HANDLE_32 \
110 _IOWR('X', 108, struct compat_xfs_fsop_handlereq)
111
112
113typedef struct compat_xfs_swapext {
114 __int64_t sx_version;
115 __int64_t sx_fdtarget;
116 __int64_t sx_fdtmp;
117 xfs_off_t sx_offset;
118 xfs_off_t sx_length;
119 char sx_pad[16];
120 compat_xfs_bstat_t sx_stat;
121} __compat_packed compat_xfs_swapext_t;
122
123#define XFS_IOC_SWAPEXT_32 _IOWR('X', 109, struct compat_xfs_swapext)
124
125typedef struct compat_xfs_fsop_attrlist_handlereq {
126 struct compat_xfs_fsop_handlereq hreq;
127 struct xfs_attrlist_cursor pos;
128 __u32 flags;
129 __u32 buflen;
130 compat_uptr_t buffer;
131} __compat_packed compat_xfs_fsop_attrlist_handlereq_t;
132
133
134#define XFS_IOC_ATTRLIST_BY_HANDLE_32 \
135 _IOW('X', 122, struct compat_xfs_fsop_attrlist_handlereq)
136
137
138typedef struct compat_xfs_attr_multiop {
139 __u32 am_opcode;
140 __s32 am_error;
141 compat_uptr_t am_attrname;
142 compat_uptr_t am_attrvalue;
143 __u32 am_length;
144 __u32 am_flags;
145} compat_xfs_attr_multiop_t;
146
147typedef struct compat_xfs_fsop_attrmulti_handlereq {
148 struct compat_xfs_fsop_handlereq hreq;
149 __u32 opcount;
150
151 compat_uptr_t ops;
152} compat_xfs_fsop_attrmulti_handlereq_t;
153
154#define XFS_IOC_ATTRMULTI_BY_HANDLE_32 \
155 _IOW('X', 123, struct compat_xfs_fsop_attrmulti_handlereq)
156
157typedef struct compat_xfs_fsop_setdm_handlereq {
158 struct compat_xfs_fsop_handlereq hreq;
159
160 compat_uptr_t data;
161} compat_xfs_fsop_setdm_handlereq_t;
162
163#define XFS_IOC_FSSETDM_BY_HANDLE_32 \
164 _IOW('X', 121, struct compat_xfs_fsop_setdm_handlereq)
165
166#ifdef BROKEN_X86_ALIGNMENT
167
168typedef struct compat_xfs_flock64 {
169 __s16 l_type;
170 __s16 l_whence;
171 __s64 l_start __attribute__((packed));
172
173 __s64 l_len __attribute__((packed));
174 __s32 l_sysid;
175 __u32 l_pid;
176 __s32 l_pad[4];
177} compat_xfs_flock64_t;
178
179#define XFS_IOC_ALLOCSP_32 _IOW('X', 10, struct compat_xfs_flock64)
180#define XFS_IOC_FREESP_32 _IOW('X', 11, struct compat_xfs_flock64)
181#define XFS_IOC_ALLOCSP64_32 _IOW('X', 36, struct compat_xfs_flock64)
182#define XFS_IOC_FREESP64_32 _IOW('X', 37, struct compat_xfs_flock64)
183#define XFS_IOC_RESVSP_32 _IOW('X', 40, struct compat_xfs_flock64)
184#define XFS_IOC_UNRESVSP_32 _IOW('X', 41, struct compat_xfs_flock64)
185#define XFS_IOC_RESVSP64_32 _IOW('X', 42, struct compat_xfs_flock64)
186#define XFS_IOC_UNRESVSP64_32 _IOW('X', 43, struct compat_xfs_flock64)
187#define XFS_IOC_ZERO_RANGE_32 _IOW('X', 57, struct compat_xfs_flock64)
188
189typedef struct compat_xfs_fsop_geom_v1 {
190 __u32 blocksize;
191 __u32 rtextsize;
192 __u32 agblocks;
193 __u32 agcount;
194 __u32 logblocks;
195 __u32 sectsize;
196 __u32 inodesize;
197 __u32 imaxpct;
198 __u64 datablocks;
199 __u64 rtblocks;
200 __u64 rtextents;
201 __u64 logstart;
202 unsigned char uuid[16];
203 __u32 sunit;
204 __u32 swidth;
205 __s32 version;
206 __u32 flags;
207 __u32 logsectsize;
208 __u32 rtsectsize;
209 __u32 dirblocksize;
210} __attribute__((packed)) compat_xfs_fsop_geom_v1_t;
211
212#define XFS_IOC_FSGEOMETRY_V1_32 \
213 _IOR('X', 100, struct compat_xfs_fsop_geom_v1)
214
215typedef struct compat_xfs_inogrp {
216 __u64 xi_startino;
217 __s32 xi_alloccount;
218 __u64 xi_allocmask;
219} __attribute__((packed)) compat_xfs_inogrp_t;
220
221
222typedef struct compat_xfs_growfs_data {
223 __u64 newblocks;
224 __u32 imaxpct;
225} __attribute__((packed)) compat_xfs_growfs_data_t;
226
227typedef struct compat_xfs_growfs_rt {
228 __u64 newblocks;
229 __u32 extsize;
230} __attribute__((packed)) compat_xfs_growfs_rt_t;
231
232#define XFS_IOC_FSGROWFSDATA_32 _IOW('X', 110, struct compat_xfs_growfs_data)
233#define XFS_IOC_FSGROWFSRT_32 _IOW('X', 112, struct compat_xfs_growfs_rt)
234
235#endif
236
237#endif
238