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