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