xref: /linux/include/linux/falloc.h (revision 77b90401)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
297ac7350SAmit Arora #ifndef _FALLOC_H_
397ac7350SAmit Arora #define _FALLOC_H_
497ac7350SAmit Arora 
5607ca46eSDavid Howells #include <uapi/linux/falloc.h>
697ac7350SAmit Arora 
73e63cbb1SAnkit Jain 
83e63cbb1SAnkit Jain /*
93e63cbb1SAnkit Jain  * Space reservation ioctls and argument structure
103e63cbb1SAnkit Jain  * are designed to be compatible with the legacy XFS ioctls.
113e63cbb1SAnkit Jain  */
123e63cbb1SAnkit Jain struct space_resv {
133e63cbb1SAnkit Jain 	__s16		l_type;
143e63cbb1SAnkit Jain 	__s16		l_whence;
153e63cbb1SAnkit Jain 	__s64		l_start;
163e63cbb1SAnkit Jain 	__s64		l_len;		/* len == 0 means until end of file */
173e63cbb1SAnkit Jain 	__s32		l_sysid;
183e63cbb1SAnkit Jain 	__u32		l_pid;
193e63cbb1SAnkit Jain 	__s32		l_pad[4];	/* reserved area */
203e63cbb1SAnkit Jain };
213e63cbb1SAnkit Jain 
223e63cbb1SAnkit Jain #define FS_IOC_RESVSP		_IOW('X', 40, struct space_resv)
23*837a6e7fSChristoph Hellwig #define FS_IOC_UNRESVSP		_IOW('X', 41, struct space_resv)
243e63cbb1SAnkit Jain #define FS_IOC_RESVSP64		_IOW('X', 42, struct space_resv)
25*837a6e7fSChristoph Hellwig #define FS_IOC_UNRESVSP64	_IOW('X', 43, struct space_resv)
26*837a6e7fSChristoph Hellwig #define FS_IOC_ZERO_RANGE	_IOW('X', 57, struct space_resv)
273e63cbb1SAnkit Jain 
28dd46c787SNamjae Jeon #define	FALLOC_FL_SUPPORTED_MASK	(FALLOC_FL_KEEP_SIZE |		\
29dd46c787SNamjae Jeon 					 FALLOC_FL_PUNCH_HOLE |		\
30dd46c787SNamjae Jeon 					 FALLOC_FL_COLLAPSE_RANGE |	\
31dd46c787SNamjae Jeon 					 FALLOC_FL_ZERO_RANGE |		\
3271be6b49SDarrick J. Wong 					 FALLOC_FL_INSERT_RANGE |	\
3371be6b49SDarrick J. Wong 					 FALLOC_FL_UNSHARE_RANGE)
34dd46c787SNamjae Jeon 
35011da44bSAl Viro /* on ia32 l_start is on a 32-bit boundary */
36011da44bSAl Viro #if defined(CONFIG_X86_64)
37011da44bSAl Viro struct space_resv_32 {
38011da44bSAl Viro 	__s16		l_type;
39011da44bSAl Viro 	__s16		l_whence;
40011da44bSAl Viro 	__s64		l_start	__attribute__((packed));
41011da44bSAl Viro 			/* len == 0 means until end of file */
42011da44bSAl Viro 	__s64		l_len __attribute__((packed));
43011da44bSAl Viro 	__s32		l_sysid;
44011da44bSAl Viro 	__u32		l_pid;
45011da44bSAl Viro 	__s32		l_pad[4];	/* reserve area */
46011da44bSAl Viro };
47011da44bSAl Viro 
48011da44bSAl Viro #define FS_IOC_RESVSP_32	_IOW ('X', 40, struct space_resv_32)
4997eeb4d9SLinus Torvalds #define FS_IOC_UNRESVSP_32	_IOW ('X', 41, struct space_resv_32)
50011da44bSAl Viro #define FS_IOC_RESVSP64_32	_IOW ('X', 42, struct space_resv_32)
5197eeb4d9SLinus Torvalds #define FS_IOC_UNRESVSP64_32	_IOW ('X', 43, struct space_resv_32)
5297eeb4d9SLinus Torvalds #define FS_IOC_ZERO_RANGE_32	_IOW ('X', 57, struct space_resv_32)
53011da44bSAl Viro 
54011da44bSAl Viro #endif
55011da44bSAl Viro 
5697ac7350SAmit Arora #endif /* _FALLOC_H_ */
57