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
10 #ifndef OPENAFS_VOS_ADMIN_H
11 #define OPENAFS_VOS_ADMIN_H
13 #include <afs/param.h>
14 #include <afs/afs_Admin.h>
15 #include <sys/types.h>
21 #include <sys/socket.h>
24 #define VOS_MAX_PARTITION_NAME_LEN 32
25 #define VOS_MAX_VOLUME_NAME_LEN 32
26 #define VOS_MAX_VOLUME_TYPES 3
27 #define VOS_MAX_REPLICA_SITES 13
28 #define VOS_MAX_SERVER_ADDRESS 16
33 } vos_force_t, *vos_force_p;
38 } vos_exclude_t, *vos_exclude_p;
53 } vos_volumeStatus_t, *vos_volumeStatus_p;
56 VOS_READ_WRITE_VOLUME,
59 } vos_volumeType_t, *vos_volumeType_p;
61 typedef struct vos_fileServerEntry {
62 int serverAddress[ VOS_MAX_SERVER_ADDRESS ];
64 } vos_fileServerEntry_t, *vos_fileServerEntry_p;
67 VOS_VOLUME_READ_WRITE_STATS_SAME_NETWORK,
68 VOS_VOLUME_READ_WRITE_STATS_SAME_NETWORK_AUTHENTICATED,
69 VOS_VOLUME_READ_WRITE_STATS_DIFFERENT_NETWORK,
70 VOS_VOLUME_READ_WRITE_STATS_DIFFERENT_NETWORK_AUTHENTICATED
71 } vos_volumeReadWriteStats_t, *vos_volumeReadWriteStats_p;
73 #define VOS_VOLUME_READ_WRITE_STATS_NUMBER 4
76 VOS_VOLUME_TIME_STATS_0_TO_60_SECONDS,
77 VOS_VOLUME_TIME_STATS_1_TO_10_MINUTES,
78 VOS_VOLUME_TIME_STATS_10_TO_60_MINUTES,
79 VOS_VOLUME_TIME_STATS_1_TO_24_HOURS,
80 VOS_VOLUME_TIME_STATS_1_TO_7_DAYS,
81 VOS_VOLUME_TIME_STATS_GREATER_THAN_7_DAYS
82 } vos_volumeTimeStats_t, *vos_volumeTimeStats_p;
84 #define VOS_VOLUME_TIME_STATS_NUMBER 6
86 typedef struct vos_volumeEntry {
88 unsigned int readWriteId;
89 unsigned int readOnlyId;
90 unsigned int backupId;
91 unsigned long creationDate;
92 unsigned long lastAccessDate;
93 unsigned long lastUpdateDate;
94 unsigned long lastBackupDate;
95 unsigned long copyCreationDate;
96 int accessesSinceMidnight;
100 int readStats[VOS_VOLUME_READ_WRITE_STATS_NUMBER];
101 int writeStats[VOS_VOLUME_READ_WRITE_STATS_NUMBER];
102 int fileAuthorWriteSameNetwork[VOS_VOLUME_TIME_STATS_NUMBER];
103 int fileAuthorWriteDifferentNetwork[VOS_VOLUME_TIME_STATS_NUMBER];
104 int dirAuthorWriteSameNetwork[VOS_VOLUME_TIME_STATS_NUMBER];
105 int dirAuthorWriteDifferentNetwork[VOS_VOLUME_TIME_STATS_NUMBER];
106 vos_volumeStatus_t status;
107 vos_volumeStatus_t volumeDisposition;
108 vos_volumeType_t type;
109 char name[VOS_MAX_VOLUME_NAME_LEN];
110 } vos_volumeEntry_t, *vos_volumeEntry_p;
112 typedef struct vos_partitionEntry {
113 char name[VOS_MAX_PARTITION_NAME_LEN];
114 char deviceName[VOS_MAX_PARTITION_NAME_LEN];
115 int lockFileDescriptor;
118 } vos_partitionEntry_t, *vos_partitionEntry_p;
121 VOS_VLDB_ENTRY_OK = 0x1,
122 VOS_VLDB_ENTRY_MOVE = 0x2,
123 VOS_VLDB_ENTRY_RELEASE = 0x4,
124 VOS_VLDB_ENTRY_BACKUP = 0x8,
125 VOS_VLDB_ENTRY_DELETE = 0x10,
126 VOS_VLDB_ENTRY_DUMP = 0x20,
127 VOS_VLDB_ENTRY_LOCKED = 0x40,
128 VOS_VLDB_ENTRY_RWEXISTS = 0x1000,
129 VOS_VLDB_ENTRY_ROEXISTS = 0x2000,
130 VOS_VLDB_ENTRY_BACKEXISTS = 0x4000
131 } vos_vldbEntryStatus_t, *vos_vldbEntryStatus_p;
134 VOS_VLDB_NEW_REPSITE = 0x1,
135 VOS_VLDB_READ_ONLY = 0x2,
136 VOS_VLDB_READ_WRITE = 0x4,
137 VOS_VLDB_BACKUP = 0x8,
138 VOS_VLDB_DONT_USE = 0x10
139 } vos_vldbServerFlag_t, *vos_vldbServerFlag_p;
141 typedef struct vos_vldbEntry {
143 unsigned int volumeId[VOS_MAX_VOLUME_TYPES];
144 unsigned int cloneId;
145 vos_vldbEntryStatus_t status;
149 vos_vldbServerFlag_t serverFlags;
150 } volumeSites[ VOS_MAX_REPLICA_SITES ];
151 char name[VOS_MAX_VOLUME_NAME_LEN];
152 } vos_vldbEntry_t, *vos_vldbEntry_p;
154 #define VOS_PROCEDURE_NAME_LEN 30
157 VOS_VOLUME_ATTACH_MODE_OK,
158 VOS_VOLUME_ATTACH_MODE_OFFLINE,
159 VOS_VOLUME_ATTACH_MODE_BUSY,
160 VOS_VOLUME_ATTACH_MODE_READONLY,
161 VOS_VOLUME_ATTACH_MODE_CREATE,
162 VOS_VOLUME_ATTACH_MODE_CREATE_VOLID
163 } vol_volumeAttachMode_t, *vol_volumeAttachMode_p;
166 VOS_VOLUME_ACTIVE_STATUS_OK,
167 VOS_VOLUME_ACTIVE_STATUS_DELETE_ON_SALVAGE,
168 VOS_VOLUME_ACTIVE_STATUS_OUT_OF_SERVICE,
169 VOS_VOLUME_ACTIVE_STATUS_DELETED
170 } vos_volumeActiveStatus_t, *vos_volumeActiveStatus_p;
173 VOS_VOLUME_TRANSACTION_STATUS_OK,
174 VOS_VOLUME_TRANSACTION_STATUS_DELETED
175 } vos_volumeTransactionStatus_t, *vos_volumeTransactionStatus_p;
177 typedef struct vos_serverTransactionStatus {
182 unsigned int volumeId;
184 char lastProcedureName[VOS_PROCEDURE_NAME_LEN];
185 int nextReceivePacketSequenceNumber;
186 int nextSendPacketSequenceNumber;
189 vol_volumeAttachMode_t volumeAttachMode;
190 vos_volumeActiveStatus_t volumeActiveStatus;
191 vos_volumeTransactionStatus_t volumeTransactionStatus;
192 } vos_serverTransactionStatus_t, *vos_serverTransactionStatus_p;
196 VOS_RESTORE_INCREMENTAL
197 } vos_volumeRestoreType_t, *vos_volumeRestoreType_p;
202 } vos_volumeOnlineType_t, *vos_volumeOnlineType_p;
205 VOS_DEBUG_MESSAGE = 0x1,
206 VOS_ERROR_MESSAGE = 0x2,
207 VOS_VERBOSE_MESSAGE = 0x4
208 } vos_messageType_t, *vos_messageType_p;
211 (ADMINAPI *vos_MessageCallBack_t)(vos_messageType_t type,
214 extern int ADMINAPI vos_BackupVolumeCreate(
215 const void *cellHandle,
216 vos_MessageCallBack_t callBack,
217 unsigned int volumeId,
221 extern int ADMINAPI vos_BackupVolumeCreateMultiple(
222 const void *cellHandle,
223 const void *serverHandle,
224 vos_MessageCallBack_t callBack,
225 const unsigned int *partition,
226 const char *volumePrefix,
227 vos_exclude_t excludePrefix,
231 extern int ADMINAPI vos_PartitionGet(
232 const void *cellHandle,
233 const void *serverHandle,
234 vos_MessageCallBack_t callBack,
235 unsigned int partition,
236 vos_partitionEntry_p partitionP,
240 extern int ADMINAPI vos_PartitionGetBegin(
241 const void *cellHandle,
242 const void *serverHandle,
243 vos_MessageCallBack_t callBack,
248 extern int ADMINAPI vos_PartitionGetNext(
249 const void *iterationId,
250 vos_partitionEntry_p partitionP,
254 extern int ADMINAPI vos_PartitionGetDone(
255 const void *iterationId,
259 extern int ADMINAPI vos_ServerOpen(
260 const void *cellHandle,
261 const char *serverName,
262 void **serverHandleP,
266 extern int ADMINAPI vos_ServerClose(
267 const void *serverHandle,
271 extern int ADMINAPI vos_ServerSync(
272 const void *cellHandle,
273 const void *serverHandle,
274 vos_MessageCallBack_t callBack,
275 const unsigned int *partition,
279 extern int ADMINAPI vos_FileServerAddressChange(
280 const void *cellHandle,
281 vos_MessageCallBack_t callBack,
287 extern int ADMINAPI vos_FileServerAddressRemove(
288 const void *cellHandle,
289 vos_MessageCallBack_t callBack,
294 extern int ADMINAPI vos_FileServerGetBegin(
295 const void *cellHandle,
296 vos_MessageCallBack_t callBack,
301 extern int ADMINAPI vos_FileServerGetNext(
303 vos_fileServerEntry_p serverEntryP,
307 extern int ADMINAPI vos_FileServerGetDone(
312 extern int ADMINAPI vos_ServerTransactionStatusGetBegin(
313 const void *cellHandle,
314 const void *serverHandle,
315 vos_MessageCallBack_t callBack,
320 extern int ADMINAPI vos_ServerTransactionStatusGetNext(
321 const void *iterationId,
322 vos_serverTransactionStatus_p serverTransactionStatusP,
326 extern int ADMINAPI vos_ServerTransactionStatusGetDone(
327 const void *iterationId,
331 extern int ADMINAPI vos_VLDBGet(
332 const void *cellHandle,
333 vos_MessageCallBack_t callBack,
334 const unsigned int *volumeId,
335 const char *volumeName,
336 vos_vldbEntry_p vldbEntry,
340 extern int ADMINAPI vos_VLDBGetBegin(
341 const void *cellHandle,
342 const void *serverHandle,
343 vos_MessageCallBack_t callBack,
344 unsigned int *partition,
349 extern int ADMINAPI vos_VLDBGetNext(
350 const void *iterationId,
351 vos_vldbEntry_p vldbEntry,
355 extern int ADMINAPI vos_VLDBGetDone(
356 const void *iterationId,
360 extern int ADMINAPI vos_VLDBEntryRemove(
361 const void *cellHandle,
362 const void *serverHandle,
363 vos_MessageCallBack_t callBack,
364 const unsigned int *partition,
365 unsigned int *volumeId,
369 extern int ADMINAPI vos_VLDBUnlock(
370 const void *cellHandle,
371 const void *serverHandle,
372 vos_MessageCallBack_t callBack,
373 const unsigned int *partition,
377 extern int ADMINAPI vos_VLDBEntryLock(
378 const void *cellHandle,
379 vos_MessageCallBack_t callBack,
380 unsigned int volumeId,
384 extern int ADMINAPI vos_VLDBEntryUnlock(
385 const void *cellHandle,
386 vos_MessageCallBack_t callBack,
387 unsigned int volumeId,
391 extern int ADMINAPI vos_VLDBReadOnlySiteCreate(
392 const void *cellHandle,
393 const void *serverHandle,
394 vos_MessageCallBack_t callBack,
395 unsigned int partition,
396 unsigned int volumeId,
400 extern int ADMINAPI vos_VLDBReadOnlySiteDelete(
401 const void *cellHandle,
402 const void *serverHandle,
403 vos_MessageCallBack_t callBack,
404 unsigned int partition,
405 unsigned int volumeId,
409 extern int ADMINAPI vos_VLDBSync(
410 const void *cellHandle,
411 const void *serverHandle,
412 vos_MessageCallBack_t callBack,
413 const unsigned int *partition,
418 extern int ADMINAPI vos_VolumeCreate(
419 const void *cellHandle,
420 const void *serverHandle,
421 vos_MessageCallBack_t callBack,
422 unsigned int partition,
423 const char *volumeName,
425 unsigned int *volumeId,
429 extern int ADMINAPI vos_VolumeDelete(
430 const void *cellHandle,
431 const void *serverHandle,
432 vos_MessageCallBack_t callBack,
433 unsigned int partition,
434 unsigned int volumeId,
438 extern int ADMINAPI vos_VolumeRename(
439 const void *cellHandle,
440 vos_MessageCallBack_t callBack,
441 unsigned int readWriteVolumeId,
442 const char *newVolumeName,
446 extern int ADMINAPI vos_VolumeDump(
447 const void *cellHandle,
448 const void *serverHandle,
449 vos_MessageCallBack_t callBack,
450 unsigned int *partition,
451 unsigned int volumeId,
452 unsigned int startTime,
453 const char *dumpFile,
457 extern int ADMINAPI vos_VolumeRestore(
458 const void *cellHandle,
459 const void *serverHandle,
460 vos_MessageCallBack_t callBack,
461 unsigned int partition,
462 unsigned int *volumeId,
463 const char *volumeName,
464 const char *dumpFile,
465 vos_volumeRestoreType_t dumpType,
469 extern int ADMINAPI vos_VolumeOnline(
470 const void *serverHandle,
471 vos_MessageCallBack_t callBack,
472 unsigned int partition,
473 unsigned int volumeId,
474 unsigned int sleepTime,
475 vos_volumeOnlineType_t volumeStatus,
479 extern int ADMINAPI vos_VolumeOffline(
480 const void *serverHandle,
481 vos_MessageCallBack_t callBack,
482 unsigned int partition,
483 unsigned int volumeId,
487 extern int ADMINAPI vos_VolumeGet(
488 const void *cellHandle,
489 const void *serverHandle,
490 vos_MessageCallBack_t callBack,
491 unsigned int partition,
492 unsigned int volumeId,
493 vos_volumeEntry_p volumeP,
497 extern int ADMINAPI vos_VolumeGetBegin(
498 const void *cellHandle,
499 const void *serverHandle,
500 vos_MessageCallBack_t callBack,
501 unsigned int partition,
506 extern int ADMINAPI vos_VolumeGetNext(
507 const void *iterationId,
508 vos_volumeEntry_p volumeP,
512 extern int ADMINAPI vos_VolumeGetDone(
513 const void *iterationId,
517 extern int ADMINAPI vos_VolumeMove(
518 const void *cellHandle,
519 vos_MessageCallBack_t callBack,
520 unsigned int volumeId,
521 const void *fromServer,
522 unsigned int fromPartition,
523 const void *toServer,
524 unsigned int toPartition,
528 extern int ADMINAPI vos_VolumeRelease(
529 const void *cellHandle,
530 vos_MessageCallBack_t callBack,
531 unsigned int volumeId,
536 extern int ADMINAPI vos_VolumeZap(
537 const void *cellHandle,
538 const void *serverHandle,
539 vos_MessageCallBack_t callBack,
540 unsigned int partition,
541 unsigned int volumeId,
546 extern int ADMINAPI vos_PartitionNameToId(
547 const char *partitionName,
548 unsigned int *partitionId,
552 extern int ADMINAPI vos_PartitionIdToName(
553 unsigned int partitionId,
558 extern int ADMINAPI vos_VolumeQuotaChange(
559 const void *cellHandle,
560 const void *serverHandle,
561 vos_MessageCallBack_t callBack,
562 unsigned int partition,
563 unsigned int volumeId,
564 unsigned int volumeQuota,
568 #endif /* OPENAFS_VOS_ADMIN_H */