Commit | Line | Data |
---|---|---|
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 | ||
10 | #ifndef _TCDATA_ | |
11 | #define _TCDATA_ 1 | |
12 | ||
13 | #include <afs/butc.h> | |
14 | #include <afs/budb.h> | |
15 | #include <afs/bubasics.h> | |
16 | #include "butm.h" | |
17 | ||
18 | /* node with info on each dump of interest, associated with taskID | |
19 | * Key: | |
20 | * G - generated by butc | |
21 | */ | |
22 | ||
23 | struct dumpNode { | |
24 | /* administrative fields */ | |
25 | afs_int32 taskID; /* the task id */ | |
26 | struct dumpNode *next; /* ptr to the next node on the list */ | |
27 | statusP statusNodePtr; /* status node pointer */ | |
28 | ||
29 | /* common to dumps and restores */ | |
30 | afs_int32 arraySize; /* Size of dump/restore array */ | |
31 | ||
32 | /* specific to dumps */ | |
33 | char dumpSetName[TC_MAXNAMELEN]; /* name of the dump "<volset>.<dump>" */ | |
34 | char *dumpName; /* full dump path */ | |
35 | char *volumeSetName; /* volume set */ | |
36 | struct tc_tapeSet tapeSetDesc; /* description of the tape set */ | |
37 | struct tc_dumpDesc *dumps; /* list of vols to dump */ | |
38 | afs_int32 parent; /* parent dump ID, from main call */ | |
39 | afs_int32 level; /* this dump's level, from main call */ | |
40 | int doAppend; /* Append this dump to a dump set */ | |
41 | ||
42 | /* restore specific */ | |
43 | struct tc_restoreDesc *restores; /* info needed to restore volumes */ | |
44 | }; | |
45 | ||
46 | struct deviceSyncNode { | |
47 | struct Lock lock; /* this is used to synchronise access to tape drive */ | |
48 | afs_int32 flags; | |
49 | }; | |
50 | ||
51 | /* flags used to monitor status of dumps/restores */ | |
52 | #define INPROGRESS 0x01 /*dump is in progress */ | |
53 | #define ABORT 0x02 /*abort this dump */ | |
54 | #define ABORTED 0x04 /*aborted this dump */ | |
55 | #define DONE 0x08 /*done with this dump */ | |
56 | #define WAITING 0x10 /*someone is waiting on this dump */ | |
57 | #define ERROR 0x20 /*error in operation */ | |
58 | #define PARTIAL 0x40 /*partial failure in operation */ | |
59 | ||
60 | /* define the opcodes */ | |
61 | #define DUMP 0x01 /*dumping */ | |
62 | #define RESTORE 0x02 /*restoring */ | |
63 | ||
64 | /*these definitions are temporary */ | |
65 | #define TCPORT 7010 | |
66 | #define TCSERVICE_ID 10 | |
67 | ||
68 | #define TC_GCTIME 300 /* the interval after which the GC is invoked */ | |
69 | #define TC_ABORTTIME 30 /*time alotted for process to respond to abort */ | |
70 | #define TC_MAXVOLNAME 64 /*this should come from VNAMESIZE in volume header */ | |
71 | /*define some magic numbers to be used with volume headers and trailors on tape */ | |
72 | #define TC_VOLBEGINMAGIC 0xb0258191 /*32 bit magic numbers */ | |
73 | #define TC_VOLENDMAGIC 0x9167345a | |
74 | #define TC_VOLCONTD 0xffffffff | |
75 | /* | |
76 | #define TC_HEADERFORMAT "H++NAME#%s#ID#%u#SERVER#%x#PART#%u#FROM#%u#FRAG#%d#BM#%u#--H" | |
77 | #define TC_TRAILORFORMAT "T--NAME#%s#ID#%u#SERVER#%x#PART#%u#FROM#%u#FRAG#%d#CONTD#%x#EM#%u#++T" | |
78 | */ | |
79 | #define TC_TRAILERBEGIN "+=!@#$%><%$#@!=+" /*indicates that trailer follows */ | |
80 | #define TC_MAXTAPENAMELEN 100 /*dont know how to estimate these numbers */ | |
81 | #define TC_DEVICEINUSE 0x1000 /* used to indicate use of device by somebody */ | |
82 | #define TC_NULLTAPENAME "<NULL>" /* default tape name */ | |
83 | #define TC_QUOTEDNULLTAPENAME "\"<NULL>\"" /* null tapename in quotes */ | |
84 | ||
85 | /* for user prompt generation */ | |
86 | #define READOPCODE 0 /* read tape - for restore */ | |
87 | #define WRITEOPCODE 1 /* write tape - for dump */ | |
88 | #define LABELOPCODE 2 /* label a tape */ | |
89 | #define READLABELOPCODE 3 /* read tape label */ | |
90 | #define SCANOPCODE 4 /* scan tape contents */ | |
91 | #define APPENDOPCODE 5 /* append write tape - for dump */ | |
92 | #define SAVEDBOPCODE 6 /* save a database tape */ | |
93 | #define RESTOREDBOPCODE 7 /* restore a database tape */ | |
94 | #define CLOSEOPCODE 8 /* close a tape drive - for callout */ | |
95 | ||
96 | /* marker used on tape. A header is placed (as a separate block) before the | |
97 | * volume data, and is appended (contiguously with the data) to the volume | |
98 | * data | |
99 | */ | |
100 | struct volumeHeader { | |
101 | char preamble[9]; | |
102 | char postamble[9]; | |
103 | char volumeName[TC_MAXVOLNAME]; | |
104 | char pad[2]; | |
105 | afs_int32 volumeID; | |
106 | afs_uint32 server; /* which server */ | |
107 | afs_int32 part; /* partition vol. was on */ | |
108 | afs_int32 from; /* clone date of vol ?? */ | |
109 | int frag; | |
110 | afs_int32 magic; /* just for checking */ | |
111 | afs_int32 contd; | |
112 | char dumpSetName[TC_MAXNAMELEN]; | |
113 | afs_int32 dumpID; /* ID of enclosing dump */ | |
114 | afs_int32 level; /* dump level, 0=full */ | |
115 | afs_int32 parentID; /* ID of parent dump */ | |
116 | afs_int32 endTime; | |
117 | afs_int32 versionflags; /* previously spare[0] */ | |
118 | afs_int32 cloneDate; /* when this vol. was cloned */ | |
119 | afs_int32 spares[2]; /* spare used to be spare[4] */ | |
120 | }; | |
121 | ||
122 | /* Interface structure for STC_LabelTape */ | |
123 | ||
124 | struct labelTapeIf { | |
125 | struct tc_tapeLabel label; | |
126 | afs_uint32 taskId; | |
127 | }; | |
128 | ||
129 | struct scanTapeIf { | |
130 | afs_int32 addDbFlag; | |
131 | afs_uint32 taskId; | |
132 | }; | |
133 | ||
134 | /* Interface structure for STC_SaveDb */ | |
135 | ||
136 | struct saveDbIf { | |
137 | Date archiveTime; | |
138 | afs_uint32 taskId; | |
139 | statusP statusPtr; | |
140 | }; | |
141 | ||
142 | /* Iterface structure for STC_DeleteDump */ | |
143 | struct deleteDumpIf { | |
144 | afs_uint32 dumpID; | |
145 | afs_uint32 taskId; | |
146 | }; | |
147 | ||
148 | #endif |