2 * Copyright 2000, International Business Machines Corporation and others.
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
13 * Instituition: ITC, CMU
21 #define VOLCREATEVOLUME 100
22 #define VOLDELETEVOLUME 101
23 #define VOLRESTORE 102
24 #define VOLFORWARD 103
25 #define VOLENDTRANS 104
27 #define VOLSETFLAGS 106
28 #define VOLGETFLAGS 107
29 #define VOLTRANSCREATE 108
31 #define VOLGETNTHVOLUME 110
32 #define VOLSETFORWARDING 111 /* defunct */
33 #define VOLGETNAME 112
34 #define VOLGETSTATUS 113
35 #define VOLSIGRESTORE 114
36 #define VOLLISTPARTITIONS 115
37 #define VOLLISTVOLS 116
38 #define VOLSETIDSTYPES 117
39 #define VOLMONITOR 118
40 #define VOLDISKPART 119
41 #define VOLRECLONE 120
42 #define VOLLISTONEVOL 121
44 #define VOLSETDATE 123
45 #define VOLXLISTVOLS 124
46 #define VOLXLISTONEVOL 125
47 #define VOLSETINFO 126
48 #define VOLXLISTPARTITIONS 127
49 #define VOLFORWARDMULTIPLE 128
50 #define VOLCONVERTRO 65536
51 #define VOLGETSIZE 65537
52 #define VOLDUMPV2 65538
53 #define VOLDISKPART64 65539
54 #define VOLOSDSUPPORT 65540
55 #define VOLTRAVERSE 65541
56 #define VOLWIPECAND 65542
57 #define OLDVOLSALVAGE 65543
58 #define VOLARCHCANDold 65544
59 #define VOLSALVAGE 65545
60 #define VOLLISTOBJECTS 65546
61 #define VOLSPLIT 65547
62 #define VOLARCHCAND 65548
64 /* Bits for flags for DumpV2 */
65 %#define VOLDUMPV2_OMITDIRS 1
69 struct volser_status {
70 afs_uint32 volID; /* Volume id--unique over all systems */
71 afs_int32 nextUnique; /* Next vnode uniquifier for this volume */
72 int type; /* readwrite, etc. */
73 afs_uint32 parentID; /* Id of parent, if type==readonly or backup */
74 afs_uint32 cloneID; /* Latest read-only clone, if type==readwrite */
75 afs_uint32 backupID; /* Latest backup copy of this read write volume */
76 afs_uint32 restoredFromID; /* The id in a dump this volume was restored from--used simply
77 to make sure that an incremental dump is not restored on top
78 of something inappropriate: Note: this field itself is NEVER
80 afs_int32 maxQuota; /* Quota maximum, 1K blocks */
81 afs_int32 minQuota; /* Quota minimum, 1K blocks */
82 afs_int32 owner; /* The person responsible for this volume */
83 afs_int32 creationDate; /* Creation date for a read/write
84 volume; cloning date for original copy of
85 a readonly volume (replicated volumes have
86 the same creation date) */
87 afs_int32 accessDate; /* Last access time by a user, large granularity */
88 afs_int32 updateDate; /* Last modification by user */
89 afs_int32 expirationDate; /* 0 if it never expires */
90 afs_int32 backupDate; /* last time a backup clone was taken */
91 afs_int32 copyDate; /* Time that this copy of this volume was created */
103 char name[VNAMESIZE];
104 afs_uint32 volid; /* volume's id */
105 afs_int32 type; /* read-only, read-write, backup */
112 unsigned char needsSalvaged;
113 unsigned char destroyMe;
114 afs_int32 creationDate;
115 afs_int32 accessDate;
116 afs_int32 updateDate;
117 afs_int32 backupDate;
122 afs_int32 flags; /* used by the backup system */
123 afs_int32 spare0; /* Used to hold the minquota value */
124 afs_int32 spare1; /* Used to hold the weekuse value */
125 afs_int32 spare2; /* Used to hold volUpdateCounter */
130 * Define some values needed for the detailed volume info structure.
132 const VOLINT_STATS_NUM_RWINFO_FIELDS = 4;
134 const VOLINT_STATS_SAME_NET = 0; /*Within same site (total)*/
135 const VOLINT_STATS_SAME_NET_AUTH = 1; /*Within same site (authenticated);
136 (must be 1 more than above)*/
137 const VOLINT_STATS_DIFF_NET = 2; /*From external site (total)*/
138 const VOLINT_STATS_DIFF_NET_AUTH = 3; /*From external site (authenticated)
139 (must be 1 more than above)*/
141 const VOLINT_STATS_NUM_TIME_RANGES = 6;
143 const VOLINT_STATS_TIME_CAP_0 = 60; /*60 seconds*/
144 const VOLINT_STATS_TIME_CAP_1 = 600; /*10 minutes, in seconds*/
145 const VOLINT_STATS_TIME_CAP_2 = 3600; /*1 hour, in seconds*/
146 const VOLINT_STATS_TIME_CAP_3 = 86400; /*1 day, in seconds*/
147 const VOLINT_STATS_TIME_CAP_4 = 604800; /*1 week, in seconds*/
149 const VOLINT_STATS_NUM_TIME_FIELDS = 6;
151 const VOLINT_STATS_TIME_IDX_0 = 0; /*0 secs to 60 secs*/
152 const VOLINT_STATS_TIME_IDX_1 = 1; /*1 min to 10 mins*/
153 const VOLINT_STATS_TIME_IDX_2 = 2; /*10 mins to 60 mins*/
154 const VOLINT_STATS_TIME_IDX_3 = 3; /*1 hr to 24 hrs*/
155 const VOLINT_STATS_TIME_IDX_4 = 4; /*1 day to 7 days*/
156 const VOLINT_STATS_TIME_IDX_5 = 5; /*Greater than 1 week*/
159 * More detailed volume info
162 char name[VNAMESIZE];
163 afs_uint32 volid; /*Volume's ID*/
164 afs_int32 type; /*RWVOL, ROVOL, BACKVOL*/
165 afs_uint32 backupID; /*Backup volume ID*/
166 afs_uint32 parentID; /*Parent volume ID*/
167 afs_uint32 cloneID; /*Clone volume ID*/
168 afs_int32 status; /*Volume status*/
169 afs_int32 copyDate; /*Date when this volume INSTANCE created*/
170 unsigned char inUse; /*In use at time of last crash?*/
171 afs_int32 creationDate; /*Date when this volume was created*/
172 afs_int32 accessDate; /*Date when this volume was last accessed*/
173 afs_int32 updateDate; /*Date when this volume was last updated*/
174 afs_int32 backupDate; /*Date when this volume was last backed up*/
175 int dayUse; /*Number of accesses since midnight*/
176 int filecount; /*Number of files in the volume*/
177 int maxquota; /*Max volume quota, in Kbytes*/
178 int size; /*Current size in Kbytes*/
180 * Detailed statistics for reads/writes and authorship.
182 afs_int32 stat_reads[VOLINT_STATS_NUM_RWINFO_FIELDS];
183 afs_int32 stat_writes[VOLINT_STATS_NUM_RWINFO_FIELDS];
184 afs_int32 stat_fileSameAuthor[VOLINT_STATS_NUM_TIME_FIELDS];
185 afs_int32 stat_fileDiffAuthor[VOLINT_STATS_NUM_TIME_FIELDS];
186 afs_int32 stat_dirSameAuthor[VOLINT_STATS_NUM_TIME_FIELDS];
187 afs_int32 stat_dirDiffAuthor[VOLINT_STATS_NUM_TIME_FIELDS];
190 struct transDebugInfo {
191 afs_int32 tid; /*transaction id */
192 afs_int32 time; /* time transaction was last active (for timeouts) */
193 afs_int32 creationTime; /* time the transaction started */
194 afs_int32 returnCode; /* transaction error code */
195 afs_uint32 volid; /*sequence number of the next packet to be read*/ /* open volume's id */
196 afs_int32 partition; /* open volume's partition */
197 short iflags; /* initial attach mode flags (IT*) */
198 char vflags; /* current volume status flags (VT*) */
199 char tflags; /* transaction flags (TT*) */
200 char lastProcName[30]; /* name of the last procedure which used transaction */
201 int callValid; /*flag which determines if following data is valid*/
202 afs_int32 readNext; /*sequence number of the next packet to be read*/
203 afs_int32 transmitNext; /*sequence number of the next packet to be transmitted*/
209 afs_int32 partIds[26];
212 struct diskPartition {
213 char name[32]; /* Mounted partition name */
222 struct diskPartition64 {
223 char name[256]; /* Mounted partition name */
226 afs_int64 totalUsable;
232 struct restoreCookie {
241 struct destServer server;
244 /* Various size parameters of the volume */
246 afs_uint64 dump_size;
249 typedef replica manyDests<>;
250 typedef afs_int32 manyResults<>;
251 typedef transDebugInfo transDebugEntries<>;
252 typedef volintInfo volEntries<>;
253 typedef afs_int32 partEntries<>;
254 typedef volintXInfo volXEntries<>;
257 IN afs_int32 partition,
260 IN afs_uint32 parent,
261 INOUT afs_uint32 *volid,
270 IN afs_int32 toTrans,
272 IN struct restoreCookie *cookie
273 ) split = VOLRESTORE;
276 IN afs_int32 fromTrans,
277 IN afs_int32 fromDate,
278 IN struct destServer *destination,
279 IN afs_int32 destTrans,
280 IN struct restoreCookie *cookie
290 IN afs_uint32 purgeVol,
291 IN afs_int32 newType,
293 INOUT afs_uint32 *newVol
307 IN afs_uint32 volume,
308 IN afs_int32 partition,
314 IN afs_int32 fromTrans,
315 IN afs_int32 fromDate
320 OUT afs_uint32 *volume,
321 OUT afs_int32 *partition
327 ) = VOLSETFORWARDING;
331 OUT string tname<256>
336 OUT struct volser_status *status
347 OUT struct pIDs *partIDs
348 ) = VOLLISTPARTITIONS;
353 OUT volEntries *resultEntries
366 OUT transDebugEntries *result
371 OUT struct diskPartition *partition
382 OUT volEntries *resultEntries
398 OUT volXEntries *resultXEntriesP
404 OUT volXEntries *resultXEntries
409 struct volintInfo *status
412 proc XListPartitions(
413 OUT struct partEntries *partIDs
414 ) = VOLXLISTPARTITIONS;
416 proc ForwardMultiple(
417 IN afs_int32 fromTrans,
418 IN afs_int32 fromDate,
419 IN manyDests *destinations,
421 IN struct restoreCookie *cookie,
422 OUT manyResults *results
423 ) = VOLFORWARDMULTIPLE;
425 proc ConvertROtoRWvolume(
431 IN afs_int32 fromTrans,
432 IN afs_int32 fromDate,
433 OUT struct volintSize *size
437 IN afs_int32 fromTrans,
438 IN afs_int32 fromDate,
442 proc PartitionInfo64(
444 OUT struct diskPartition64 *partition