]>
Commit | Line | Data |
---|---|---|
f7ab093f MM |
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 | */ | |
8bb8aefd | 18 | struct orangefs_io_response { |
f7ab093f MM |
19 | __s64 amt_complete; |
20 | }; | |
21 | ||
8bb8aefd YL |
22 | struct orangefs_lookup_response { |
23 | struct orangefs_object_kref refn; | |
f7ab093f MM |
24 | }; |
25 | ||
8bb8aefd YL |
26 | struct orangefs_create_response { |
27 | struct orangefs_object_kref refn; | |
f7ab093f MM |
28 | }; |
29 | ||
8bb8aefd YL |
30 | struct orangefs_symlink_response { |
31 | struct orangefs_object_kref refn; | |
f7ab093f MM |
32 | }; |
33 | ||
8bb8aefd YL |
34 | struct orangefs_getattr_response { |
35 | struct ORANGEFS_sys_attr_s attributes; | |
47b4948f | 36 | char link_target[ORANGEFS_NAME_MAX]; |
f7ab093f MM |
37 | }; |
38 | ||
8bb8aefd YL |
39 | struct orangefs_mkdir_response { |
40 | struct orangefs_object_kref refn; | |
f7ab093f MM |
41 | }; |
42 | ||
43 | /* | |
44 | * duplication of some system interface structures so that I don't have | |
45 | * to allocate extra memory | |
46 | */ | |
8bb8aefd | 47 | struct orangefs_dirent { |
f7ab093f MM |
48 | char *d_name; |
49 | int d_length; | |
8bb8aefd | 50 | struct orangefs_khandle khandle; |
f7ab093f MM |
51 | }; |
52 | ||
8bb8aefd | 53 | struct orangefs_statfs_response { |
f7ab093f MM |
54 | __s64 block_size; |
55 | __s64 blocks_total; | |
56 | __s64 blocks_avail; | |
57 | __s64 files_total; | |
58 | __s64 files_avail; | |
59 | }; | |
60 | ||
8bb8aefd | 61 | struct orangefs_fs_mount_response { |
f7ab093f MM |
62 | __s32 fs_id; |
63 | __s32 id; | |
8bb8aefd | 64 | struct orangefs_khandle root_khandle; |
f7ab093f MM |
65 | }; |
66 | ||
67 | /* the getxattr response is the attribute value */ | |
8bb8aefd | 68 | struct orangefs_getxattr_response { |
f7ab093f MM |
69 | __s32 val_sz; |
70 | __s32 __pad1; | |
8bb8aefd | 71 | char val[ORANGEFS_MAX_XATTR_VALUELEN]; |
f7ab093f MM |
72 | }; |
73 | ||
74 | /* the listxattr response is an array of attribute names */ | |
8bb8aefd | 75 | struct orangefs_listxattr_response { |
f7ab093f MM |
76 | __s32 returned_count; |
77 | __s32 __pad1; | |
78 | __u64 token; | |
8bb8aefd | 79 | char key[ORANGEFS_MAX_XATTR_LISTLEN * ORANGEFS_MAX_XATTR_NAMELEN]; |
f7ab093f MM |
80 | __s32 keylen; |
81 | __s32 __pad2; | |
8bb8aefd | 82 | __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN]; |
f7ab093f MM |
83 | }; |
84 | ||
8bb8aefd | 85 | struct orangefs_param_response { |
680908e5 MB |
86 | union { |
87 | __s64 value64; | |
88 | __s32 value32[2]; | |
89 | } u; | |
f7ab093f MM |
90 | }; |
91 | ||
92 | #define PERF_COUNT_BUF_SIZE 4096 | |
8bb8aefd | 93 | struct orangefs_perf_count_response { |
f7ab093f MM |
94 | char buffer[PERF_COUNT_BUF_SIZE]; |
95 | }; | |
96 | ||
97 | #define FS_KEY_BUF_SIZE 4096 | |
8bb8aefd | 98 | struct orangefs_fs_key_response { |
f7ab093f MM |
99 | __s32 fs_keylen; |
100 | __s32 __pad1; | |
101 | char fs_key[FS_KEY_BUF_SIZE]; | |
102 | }; | |
103 | ||
482664dd MB |
104 | /* 2.9.6 */ |
105 | struct orangefs_features_response { | |
106 | __u64 features; | |
107 | }; | |
108 | ||
8bb8aefd | 109 | struct orangefs_downcall_s { |
f7ab093f MM |
110 | __s32 type; |
111 | __s32 status; | |
112 | /* currently trailer is used only by readdir */ | |
113 | __s64 trailer_size; | |
54804949 | 114 | char *trailer_buf; |
f7ab093f MM |
115 | |
116 | union { | |
8bb8aefd YL |
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; | |
482664dd | 130 | struct orangefs_features_response features; |
f7ab093f MM |
131 | } resp; |
132 | }; | |
133 | ||
8bb8aefd | 134 | struct orangefs_readdir_response_s { |
f7ab093f MM |
135 | __u64 token; |
136 | __u64 directory_version; | |
137 | __u32 __pad2; | |
8bb8aefd YL |
138 | __u32 orangefs_dirent_outcount; |
139 | struct orangefs_dirent *dirent_array; | |
f7ab093f MM |
140 | }; |
141 | ||
142 | #endif /* __DOWNCALL_H */ |