Windows: Add cm_GetVolumeType
[openafs.git] / src / WINNT / afsd / cm_volume.h
index c27104a..a7aecff 100644 (file)
@@ -42,6 +42,7 @@ typedef struct cm_volume {
     osi_rwlock_t rw;
     afs_uint32 flags;                  /* by rw */
     afs_int32 refCount;                        /* by Interlocked operations */
+    struct cm_server *cbServerpRO;      /* server granting RO callback; by cm_scacheLock */
     time_t cbExpiresRO;                 /* latest RO expiration time; by cm_scacheLock */
 } cm_volume_t;
 
@@ -49,7 +50,7 @@ typedef struct cm_volume {
 #define CM_VOLUMEFLAG_IN_HASH      2
 #define CM_VOLUMEFLAG_IN_LRU_QUEUE 4
 #define CM_VOLUMEFLAG_UPDATING_VL  8
-
+#define CM_VOLUMEFLAG_DFS_VOLUME  16
 
 typedef struct cm_volumeRef {
     struct cm_volumeRef * next;
@@ -69,6 +70,7 @@ extern long cm_FindVolumeByID(struct cm_cell *cellp, afs_uint32 volumeID,
 #define CM_GETVOL_FLAG_CREATE               1
 #define CM_GETVOL_FLAG_NO_LRU_UPDATE        2
 #define CM_GETVOL_FLAG_NO_RESET                    4
+#define CM_GETVOL_FLAG_IGNORE_LINKED_CELL   8
 
 /* hash define.  Must not include the cell, since the callback revocation code
  * doesn't necessarily know the cell in the case of a multihomed server
@@ -89,10 +91,11 @@ extern void cm_PutVolume(cm_volume_t *volp);
 
 extern long cm_GetROVolumeID(cm_volume_t *volp);
 
-extern void cm_ForceUpdateVolume(struct cm_fid *fidp, cm_user_t *userp,
+extern long cm_ForceUpdateVolume(struct cm_fid *fidp, cm_user_t *userp,
        cm_req_t *reqp);
 
-extern cm_serverRef_t **cm_GetVolServers(cm_volume_t *volp, afs_uint32 volume);
+extern cm_serverRef_t **cm_GetVolServers(cm_volume_t *volp, afs_uint32 volume, 
+                                         cm_user_t *userp, cm_req_t *reqp);
 
 extern void cm_ChangeRankVolume(cm_server_t *tsp);
 
@@ -124,9 +127,13 @@ extern void cm_CheckOfflineVolumes(void);
 
 extern long cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID);
 
+extern void cm_CheckOfflineVolumeState(cm_volume_t *volp, cm_vol_state_t *statep, 
+                                       afs_uint32 volID,  afs_uint32 *onlinep, 
+                                       afs_uint32 *volumeUpdatedp);
+
 extern void cm_UpdateVolumeStatus(cm_volume_t *volp, afs_uint32 volID);
 
-extern void cm_VolumeStatusNotification(cm_volume_t * volp, afs_uint32 volID, enum volstatus old, enum volstatus new);
+extern void cm_VolumeStatusNotification(cm_volume_t * volp, afs_uint32 volID, enum volstatus oldState, enum volstatus newState);
 
 extern enum volstatus cm_GetVolumeStatus(cm_volume_t *volp, afs_uint32 volID);
 
@@ -138,5 +145,7 @@ extern cm_vol_state_t * cm_VolumeStateByID(cm_volume_t *volp, afs_uint32 id);
 
 extern cm_vol_state_t * cm_VolumeStateByName(cm_volume_t *volp, char *volname);
 
+extern afs_int32 cm_VolumeType(cm_volume_t *volp, afs_uint32 id);
+
 extern osi_rwlock_t cm_volumeLock;
 #endif /*  __CM_VOLUME_H_ENV__ */