xref: /linux/fs/orangefs/upcall.h (revision 95298d63c67673c654c08952672d016212b26054)
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 */
261