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