aboutsummaryrefslogtreecommitdiffstats
path: root/sys/linux/fs_ioctl_nilfs2.txt
blob: 1f97bc7f1eae11154133bbb77ce518d9d66dba5d (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
129
130
131
132
133
# Copyright 2026 syzkaller project authors. All rights reserved.
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.

include <uapi/linux/nilfs2_ondisk.h>
include <uapi/linux/nilfs2_api.h>

define NILFS_VDESC_SIZE	sizeof(struct nilfs_vdesc)
define NILFS_PERIOD_SIZE	sizeof(struct nilfs_period)
define NILFS_BDESC_SIZE	sizeof(struct nilfs_bdesc)
define NILFS_CPINFO_SIZE	sizeof(struct nilfs_cpinfo)
define NILFS_SUINFO_SIZE	sizeof(struct nilfs_suinfo)
define NILFS_SUINFO_UPDATE_SIZE	sizeof(struct nilfs_suinfo_update)
define NILFS_VINFO_SIZE	sizeof(struct nilfs_vinfo)

ioctl$NILFS_IOCTL_CHANGE_CPMODE(fd fd, cmd const[NILFS_IOCTL_CHANGE_CPMODE], arg ptr[in, nilfs_cpmode])
ioctl$NILFS_IOCTL_DELETE_CHECKPOINT(fd fd, cmd const[NILFS_IOCTL_DELETE_CHECKPOINT], arg ptr[in, int64])
ioctl$NILFS_IOCTL_GET_CPINFO(fd fd, cmd const[NILFS_IOCTL_GET_CPINFO], arg ptr[inout, nilfs_argv_cpinfo])
ioctl$NILFS_IOCTL_GET_CPSTAT(fd fd, cmd const[NILFS_IOCTL_GET_CPSTAT], arg ptr[out, nilfs_cpstat])
ioctl$NILFS_IOCTL_GET_SUINFO(fd fd, cmd const[NILFS_IOCTL_GET_SUINFO], arg ptr[inout, nilfs_argv_typed[nilfs_suinfo, inout, NILFS_SUINFO_SIZE]])
ioctl$NILFS_IOCTL_SET_SUINFO(fd fd, cmd const[NILFS_IOCTL_SET_SUINFO], arg ptr[in, nilfs_argv_typed[nilfs_suinfo_update, in, NILFS_SUINFO_UPDATE_SIZE]])
ioctl$NILFS_IOCTL_GET_SUSTAT(fd fd, cmd const[NILFS_IOCTL_GET_SUSTAT], arg ptr[out, nilfs_sustat])
ioctl$NILFS_IOCTL_GET_VINFO(fd fd, cmd const[NILFS_IOCTL_GET_VINFO], arg ptr[inout, nilfs_argv_typed[nilfs_vinfo, inout, NILFS_VINFO_SIZE]])
ioctl$NILFS_IOCTL_GET_BDESCS(fd fd, cmd const[NILFS_IOCTL_GET_BDESCS], arg ptr[inout, nilfs_argv_typed[nilfs_bdesc, inout, NILFS_BDESC_SIZE]])
ioctl$NILFS_IOCTL_CLEAN_SEGMENTS(fd fd, cmd const[NILFS_IOCTL_CLEAN_SEGMENTS], arg ptr[in, nilfs_ioctl_clean_segments_args])
ioctl$NILFS_IOCTL_SYNC(fd fd, cmd const[NILFS_IOCTL_SYNC], arg ptr[out, int64, opt])
ioctl$NILFS_IOCTL_RESIZE(fd fd, cmd const[NILFS_IOCTL_RESIZE], arg ptr[in, int64])
ioctl$NILFS_IOCTL_SET_ALLOC_RANGE(fd fd, cmd const[NILFS_IOCTL_SET_ALLOC_RANGE], arg ptr[in, array[int64, 2]])

nilfs_checkpoint_mode = NILFS_CHECKPOINT, NILFS_SNAPSHOT
nilfs_suinfo_flags = NILFS_SUINFO_ACTIVE, NILFS_SUINFO_DIRTY, NILFS_SUINFO_ERROR
nilfs_suinfo_update_flags = NILFS_SUINFO_UPDATE_LASTMOD, NILFS_SUINFO_UPDATE_NBLOCKS, NILFS_SUINFO_UPDATE_FLAGS
nilfs_cpinfo_flags = NILFS_CPINFO_SNAPSHOT, NILFS_CPINFO_INVALID, NILFS_CPINFO_SKETCH, NILFS_CPINFO_MINOR

nilfs_cpmode {
	cm_cno	int64
	cm_mode	flags[nilfs_checkpoint_mode, int32]
	cm_pad	const[0, int32]
}

nilfs_argv_cpinfo {
	v_base		ptr[inout, array[nilfs_cpinfo]]
	v_nmembs	len[v_base, int32]
	v_size		const[NILFS_CPINFO_SIZE, int16]
	v_flags		flags[nilfs_checkpoint_mode, int16]
	v_index		int64
}

nilfs_cpstat {
	cs_cno	int64
	cs_ncps	int64
	cs_nsss	int64
}

nilfs_suinfo {
	sui_lastmod	int64
	sui_nblocks	int32
	sui_flags	flags[nilfs_suinfo_flags, int32]
}

nilfs_suinfo_update {
	sup_segnum	int64
	sup_flags	flags[nilfs_suinfo_update_flags, int32]
	sup_reserved	const[0, int32]
	sup_sui		nilfs_suinfo
}

nilfs_sustat {
	ss_nsegs	int64
	ss_ncleansegs	int64
	ss_ndirtysegs	int64
	ss_ctime	int64
	ss_nongc_ctime	int64
	ss_prot_seq	int64
}

nilfs_vinfo {
	vi_vblocknr	int64
	vi_start	int64
	vi_end		int64
	vi_blocknr	int64
}

nilfs_bdesc {
	bd_ino		int64
	bd_oblocknr	int64
	bd_blocknr	int64
	bd_offset	int64
	bd_level	int32
	bd_pad		const[0, int32]
}

nilfs_ioctl_clean_segments_args {
	argv0	nilfs_argv_typed[nilfs_vdesc, in, NILFS_VDESC_SIZE]
	argv1	nilfs_argv_typed[nilfs_period, in, NILFS_PERIOD_SIZE]
	argv2	nilfs_argv_typed[int64, in, 8]
	argv3	nilfs_argv_typed[nilfs_bdesc, in, NILFS_BDESC_SIZE]
	argv4	nilfs_argv_typed[int64, in, 8]
}

nilfs_vdesc {
	vd_ino		int64
	vd_cno		int64
	vd_vblocknr	int64
	vd_period	nilfs_period
	vd_blocknr	int64
	vd_offset	int64
	vd_flags	int32
	vd_pad		const[0, int32]
}

nilfs_period {
	p_start	int64
	p_end	int64
}

nilfs_cpinfo {
	ci_flags	flags[nilfs_cpinfo_flags, int32]
	ci_pad		const[0, int32]
	ci_cno		int64
	ci_create	int64
	ci_nblk_inc	int64
	ci_inodes_count	int64
	ci_blocks_count	int64
	ci_next		int64
}

type nilfs_argv_typed[T, DIR, SIZE] {
	v_base		ptr[DIR, array[T]]
	v_nmembs	len[v_base, int32]
	v_size		const[SIZE, int16]
	v_flags		int16
	v_index		int64
}