1/* 2 * (C) 2001 Clemson University and The University of Chicago 3 * 4 * See COPYING in top-level directory. 5 */ 6 7/* 8 * Definitions of downcalls used in Linux kernel module. 9 */ 10 11#ifndef __DOWNCALL_H 12#define __DOWNCALL_H 13 14/* 15 * Sanitized the device-client core interaction 16 * for clean 32-64 bit usage 17 */ 18struct orangefs_io_response { 19 __s64 amt_complete; 20}; 21 22struct orangefs_lookup_response { 23 struct orangefs_object_kref refn; 24}; 25 26struct orangefs_create_response { 27 struct orangefs_object_kref refn; 28}; 29 30struct orangefs_symlink_response { 31 struct orangefs_object_kref refn; 32}; 33 34struct orangefs_getattr_response { 35 struct ORANGEFS_sys_attr_s attributes; 36 char link_target[ORANGEFS_NAME_MAX]; 37}; 38 39struct orangefs_mkdir_response { 40 struct orangefs_object_kref refn; 41}; 42 43/* 44 * duplication of some system interface structures so that I don't have 45 * to allocate extra memory 46 */ 47struct orangefs_dirent { 48 char *d_name; 49 int d_length; 50 struct orangefs_khandle khandle; 51}; 52 53struct orangefs_statfs_response { 54 __s64 block_size; 55 __s64 blocks_total; 56 __s64 blocks_avail; 57 __s64 files_total; 58 __s64 files_avail; 59}; 60 61struct orangefs_fs_mount_response { 62 __s32 fs_id; 63 __s32 id; 64 struct orangefs_khandle root_khandle; 65}; 66 67/* the getxattr response is the attribute value */ 68struct orangefs_getxattr_response { 69 __s32 val_sz; 70 __s32 __pad1; 71 char val[ORANGEFS_MAX_XATTR_VALUELEN]; 72}; 73 74/* the listxattr response is an array of attribute names */ 75struct orangefs_listxattr_response { 76 __s32 returned_count; 77 __s32 __pad1; 78 __u64 token; 79 char key[ORANGEFS_MAX_XATTR_LISTLEN * ORANGEFS_MAX_XATTR_NAMELEN]; 80 __s32 keylen; 81 __s32 __pad2; 82 __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN]; 83}; 84 85struct orangefs_param_response { 86 union { 87 __s64 value64; 88 __s32 value32[2]; 89 } u; 90}; 91 92#define PERF_COUNT_BUF_SIZE 4096 93struct orangefs_perf_count_response { 94 char buffer[PERF_COUNT_BUF_SIZE]; 95}; 96 97#define FS_KEY_BUF_SIZE 4096 98struct orangefs_fs_key_response { 99 __s32 fs_keylen; 100 __s32 __pad1; 101 char fs_key[FS_KEY_BUF_SIZE]; 102}; 103 104/* 2.9.6 */ 105struct orangefs_features_response { 106 __u64 features; 107}; 108 109struct orangefs_downcall_s { 110 __s32 type; 111 __s32 status; 112 /* currently trailer is used only by readdir */ 113 __s64 trailer_size; 114 char *trailer_buf; 115 116 union { 117 struct orangefs_io_response io; 118 struct orangefs_lookup_response lookup; 119 struct orangefs_create_response create; 120 struct orangefs_symlink_response sym; 121 struct orangefs_getattr_response getattr; 122 struct orangefs_mkdir_response mkdir; 123 struct orangefs_statfs_response statfs; 124 struct orangefs_fs_mount_response fs_mount; 125 struct orangefs_getxattr_response getxattr; 126 struct orangefs_listxattr_response listxattr; 127 struct orangefs_param_response param; 128 struct orangefs_perf_count_response perf_count; 129 struct orangefs_fs_key_response fs_key; 130 struct orangefs_features_response features; 131 } resp; 132}; 133 134struct orangefs_readdir_response_s { 135 __u64 token; 136 __u64 directory_version; 137 __u32 __pad2; 138 __u32 orangefs_dirent_outcount; 139 struct orangefs_dirent *dirent_array; 140}; 141 142#endif /* __DOWNCALL_H */ 143