#ifndef __CM_VOLUME_H_ENV__
#define __CM_VOLUME_H_ENV__ 1
+#define VL_MAXNAMELEN 65
+
+#define CM_VOLUME_MAGIC ('V' | 'O' <<8 | 'L'<<16 | 'M'<<24)
+
typedef struct cm_volume {
- struct cm_cell *cellp; /* never changes */
- char *namep; /* by cm_volumeLock */
- unsigned long rwID; /* by cm_volumeLock */
- unsigned long roID; /* by cm_volumeLock */
- unsigned long bkID; /* by cm_volumeLock */
- struct cm_volume *nextp; /* by cm_volumeLock */
- struct cm_fid *dotdotFidp; /* parent of volume root */
+ afs_uint32 magic;
+ cm_cell_t *cellp; /* never changes */
+ char namep[VL_MAXNAMELEN]; /* by cm_volumeLock */
+ unsigned long rwID; /* by cm_volumeLock */
+ unsigned long roID; /* by cm_volumeLock */
+ unsigned long bkID; /* by cm_volumeLock */
+ struct cm_volume *nextp; /* by cm_volumeLock */
+ struct cm_fid dotdotFid; /* parent of volume root */
osi_mutex_t mx;
- long flags; /* by mx */
- unsigned long refCount; /* by cm_volumeLock */
- cm_serverRef_t *rwServersp; /* by mx */
- cm_serverRef_t *roServersp; /* by mx */
- cm_serverRef_t *bkServersp; /* by mx */
+ long flags; /* by mx */
+ unsigned long refCount; /* by cm_volumeLock */
+ cm_serverRef_t *rwServersp; /* by mx */
+ cm_serverRef_t *roServersp; /* by mx */
+ cm_serverRef_t *bkServersp; /* by mx */
} cm_volume_t;
#define CM_VOLUMEFLAG_RESET 1 /* reload this info on next use */
-extern void cm_InitVolume(void);
+extern void cm_InitVolume(int newFile, long maxVols);
extern long cm_GetVolumeByName(struct cm_cell *, char *, struct cm_user *,
struct cm_req *, long, cm_volume_t **);
extern void cm_CheckVolumes(void);
+extern long cm_ValidateVolume(void);
+
+extern long cm_ShutdownVolume(void);
#endif /* __CM_VOLUME_H_ENV__ */