Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / bubasics / butc.xg
CommitLineData
805e021f
CE
1/*
2 * Copyright 2000, International Business Machines Corporation and others.
3 * All Rights Reserved.
4 *
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
8 */
9
10package TC_
11prefix S
12statindex 4
13
14/*
15#define TCPERFORMDUMP 100
16#define TCPERFORMRESTORE 101
17#define TCCHECKDUMP 102
18#define TCABORTDUMP 103
19#define TCWAITFORDUMP 104
20#define TCENDDUMP 105
21#define TCGETTMINFO 106
22#define TCLABELTAPE 107
23#define TCSCANNODES 108
24#define TCREADLABEL 109
25#define TCSCANDUMPS 110
26#define TCGETTCINFO 111
27#define TCSAVEDB 112
28#define TCRESTOREDB 113
29#define TCGETSTATUS 114
30#define TCREQUESTABORT 115
31#define TCENDSTATUS 116
32#define TCSCANSTATUS 117
33#define TCDELETEDUMP 118
34*/
35
36/*random constants */
37/* there should be a single consistent set of these */
38
39const TC_MAXDUMPPATH = 256; /* dump path names*/
40const TC_MAXNAMELEN = 64; /* name length */
41const TC_MAXARRAY = 2000000000; /* max volumes to dump */
42const TC_MAXFORMATLEN = 100; /*size of the format statement */
43const TC_MAXHOSTLEN = 32; /*for server/machine names */
44const TC_MAXTAPELEN = 32; /*max tape name allowed */
45/*This specifies the interface to the tape coordinator*/
46/*describes the information that should be dumped to dump a single
47volume*/
48
49struct tc_dumpDesc
50{
51 afs_int32 vid; /* volume to dump */
52 afs_int32 vtype; /* volume type */
53 char name[TC_MAXNAMELEN]; /* name of volume whose clone is to be dumped*/
54 afs_int32 partition; /* partition at which to find the volume */
55 afs_int32 date; /* date from which to do the dump */
56 afs_int32 cloneDate; /* clone date of the volume */
57 afs_uint32 hostAddr; /* file server for this volume */
58};
59
60/*define how to restore a volume */
61const RDFLAG_LASTDUMP = 0x1;
62const RDFLAG_SKIP = 0x2;
63const RDFLAG_FIRSTDUMP = 0x4;
64struct tc_restoreDesc {
65 afs_int32 flags;
66 char tapeName[TC_MAXTAPELEN]; /*name of tape, the frag is on*/
67 afs_uint32 dbDumpId; /* The dump id of the tape */
68 afs_uint32 initialDumpId; /* The initial dump id of the tape */
69 afs_int32 position; /*start position of frag on tape */
70 afs_int32 origVid; /* original volume id */
71 afs_int32 vid; /* 0 means allocate new volid */
72 afs_int32 partition; /* where to restore the volume */
73 afs_int32 dumpLevel; /* flags */
74 afs_uint32 hostAddr; /* file server to restore the volume to */
75 char oldName[TC_MAXNAMELEN]; /*name of volume whose clone is to be dumped */
76 opaque newName[TC_MAXNAMELEN]; /* new name suffix */
77
78};
79
80/*describes the current status of a dump */
81struct tc_dumpStat {
82 afs_int32 dumpID; /* dump id we're returning */
83 afs_uint32 KbytesDumped; /* Kbytes dumped so far */
84 afs_uint32 bytesDumped; /* remainder bytes dumped so far */
85 afs_int32 volumeBeingDumped; /* guess ?*/
86 afs_int32 numVolErrs; /* # of volumes that had errors in processing */
87 afs_int32 flags; /* true if the dump is done */
88};
89
90/*identifier for a tape */
91struct tc_tapeLabel {
92 afs_int32 size; /* size of tape in bytes */
93 char afsname[TC_MAXTAPELEN]; /* ascii AFS name, defaults to NULL */
94 char pname[TC_MAXTAPELEN]; /* ascii permanent name, defaults to NULL */
95 afs_uint32 tapeId; /* The tapeId (or dumpId of the initial dump) */
96};
97
98/* structure to describe tapes */
99struct tc_TMInfo {
100 afs_int32 capacity; /* in 1024 byte units */
101 afs_int32 flags; /* flags, unused at present */
102};
103
104struct tc_tapeSet { /* describes a tape sequence */
105 afs_int32 id; /* unique id of tapeSet, assigned by budb */
106 char tapeServer[TC_MAXHOSTLEN]; /* name of server where this tape is */
107 char format[TC_MAXFORMATLEN]; /* for using printf to make tape name */
108 int maxTapes; /* maximum number of tapes in seq. */
109 afs_int32 a; afs_int32 b; /* linear transforms for tape */
110
111 afs_int32 expDate; /* expiration date */
112 afs_int32 expType; /* absolute or relative expiration */
113};
114
115/* identifies the tape coordinator interface */
116struct tc_tcInfo
117{
118 afs_int32 tcVersion; /* for the interface & this struct */
119};
120
121/* flag definition constants */
122const TC_STAT_DONE = 1; /* all done */
123const TC_STAT_OPRWAIT = 2; /* waiting for user interaction */
124const TC_STAT_DUMP = 4; /* true if dump, false if restore */
125const TC_STAT_ABORTED = 8; /* the operation was aborted */
126const TC_STAT_ERROR = 16; /* some error ocuured in the operation */
127
128/* flags for ScanStatus */
129
130%#define TSK_STAT_FIRST 0x1 /* get id of first task */
131%#define TSK_STAT_END 0x2 /* no more tasks */
132%#define TSK_STAT_NOTFOUND 0x4 /* couldn't find task id requested */
133%#define TSK_STAT_XBSA 0x10 /* An XBSA server */
134%#define TSK_STAT_ADSM 0x20 /* An ADSM XBSA server */
135
136typedef struct tc_dumpDesc tc_dumpArray<TC_MAXARRAY>;
137typedef struct tc_restoreDesc tc_restoreArray<TC_MAXARRAY>;
138
139/* interface structure */
140struct tc_dumpInterface
141{
142 char dumpPath[TC_MAXDUMPPATH]; /* full dump path */
143 char volumeSetName[TC_MAXNAMELEN]; /* volume set name */
144 char dumpName[TC_MAXNAMELEN]; /* volset.dump */
145 struct tc_tapeSet tapeSet;
146 afs_int32 parentDumpId;
147 afs_int32 dumpLevel;
148 int doAppend; /* Append dump to the dump set */
149};
150
151struct tciStatusS
152{
153 char taskName[TC_MAXNAMELEN]; /* task name */
154 afs_uint32 taskId; /* The id for the task */
155 afs_uint32 flags; /* as above */
156 afs_uint32 dbDumpId; /* dump id */
157 afs_uint32 nKBytes; /* bytes xferred */
158 char volumeName[TC_MAXNAMELEN]; /* current volume (if any) */
159 afs_int32 volsFailed; /* # operation failures */
160 afs_int32 lastPolled; /* last successful poll */
161};
162
163/* Start a dump, given a dump set name, a tape set name and the volumes to
164 * dump.
165 */
166
167proc PerformDump(IN struct tc_dumpInterface *tcdiPtr,
168 tc_dumpArray *dumps,
169 OUT afs_int32 *dumpID);
170
171/* Start a restore, given a dump set name, a tape set name and the volumes to
172 * dump.
173 */
174proc PerformRestore(IN string dumpSetName<TC_MAXNAMELEN>,
175 tc_restoreArray *restores,
176 OUT afs_int32 *dumpID);
177
178/* check the status of a dump; the tape coordinator is assumed to sit on
179 * the status of completed dumps for a reasonable period (2 - 12 hours)
180 * so that they can be examined later
181 */
182/*
183 * proc CheckDump(IN afs_int32 dumpID, OUT struct tc_dumpStat *status);
184 */
185
186/* abort a dump */
187/*
188 * proc AbortDump(IN afs_int32 dumpID);
189 */
190
191/* this call waits for a dump to complete; it ties up an LWP on the tape
192coordinator */
193/*
194 * proc WaitForDump(IN afs_int32 dumpID);
195 */
196
197/* close a dump normally (not abort) */
198/*
199 * proc EndDump(IN afs_int32 dumpID);
200 */
201
202/*
203 * proc GetTMInfo(OUT struct tc_TMInfo *info);
204 */
205
206proc LabelTape
207 ( IN struct tc_tapeLabel *label,
208 OUT afs_uint32 *taskId
209 );
210
211/*
212 * proc ScanNodes(IN afs_int32 index, OUT afs_int32 *nodeID);
213 */
214
215proc ReadLabel
216 ( OUT struct tc_tapeLabel *label,
217 OUT afs_uint32 *taskId
218 );
219
220proc ScanDumps
221 ( IN afs_int32 addDbFlag,
222 OUT afs_uint32 *taskId
223 );
224
225/* For returning information about the butc interface.
226 * Currently this is just the version number
227 */
228
229proc TCInfo(OUT struct tc_tcInfo *tciptr);
230
231/* for database dump/restores */
232
233proc SaveDb(IN afs_uint32 archiveTime, OUT afs_uint32 *taskId );
234
235proc RestoreDb( OUT afs_uint32 *taskId );
236
237
238/* new status management - PA */
239
240proc EndStatus( IN afs_uint32 taskId );
241
242proc GetStatus
243 ( IN afs_uint32 taskId,
244 OUT struct tciStatusS *statusPtr
245 );
246
247proc RequestAbort( IN afs_uint32 taskId );
248
249proc ScanStatus
250 ( INOUT afs_uint32 *taskId,
251 OUT struct tciStatusS *statusPtr,
252 INOUT afs_uint32 *flags
253 );
254
255proc DeleteDump
256 ( IN afs_uint32 aDumpId,
257 OUT afs_uint32 *taskId
258 );
259