xref: /openbmc/linux/fs/orangefs/upcall.h (revision b2441318)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2f7ab093fSMike Marshall /*
3f7ab093fSMike Marshall  * (C) 2001 Clemson University and The University of Chicago
4f7ab093fSMike Marshall  *
5f7ab093fSMike Marshall  * See COPYING in top-level directory.
6f7ab093fSMike Marshall  */
7f7ab093fSMike Marshall 
8f7ab093fSMike Marshall #ifndef __UPCALL_H
9f7ab093fSMike Marshall #define __UPCALL_H
10f7ab093fSMike Marshall 
11f7ab093fSMike Marshall /*
12f7ab093fSMike Marshall  * Sanitized this header file to fix
13f7ab093fSMike Marshall  * 32-64 bit interaction issues between
14f7ab093fSMike Marshall  * client-core and device
15f7ab093fSMike Marshall  */
168bb8aefdSYi Liu struct orangefs_io_request_s {
179c2bcf28SMartin Brandenburg 	__s32 __pad1;
18f7ab093fSMike Marshall 	__s32 buf_index;
19f7ab093fSMike Marshall 	__s32 count;
209c2bcf28SMartin Brandenburg 	__s32 __pad2;
21f7ab093fSMike Marshall 	__s64 offset;
228bb8aefdSYi Liu 	struct orangefs_object_kref refn;
238bb8aefdSYi Liu 	enum ORANGEFS_io_type io_type;
24f7ab093fSMike Marshall 	__s32 readahead_size;
25f7ab093fSMike Marshall };
26f7ab093fSMike Marshall 
278bb8aefdSYi Liu struct orangefs_lookup_request_s {
28f7ab093fSMike Marshall 	__s32 sym_follow;
29f7ab093fSMike Marshall 	__s32 __pad1;
308bb8aefdSYi Liu 	struct orangefs_object_kref parent_refn;
3147b4948fSMartin Brandenburg 	char d_name[ORANGEFS_NAME_MAX];
32f7ab093fSMike Marshall };
33f7ab093fSMike Marshall 
348bb8aefdSYi Liu struct orangefs_create_request_s {
358bb8aefdSYi Liu 	struct orangefs_object_kref parent_refn;
368bb8aefdSYi Liu 	struct ORANGEFS_sys_attr_s attributes;
3747b4948fSMartin Brandenburg 	char d_name[ORANGEFS_NAME_MAX];
38f7ab093fSMike Marshall };
39f7ab093fSMike Marshall 
408bb8aefdSYi Liu struct orangefs_symlink_request_s {
418bb8aefdSYi Liu 	struct orangefs_object_kref parent_refn;
428bb8aefdSYi Liu 	struct ORANGEFS_sys_attr_s attributes;
4347b4948fSMartin Brandenburg 	char entry_name[ORANGEFS_NAME_MAX];
4447b4948fSMartin Brandenburg 	char target[ORANGEFS_NAME_MAX];
45f7ab093fSMike Marshall };
46f7ab093fSMike Marshall 
478bb8aefdSYi Liu struct orangefs_getattr_request_s {
488bb8aefdSYi Liu 	struct orangefs_object_kref refn;
49f7ab093fSMike Marshall 	__u32 mask;
50f7ab093fSMike Marshall 	__u32 __pad1;
51f7ab093fSMike Marshall };
52f7ab093fSMike Marshall 
538bb8aefdSYi Liu struct orangefs_setattr_request_s {
548bb8aefdSYi Liu 	struct orangefs_object_kref refn;
558bb8aefdSYi Liu 	struct ORANGEFS_sys_attr_s attributes;
56f7ab093fSMike Marshall };
57f7ab093fSMike Marshall 
588bb8aefdSYi Liu struct orangefs_remove_request_s {
598bb8aefdSYi Liu 	struct orangefs_object_kref parent_refn;
6047b4948fSMartin Brandenburg 	char d_name[ORANGEFS_NAME_MAX];
61f7ab093fSMike Marshall };
62f7ab093fSMike Marshall 
638bb8aefdSYi Liu struct orangefs_mkdir_request_s {
648bb8aefdSYi Liu 	struct orangefs_object_kref parent_refn;
658bb8aefdSYi Liu 	struct ORANGEFS_sys_attr_s attributes;
6647b4948fSMartin Brandenburg 	char d_name[ORANGEFS_NAME_MAX];
67f7ab093fSMike Marshall };
68f7ab093fSMike Marshall 
698bb8aefdSYi Liu struct orangefs_readdir_request_s {
708bb8aefdSYi Liu 	struct orangefs_object_kref refn;
71f7ab093fSMike Marshall 	__u64 token;
72f7ab093fSMike Marshall 	__s32 max_dirent_count;
73f7ab093fSMike Marshall 	__s32 buf_index;
74f7ab093fSMike Marshall };
75f7ab093fSMike Marshall 
768bb8aefdSYi Liu struct orangefs_readdirplus_request_s {
778bb8aefdSYi Liu 	struct orangefs_object_kref refn;
78f7ab093fSMike Marshall 	__u64 token;
79f7ab093fSMike Marshall 	__s32 max_dirent_count;
80f7ab093fSMike Marshall 	__u32 mask;
81f7ab093fSMike Marshall 	__s32 buf_index;
82f7ab093fSMike Marshall 	__s32 __pad1;
83f7ab093fSMike Marshall };
84f7ab093fSMike Marshall 
858bb8aefdSYi Liu struct orangefs_rename_request_s {
868bb8aefdSYi Liu 	struct orangefs_object_kref old_parent_refn;
878bb8aefdSYi Liu 	struct orangefs_object_kref new_parent_refn;
8847b4948fSMartin Brandenburg 	char d_old_name[ORANGEFS_NAME_MAX];
8947b4948fSMartin Brandenburg 	char d_new_name[ORANGEFS_NAME_MAX];
90f7ab093fSMike Marshall };
91f7ab093fSMike Marshall 
928bb8aefdSYi Liu struct orangefs_statfs_request_s {
93f7ab093fSMike Marshall 	__s32 fs_id;
94f7ab093fSMike Marshall 	__s32 __pad1;
95f7ab093fSMike Marshall };
96f7ab093fSMike Marshall 
978bb8aefdSYi Liu struct orangefs_truncate_request_s {
988bb8aefdSYi Liu 	struct orangefs_object_kref refn;
99f7ab093fSMike Marshall 	__s64 size;
100f7ab093fSMike Marshall };
101f7ab093fSMike Marshall 
1026eaff8c7SMartin Brandenburg struct orangefs_ra_cache_flush_request_s {
1038bb8aefdSYi Liu 	struct orangefs_object_kref refn;
104f7ab093fSMike Marshall };
105f7ab093fSMike Marshall 
1068bb8aefdSYi Liu struct orangefs_fs_mount_request_s {
1078bb8aefdSYi Liu 	char orangefs_config_server[ORANGEFS_MAX_SERVER_ADDR_LEN];
108f7ab093fSMike Marshall };
109f7ab093fSMike Marshall 
1108bb8aefdSYi Liu struct orangefs_fs_umount_request_s {
111f7ab093fSMike Marshall 	__s32 id;
112f7ab093fSMike Marshall 	__s32 fs_id;
1138bb8aefdSYi Liu 	char orangefs_config_server[ORANGEFS_MAX_SERVER_ADDR_LEN];
114f7ab093fSMike Marshall };
115f7ab093fSMike Marshall 
1168bb8aefdSYi Liu struct orangefs_getxattr_request_s {
1178bb8aefdSYi Liu 	struct orangefs_object_kref refn;
118f7ab093fSMike Marshall 	__s32 key_sz;
119f7ab093fSMike Marshall 	__s32 __pad1;
1208bb8aefdSYi Liu 	char key[ORANGEFS_MAX_XATTR_NAMELEN];
121f7ab093fSMike Marshall };
122f7ab093fSMike Marshall 
1238bb8aefdSYi Liu struct orangefs_setxattr_request_s {
1248bb8aefdSYi Liu 	struct orangefs_object_kref refn;
1258bb8aefdSYi Liu 	struct ORANGEFS_keyval_pair keyval;
126f7ab093fSMike Marshall 	__s32 flags;
127f7ab093fSMike Marshall 	__s32 __pad1;
128f7ab093fSMike Marshall };
129f7ab093fSMike Marshall 
1308bb8aefdSYi Liu struct orangefs_listxattr_request_s {
1318bb8aefdSYi Liu 	struct orangefs_object_kref refn;
132f7ab093fSMike Marshall 	__s32 requested_count;
133f7ab093fSMike Marshall 	__s32 __pad1;
134f7ab093fSMike Marshall 	__u64 token;
135f7ab093fSMike Marshall };
136f7ab093fSMike Marshall 
1378bb8aefdSYi Liu struct orangefs_removexattr_request_s {
1388bb8aefdSYi Liu 	struct orangefs_object_kref refn;
139f7ab093fSMike Marshall 	__s32 key_sz;
140f7ab093fSMike Marshall 	__s32 __pad1;
1418bb8aefdSYi Liu 	char key[ORANGEFS_MAX_XATTR_NAMELEN];
142f7ab093fSMike Marshall };
143f7ab093fSMike Marshall 
1448bb8aefdSYi Liu struct orangefs_op_cancel_s {
145f7ab093fSMike Marshall 	__u64 op_tag;
146f7ab093fSMike Marshall };
147f7ab093fSMike Marshall 
1488bb8aefdSYi Liu struct orangefs_fsync_request_s {
1498bb8aefdSYi Liu 	struct orangefs_object_kref refn;
150f7ab093fSMike Marshall };
151f7ab093fSMike Marshall 
1528bb8aefdSYi Liu enum orangefs_param_request_type {
1538bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_SET = 1,
1548bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_GET = 2
155f7ab093fSMike Marshall };
156f7ab093fSMike Marshall 
1578bb8aefdSYi Liu enum orangefs_param_request_op {
1588bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_ACACHE_TIMEOUT_MSECS = 1,
1598bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_ACACHE_HARD_LIMIT = 2,
1608bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_ACACHE_SOFT_LIMIT = 3,
1618bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_ACACHE_RECLAIM_PERCENTAGE = 4,
1628bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_PERF_TIME_INTERVAL_SECS = 5,
1638bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_PERF_HISTORY_SIZE = 6,
1648bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_PERF_RESET = 7,
1658bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_NCACHE_TIMEOUT_MSECS = 8,
1668bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_NCACHE_HARD_LIMIT = 9,
1678bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_NCACHE_SOFT_LIMIT = 10,
1688bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_NCACHE_RECLAIM_PERCENTAGE = 11,
1698bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_TIMEOUT_MSECS = 12,
1708bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_HARD_LIMIT = 13,
1718bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_SOFT_LIMIT = 14,
1728bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_STATIC_ACACHE_RECLAIM_PERCENTAGE = 15,
1738bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CLIENT_DEBUG = 16,
1748bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CCACHE_TIMEOUT_SECS = 17,
1758bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CCACHE_HARD_LIMIT = 18,
1768bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CCACHE_SOFT_LIMIT = 19,
1778bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CCACHE_RECLAIM_PERCENTAGE = 20,
1788bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_TIMEOUT_SECS = 21,
1798bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_HARD_LIMIT = 22,
1808bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_SOFT_LIMIT = 23,
1818bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_CAPCACHE_RECLAIM_PERCENTAGE = 24,
1828bb8aefdSYi Liu 	ORANGEFS_PARAM_REQUEST_OP_TWO_MASK_VALUES = 25,
183a6dff80aSMartin Brandenburg 	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_SIZE = 26,
184a6dff80aSMartin Brandenburg 	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT = 27,
185a6dff80aSMartin Brandenburg 	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_COUNT_SIZE = 28,
18631c829f3SMartin Brandenburg 	ORANGEFS_PARAM_REQUEST_OP_READAHEAD_READCNT = 29,
187f7ab093fSMike Marshall };
188f7ab093fSMike Marshall 
1898bb8aefdSYi Liu struct orangefs_param_request_s {
1908bb8aefdSYi Liu 	enum orangefs_param_request_type type;
1918bb8aefdSYi Liu 	enum orangefs_param_request_op op;
192680908e5SMartin Brandenburg 	union {
193680908e5SMartin Brandenburg 		__s64 value64;
194680908e5SMartin Brandenburg 		__s32 value32[2];
195680908e5SMartin Brandenburg 	} u;
1968bb8aefdSYi Liu 	char s_value[ORANGEFS_MAX_DEBUG_STRING_LEN];
197f7ab093fSMike Marshall };
198f7ab093fSMike Marshall 
1998bb8aefdSYi Liu enum orangefs_perf_count_request_type {
2008bb8aefdSYi Liu 	ORANGEFS_PERF_COUNT_REQUEST_ACACHE = 1,
2018bb8aefdSYi Liu 	ORANGEFS_PERF_COUNT_REQUEST_NCACHE = 2,
2028bb8aefdSYi Liu 	ORANGEFS_PERF_COUNT_REQUEST_CAPCACHE = 3,
203f7ab093fSMike Marshall };
204f7ab093fSMike Marshall 
2058bb8aefdSYi Liu struct orangefs_perf_count_request_s {
2068bb8aefdSYi Liu 	enum orangefs_perf_count_request_type type;
207f7ab093fSMike Marshall 	__s32 __pad1;
208f7ab093fSMike Marshall };
209f7ab093fSMike Marshall 
2108bb8aefdSYi Liu struct orangefs_fs_key_request_s {
211f7ab093fSMike Marshall 	__s32 fsid;
212f7ab093fSMike Marshall 	__s32 __pad1;
213f7ab093fSMike Marshall };
214f7ab093fSMike Marshall 
215482664ddSMartin Brandenburg /* 2.9.6 */
216482664ddSMartin Brandenburg struct orangefs_features_request_s {
217482664ddSMartin Brandenburg 	__u64 features;
218482664ddSMartin Brandenburg };
219482664ddSMartin Brandenburg 
2208bb8aefdSYi Liu struct orangefs_upcall_s {
221f7ab093fSMike Marshall 	__s32 type;
222f7ab093fSMike Marshall 	__u32 uid;
223f7ab093fSMike Marshall 	__u32 gid;
224f7ab093fSMike Marshall 	int pid;
225f7ab093fSMike Marshall 	int tgid;
226f0ed4418SMartin Brandenburg 	/* Trailers unused but must be retained for protocol compatibility. */
227f7ab093fSMike Marshall 	__s64 trailer_size;
228f7ab093fSMike Marshall 	char *trailer_buf;
229f7ab093fSMike Marshall 
230f7ab093fSMike Marshall 	union {
2318bb8aefdSYi Liu 		struct orangefs_io_request_s io;
2328bb8aefdSYi Liu 		struct orangefs_lookup_request_s lookup;
2338bb8aefdSYi Liu 		struct orangefs_create_request_s create;
2348bb8aefdSYi Liu 		struct orangefs_symlink_request_s sym;
2358bb8aefdSYi Liu 		struct orangefs_getattr_request_s getattr;
2368bb8aefdSYi Liu 		struct orangefs_setattr_request_s setattr;
2378bb8aefdSYi Liu 		struct orangefs_remove_request_s remove;
2388bb8aefdSYi Liu 		struct orangefs_mkdir_request_s mkdir;
2398bb8aefdSYi Liu 		struct orangefs_readdir_request_s readdir;
2408bb8aefdSYi Liu 		struct orangefs_readdirplus_request_s readdirplus;
2418bb8aefdSYi Liu 		struct orangefs_rename_request_s rename;
2428bb8aefdSYi Liu 		struct orangefs_statfs_request_s statfs;
2438bb8aefdSYi Liu 		struct orangefs_truncate_request_s truncate;
2446eaff8c7SMartin Brandenburg 		struct orangefs_ra_cache_flush_request_s ra_cache_flush;
2458bb8aefdSYi Liu 		struct orangefs_fs_mount_request_s fs_mount;
2468bb8aefdSYi Liu 		struct orangefs_fs_umount_request_s fs_umount;
2478bb8aefdSYi Liu 		struct orangefs_getxattr_request_s getxattr;
2488bb8aefdSYi Liu 		struct orangefs_setxattr_request_s setxattr;
2498bb8aefdSYi Liu 		struct orangefs_listxattr_request_s listxattr;
2508bb8aefdSYi Liu 		struct orangefs_removexattr_request_s removexattr;
2518bb8aefdSYi Liu 		struct orangefs_op_cancel_s cancel;
2528bb8aefdSYi Liu 		struct orangefs_fsync_request_s fsync;
2538bb8aefdSYi Liu 		struct orangefs_param_request_s param;
2548bb8aefdSYi Liu 		struct orangefs_perf_count_request_s perf_count;
2558bb8aefdSYi Liu 		struct orangefs_fs_key_request_s fs_key;
256482664ddSMartin Brandenburg 		struct orangefs_features_request_s features;
257f7ab093fSMike Marshall 	} req;
258f7ab093fSMike Marshall };
259f7ab093fSMike Marshall 
260f7ab093fSMike Marshall #endif /* __UPCALL_H */
261