]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-windows-volstat-vl-unknown-20080214
authorJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 14 Feb 2008 14:13:28 +0000 (14:13 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 14 Feb 2008 14:13:28 +0000 (14:13 +0000)
LICENSE MIT

Add volumes in the vl_unknown state to the list of objects to be
checked as offline or retried when an allbusy error is received
in cm_Analyze.

(cherry picked from commit 093433b981cd1917215a4ee6196c5a0a55352d92)

src/WINNT/afsd/cm_conn.c
src/WINNT/afsd/cm_scache.c
src/WINNT/afsd/cm_volume.c

index 05498dd95b5da258ec2fb2e9e52beeeddd15a20c..0985ace4d3df1cd1025612f6d30db7040975c9b2 100644 (file)
@@ -459,19 +459,17 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
             break;
         }
 
-        if (serverp && fidp) {
-            /* Log server being offline for this volume */
-            sprintf(addr, "%d.%d.%d.%d", 
-                    ((serverp->addr.sin_addr.s_addr & 0xff)),
-                    ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8),
-                    ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16),
-                    ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); 
-
-            osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume);
+        /* Log server being offline for this volume */
+        sprintf(addr, "%d.%d.%d.%d", 
+                 ((serverp->addr.sin_addr.s_addr & 0xff)),
+                 ((serverp->addr.sin_addr.s_addr & 0xff00)>> 8),
+                 ((serverp->addr.sin_addr.s_addr & 0xff0000)>> 16),
+                 ((serverp->addr.sin_addr.s_addr & 0xff000000)>> 24)); 
+
+       osi_Log2(afsd_logp, format, osi_LogSaveString(afsd_logp,addr), fidp->volume);
 #ifndef DJGPP
-            LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume);
+       LogEvent(EVENTLOG_WARNING_TYPE, msgID, addr, fidp->volume);
 #endif
-        }
 
         /* Mark server offline for this volume */
         if (!serversp && fidp) {
@@ -481,7 +479,6 @@ cm_Analyze(cm_conn_t *connp, cm_user_t *userp, cm_req_t *reqp,
                 free_svr_list = 1;
             }
         }
-
         lock_ObtainWrite(&cm_serverLock);
         for (tsrp = serversp; tsrp; tsrp=tsrp->next) {
             if (tsrp->server == serverp) {
index 6bacbf25a21eb44eb43115486c47a5f7a168393c..5c42fcbaec7506758eb84978672072e6e07a679b 100644 (file)
@@ -640,8 +640,8 @@ long cm_GetSCache(cm_fid_t *fidp, cm_scache_t **outScpp, cm_user_t *userp,
     long code;
     cm_volume_t *volp = NULL;
     cm_cell_t *cellp;
-    int special; // yj: boolean variable to test if file is on root.afs
-    int isRoot;
+    int special = 0; // yj: boolean variable to test if file is on root.afs
+    int isRoot = 0;
     extern cm_fid_t cm_rootFid;
         
     hash = CM_SCACHE_HASH(fidp);
index f348d468c58f9c57dc94b8ea1b8f84bc95256a6c..a7f5682b49630d70cc57efb7260f5f68ce268243 100644 (file)
@@ -1014,7 +1014,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
     lock_ObtainMutex(&volp->mx);
 
     if (volp->rw.ID != 0 && (!volID || volID == volp->rw.ID) &&
-         (volp->rw.state == vl_busy || volp->rw.state == vl_offline)) {
+         (volp->rw.state == vl_busy || volp->rw.state == vl_offline || volp->rw.state == vl_unknown)) {
         cm_InitReq(&req);
 
         for (serversp = volp->rw.serversp; serversp; serversp = serversp->next) {
@@ -1049,7 +1049,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
     }
 
     if (volp->ro.ID != 0 && (!volID || volID == volp->ro.ID) &&
-         (volp->ro.state == vl_busy || volp->ro.state == vl_offline)) {
+         (volp->ro.state == vl_busy || volp->ro.state == vl_offline || volp->ro.state == vl_unknown)) {
         cm_InitReq(&req);
 
         for (serversp = volp->ro.serversp; serversp; serversp = serversp->next) {
@@ -1084,7 +1084,7 @@ cm_CheckOfflineVolume(cm_volume_t *volp, afs_uint32 volID)
     }
 
     if (volp->bk.ID != 0 && (!volID || volID == volp->bk.ID) &&
-         (volp->bk.state == vl_busy || volp->bk.state == vl_offline)) {
+         (volp->bk.state == vl_busy || volp->bk.state == vl_offline || volp->bk.state == vl_unknown)) {
         cm_InitReq(&req);
 
         for (serversp = volp->bk.serversp; serversp; serversp = serversp->next) {