GSI Object Oriented Online Offline (Go4)  GO4-5.3.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
rawcommn.h
Go to the documentation of this file.
1 /*********************************************************************
2  * Copyright:
3  * GSI, Gesellschaft fuer Schwerionenforschung mbH
4  * Planckstr. 1
5  * D-64291 Darmstadt
6  * Germany
7  * created 25. 1.1996 by Horst Goeringer
8  *********************************************************************
9  * rawcommn.h
10  * communication structure tsmcli client - servers
11  *********************************************************************
12  * 11. 9.1996, H.G.: alternate archive tape device "ARCH_TAPE_2" added
13  * 26. 9.1996, H.G.: new archive tape device "ARCH_TAPE_MC" added
14  * "ARCH_TAPE_2" changed to "ARCH_TAPE_MC_2"
15  * 8. 1.1997, H.G.: new parameter MAX_FILE_SIZE
16  * 21. 7.1997, H.G.: new parameter srawComm.cliNode
17  * 10. 9.1997, H.G.: new ACTION value STAGE
18  * 15. 9.1997, H.G.: new enum RETR_DEVICE
19  * 26. 9.1997, H.G.: new ACTION value RETRIEVE_STAGE
20  * 21.10.1997, H.G.: replace ARCHIVE_STAGE by ARCHIVE_OVER
21  * 19. 1.1998, H.G.: new status flag STA_END_OF_FILE_NOT_STAGED
22  * 8. 7.1998, H.G.: use MBUF_SOCK and MBUF_ADSM; set both to 16384
23  * new filetype STREAM
24  * 28. 7.1999, H.G.: new ACTION values UNSTAGE, QUERY_UNSTAGE
25  * 16. 8.2000, H.G.: new ACTION values QUERY_WORKSPACE, QUERY_POOL
26  * new structures srawPoolStatus, srawWorkSpace
27  * 16. 8.2000, H.G.: mod srawPoolStatus, new srawPoolAttr
28  * 5. 9.2000, H.G.: new ACTION value QUERY_STAGE
29  * 22.11.2000, H.G.: enhance range of values for srawWorkSpace.iStatus
30  * 1.12.2000, H.G.: new status id IDENT_NEXT_BUFFER
31  * 21.12.2000, H.G.: new structure srawRequest for seek functionality
32  * 1. 2.2001, H.G.: new action values ARCHIVE_STAGE, METADATA_MOD
33  * 30. 5.2001, H.G.: increase MAX_TAPE_FILE from 16 to 17
34  * 13. 6.2001, H.G.: new STATUS value ARCHIVE_AVAILABLE
35  * 22. 6.2001, H.G.: new ACTION QUERY_RETRIEVE
36  * replace MPORT by new def PORT_MASTER
37  * 17. 7.2001, H.G.: enhance srawObjAttr by data mover info
38  * new structure srawDataMover
39  * 23. 8.2001, H.G.: enhance srawComm by stage info
40  * 29.10.2001, H.G.: ported to W2000
41  * 14.11.2001, H.G.: rename ACTION DELETE -> REMOVE (used in winnt.h)
42  * 28. 2.2002, H.G.: new: IDENT_STAGE_xxx, IDENT_SPACE_xx
43  * 15. 3.2002, H.G.: rename srawPoolAttr -> srawPoolStatusData, enhance
44  * 18. 3.2002, H.G.: new define MAX_NUM_DM (<- rawservn.h)
45  * 20. 3.2002, H.G.: new structure srawPoolStatusDMData
46  * 27. 5.2002, H.G.: new ACTION QUERY_ARCHIVE_OVER
47  * 6. 6.2002, H.G.: new identifier: IDENT_PURGE_INFO
48  * 20. 8.2002, H.G.: new identifier: IDENT_SPACE_LOOK
49  * 19. 9.2002, H.G.: new identifier: IDENT_CLEAN_REQUEST
50  * 26. 9.2002, H.G.: new definition PORT_RFIO_SERV
51  * 29.10.2002, H.G.: new identifier: IDENT_FILELIST_REQUEST,
52  * new define MAX_STAGE_FILE_NO
53  * 22.11.2002, H.G.: new status STA_INFO, STA_PURGED, STA_NOT_PURGED
54  * 13. 1.2003, H.G.: add definition PORT_MOVER
55  * 30. 1.2003, H.G.: add declarations cMasterNode(i), new: MAX_MASTER
56  * 13. 2.2003, H.G.: add definition MAX_MOVER
57  * 24. 2.2003, H.G.: new actions SPM_REQUEST_MOVER, QUERY_ARCHIVE_STAGE
58  * 8. 5.2003, H.G.: add synchronization parameters to srawDataMoverAttr
59  * 9. 5.2003, H.G.: add synchronization parameters to srawComm
60  * 21. 8.2003, H.G.: srawComm: new string cTapeLib,
61  * replace ACTION values:
62  * ARCHIVE_STAGE -> ARCHIVE_TO_STAGE
63  * METADATA_MOD -> ARCHIVE_FROM_STAGE
64  * new ACTION values: QUERY_ARCHIVE_TO_STAGE,
65  * QUERY_ARCHIVE_FROM_STAGE
66  * 28. 8.2003, H.G.: srawObjAttr: add parameter cStageUser
67  * 15. 9.2003, H.G.: increase MAX_NUM_DM: 5 -> 10
68  * 6.10.2003, H.G.: cNodeMaster2 now gsitsma, depc134 is backup node
69  * 10.10.2003, H.G.: new identifier: IDENT_QUERY_ARCHDB
70  * 15.10.2003, H.G.: new action END_SESSION
71  * 31.10.2003, H.G.: remove unused definition MAX_MOVER
72  * 6.11.2003, H.G.: new action QUERY_ARCHIVE_RECORD
73  * 18.11.2003, H.G.: new identifier: IDENT_FULL_ARCHDISK
74  * 18.12.2003, H.G.: new identifier: IDENT_ARCHIVE_FILE
75  * 22. 1.2004, H.G.: add cNodeMaster2A: gsitsmb
76  * 20. 2.2004, H.G.: srawObjAttr: rename iPort (unused) -> iFS
77  * new structure srawFileSystem
78  * 24. 2.2004, H.G.: new ACTION values:
79  * STAGE_FROM_CACHE, RETRIEVE_FROM_CACHE
80  * replace ACTION values:
81  * QUERY_ARCHIVE_TO_STAGE -> QUERY_ARCHIVE_TO_CACHE
82  * QUERY_ARCHIVE_FROM_STAGE ->QUERY_ARCHIVE_FROM_CACHE
83  * ARCHIVE_TO_STAGE -> ARCHIVE_TO_CACHE
84  * ARCHIVE_FROM_STAGE -> ARCHIVE_FROM_CACHE
85  * 5. 3.2004, H.G.: srawFileSystem: add cArchiveDate, cArchiveUser
86  * new ACTION value READ_FROM_CACHE
87  * 24. 6.2004, H.G.: new STATUS value STA_CACHE_FULL
88  * 29. 6.2004, H.G.: new ARCH_DEVICE value ARCH_DAQ_DISK for DaqPool
89  * 2. 7.2004, H.G.: new definitions: DEF_FILESIZE,
90  * SLEEP_CACHE_FULL, MAXLOOP_CACHE_FULL
91  * 18.10.2004, H.G.: new STATUS value STA_CACHE_FILE_AWAY
92  * 24.11.2004, H.G.: STATUS value ARCHIVE_AVAILABLE -> STA_ARCHIVE_AVAIL
93  * new: STA_ARCHIVE_NOT_AVAIL, STA_NO_ACCESS
94  * 26. 1.2005, H.G.: new ACTION value QUERY_RETRIEVE_STAGE
95  * 20.10.2005, H.G.: increase DEF_FILESIZE to nearly 2 GByte
96  * 25.11.2005, H.G.: add cNodeMasterE1/2: new entry server lxha05/4
97  * 7. 3.2006, H.G.: increase MAX_NUM_DM: 10 -> 16
98  * 13. 3.2006, H.G.: new STATUS value STA_SWITCH_ENTRY (for HA),
99  * new parameter srawComm.cNodeCacheMgr (for HA)
100  * 15. 3.2006, H.G.: new STATUS value STA_ENTRY_INFO (for HA)
101  * 17. 3.2006, H.G.: new entry server lxgstore
102  * 28. 4.2006, H.G.: cleanup cNodeMasterxx strings
103  * 9. 5.2006, H.G.: new actions for 2nd level DM: QUERY_FILESERVER,
104  * SEND_TO_FILESERVER, RECEIVE_FROM_DM
105  * rename QUERY_RETRIEVE_API -> QUERY_RETRIEVE_RECORD
106  * new parameters srawComm: iPoolIdRC, cNodeRC,
107  * iPoolIdWC, cNodeWC, iFSidWC,
108  * iPoolIdFC, cNodeFC, iFSidFC,
109  * 19. 5.2006, H.G.: new idents: IDENT_STAGE_LIST, IDENT_QUERY_FILEDB
110  * 2.10.2006, H.G.: new parameters srawObjAttr: iATLServer,
111  * iRestoHigh2, iRestoHighLow, iRestoHighLow2,
112  * 5.10.2006, H.G.: new parameter srawComm: iATLServer
113  * 28. 9.2006, H.G.: add MAX_ATLSERVER
114  * 24.11.2006, H.G.: new ident IDENT_QUERY_DONE
115  * 20.12.2006, H.G.: add ATLSERVER_ARCHIVE for API write to gStore
116  * 14. 5.2007, H.G.: in srawObjAttr: iRestoHighLow2 -> iRestoLowHigh,
117  * iRestoHigh2 -> iRestoHighHigh
118  * 17. 7.2007, H.G.: new limit: MAX_STAGE_FILE_NO = 1000
119  * 29. 2.2008, H.G.: new actions (for /lustre):
120  * COPY_TO_FILESYSTEM, RETRIEVE_TO_FILESYSTEM
121  * 6. 3.2008, H.G.: new parameter srawComm: iDataFS, cDataFS
122  * 7. 4.2008, H.G.: new parameter srawComm: iReservation,
123  * new action MIGRATE_CACHE_PATH
124  * 17. 4.2008, H.G.: new action ARCHIVE_FROM_FILESYSTEM
125  * 21. 4.2008, H.G.: change MAX_ATLSERVER, MAX_MASTER -> 1
126  * 23. 4.2008, H.G.: new status STA_FILE_CACHED
127  * 8. 5.2008, H.G.: move static declaration [p]cOS from rawclin.h
128  * 9. 5.2008, H.G.: add typedef srawFileList
129  * (replaces srawArchList in rawclin.h)
130  * 19. 5.2008, H.G.: remove old declarations: cNodeMaster1,
131  * cNodeMaster2A, cNodeMaster2B
132  * 2. 6.2008, H.G.: replace long->int if 64 bit client (ifdef SYSTEM64)
133  * server still 32 bit
134  * 3. 6.2008, H.G.: replace MBUF_API (unused) by MBUF_RFIO
135  * 19. 6.2008, H.G.: new ident: IDENT_CACHE_STATUS
136  * decrease MAX_NUM_DM: 16 -> 10 (no more Windows)
137  * 14. 8.2008, H.G.: new ACTION SHOW_ARCHIVES
138  * 3. 9.2008, H.G.: new statics cDataFSHigh, iDataFSHigh
139  * 12. 1.2008, H.G.: add definition PORT_MOVER_DATAFS
140  * 16. 9.2008, H.G.: cDataFSHigh -> cDataFSHigh1, cDataFSHigh2
141  * remove iDataFSHigh
142  * 17. 9.2008, H.G.: set MBUF_SOCK, MBUF_ADSM to 32768
143  * 12.12.2008, H.G.: add definition CUR_QUERY_LIMIT
144  * 12. 2.2009, H.G.: new identifier: IDENT_COPY_CACHE
145  * add structure srawCopyCache to srawAPIFile
146  * 23. 2.2009, H.G.: new status: STA_CACHE_COPY, STA_CACHE_COPY_ERROR
147  * 24. 2.2009, H.G.: add cDataFSType
148  * 10. 3.2009, H.G.: add trailing '/' to cDataFSHigh1, cDataFSHigh2
149  * new definition MIN_DATAFS_PATH
150  * 8. 4.2009, H.G.: action COPY_TO_FILESYSTEM -> COPY_RC_TO_FILESYSTEM
151  * new action COPY_WC_TO_FILESYSTEM
152  * 25. 5.2009, H.G.: new global strings cAdminUser, cForceMigPath
153  * 1. 7.2009, H.G.: new IDENT_ARCHIVE_LIST, srawArchiveList
154  * 3. 9.2009, H.G.: move MAX_STAGE_FILE_NO to rawservn.h
155  * 28. 9.2009, H.G.: rename READ_FROM_CACHE to SEND_FROM_CACHE
156  * 27.11.2009, H.G.: adds new definitions: MAX_OBJ_FS_N, MAX_OBJ_HL_N,
157  * MAX_OBJ_LL_N, MAX_MC_N
158  * 4.12.2009, H.G.: enhanced structure srawObjAttr (version 5)
159  * keep old structure as srawObjAttrOld (version 4)
160  * 7.12.2009, H.G.: new definition: VERSION_SRAWOBJATTR
161  * 18.12.2009, H.G.: overall usage of new object sizes in MAX_OBJ_FS_N,
162  * MAX_OBJ_HL_N, MAX_OBJ_LL_N (but no trailing _N)
163  * for srawObjAttrOld:
164  * MAX_OBJ_HL -> MAX_OBJ_HL_O,
165  * MAX_OBJ_LL -> MAX_OBJ_LL_O
166  * 14. 1.2010, H.G.: MAX_MC -> MAX_MC_O (in srawObjAttrOld),
167  * MAX_MC_N -> MAX_MC
168  * srawObjAttr: cMgmtClass[MAX_MC+2] (padded 8 byte)
169  * remove unused ARCH_TAPE_MC_2, RETR_STAGE_DATE
170  * srawObjAttr: new mem iDM (for 8 byte padding)
171  * 28. 1.2010, H.G.: new definition: MAX_FULL_FILE
172  * enhance STATUS_LEN 256 -> 512
173  * 29. 1.2010, H.G.: srawFileList.cFile: MAX_FILE -> MAX_FULL_FILE
174  * srawComm.cDataFS: MAX_FILE -> MAX_FULL_FILE
175  * srawCopyCache.cCopyPath: MAX_FILE -> MAX_FULL_FILE
176  * 5. 2.2010, H.G.: mod. values: MAX_OBJ_HL 112, MAX_OBJ_LL 52
177  * srawObjAttr: new mem iDummy (for 8 byte padding)
178  * new: SIZE_CACHE_METADATA_5, SIZE_CACHE_METADATA_4
179  * 11. 2.2010, H.G.: new definition: MAX_OBJ_HL_LEVEL
180  * 22. 2.2010, H.G.: srawObjAttr.iFileSize[2]: two int for future 64 bit:
181  * 4 byte padding, ident struct size 32/64 bit env
182  * if long in 64 bit env: 8 byte padding, diff struct
183  * sizes (also in V1, V2 metadata structures)
184  * 16. 4.2010, H.G.: srawDataMoverAttr: iSynchId -> iATLServer
185  * 9. 6.2010, H.G.: IDENT_PROC_INFO, MAX_ITEM added
186  * 3. 9.2010, H.G.: srawComm: enable 8 byte filesize in 64 bit OS
187  * new iFileSize2, MAX_APPLTYPE: 32 -> 28
188  * 10. 9.2010, H.G.: discard SYSTEM64, srawObjAttrOld: 4 byte iFileSize
189  * 6.10.2010, H.G.: srawComm: new iClient32
190  * new definition: MAX_FILE_SIZE_U
191  * 26.11.2010, H.G.: string cTooBig: substitute for filesizes >= 4 GB
192  * *********************************************************************
193  */
194 
195 #define PORT_MASTER 1996 /* default port number master server */
196 #define PORT_MOVER 1994 /* default port number data mover */
197 #define PORT_MOVER_DATAFS 1998
198  /* default port number data mover writing to central data FS */
199 #define PORT_RFIO_SERV 1974 /* default port number RFIO server */
200 
201 #define ATLSERVER_ARCHIVE 1 /* API write: 1: IBM 3494, 2: SANLB2 */
202 #define MAX_ATLSERVER 1 /* max no. of ATL servers */
203 #define MAX_MASTER 1 /* max number of master servers */
204 #define MAX_NUM_DM 10 /* max no. of data movers on platform */
205 
206 #define MBUF_SOCK 32768 /* default buffer size sockets */
207 #define MBUF_ADSM 32768 /* default buffer size ADSM */
208 #define MBUF_RFIO 32768 /* max currently possible in MBS */
209 #define CUR_QUERY_LIMIT 0
210  /* no. of entries in query buffer
211  =0: current no. has default value (MBUF_SOCK - HEAD_LEN)/iObjAttr
212  >0 in any case limited by default value */
213 
214 #define SLEEP_CACHE_FULL 600 /* wait time/iter, if write cache full */
215 #define MAXLOOP_CACHE_FULL 3 /* max no of iter, if write cache full */
216 
217 #define DEF_FILESIZE 2044000000 /* assume <2GByte, if unavailable */
218 #define MAX_FILE_SIZE 2147483647 /* max filesize 2GByte-1 (signed) */
219 #define MAX_FILE_SIZE_U 4294967295 /* max size 4GByte-1 (unsigned) */
220 #define MAX_FILE_NO 1024 /* max number of file names in list */
221 
222 static const char cTooBig[8] = "(>=4GB)";
223  /* for 32 bit clients: substitute for filesize >= 4GB */
224 
225 #define MAX_NODE 16 /* max length node name */
226 static char cNodeMaster0[MAX_NODE] = "lxgstore"; /* entry server */
227 static char cNodeMasterE1[MAX_NODE] = "lxha05"; /* def entry server */
228 static char cNodeMasterE2[MAX_NODE] = "lxha04"; /* bkp entry server */
229 
230 #define MIN_DATAFS_PATH 12 /* min path length in lustre */
231 static char cDataFSType[16] = "lustre"; /* general name */
232 static char cDataFSHigh1[16] = "/lustre_alpha/"; /* 1st instance */
233 static char cDataFSHigh2[16] = "/lustre/"; /* prod instance */
234 
235 #define MAX_OWNER 16 /* max length object owner */
236 static char cAdminUser[MAX_OWNER] = "goeri"; /* special user */
237 static char cForceMigPath[32] = "/ArchiveNow"; /* special path name */
238 
239 /* query client operating system */
240 #define MAX_OS 8 /* max length operating system name */
241 static char *pcOS;
242 #ifdef _AIX
243 static char cOS[MAX_OS] = "AIX ";
244 #endif
245 #ifdef Linux
246 static char cOS[MAX_OS] = "Linux ";
247 #endif
248 #ifdef Lynx
249 static char cOS[MAX_OS] = "Lynx ";
250 #endif
251 #ifdef VMS
252 static char cOS[MAX_OS] = "VMS ";
253 #endif
254 
255 #define MAX_FULL_FILE 256 /* max length full file name */
256 #define MAX_FILE 128 /* max length rel. file name */
257 #define MAX_TAPE_FILE 17 /* max length file name on tape */
258 
259 #define VERSION_SRAWOBJATTR 5 /* cur version of struct srawObjAttr */
260 #define SIZE_CACHE_METADATA_5 424 /* cur size of cacheDB entry */
261 #define SIZE_CACHE_METADATA_4 344 /* old size of cacheDB entry */
262 
263 #define MAX_OBJ_FS 32
264  /* max len filespace name, in code limited to 26 due to MC */
265 #define MAX_OBJ_HL 112 /* max length object high level name */
266 #define MAX_OBJ_LL 52 /* max length object low level name */
267 #define MAX_OBJ_HL_O 92 /* max length object high level name */
268 #define MAX_OBJ_LL_O 36 /* max length object low level name */
269 #define MAX_OBJ_HL_LEVEL 14
270  /* max no. gStore directory levels, if MAX_OBJ_xx fully utilized */
271 
272 #define MAX_MC 30
273  /* length ManagementClass name:
274  limited by TSM (V5.5) to DSM_MAX_MC_NAME_LENGTH = 30
275  -> length filespace name (26) + length('TAPE') */
276 #define MAX_MC_O 12 /* max length Management class name */
277 
278 #define MAX_DATE 20 /* max length archive date and time */
279 #define MAX_APPLTYPE 28 /* max length application type */
280 #define MAX_ITEM 32 /* max length of process item */
281 
282 #define HEAD_OFFSET 3 /* offset common pre-header (ints) */
283 #define HEAD_LEN 12 /* length common pre-header (bytes) */
284 #define STATUS_LEN 512 /* max length status/error message */
285 #define WORK_LEN 20 /* length work space info */
286 
287 /* identifiers for buffer headers transfered via sockets */
288 /* at least IDENT_STATUS must be <0 to avoid confusion with data */
289 #define IDENT_COMM -1 /* communication control buffer */
290 #define IDENT_STATUS -2 /* status buffer from/to client */
291 #define IDENT_QUERY -3 /* query result buffer */
292 #define IDENT_POOL -4 /* stage pool info buffer */
293 #define IDENT_WORKSPACE -5 /* work space info buffer */
294 #define IDENT_NEXT_BUFFER -6 /* request next data buffer */
295 #define IDENT_MOVER_ATTR -7 /* data mover attributes */
296 #define IDENT_STAGE_FILE -8 /* stage file data (read cache) */
297 #define IDENT_SPACE_INFO -9 /* data mover space info */
298 #define IDENT_PURGE_INFO -10 /* purge request for data mover */
299 #define IDENT_SPACE_LOOK -11 /* meta data DB space info */
300 #define IDENT_CLEAN_REQUEST -12 /* clean request for stage pool */
301 #define IDENT_FILELIST_REQUEST -13 /* filelist request for stage FS */
302 #define IDENT_QUERY_ARCHDB -14 /* query result buffer archDB */
303 #define IDENT_FULL_ARCHDISK -15 /* buffer describing full disk */
304 #define IDENT_ARCHIVE_FILE -16 /* archive file data (write cache) */
305 #define IDENT_STAGE_LIST -17 /* list of read cache object data */
306 #define IDENT_QUERY_FILEDB -18 /* query result buffer fileDB */
307 #define IDENT_QUERY_DONE -19 /* last query result buffer */
308 #define IDENT_CACHE_STATUS -20 /* request query/set cache status */
309 #define IDENT_COPY_CACHE -21 /* copy DAQ stream data from cache */
310 #define IDENT_ARCHIVE_LIST -22 /* list of archive names */
311 #define IDENT_PROC_INFO -23 /* get/update proc no. in cacheDB */
312 #define IDENT_COMM64 -24 /* communication control buffer */
313 
314 enum ARCH_DEVICE /* logical archive device */
315 {
316  ARCH_ANY, /* 0: any device (for query) */
317  ARCH_TAPE, /* 1: standard tape class */
318  ARCH_TAPE_MC, /* 2: user specific tape class for archive */
319  MGR_TAPE, /* 3: tape for system manager: special MC */
320  ARCH_DISK, /* 4: disk in ArchivePool */
321  ARCH_DAQ_DISK /* 5: disk in DaqPool (RFIO only) */
322 };
323 
324 enum RETR_DEVICE /* logical staging device */
325 {
326  RETR_CLIENT, /* 0: no staging */
327  RETR_STAGE_TEMP, /* 1: no expiration date (retrieve) */
328  RETR_STAGE_PERM, /* 2: with expiration date (stage) */
329  RETR_FILESYSTEM /* 3: retrieve to central file system */
330 };
331 
332 enum FILETYPE /* describes data */
333 {
334  FIXED_INTS4, /* 0: fixed records, 4 byte int (signed) */
335  STREAM /* 1: record length not defined */
336 };
337 
338 enum ACTION /* action */
339 {
340  ARCHIVE, /* 0: archive files to TSM */
341  ARCHIVE_MGR, /* 1: archive sysmgr: set owner, special MC */
342  ARCHIVE_RECORD, /* 2: archive file from client program to WC */
343  ARCHIVE_OVER, /* 3: archive file with overwrite (client only)
344  on server: REMOVE + ARCHIVE_TO_CACHE */
345  CREATE_ARCHIVE, /* 4: sysmgr only: create new archive */
346  CLOSE, /* 5: close tape (client) */
347  REMOVE, /* 6: delete file from mass storage */
348  REMOVE_MGR, /* 7: delete file from mass storage (sysmgr) */
349  FILE_CHECK, /* 8: only needed for client side */
350  OPEN, /* 9: open tape (client) */
351  QUERY, /* 10: query for files in mass storage */
352  QUERY_ARCHIVE, /* 11: query files before ARCHIVE */
353  QUERY_ARCHIVE_MGR, /* 12: query files before ARCHIVE (sysmgr) */
354  QUERY_REMOVE, /* 13: query for files to be deleted */
355  QUERY_REMOVE_MGR, /* 14: query for files to be deleted (sysmgr) */
356  RETRIEVE, /* 15: retrieve file to client */
357  RETRIEVE_RECORD, /* 16: retrieve file via client api (via RC) */
358  RETRIEVE_STAGE, /* 17: retrieve file to client via read cache */
359  STAGE, /* 18: stage file to read cache */
360  QUERY_UNSTAGE, /* 19: query for files to be unstaged */
361  UNSTAGE, /* 20: remove file from read cache */
362  QUERY_POOL, /* 21: query for status of disk pools */
363  QUERY_WORKSPACE, /* 22: query files to be staged, get RC status*/
364  QUERY_STAGE, /* 23: query for files to be staged */
365  ARCHIVE_TO_CACHE, /* 24: arch. files from client to write cache */
366  ARCHIVE_FROM_CACHE, /* 25: archive files from write cache to TSM */
367  QUERY_RETRIEVE, /* 26: query for files to be retrieved */
368  QUERY_ARCHIVE_OVER, /* 27: query for files before ARCHIVE_OVER */
369  QUERY_ARCHIVE_TO_CACHE, /* 28: query before ARCHIVE_TO_CACHE */
370  SPM_REQUEST_MOVER, /* 29: request data mover for action */
371  QUERY_RETRIEVE_RECORD, /* 30: query before RETRIEVE_RECORD */
372  QUERY_ARCHIVE_FROM_CACHE, /* 31: query before ARCHIVE_FROM_CACHE */
373  END_SESSION, /* 32: end session on server */
374  QUERY_ARCHIVE_RECORD, /* 33: query before ARCHIVE_RECORD */
375  STAGE_FROM_CACHE, /* 34: copy files from WC to RC */
376  RETRIEVE_FROM_CACHE, /* 35: retr. files from WC via RC */
377  SEND_FROM_CACHE, /* 36: read from write cache, send to DM */
378  QUERY_RETRIEVE_STAGE, /* 37: query before RETRIEVE_STAGE */
379  COPY_RC_TO_FILESYSTEM, /* 38: copy from read cache to mounted FS */
380  RETRIEVE_TO_FILESYSTEM, /* 39: retrieve from TSM to mounted FS */
381  ARCHIVE_FROM_FILESYSTEM, /* 40: archive from mounted FS */
382  COPY_WC_TO_FILESYSTEM, /* 41: copy from write cache to mounted FS */
383  MIGRATE_CACHE_PATH, /* 42: migrate complete write cache path */
384  QUERY_FILESERVER, /* 43: query files in specified 2nd level DM */
385  SEND_TO_FILESERVER, /* 44: read from RC, send to FileServer */
386  RECEIVE_FROM_DM, /* 45: on FileServer: recv from DM, write to FS */
387  SHOW_ARCHIVES /* 46 show list of matching archives */
388 };
389 
390 typedef struct /* info for file list */
391 {
392  char cFile[MAX_FULL_FILE]; /* fully qualified file name */
393 } srawFileList;
394 
395 /* command buffer with object attributes, used only for 32 bit OS */
396 typedef struct
397 {
398  int iIdent; /* IDENT_COMM identifies command buffer */
399  int iAction; /* see definition of ACTION */
400  int iCommLen; /* length of following data */
401  char cNamefs[MAX_OBJ_FS]; /* filespace name */
402  char cNamehl[MAX_OBJ_HL]; /* object high level name */
403  char cNamell[MAX_OBJ_LL]; /* file name / object low level name */
404  char cOwner[MAX_OWNER]; /* account name of requestor */
405  char cOS[MAX_OS]; /* user operating system */
406  char cApplType[MAX_APPLTYPE]; /* application type */
407  int iFileType; /* see definition of FILETYPE */
408  int iBufsizeFile; /* buffer size file */
409  unsigned int iFileSize; /* file size (byte), overlaid with 'long' */
410  unsigned int iFileSize2; /* both together 8 byte */
411  int iArchDev; /* = ARCH_DEVICE or RETR_DEVICE */
412  unsigned int iObjHigh; /* upper four bytes object Id */
413  unsigned int iObjLow; /* lower four bytes object Id */
414  char cliNode[MAX_NODE]; /* client node name */
415  int iExecStatus; /* execution status set by LockManager:
416  = 1: active, = 2 waiting, = 3 suppressed */
417  int iWaitTime; /* time to wait before execution (seconds) */
418  int iSynchId; /* = 1: RFIO write in DAQ mode (1st: select DM) */
419  /* =11: requested action recursive */
420  char cTapeLib[16]; /* name of ATL: "" default, "*" all */
421  char cNodeCacheMgr[MAX_NODE]; /* name of node with cache mgrs */
422  int iATLServer; /* =1: aixtsm1(AIX), =2: gsitsma(Win),
423  < 0: test system */
424  int iPoolIdRC; /* read cache PoolId (= 0: not in RC) */
425  char cNodeRC[MAX_NODE]; /* read cache DM name (= "": not in RC) */
426  int iStageFSid; /* stage FS no. on read cache DM (= 0: not in RC) */
427  int iPoolIdWC; /* write cache PoolId (= 0: not in WC) */
428  char cNodeWC[MAX_NODE]; /* write cache DM name (= "": not in WC) */
429  int iFSidWC; /* FS no. on write cache DM (= 0: not in WC) */
430  char cNodeFC[MAX_NODE]; /* file server cache node ("": not in FC) */
431  int iFSidFC; /* FS no. on file server cache node (= 0: not in FC) */
432  int iDataFS; /* =1: retrieve directly to central data FS */
433  char cDataFS[MAX_FULL_FILE]; /* full path in central data FS */
434  int iClient32; /* =1: 32 bit gstore/RFIO client */
435  int iReservation; /* >0: current object belongs to workspace with
436  specified space reservation number */
437 } srawComm;
438 
439 enum STATUS /* status of action */
440 {
441  STA_BEGIN_TRANS, /* 0: server ready for data transfer */
442  STA_NEXT_BUFFER, /* 1: API client: request next sequ. buffer */
443  STA_END_OF_FILE, /* 2: okay, handle next file */
444  STA_END_OF_SESSION, /* 3: okay, end session */
445  STA_ERROR, /* 4: error, end session */
446  STA_ERROR_EOF, /* 5: error, handle next file */
447  STA_FILE_STAGED, /* 6: file staged (RC) or written to data FS */
448  STA_END_OF_FILE_NOT_STAGED, /* 7: file retrieved, but not staged */
449  STA_SEEK_BUFFER, /* 8: API client: seek new buffer */
450  STA_ARCHIVE_AVAIL, /* 9: archive already available on server */
451  STA_SWITCH_SERVER, /* 10: switch data mover */
452  STA_INFO, /* 11: informatory message */
453  STA_PURGED, /* 12: some/all requested files purged on DM */
454  STA_NOT_PURGED, /* 13: no file could be purged on DM */
455  STA_CACHE_FULL, /* 14: write cache currently full */
457  /* 15: file no longer in write cache, probably archived */
458  STA_ARCHIVE_NOT_AVAIL, /* 16: archive not available on server */
459  STA_NO_ACCESS, /* 17: requested access to archive not allowed */
460  STA_SWITCH_ENTRY, /* 18: switch entry server */
461  STA_ENTRY_INFO, /* 19: info: name of entry server */
462  STA_FILE_CACHED, /* 20: file cached (WC) from central data FS */
463  STA_CACHE_COPY, /* 21: successfull copy from WC to central dataFS */
465  /* 22: error status for copy from WC to central data FS */
466 };
467 
468 typedef struct /* Status buffer */
469 {
470  int iIdent; /* IDENT_STATUS identifies status buffer */
471  int iStatus; /* see definition of STATUS */
472  int iStatusLen; /* length of following message */
473  char cStatus[STATUS_LEN]; /* status message */
474 } srawStatus;
475 
476 typedef struct /* Request buffer for API client */
477 {
478  int iIdent; /* IDENT_NEXT_BUFFER identifies request buffer */
479  int iStatus; /* see definition of STATUS */
480  int iStatusLen; /* length of following info */
481  int iSeekMode; /* byte offset mode (see lseek C function):
482  SEEK_SET: set offset to iOffset bytes
483  SEEK_CUR: increase current offset for iOffset bytes
484  SEEK_END: set offset to file size plus iOffset bytes */
485  int iOffset; /* requested byte offset */
486  int iBufferSize; /* length of requested buffer */
487 } srawRequest;
488 
489 typedef struct /* object attribute buffer version 4 */
490 {
491  int iVersion; /* structure version: 4, 304 byte */
492  char cNamefs[MAX_OBJ_FS]; /* filespace name */
493  char cNamehl[MAX_OBJ_HL_O]; /* object high level name */
494  char cNamell[MAX_OBJ_LL_O]; /* file name / object low level name */
495  int iFileType; /* see definition of FILETYPE */
496  int iBufsizeFile; /* buffer size file */
497  unsigned int iFileSize; /* file size in bytes, old: 4 byte okay */
498  char cDate[MAX_DATE]; /* archive date and time */
499  char cOwner[MAX_OWNER]; /* account name of owner */
500  char cOS[MAX_OS]; /* operating system archiving client */
501  char cMgmtClass[MAX_MC_O]; /* management class */
502  int iMediaClass; /* media class */
503  unsigned int iObjHigh; /* upper four bytes object Id */
504  unsigned int iObjLow; /* lower four bytes object Id */
505  unsigned int iRestoHigh; /* top four bytes restore order */
506  unsigned int iRestoLow; /* lo_lo four bytes restore order */
507  int iFS; /* filesystem number if file on disk */
508  char cNode[MAX_NODE]; /* node name data mover */
509  char cStageUser[MAX_OWNER]; /* account name of staging user */
510  int iATLServer; /* =1: aixtsm1(AIX), =2: gsitsma(Win),
511  < 0: test system */
512  unsigned int iRestoHighHigh;/* hi_hi four bytes restore order */
513  unsigned int iRestoHighLow; /* hi_lo four bytes restore order */
514  unsigned int iRestoLowHigh; /* lo_hi four bytes restore order */
516 
517 typedef struct /* query info of gStore object version 5 from server,
518  part of cacheDB buffer relevant for client */
519 {
520  int iVersion; /* structure version: VERSION_SRAWOBJATTR */
521  int iSize; /* size of this structure (version 5: 384 byte) */
522  char cNamefs[MAX_OBJ_FS]; /* filespace name */
523  char cNamehl[MAX_OBJ_HL]; /* object high level name */
524  char cNamell[MAX_OBJ_LL]; /* file name / object low level name */
525  int iFileType; /* see definition of FILETYPE */
526  int iBufsizeFile; /* buffer size */
527  unsigned int iFileSize; /* file size (byte), overlaid with 'long' */
528  unsigned int iFileSize2; /* both together 8 byte */
529  char cDateCreate[MAX_DATE]; /* creation date/time in gStore */
530  char cOwner[MAX_OWNER]; /* account name of owner */
531  char cOS[MAX_OS]; /* operating system archiving client */
532  char cMgmtClass[MAX_MC+2]; /* TSM management class, padded 8 byte */
533  int iMediaClass; /* media class */
534  unsigned int iObjHigh; /* upper four bytes object Id */
535  unsigned int iObjLow; /* lower four bytes object Id */
536  unsigned int iRestoHigh; /* top four bytes restore order */
537  unsigned int iRestoHighHigh; /* hi_hi four bytes restore order */
538  unsigned int iRestoHighLow; /* hi_lo four bytes restore order */
539  unsigned int iRestoLowHigh; /* lo_hi four bytes restore order */
540  unsigned int iRestoLow; /* lo_lo four bytes restore order */
542  /* =1: aixtsm1 (AIX), =2: gsitsma (Win), < 0: test system */
543  int iPoolId;
544  /* disk pool identifier:
545  1: RetrievePool ATLServer1 (created by retrieve)
546  2: StagePool ATLServer1 (created by stage)
547  3: ArchivePool ATLServer1 (write cache)
548  4: DAQPool ATLServer1 (write cache)
549  11: RetrievePool ATLServer2 (created by retrieve)
550  12: StagePool ATLServer2 (created by stage)
551  13: ArchivePool ATLServer2 (write cache)
552  14: DAQPool ATLServer2 (write cache)
553  */
554  char cNode[MAX_NODE]; /* node name data mover */
555  int iDM; /* cache data mover number, =0: not in cache */
556  int iFS; /* cache filesystem number, =0: not in cache */
557  int iFileSet; /* Id of file set (handled parallel) */
558  int iDummy; /* for 8 byte padding */
559  char cStageUser[MAX_OWNER]; /* account name of staging user */
560 } srawObjAttr;
561 
562 typedef struct /* Query response buffer */
563 {
564  int iIdent; /* IDENT_QUERY, IDENT_QUERY_ARCHDB, IDENT_QUERY_DONE */
565  int iObjCount; /* no. of objects matching */
566  int iAttrLen; /* length attributes buffer of object */
567  srawObjAttr objAttr; /* attributes of object found */
568  /* appended for each object */
570 
571 /* stage pool attributes for one data mover */
572 typedef struct
573 {
574  char cNodeName[MAX_NODE]; /* node name data mover */
575  int iMaxSizeMover; /* max size of pool on this data mover (MByte) */
576  int iFreeSizeHW; /* current free size in hardware (MByte) */
577  int iFreeSize; /* current free size in pool (MByte) */
578  int iFiles; /* current no. of files in pool */
579  int iFileSystems; /* no. of FS on this data mover:
580  = 0: all FS, > 0: list follows (srawStageFS) */
582 
583 /* stage pool attributes */
584 typedef struct
585 {
586  char cPoolName[32]; /* pool name */
587  char cPoolOS[MAX_OS]; /* name of OS where pool resides */
588  int iPoolId; /* pool identification number */
589  int iMaxSizeHW; /* overall size of HW (MByte) */
590  int iFreeSizeHW; /* current free size in HW (MByte) */
591  int iMaxSize; /* overall size of pool (MByte) */
592  int iFreeSize; /* current free size in pool (MByte) */
593  int iMaxWorkSize; /* max size of work space in pool (MByte) */
594  int iFileAvail; /* guaranteed availability of files (days) */
596  /* threshold work space size for check of pool status (MByte) */
597  int iFiles; /* current no. of files in pool */
598  int iDataMover; /* number of data movers in pool */
600 
601 /* for exchange with client: status buffers stage pool + WS */
602 typedef struct
603 {
604  int iIdent; /* IDENT_POOL identifies pool status header */
605  int iPoolNo; /* no. of pool + WS buffers following */
606  int iStatusLen; /* size of following data (n pools, opt. 1 WS) */
607  srawPoolStatusData sPoolStatusData; /* stage pool attributes */
609 
610 typedef struct /* server infos on requ. work space */
611 {
612  int iIdent;/* IDENT_WORKSPACE identifies work space status header */
613  int iWorkId; /* work space identification number */
614  int iStatusLen; /* length of following data */
615  int iWorkSizeAll; /* size of requ. work space (MByte) */
616  int iWorkFilesAll; /* total no. of files in work space */
617  int iWorkSizeSta; /* part of requ. work space already staged */
618  int iWorkFilesSta; /* no. of files in work space already staged */
619  int iWorkSizeStaTemp; /* part of staged work space in temp pool */
620  int iWorkFilesStaTemp; /* no. of staged files in temp pool */
621  int iWorkSizeEst; /* part of requ. work space size estimated */
623  /* no. of files in work space with size estimated */
624  int iStatus; /* work space status flag:
625  = -1: problem, can't create
626  = 0: okay, space available
627  = 1: lack of space in pool
628  = 2: above allowed limit of work space
629  = 3: work space larger than pool
630  = 9: lack of space -> clean job, no sleep
631  >= 10: lack of space -> clean job, sleep iStatus min.
632  */
633 } srawWorkSpace;
634 
635 typedef struct /* attributes of data mover */
636 {
637  char cNode[MAX_NODE]; /* node name */
638  int iPort; /* port no. */
639  int iSocket; /* socket no. */
640  int iExecStatus; /* execution status set by LockManager (unused):
641  = 1: active, = 2 waiting, = 3 suppressed */
642  int iWaitTime; /* time to wait before execution (seconds) */
643  int iATLServer; /* number of ATL Server */
645 
646 typedef struct /* communication buffer with data mover attributes */
647 {
648  int iIdent; /* IDENT_STATUS identifies status buffer */
649  int iStatus; /* see definition of STATUS */
650  int iStatusLen; /* length of following message */
651  srawDataMoverAttr sDataMoverAttr; /* attributes of data mover */
652 } srawDataMover;
653 
654 typedef struct /* filesystem infos */
655 {
656  char cOS[MAX_OS]; /* operating system */
657  char cNode[MAX_NODE]; /* node name */
658  int iFileSystem; /* no. of filesystem on node */
659  char cArchiveDate[MAX_DATE]; /* creation date in ArchivePool */
660  char cArchiveUser[MAX_OWNER]; /* account name of archiving user */
662 
663 typedef struct /* for copy of DAQ data stream to dataFS */
664 {
665  int iIdent; /* IDENT_COPY_CACHE */
667  /* = 0: ignore this buffer
668  = 1: copy to pcCopyPath AFTER file written to WC
669  (for high data rates, don't interfere writing to cache)
670  = 2: for dataFS only:
671  write each data buffer to WC and pcCopyPath
672  (for low data rates, anyhow first buffers quickly
673  available in lustre)
674  */
675  int iCopyLen; /* length following data (byte) */
676  char cCopyPath[MAX_FULL_FILE];
677  /* destination where to be copied
678  = "/lustre..." => fully qualified path name in lustre
679  if not existing: will be created (see iPathConvention)
680  = "RC" => read cache
681  */
683  /* = i>0: copy each ith file to pcCopyPath
684  if tape migration fails: ignore iCopyFraction, copy
685  each file
686  */
687  int iMaxFile;
688  /* for dataFS only:
689  = 0: no file limit
690  > 0: max no. of files to be written to directory
691  files already existing are ignored
692  if iMaxFile reached, new directory will be created
693  (same level as previous directory)
694  */
696  /* rules for creation of initial/new path
697  = 0: default convention
698  initially specified .../xxx => .../xxx
699  last .../xxx => create ...xxx1
700  last .../xxxi => create ...xxxj j=i+1
701  = 1: Hades convention: path name contains time stamp
702  initially specified .../xxx => .../xxxyydddhhmm
703  new => .../xxxyydddhhmm
704  */
705 } srawCopyCache;
706 
707 typedef struct /* list of archives */
708 {
709  int iIdent; /* IDENT_ARCHIVE_LIST */
710  int iArchCount; /* no. of archives names following */
711  int iArchSize; /* length of following data (byte) */
712  char cArchive[MAX_OBJ_FS]; /* archive name */
714 
int iAction
Definition: rawcommn.h:399
int iWorkFilesAll
Definition: rawcommn.h:616
int iIdent
Definition: rawcommn.h:398
unsigned int iObjHigh
Definition: rawcommn.h:534
ARCH_DEVICE
Definition: rawcommn.h:314
int iVersion
Definition: rawcommn.h:520
srawDataMoverAttr sDataMoverAttr
Definition: rawcommn.h:651
int iBufsizeFile
Definition: rawcommn.h:526
int iBufferSize
Definition: rawcommn.h:486
int iBufsizeFile
Definition: rawcommn.h:496
unsigned int iObjHigh
Definition: rawcommn.h:503
int iIdent
Definition: rawcommn.h:470
int iOffset
Definition: rawcommn.h:485
#define MAX_OBJ_LL
Definition: rawcommn.h:266
#define MAX_OBJ_FS
Definition: rawcommn.h:263
int iBufsizeFile
Definition: rawcommn.h:408
RETR_DEVICE
Definition: rawcommn.h:324
static char cNodeMasterE1[MAX_NODE]
Definition: rawcommn.h:227
static char cAdminUser[MAX_OWNER]
Definition: rawcommn.h:236
unsigned int iRestoHigh
Definition: rawcommn.h:536
int iStatusLen
Definition: rawcommn.h:472
unsigned int iRestoHighHigh
Definition: rawcommn.h:537
int iFSidFC
Definition: rawcommn.h:431
int iReservation
Definition: rawcommn.h:435
static char cNodeMasterE2[MAX_NODE]
Definition: rawcommn.h:228
int iWorkFilesStaTemp
Definition: rawcommn.h:620
unsigned int iObjHigh
Definition: rawcommn.h:412
int iSeekMode
Definition: rawcommn.h:481
int iStatus
Definition: rawcommn.h:471
unsigned int iObjLow
Definition: rawcommn.h:535
int iStatusLen
Definition: rawcommn.h:614
#define MAX_MC_O
Definition: rawcommn.h:276
int iATLServer
Definition: rawcommn.h:541
int iWaitTime
Definition: rawcommn.h:417
int iWorkFilesSta
Definition: rawcommn.h:618
static char cForceMigPath[32]
Definition: rawcommn.h:237
int iPoolIdRC
Definition: rawcommn.h:424
unsigned int iFileSize
Definition: rawcommn.h:409
static const char cTooBig[8]
Definition: rawcommn.h:222
int iStatusLen
Definition: rawcommn.h:480
unsigned int iObjLow
Definition: rawcommn.h:504
int iPoolId
Definition: rawcommn.h:543
unsigned int iFileSize
Definition: rawcommn.h:527
unsigned int iRestoHighLow
Definition: rawcommn.h:513
#define MAX_OWNER
Definition: rawcommn.h:235
Definition: rawcommn.h:350
STATUS
Definition: rawcommn.h:439
int iPoolIdWC
Definition: rawcommn.h:427
static char * pcOS
Definition: rawcommn.h:241
#define MAX_OBJ_LL_O
Definition: rawcommn.h:268
int iStageFSid
Definition: rawcommn.h:426
int iWorkSizeSta
Definition: rawcommn.h:617
int iATLServer
Definition: rawcommn.h:422
unsigned int iObjLow
Definition: rawcommn.h:413
unsigned int iFileSize2
Definition: rawcommn.h:410
static char cDataFSHigh2[16]
Definition: rawcommn.h:233
#define MAX_NODE
Definition: rawcommn.h:225
#define MAX_FULL_FILE
Definition: rawcommn.h:255
#define MAX_APPLTYPE
Definition: rawcommn.h:279
#define MAX_OS
Definition: rawcommn.h:240
static char cApplType[MAX_APPLTYPE]
Definition: rawapplcli.h:16
unsigned int iRestoHighHigh
Definition: rawcommn.h:512
static char cNamefs[MAX_OBJ_FS]
Definition: rawProcn.c:164
unsigned int iRestoLowHigh
Definition: rawcommn.h:514
srawPoolStatusData sPoolStatusData
Definition: rawcommn.h:607
#define STATUS_LEN
Definition: rawcommn.h:284
unsigned int iRestoLow
Definition: rawcommn.h:506
int iIdent
Definition: rawcommn.h:478
int iWorkSizeEst
Definition: rawcommn.h:621
int iFileSet
Definition: rawcommn.h:557
int iWorkFilesEst
Definition: rawcommn.h:622
int iPathConvention
Definition: rawcommn.h:695
int iCommLen
Definition: rawcommn.h:400
static char cNamehl[MAX_OBJ_HL]
Definition: rawProcn.c:165
static char cDataFSHigh1[16]
Definition: rawcommn.h:232
FILETYPE
Definition: rawcommn.h:332
static char cNodeMaster0[MAX_NODE]
Definition: rawcommn.h:226
unsigned int iRestoLowHigh
Definition: rawcommn.h:539
int iWorkSizeAll
Definition: rawcommn.h:615
int iStatusLen
Definition: rawcommn.h:650
int iCopyFraction
Definition: rawcommn.h:682
#define MAX_MC
Definition: rawcommn.h:272
int iFileType
Definition: rawcommn.h:525
int iFSidWC
Definition: rawcommn.h:429
int iDataFS
Definition: rawcommn.h:432
int iClient32
Definition: rawcommn.h:434
int iMediaClass
Definition: rawcommn.h:533
ACTION
Definition: rawcommn.h:338
int iSynchId
Definition: rawcommn.h:418
unsigned int iFileSize2
Definition: rawcommn.h:528
srawObjAttr objAttr
Definition: rawcommn.h:567
unsigned int iRestoLow
Definition: rawcommn.h:540
int iWorkSizeStaTemp
Definition: rawcommn.h:619
int iStatus
Definition: rawcommn.h:479
unsigned int iRestoHighLow
Definition: rawcommn.h:538
int iExecStatus
Definition: rawcommn.h:415
unsigned int iRestoHigh
Definition: rawcommn.h:505
static char cDataFSType[16]
Definition: rawcommn.h:231
int iFileType
Definition: rawcommn.h:407
#define MAX_OBJ_HL_O
Definition: rawcommn.h:267
int iDummy
Definition: rawcommn.h:558
#define MAX_DATE
Definition: rawcommn.h:278
#define MAX_OBJ_HL
Definition: rawcommn.h:265
int iArchDev
Definition: rawcommn.h:411
unsigned int iFileSize
Definition: rawcommn.h:497