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