import-fs-formatting-to-windows-20031207
[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 typedef struct cm_volume {
14         struct cm_cell *cellp;          /* never changes */
15         char *namep;                    /* by cm_volumeLock */
16         unsigned long rwID;             /* by cm_volumeLock */
17         unsigned long roID;             /* by cm_volumeLock */
18         unsigned long bkID;             /* by cm_volumeLock */
19         struct cm_volume *nextp;        /* by cm_volumeLock */
20         struct cm_fid *dotdotFidp;      /* parent of volume root */
21         osi_mutex_t mx;
22         long flags;                     /* by mx */
23         int refCount;                   /* by cm_volumeLock */
24         cm_serverRef_t *rwServersp;     /* by mx */
25         cm_serverRef_t *roServersp;     /* by mx */
26         cm_serverRef_t *bkServersp;     /* by mx */
27 } cm_volume_t;
28
29 #define CM_VOLUMEFLAG_RESET     1       /* reload this info on next use */
30
31 extern void cm_InitVolume(void);
32
33 extern long cm_GetVolumeByName(struct cm_cell *, char *, struct cm_user *,
34         struct cm_req *, long, cm_volume_t **);
35
36 extern void cm_PutVolume(cm_volume_t *volp);
37
38 extern long cm_GetROVolumeID(cm_volume_t *volp);
39
40 extern long cm_GetVolumeByID(struct cm_cell *cellp, long volumeID,
41         cm_user_t *userp, cm_req_t *reqp, cm_volume_t **outVolpp);
42
43 extern void cm_ForceUpdateVolume(struct cm_fid *fidp, cm_user_t *userp,
44         cm_req_t *reqp);
45
46 extern cm_serverRef_t *cm_GetVolServers(cm_volume_t *volp, unsigned long volume);
47
48 extern void cm_ChangeRankVolume(cm_server_t *tsp);
49
50 extern void cm_CheckVolumes(void);
51
52 #endif /*  __CM_VOLUME_H_ENV__ */