1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun #ifndef _FALLOC_H_ 3*4882a593Smuzhiyun #define _FALLOC_H_ 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun #include <uapi/linux/falloc.h> 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun /* 9*4882a593Smuzhiyun * Space reservation ioctls and argument structure 10*4882a593Smuzhiyun * are designed to be compatible with the legacy XFS ioctls. 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun struct space_resv { 13*4882a593Smuzhiyun __s16 l_type; 14*4882a593Smuzhiyun __s16 l_whence; 15*4882a593Smuzhiyun __s64 l_start; 16*4882a593Smuzhiyun __s64 l_len; /* len == 0 means until end of file */ 17*4882a593Smuzhiyun __s32 l_sysid; 18*4882a593Smuzhiyun __u32 l_pid; 19*4882a593Smuzhiyun __s32 l_pad[4]; /* reserved area */ 20*4882a593Smuzhiyun }; 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #define FS_IOC_RESVSP _IOW('X', 40, struct space_resv) 23*4882a593Smuzhiyun #define FS_IOC_UNRESVSP _IOW('X', 41, struct space_resv) 24*4882a593Smuzhiyun #define FS_IOC_RESVSP64 _IOW('X', 42, struct space_resv) 25*4882a593Smuzhiyun #define FS_IOC_UNRESVSP64 _IOW('X', 43, struct space_resv) 26*4882a593Smuzhiyun #define FS_IOC_ZERO_RANGE _IOW('X', 57, struct space_resv) 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #define FALLOC_FL_SUPPORTED_MASK (FALLOC_FL_KEEP_SIZE | \ 29*4882a593Smuzhiyun FALLOC_FL_PUNCH_HOLE | \ 30*4882a593Smuzhiyun FALLOC_FL_COLLAPSE_RANGE | \ 31*4882a593Smuzhiyun FALLOC_FL_ZERO_RANGE | \ 32*4882a593Smuzhiyun FALLOC_FL_INSERT_RANGE | \ 33*4882a593Smuzhiyun FALLOC_FL_UNSHARE_RANGE) 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun /* on ia32 l_start is on a 32-bit boundary */ 36*4882a593Smuzhiyun #if defined(CONFIG_X86_64) 37*4882a593Smuzhiyun struct space_resv_32 { 38*4882a593Smuzhiyun __s16 l_type; 39*4882a593Smuzhiyun __s16 l_whence; 40*4882a593Smuzhiyun __s64 l_start __attribute__((packed)); 41*4882a593Smuzhiyun /* len == 0 means until end of file */ 42*4882a593Smuzhiyun __s64 l_len __attribute__((packed)); 43*4882a593Smuzhiyun __s32 l_sysid; 44*4882a593Smuzhiyun __u32 l_pid; 45*4882a593Smuzhiyun __s32 l_pad[4]; /* reserve area */ 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun 48*4882a593Smuzhiyun #define FS_IOC_RESVSP_32 _IOW ('X', 40, struct space_resv_32) 49*4882a593Smuzhiyun #define FS_IOC_UNRESVSP_32 _IOW ('X', 41, struct space_resv_32) 50*4882a593Smuzhiyun #define FS_IOC_RESVSP64_32 _IOW ('X', 42, struct space_resv_32) 51*4882a593Smuzhiyun #define FS_IOC_UNRESVSP64_32 _IOW ('X', 43, struct space_resv_32) 52*4882a593Smuzhiyun #define FS_IOC_ZERO_RANGE_32 _IOW ('X', 57, struct space_resv_32) 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun #endif 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun #endif /* _FALLOC_H_ */ 57