Merge tag 'sched_ext-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/tj...
[linux-2.6-block.git] / include / linux / falloc.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
97ac7350
AA
2#ifndef _FALLOC_H_
3#define _FALLOC_H_
4
607ca46e 5#include <uapi/linux/falloc.h>
97ac7350 6
3e63cbb1
AJ
7
8/*
9 * Space reservation ioctls and argument structure
10 * are designed to be compatible with the legacy XFS ioctls.
11 */
12struct space_resv {
13 __s16 l_type;
14 __s16 l_whence;
15 __s64 l_start;
16 __s64 l_len; /* len == 0 means until end of file */
17 __s32 l_sysid;
18 __u32 l_pid;
19 __s32 l_pad[4]; /* reserved area */
20};
21
22#define FS_IOC_RESVSP _IOW('X', 40, struct space_resv)
837a6e7f 23#define FS_IOC_UNRESVSP _IOW('X', 41, struct space_resv)
3e63cbb1 24#define FS_IOC_RESVSP64 _IOW('X', 42, struct space_resv)
837a6e7f
CH
25#define FS_IOC_UNRESVSP64 _IOW('X', 43, struct space_resv)
26#define FS_IOC_ZERO_RANGE _IOW('X', 57, struct space_resv)
3e63cbb1 27
57413d8e
CH
28/*
29 * Mask of all supported fallocate modes. Only one can be set at a time.
30 *
31 * In addition to the mode bit, the mode argument can also encode flags.
32 * FALLOC_FL_KEEP_SIZE is the only supported flag so far.
33 */
34#define FALLOC_FL_MODE_MASK (FALLOC_FL_ALLOCATE_RANGE | \
35 FALLOC_FL_PUNCH_HOLE | \
36 FALLOC_FL_COLLAPSE_RANGE | \
37 FALLOC_FL_ZERO_RANGE | \
38 FALLOC_FL_INSERT_RANGE | \
39 FALLOC_FL_UNSHARE_RANGE)
dd46c787 40
011da44b
AV
41/* on ia32 l_start is on a 32-bit boundary */
42#if defined(CONFIG_X86_64)
43struct space_resv_32 {
44 __s16 l_type;
45 __s16 l_whence;
46 __s64 l_start __attribute__((packed));
47 /* len == 0 means until end of file */
48 __s64 l_len __attribute__((packed));
49 __s32 l_sysid;
50 __u32 l_pid;
51 __s32 l_pad[4]; /* reserve area */
52};
53
97eeb4d9
LT
54#define FS_IOC_RESVSP_32 _IOW ('X', 40, struct space_resv_32)
55#define FS_IOC_UNRESVSP_32 _IOW ('X', 41, struct space_resv_32)
011da44b 56#define FS_IOC_RESVSP64_32 _IOW ('X', 42, struct space_resv_32)
97eeb4d9
LT
57#define FS_IOC_UNRESVSP64_32 _IOW ('X', 43, struct space_resv_32)
58#define FS_IOC_ZERO_RANGE_32 _IOW ('X', 57, struct space_resv_32)
011da44b 59
011da44b
AV
60#endif
61
97ac7350 62#endif /* _FALLOC_H_ */