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 | */ |
19 | struct orangefs_io_response { |
20 | __s64 amt_complete; |
21 | }; |
22 | |
23 | struct orangefs_lookup_response { |
24 | struct orangefs_object_kref refn; |
25 | }; |
26 | |
27 | struct orangefs_create_response { |
28 | struct orangefs_object_kref refn; |
29 | }; |
30 | |
31 | struct orangefs_symlink_response { |
32 | struct orangefs_object_kref refn; |
33 | }; |
34 | |
35 | struct orangefs_getattr_response { |
36 | struct ORANGEFS_sys_attr_s attributes; |
37 | char link_target[ORANGEFS_NAME_MAX]; |
38 | }; |
39 | |
40 | struct orangefs_mkdir_response { |
41 | struct orangefs_object_kref refn; |
42 | }; |
43 | |
44 | struct 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 | |
52 | struct 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 */ |
59 | struct 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 */ |
66 | struct 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 | |
76 | struct orangefs_param_response { |
77 | union { |
78 | __s64 value64; |
79 | __s32 value32[2]; |
80 | } u; |
81 | }; |
82 | |
83 | #define PERF_COUNT_BUF_SIZE 4096 |
84 | struct orangefs_perf_count_response { |
85 | char buffer[PERF_COUNT_BUF_SIZE]; |
86 | }; |
87 | |
88 | #define FS_KEY_BUF_SIZE 4096 |
89 | struct 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 */ |
96 | struct orangefs_features_response { |
97 | __u64 features; |
98 | }; |
99 | |
100 | struct 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 | |
130 | struct 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 */ |
138 |