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 __CM_VOLUME_H_ENV__
11 #define __CM_VOLUME_H_ENV__ 1
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 */
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 */
29 #define CM_VOLUMEFLAG_RESET 1 /* reload this info on next use */
31 extern void cm_InitVolume(void);
33 extern long cm_GetVolumeByName(struct cm_cell *, char *, struct cm_user *,
34 struct cm_req *, long, cm_volume_t **);
36 extern void cm_PutVolume(cm_volume_t *volp);
38 extern long cm_GetROVolumeID(cm_volume_t *volp);
40 extern long cm_GetVolumeByID(struct cm_cell *cellp, long volumeID,
41 cm_user_t *userp, cm_req_t *reqp, cm_volume_t **outVolpp);
43 extern void cm_ForceUpdateVolume(struct cm_fid *fidp, cm_user_t *userp,
46 extern cm_serverRef_t *cm_GetVolServers(cm_volume_t *volp, unsigned long volume);
48 extern void cm_ChangeRankVolume(cm_server_t *tsp);
50 extern void cm_CheckVolumes(void);
52 #endif /* __CM_VOLUME_H_ENV__ */