| /* | |
| * (C) 2001 Clemson University and The University of Chicago | |
| * | |
| * See COPYING in top-level directory. | |
| */ | |
| /* | |
| * Definitions of downcalls used in Linux kernel module. | |
| */ | |
| #ifndef __DOWNCALL_H | |
| #define __DOWNCALL_H | |
| /* | |
| * Sanitized the device-client core interaction | |
| * for clean 32-64 bit usage | |
| */ | |
| struct orangefs_io_response { | |
| __s64 amt_complete; | |
| }; | |
| struct orangefs_lookup_response { | |
| struct orangefs_object_kref refn; | |
| }; | |
| struct orangefs_create_response { | |
| struct orangefs_object_kref refn; | |
| }; | |
| struct orangefs_symlink_response { | |
| struct orangefs_object_kref refn; | |
| }; | |
| struct orangefs_getattr_response { | |
| struct ORANGEFS_sys_attr_s attributes; | |
| char link_target[ORANGEFS_NAME_MAX]; | |
| }; | |
| struct orangefs_mkdir_response { | |
| struct orangefs_object_kref refn; | |
| }; | |
| /* | |
| * duplication of some system interface structures so that I don't have | |
| * to allocate extra memory | |
| */ | |
| struct orangefs_dirent { | |
| char *d_name; | |
| int d_length; | |
| struct orangefs_khandle khandle; | |
| }; | |
| struct orangefs_statfs_response { | |
| __s64 block_size; | |
| __s64 blocks_total; | |
| __s64 blocks_avail; | |
| __s64 files_total; | |
| __s64 files_avail; | |
| }; | |
| struct orangefs_fs_mount_response { | |
| __s32 fs_id; | |
| __s32 id; | |
| struct orangefs_khandle root_khandle; | |
| }; | |
| /* the getxattr response is the attribute value */ | |
| struct orangefs_getxattr_response { | |
| __s32 val_sz; | |
| __s32 __pad1; | |
| char val[ORANGEFS_MAX_XATTR_VALUELEN]; | |
| }; | |
| /* the listxattr response is an array of attribute names */ | |
| struct orangefs_listxattr_response { | |
| __s32 returned_count; | |
| __s32 __pad1; | |
| __u64 token; | |
| char key[ORANGEFS_MAX_XATTR_LISTLEN * ORANGEFS_MAX_XATTR_NAMELEN]; | |
| __s32 keylen; | |
| __s32 __pad2; | |
| __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN]; | |
| }; | |
| struct orangefs_param_response { | |
| union { | |
| __s64 value64; | |
| __s32 value32[2]; | |
| } u; | |
| }; | |
| #define PERF_COUNT_BUF_SIZE 4096 | |
| struct orangefs_perf_count_response { | |
| char buffer[PERF_COUNT_BUF_SIZE]; | |
| }; | |
| #define FS_KEY_BUF_SIZE 4096 | |
| struct orangefs_fs_key_response { | |
| __s32 fs_keylen; | |
| __s32 __pad1; | |
| char fs_key[FS_KEY_BUF_SIZE]; | |
| }; | |
| /* 2.9.6 */ | |
| struct orangefs_features_response { | |
| __u64 features; | |
| }; | |
| struct orangefs_downcall_s { | |
| __s32 type; | |
| __s32 status; | |
| /* currently trailer is used only by readdir */ | |
| __s64 trailer_size; | |
| char *trailer_buf; | |
| union { | |
| struct orangefs_io_response io; | |
| struct orangefs_lookup_response lookup; | |
| struct orangefs_create_response create; | |
| struct orangefs_symlink_response sym; | |
| struct orangefs_getattr_response getattr; | |
| struct orangefs_mkdir_response mkdir; | |
| struct orangefs_statfs_response statfs; | |
| struct orangefs_fs_mount_response fs_mount; | |
| struct orangefs_getxattr_response getxattr; | |
| struct orangefs_listxattr_response listxattr; | |
| struct orangefs_param_response param; | |
| struct orangefs_perf_count_response perf_count; | |
| struct orangefs_fs_key_response fs_key; | |
| struct orangefs_features_response features; | |
| } resp; | |
| }; | |
| struct orangefs_readdir_response_s { | |
| __u64 token; | |
| __u64 directory_version; | |
| __u32 __pad2; | |
| __u32 orangefs_dirent_outcount; | |
| struct orangefs_dirent *dirent_array; | |
| }; | |
| #endif /* __DOWNCALL_H */ |