Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / rxosd / rxosd.xg
1 /*
2 * RX OSD interface description
3 */
4
5 package RXOSD_
6 prefix S
7
8 %#include <rx/rx.h>
9 %#include <rx/rx_null.h>
10
11 /* prototype for pseudo-RPC call */
12 %char *RXOSD_TranslateOpCode(afs_int32 code);
13
14 %#define OSD_SERVER_PORT htons(7011) /* as MR-AFS remioserver */
15 %#define OSD_SERVICE_PORT htons(0)
16 %#define OSD_SERVICE_ID 900 /* same as REMIOSRV for MR-AFS */
17 %#define OSD_NULL 0
18 %#define OSD_RXKAD 2
19 %#define RXOSD_RESTARTING -100
20
21 %#ifndef OSD_WAIT_FOR_TAPE
22 %#define OSD_WAIT_FOR_TAPE 1096
23 %#endif
24
25 %#define T10_CDB_SIZE 200
26
27 typedef opaque t10rock<T10_CDB_SIZE>;
28
29 %#define CAPCRYPTLEN 72
30 struct t10cap {
31 afs_uint32 pid_hi;
32 afs_uint32 pid_lo;
33 afs_uint32 oid_hi;
34 afs_uint32 oid_lo;
35 afs_uint32 maxlen_hi;
36 afs_uint32 maxlen_lo;
37 afs_uint32 ip;
38 short port;
39 short reserved;
40 afsUUID uuid;
41 afs_uint32 cap;
42 afs_uint32 expires;
43 afs_uint32 user;
44 afs_uint32 spare[3];
45 afs_uint32 epoch;
46 afs_uint32 cid;
47 };
48
49 struct t10sec {
50 char check[20];
51 char nonce[12];
52 char datain[4];
53 char dataout[4];
54 };
55
56 struct t10cdb {
57 char operation;
58 char control;
59 char res1[5];
60 char lng;
61 char action[2];
62 char service[6];
63 char pid[8];
64 char oid[8];
65 char res2[4];
66 char length[8];
67 char offset[8];
68 char attrparm[28];
69 struct t10cap cap;
70 struct t10sec sec;
71 };
72
73 struct osd_incdec {
74 afs_uint64 oid;
75 afs_uint64 pid;
76 afs_int32 todo;
77 afs_int32 done;
78 };
79 typedef struct osd_incdec osd_incdecList <>;
80
81 struct osd_md5 {
82 afs_uint64 oid;
83 afs_uint64 pid;
84 afs_uint64 size;
85 afs_uint32 md5[4];
86 };
87
88 struct osd_obj_desc {
89 afs_uint64 oid;
90 afs_uint64 pid;
91 afs_uint32 id;
92 afs_uint32 ip;
93 afs_uint32 stripe;
94 };
95 typedef struct osd_obj_desc osd_obj_descList <>;
96
97 struct osd_segm_desc {
98 afs_uint64 length;
99 afs_uint32 stripes;
100 afs_uint32 stripe_size;
101 osd_obj_descList objList;
102 };
103 typedef struct osd_segm_desc osd_segm_descList <>;
104
105 struct rxosd_fetch_entry {
106 afs_uint64 part_id;
107 afs_uint64 obj_id;
108 afs_uint32 user;
109 afs_uint32 time;
110 afs_uint32 fileserver;
111 struct osd_segm_descList list;
112 };
113 typedef struct rxosd_fetch_entry rxosd_fetch_entryList<>;
114
115 %#define TAPE_FETCH 1
116 %#define XFERING 2
117 %#define SET_FILE_READY 3
118
119 struct FetchEntry {
120 afs_uint32 Requestor;
121 afs_uint32 TimeStamp;
122 afs_uint32 Volume;
123 afs_uint32 Vnode;
124 afs_uint32 Uniquifier;
125 afs_uint32 rank;
126 afs_uint32 state;
127 afs_uint32 caller;
128 };
129 typedef FetchEntry FetchEntryList<>;
130
131 struct WipeCandidate {
132 afs_uint64 p_id;
133 afs_uint64 o_id;
134 afs_uint64 size;
135 afs_uint32 atime;
136 };
137 typedef WipeCandidate WipeCandidateList<>;
138
139 struct activerpc {
140 afs_uint32 num;
141 afs_uint32 ip;
142 afs_uint64 part;
143 afs_uint64 obj;
144 };
145 typedef activerpc activerpcList<>;
146
147 struct varname {
148 char name[64];
149 };
150
151 struct rxosd_stat {
152 afs_uint32 rpc;
153 afs_uint64 cnt;
154 };
155 typedef rxosd_stat rxosd_statList<>;
156
157 struct rxosd_kbps {
158 afs_uint32 val[96];
159 };
160
161 create_part (IN afs_uint64 part_id) = 1;
162
163 create (IN afs_uint64 part_id,
164 IN afs_uint64 from_id,
165 OUT afs_uint64 *obj_id) = 2;
166
167 hardlink (IN afs_uint64 from_part,
168 IN afs_uint64 from_id,
169 IN afs_uint64 to_part,
170 IN afs_uint64 to_id,
171 OUT afs_uint64 *obj_id) = 3;
172
173 write (IN t10rock rock,
174 IN afs_uint64 part_id,
175 IN afs_uint64 obj_id,
176 IN afs_uint64 offset,
177 IN afs_uint64 length) split = 4;
178
179 write_keep (IN afs_uint64 part_id,
180 IN afs_uint64 obj_id,
181 IN afs_uint64 offset,
182 IN afs_uint64 length,
183 IN afs_uint32 atime,
184 IN afs_uint32 mtime) split = 5;
185
186 writePS (IN t10rock rock,
187 IN afs_uint64 part_id,
188 IN afs_uint64 obj_id,
189 IN afs_uint64 offset,
190 IN afs_uint64 length,
191 IN afs_uint32 stripe_size,
192 IN afs_uint32 nstripes,
193 IN afs_uint32 mystripe) split = 6;
194
195 read (IN t10rock rock,
196 IN afs_uint64 part_id,
197 IN afs_uint64 obj_id,
198 IN afs_uint64 offset,
199 IN afs_uint64 length) split = 7;
200
201 readPS (IN t10rock rock,
202 IN afs_uint64 part_id,
203 IN afs_uint64 obj_id,
204 IN afs_uint64 offset,
205 IN afs_uint64 length,
206 IN afs_uint32 stripe_size,
207 IN afs_uint32 nstripes,
208 IN afs_uint32 mystripe) split = 8;
209
210 truncate (IN afs_uint64 part_id,
211 IN afs_uint64 obj_id,
212 IN afs_uint64 length) = 9;
213
214 incdec (IN afs_uint64 part_id,
215 IN afs_uint64 obj_id,
216 IN afs_int32 diff) = 10;
217
218 bulkincdec (INOUT osd_incdecList *list) = 11;
219
220 remove_part (IN afs_uint64 part_id) = 12;
221
222 list (IN afs_uint64 part_id,
223 IN afs_uint64 start_id) split = 13;
224
225 examine (IN afs_uint64 part_id,
226 IN afs_uint64 obj_id,
227 OUT afs_uint64 *size,
228 OUT afs_uint32 *linkcount,
229 OUT afs_uint32 *mtime,
230 OUT afs_uint32 *atime) = 14;
231
232 examineHSM (IN afs_uint64 part_id,
233 IN afs_uint64 obj_id,
234 OUT afs_uint64 *size,
235 OUT afs_uint32 *linkcount,
236 OUT afs_uint32 *time,
237 OUT afs_int32 *status) = 15;
238
239 list_part (IN afs_uint64 start_id) split = 16;
240
241 copy (IN afs_uint64 from_part,
242 IN afs_uint64 to_part,
243 IN afs_uint64 from_id,
244 IN afs_uint64 to_id,
245 IN afs_uint32 to_osd) = 17;
246
247 CopyOnWrite (IN afs_uint64 part_id,
248 IN afs_uint64 from_id,
249 IN afs_uint64 offs,
250 IN afs_uint64 length,
251 IN afs_uint64 size,
252 OUT afs_uint64 *obj_id) = 18;
253
254 Dummy (IN afs_uint32 in,
255 OUT afs_uint32 *out) = 19;
256
257 md5sum (IN afs_uint64 part_id,
258 IN afs_uint64 obj_id,
259 OUT struct osd_md5 *md5) = 20;
260
261 create_archive (IN afs_uint64 part_id,
262 IN afs_uint64 from_id,
263 IN struct osd_segm_descList *list,
264 OUT struct osd_md5 *output) = 21;
265
266 restore_archive (IN afs_uint64 part_id,
267 IN afs_uint64 obj_id,
268 IN afs_uint32 user,
269 IN struct osd_segm_descList *listi,
270 OUT osd_md5 *output) = 22;
271
272 close_file (IN afs_uint64 part_id,
273 IN afs_uint64 obj_id) = 23;
274
275 fetchqueue (OUT FetchEntryList *list) = 24;
276
277 wipe_candidates (IN afs_uint32 lun,
278 IN afs_uint32 max,
279 IN afs_uint32 algorithm,
280 IN afs_uint32 minMB,
281 IN afs_uint32 spare,
282 OUT WipeCandidateList *list) = 25;
283
284 Variable (IN afs_int32 cmd,
285 IN string name<256>,
286 IN afs_int64 value,
287 OUT afs_int64 *result) = 26;
288
289 threads (OUT struct activerpcList *list) = 27;
290
291 statistic (IN afs_int32 reset,
292 OUT afs_uint32 *since,
293 OUT afs_uint64 *received,
294 OUT afs_uint64 *sent,
295 OUT rxosd_statList *stat,
296 OUT struct rxosd_kbps *kbpsrcvd,
297 OUT struct rxosd_kbps *kbpssent) = 28;
298
299 setatime (IN afs_uint64 part_id,
300 IN afs_uint64 obj_id,
301 IN afs_uint32 atime,
302 IN afs_uint32 mtime) = 29;
303
304 updatecounters (IN afs_uint64 bytes_rcvd,
305 IN afs_uint64 bytes_sent) = 30;
306
307 write_to_hpss (IN afs_uint64 part_id,
308 IN afs_uint64 obj_id,
309 IN struct osd_segm_descList *list,
310 OUT osd_md5 *output) = 31;
311
312 read_from_hpss (IN afs_uint64 part_id,
313 IN afs_uint64 obj_id,
314 IN struct osd_segm_descList *list,
315 OUT osd_md5 *output) = 32;
316
317 ProbeServer () = 33;
318
319 /* end package */
320