windows-bkgdaemon-retry-failed-requests-20070203
[openafs.git] / src / WINNT / afsd / cm_volume.h
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 __CM_VOLUME_H_ENV__
11 #define __CM_VOLUME_H_ENV__ 1
12
13 #define VL_MAXNAMELEN                   65
14
15 #define CM_VOLUME_MAGIC    ('V' | 'O' <<8 | 'L'<<16 | 'M'<<24)
16
17 typedef struct cm_volume {
18     afs_uint32  magic;
19     cm_cell_t *cellp;                   /* never changes */
20     char namep[VL_MAXNAMELEN];          /* by cm_volumeLock */
21     unsigned long rwID;                 /* by cm_volumeLock */
22     unsigned long roID;                 /* by cm_volumeLock */
23     unsigned long bkID;                 /* by cm_volumeLock */
24     struct cm_volume *nextp;            /* by cm_volumeLock */
25     struct cm_fid dotdotFid;            /* parent of volume root */
26     osi_mutex_t mx;
27     long flags;                         /* by mx */
28     unsigned long refCount;             /* by cm_volumeLock */
29     cm_serverRef_t *rwServersp;         /* by mx */
30     cm_serverRef_t *roServersp;         /* by mx */
31     cm_serverRef_t *bkServersp;         /* by mx */
32 } cm_volume_t;
33
34 #define CM_VOLUMEFLAG_RESET     1       /* reload this info on next use */
35
36 extern void cm_InitVolume(int newFile, long maxVols);
37
38 extern long cm_GetVolumeByName(struct cm_cell *, char *, struct cm_user *,
39         struct cm_req *, long, cm_volume_t **);
40
41 extern long cm_GetVolumeByID(struct cm_cell *cellp, long volumeID,
42         cm_user_t *userp, cm_req_t *reqp, cm_volume_t **outVolpp);
43
44 extern void cm_GetVolume(cm_volume_t *volp);
45
46 extern void cm_PutVolume(cm_volume_t *volp);
47
48 extern long cm_GetROVolumeID(cm_volume_t *volp);
49
50 extern void cm_ForceUpdateVolume(struct cm_fid *fidp, cm_user_t *userp,
51         cm_req_t *reqp);
52
53 extern cm_serverRef_t **cm_GetVolServers(cm_volume_t *volp, unsigned long volume);
54
55 extern void cm_ChangeRankVolume(cm_server_t *tsp);
56
57 extern void cm_RefreshVolumes(void);
58
59 extern long cm_ValidateVolume(void);
60
61 extern long cm_ShutdownVolume(void);
62
63 extern int cm_DumpVolumes(FILE *outputFile, char *cookie, int lock);
64 #endif /*  __CM_VOLUME_H_ENV__ */