1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 2f7ab093fSMike Marshall /* 3f7ab093fSMike Marshall * (C) 2001 Clemson University and The University of Chicago 4f7ab093fSMike Marshall * 5f7ab093fSMike Marshall * See COPYING in top-level directory. 6f7ab093fSMike Marshall */ 7f7ab093fSMike Marshall 8f7ab093fSMike Marshall /* 9f7ab093fSMike Marshall * Definitions of downcalls used in Linux kernel module. 10f7ab093fSMike Marshall */ 11f7ab093fSMike Marshall 12f7ab093fSMike Marshall #ifndef __DOWNCALL_H 13f7ab093fSMike Marshall #define __DOWNCALL_H 14f7ab093fSMike Marshall 15f7ab093fSMike Marshall /* 16f7ab093fSMike Marshall * Sanitized the device-client core interaction 17f7ab093fSMike Marshall * for clean 32-64 bit usage 18f7ab093fSMike Marshall */ 198bb8aefdSYi Liu struct orangefs_io_response { 20f7ab093fSMike Marshall __s64 amt_complete; 21f7ab093fSMike Marshall }; 22f7ab093fSMike Marshall 238bb8aefdSYi Liu struct orangefs_lookup_response { 248bb8aefdSYi Liu struct orangefs_object_kref refn; 25f7ab093fSMike Marshall }; 26f7ab093fSMike Marshall 278bb8aefdSYi Liu struct orangefs_create_response { 288bb8aefdSYi Liu struct orangefs_object_kref refn; 29f7ab093fSMike Marshall }; 30f7ab093fSMike Marshall 318bb8aefdSYi Liu struct orangefs_symlink_response { 328bb8aefdSYi Liu struct orangefs_object_kref refn; 33f7ab093fSMike Marshall }; 34f7ab093fSMike Marshall 358bb8aefdSYi Liu struct orangefs_getattr_response { 368bb8aefdSYi Liu struct ORANGEFS_sys_attr_s attributes; 3747b4948fSMartin Brandenburg char link_target[ORANGEFS_NAME_MAX]; 38f7ab093fSMike Marshall }; 39f7ab093fSMike Marshall 408bb8aefdSYi Liu struct orangefs_mkdir_response { 418bb8aefdSYi Liu struct orangefs_object_kref refn; 42f7ab093fSMike Marshall }; 43f7ab093fSMike Marshall 448bb8aefdSYi Liu struct orangefs_statfs_response { 45f7ab093fSMike Marshall __s64 block_size; 46f7ab093fSMike Marshall __s64 blocks_total; 47f7ab093fSMike Marshall __s64 blocks_avail; 48f7ab093fSMike Marshall __s64 files_total; 49f7ab093fSMike Marshall __s64 files_avail; 50f7ab093fSMike Marshall }; 51f7ab093fSMike Marshall 528bb8aefdSYi Liu struct orangefs_fs_mount_response { 53f7ab093fSMike Marshall __s32 fs_id; 54f7ab093fSMike Marshall __s32 id; 558bb8aefdSYi Liu struct orangefs_khandle root_khandle; 56f7ab093fSMike Marshall }; 57f7ab093fSMike Marshall 58f7ab093fSMike Marshall /* the getxattr response is the attribute value */ 598bb8aefdSYi Liu struct orangefs_getxattr_response { 60f7ab093fSMike Marshall __s32 val_sz; 61f7ab093fSMike Marshall __s32 __pad1; 628bb8aefdSYi Liu char val[ORANGEFS_MAX_XATTR_VALUELEN]; 63f7ab093fSMike Marshall }; 64f7ab093fSMike Marshall 65f7ab093fSMike Marshall /* the listxattr response is an array of attribute names */ 668bb8aefdSYi Liu struct orangefs_listxattr_response { 67f7ab093fSMike Marshall __s32 returned_count; 68f7ab093fSMike Marshall __s32 __pad1; 69f7ab093fSMike Marshall __u64 token; 708bb8aefdSYi Liu char key[ORANGEFS_MAX_XATTR_LISTLEN * ORANGEFS_MAX_XATTR_NAMELEN]; 71f7ab093fSMike Marshall __s32 keylen; 72f7ab093fSMike Marshall __s32 __pad2; 738bb8aefdSYi Liu __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN]; 74f7ab093fSMike Marshall }; 75f7ab093fSMike Marshall 768bb8aefdSYi Liu struct orangefs_param_response { 77680908e5SMartin Brandenburg union { 78680908e5SMartin Brandenburg __s64 value64; 79680908e5SMartin Brandenburg __s32 value32[2]; 80680908e5SMartin Brandenburg } u; 81f7ab093fSMike Marshall }; 82f7ab093fSMike Marshall 83f7ab093fSMike Marshall #define PERF_COUNT_BUF_SIZE 4096 848bb8aefdSYi Liu struct orangefs_perf_count_response { 85f7ab093fSMike Marshall char buffer[PERF_COUNT_BUF_SIZE]; 86f7ab093fSMike Marshall }; 87f7ab093fSMike Marshall 88f7ab093fSMike Marshall #define FS_KEY_BUF_SIZE 4096 898bb8aefdSYi Liu struct orangefs_fs_key_response { 90f7ab093fSMike Marshall __s32 fs_keylen; 91f7ab093fSMike Marshall __s32 __pad1; 92f7ab093fSMike Marshall char fs_key[FS_KEY_BUF_SIZE]; 93f7ab093fSMike Marshall }; 94f7ab093fSMike Marshall 95482664ddSMartin Brandenburg /* 2.9.6 */ 96482664ddSMartin Brandenburg struct orangefs_features_response { 97482664ddSMartin Brandenburg __u64 features; 98482664ddSMartin Brandenburg }; 99482664ddSMartin Brandenburg 1008bb8aefdSYi Liu struct orangefs_downcall_s { 101f7ab093fSMike Marshall __s32 type; 102f7ab093fSMike Marshall __s32 status; 103f7ab093fSMike Marshall /* currently trailer is used only by readdir */ 104f7ab093fSMike Marshall __s64 trailer_size; 105f7ab093fSMike Marshall char *trailer_buf; 106f7ab093fSMike Marshall 107f7ab093fSMike Marshall union { 1088bb8aefdSYi Liu struct orangefs_io_response io; 1098bb8aefdSYi Liu struct orangefs_lookup_response lookup; 1108bb8aefdSYi Liu struct orangefs_create_response create; 1118bb8aefdSYi Liu struct orangefs_symlink_response sym; 1128bb8aefdSYi Liu struct orangefs_getattr_response getattr; 1138bb8aefdSYi Liu struct orangefs_mkdir_response mkdir; 1148bb8aefdSYi Liu struct orangefs_statfs_response statfs; 1158bb8aefdSYi Liu struct orangefs_fs_mount_response fs_mount; 1168bb8aefdSYi Liu struct orangefs_getxattr_response getxattr; 1178bb8aefdSYi Liu struct orangefs_listxattr_response listxattr; 1188bb8aefdSYi Liu struct orangefs_param_response param; 1198bb8aefdSYi Liu struct orangefs_perf_count_response perf_count; 1208bb8aefdSYi Liu struct orangefs_fs_key_response fs_key; 121482664ddSMartin Brandenburg struct orangefs_features_response features; 122f7ab093fSMike Marshall } resp; 123f7ab093fSMike Marshall }; 124f7ab093fSMike Marshall 125382f4581SMartin Brandenburg /* 126382f4581SMartin Brandenburg * The readdir response comes in the trailer. It is followed by the 127382f4581SMartin Brandenburg * directory entries as described in dir.c. 128382f4581SMartin Brandenburg */ 129382f4581SMartin Brandenburg 1308bb8aefdSYi Liu struct orangefs_readdir_response_s { 131f7ab093fSMike Marshall __u64 token; 132f7ab093fSMike Marshall __u64 directory_version; 133f7ab093fSMike Marshall __u32 __pad2; 1348bb8aefdSYi Liu __u32 orangefs_dirent_outcount; 135f7ab093fSMike Marshall }; 136f7ab093fSMike Marshall 137f7ab093fSMike Marshall #endif /* __DOWNCALL_H */ 138