What the cache manager needs to know about rxosd
[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