GNU Linux-libre 4.19.211-gnu1
[releases.git] / fs / orangefs / upcall.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * (C) 2001 Clemson University and The University of Chicago
4  *
5  * See COPYING in top-level directory.
6  */
7
8 #ifndef __UPCALL_H
9 #define __UPCALL_H
10
11 /*
12  * Sanitized this header file to fix
13  * 32-64 bit interaction issues between
14  * client-core and device
15  */
16 struct orangefs_io_request_s {
17         __s32 __pad1;
18         __s32 buf_index;
19         __s32 count;
20         __s32 __pad2;
21         __s64 offset;
22         struct orangefs_object_kref refn;
23         enum ORANGEFS_io_type io_type;
24         __s32 readahead_size;
25 };
26
27 struct orangefs_lookup_request_s {
28         __s32 sym_follow;
29         __s32 __pad1;
30         struct orangefs_object_kref parent_refn;
31         char d_name[ORANGEFS_NAME_MAX];
32 };
33
34 struct orangefs_create_request_s {
35         struct orangefs_object_kref parent_refn;
36         struct ORANGEFS_sys_attr_s attributes;
37         char d_name[ORANGEFS_NAME_MAX];
38 };
39
40 struct orangefs_symlink_request_s {
41         struct orangefs_object_kref parent_refn;
42         struct ORANGEFS_sys_attr_s attributes;
43         char entry_name[ORANGEFS_NAME_MAX];
44         char target[ORANGEFS_NAME_MAX];
45 };
46
47 struct orangefs_getattr_request_s {
48         struct orangefs_object_kref refn;
49         __u32 mask;
50         __u32 __pad1;
51 };
52
53 struct orangefs_setattr_request_s {
54         struct orangefs_object_kref refn;
55         struct ORANGEFS_sys_attr_s attributes;
56 };
57
58 struct orangefs_remove_request_s {
59         struct orangefs_object_kref parent_refn;
60         char d_name[ORANGEFS_NAME_MAX];
61 };
62
63 struct orangefs_mkdir_request_s {
64         struct orangefs_object_kref parent_refn;
65         struct ORANGEFS_sys_attr_s attributes;
66         char d_name[ORANGEFS_NAME_MAX];
67 };
68
69 struct orangefs_readdir_request_s {
70         struct orangefs_object_kref refn;
71         __u64 token;
72         __s32 max_dirent_count;
73         __s32 buf_index;
74 };
75
76 struct orangefs_readdirplus_request_s {
77         struct orangefs_object_kref refn;
78         __u64 token;
79         __s32 max_dirent_count;
80         __u32 mask;
81         __s32 buf_index;
82         __s32 __pad1;
83 };
84
85 struct orangefs_rename_request_s {
86         struct orangefs_object_kref old_parent_refn;
87         struct orangefs_object_kref new_parent_refn;
88         char d_old_name[ORANGEFS_NAME_MAX];
89         char d_new_name[ORANGEFS_NAME_MAX];
90 };
91
92 struct orangefs_statfs_request_s {
93         __s32 fs_id;
94         __s32 __pad1;
95 };
96
97 struct orangefs_truncate_request_s {
98         struct orangefs_object_kref refn;
99         __s64 size;
100 };
101
102 struct orangefs_ra_cache_flush_request_s {
103         struct orangefs_object_kref refn;
104 };
105
106 struct orangefs_fs_mount_request_s {
107         char orangefs_config_server[ORANGEFS_MAX_SERVER_ADDR_LEN];
108 };
109
110 struct orangefs_fs_umount_request_s {
111         __s32 id;
112         __s32 fs_id;
113         char orangefs_config_server[ORANGEFS_MAX_SERVER_ADDR_LEN];
114 };
115
116 struct orangefs_getxattr_request_s {
117         struct orangefs_object_kref refn;
118         __s32 key_sz;
119         __s32 __pad1;
120         char key[ORANGEFS_MAX_XATTR_NAMELEN];
121 };
122
123 struct orangefs_setxattr_request_s {
124         struct orangefs_object_kref refn;
125         struct ORANGEFS_keyval_pair keyval;
126         __s32 flags;
127         __s32 __pad1;
128 };
129
130 struct orangefs_listxattr_request_s {
131         struct orangefs_object_kref refn;
132         __s32 requested_count;
133         __s32 __pad1;
134         __u64 token;
135 };
136
137 struct orangefs_removexattr_request_s {
138         struct orangefs_object_kref refn;
139         __s32 key_sz;
140         __s32 __pad1;
141         char key[ORANGEFS_MAX_XATTR_NAMELEN];
142 };
143
144 struct orangefs_op_cancel_s {
145         __u64 op_tag;
146 };
147
148 struct orangefs_fsync_request_s {
149         struct orangefs_object_kref refn;
150 };
151
152 enum orangefs_param_request_type {
153         ORANGEFS_PARAM_REQUEST_SET = 1,
154         ORANGEFS_PARAM_REQUEST_GET = 2
155 };
156
157 enum orangefs_param_request_op {
158         ORANGEFS_PARAM_REQUEST_OP_ACACHE_TIMEOUT_MSECS = 1,
159         ORANGEFS_PARAM_REQUEST_OP_ACACHE_HARD_LIMIT = 2,
160         ORANGEFS_PARAM_REQUEST_OP_ACACHE_SOFT_LIMIT = 3,
161         ORANGEFS_PARAM_REQUEST_OP_ACACHE_RECLAIM_PERCENTAGE = 4,
162         ORANGEFS_PARAM_REQUEST_OP_PERF_TIME_INTERVAL_SECS = 5,
163         ORANGEFS_PARAM_REQUEST_OP_PERF_HISTORY_SIZE = 6,
164         ORANGEFS_PARAM_REQUEST_OP_PERF_RESET = 7,
165         ORANGEFS_PARAM_REQUEST_OP_NCACHE_TIMEOUT_MSECS = 8,
166         ORANGEFS_PARAM_REQUEST_OP_NCACHE_HARD_LIMIT = 9,
167         ORANGEFS_PARAM_REQUEST_OP_NCACHE_SOFT_LIMIT = 10,
168         ORANGEFS_PARAM_REQUEST_OP_NCACHE_RECLAIM_PERCENTAGE = 11,
169         ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_TIMEOUT_MSECS = 12,
170         ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_HARD_LIMIT = 13,
171         ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_SOFT_LIMIT = 14,
172         ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_RECLAIM_PERCENTAGE = 15,
173         ORANGEFS_PARAM_REQUEST_OP_CLIENT_DEBUG = 16,
174         ORANGEFS_PARAM_REQUEST_OP_CCACHE_TIMEOUT_SECS = 17,
175         ORANGEFS_PARAM_REQUEST_OP_CCACHE_HARD_LIMIT = 18,
176         ORANGEFS_PARAM_REQUEST_OP_CCACHE_SOFT_LIMIT = 19,
177         ORANGEFS_PARAM_REQUEST_OP_CCACHE_RECLAIM_PERCENTAGE = 20,
178         ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_TIMEOUT_SECS = 21,
179         ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_HARD_LIMIT = 22,
180         ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_SOFT_LIMIT = 23,
181         ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_RECLAIM_PERCENTAGE = 24,
182         ORANGEFS_PARAM_REQUEST_OP_TWO_MASK_VALUES = 25,
183         ORANGEFS_PARAM_REQUEST_OP_READAHEAD_SIZE = 26,
184         ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT = 27,
185         ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT_SIZE = 28,
186         ORANGEFS_PARAM_REQUEST_OP_READAHEAD_READCNT = 29,
187 };
188
189 struct orangefs_param_request_s {
190         enum orangefs_param_request_type type;
191         enum orangefs_param_request_op op;
192         union {
193                 __s64 value64;
194                 __s32 value32[2];
195         } u;
196         char s_value[ORANGEFS_MAX_DEBUG_STRING_LEN];
197 };
198
199 enum orangefs_perf_count_request_type {
200         ORANGEFS_PERF_COUNT_REQUEST_ACACHE = 1,
201         ORANGEFS_PERF_COUNT_REQUEST_NCACHE = 2,
202         ORANGEFS_PERF_COUNT_REQUEST_CAPCACHE = 3,
203 };
204
205 struct orangefs_perf_count_request_s {
206         enum orangefs_perf_count_request_type type;
207         __s32 __pad1;
208 };
209
210 struct orangefs_fs_key_request_s {
211         __s32 fsid;
212         __s32 __pad1;
213 };
214
215 /* 2.9.6 */
216 struct orangefs_features_request_s {
217         __u64 features;
218 };
219
220 struct orangefs_upcall_s {
221         __s32 type;
222         __u32 uid;
223         __u32 gid;
224         int pid;
225         int tgid;
226         /* Trailers unused but must be retained for protocol compatibility. */
227         __s64 trailer_size;
228         char *trailer_buf;
229
230         union {
231                 struct orangefs_io_request_s io;
232                 struct orangefs_lookup_request_s lookup;
233                 struct orangefs_create_request_s create;
234                 struct orangefs_symlink_request_s sym;
235                 struct orangefs_getattr_request_s getattr;
236                 struct orangefs_setattr_request_s setattr;
237                 struct orangefs_remove_request_s remove;
238                 struct orangefs_mkdir_request_s mkdir;
239                 struct orangefs_readdir_request_s readdir;
240                 struct orangefs_readdirplus_request_s readdirplus;
241                 struct orangefs_rename_request_s rename;
242                 struct orangefs_statfs_request_s statfs;
243                 struct orangefs_truncate_request_s truncate;
244                 struct orangefs_ra_cache_flush_request_s ra_cache_flush;
245                 struct orangefs_fs_mount_request_s fs_mount;
246                 struct orangefs_fs_umount_request_s fs_umount;
247                 struct orangefs_getxattr_request_s getxattr;
248                 struct orangefs_setxattr_request_s setxattr;
249                 struct orangefs_listxattr_request_s listxattr;
250                 struct orangefs_removexattr_request_s removexattr;
251                 struct orangefs_op_cancel_s cancel;
252                 struct orangefs_fsync_request_s fsync;
253                 struct orangefs_param_request_s param;
254                 struct orangefs_perf_count_request_s perf_count;
255                 struct orangefs_fs_key_request_s fs_key;
256                 struct orangefs_features_request_s features;
257         } req;
258 };
259
260 #endif /* __UPCALL_H */