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