windows-check-offline-volumes-20080205
[openafs.git] / src / WINNT / afsd / cm_volume.c
index e9025c2..785e32c 100644 (file)
@@ -1018,6 +1018,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
                 serversp->status = srv_not_busy;
         }
 
+               lock_ReleaseMutex(&volp->mx);
         do {
             code = cm_ConnFromVolume(volp, volp->rw.ID, cm_rootUserp, &req, &connp);
             if (code) 
@@ -1031,6 +1032,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
         } while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
         code = cm_MapRPCError(code, &req);
 
+               lock_ObtainMutex(&volp->mx);
         if (code == 0 && volStat.Online) {
             cm_VolumeStatusNotification(volp, volp->rw.ID, volp->rw.state, vl_online);
             volp->rw.state = vl_online;
@@ -1051,6 +1053,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
                 serversp->status = srv_not_busy;
         }
 
+               lock_ReleaseMutex(&volp->mx);
         do {
             code = cm_ConnFromVolume(volp, volp->ro.ID, cm_rootUserp, &req, &connp);
             if (code) 
@@ -1064,6 +1067,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
         } while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
         code = cm_MapRPCError(code, &req);
 
+               lock_ObtainMutex(&volp->mx);
         if (code == 0 && volStat.Online) {
             cm_VolumeStatusNotification(volp, volp->ro.ID, volp->ro.state, vl_online);
             volp->ro.state = vl_online;
@@ -1084,6 +1088,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
                 serversp->status = srv_not_busy;
         }
 
+               lock_ReleaseMutex(&volp->mx);
         do {
             code = cm_ConnFromVolume(volp, volp->bk.ID, cm_rootUserp, &req, &connp);
             if (code) 
@@ -1097,6 +1102,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
         } while (cm_Analyze(connp, cm_rootUserp, &req, NULL, NULL, NULL, NULL, code));
         code = cm_MapRPCError(code, &req);
 
+               lock_ObtainMutex(&volp->mx);
         if (code == 0 && volStat.Online) {
             cm_VolumeStatusNotification(volp, volp->bk.ID, volp->bk.state, vl_online);
             volp->bk.state = vl_online;