]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
windows-locking-error-codes-20051018
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 18 Oct 2005 21:52:47 +0000 (21:52 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 18 Oct 2005 21:52:47 +0000 (21:52 +0000)
cm_Lock(), cm_RetryLock() should not interpret servers be unreachable as
a sharing violation.

src/WINNT/afsd/cm_vnodeops.c

index b490773b03e0b1b16be89c9c153f840f2d5b501f..16a7ebee163af3518674e52db7f7863b699576e3 100644 (file)
@@ -300,8 +300,19 @@ long cm_CheckOpen(cm_scache_t *scp, int openMode, int trunc, cm_user_t *userp,
             if (code == CM_ERROR_NOACCESS &&
                 !(rights & PRSFS_WRITE))
                 code = 0;
-            else
-                code = CM_ERROR_SHARING_VIOLATION;
+            else {
+               switch (code) {
+               case CM_ERROR_ALLOFFLINE:
+               case CM_ERROR_ALLDOWN:
+               case CM_ERROR_ALLBUSY:
+               case CM_ERROR_TIMEDOUT:
+               case CM_ERROR_RETRY:
+               case CM_ERROR_WOULDBLOCK:
+                   break;
+               default:
+                   code = CM_ERROR_SHARING_VIOLATION;
+               }
+           }
         }
     }
 
@@ -377,8 +388,19 @@ long cm_CheckNTOpen(cm_scache_t *scp, unsigned int desiredAccess,
             if (code == CM_ERROR_NOACCESS &&
                 !(rights & PRSFS_WRITE))
                 code = 0;
-            else
-                code = CM_ERROR_SHARING_VIOLATION;
+            else {
+               switch (code) {
+               case CM_ERROR_ALLOFFLINE:
+               case CM_ERROR_ALLDOWN:
+               case CM_ERROR_ALLBUSY:
+               case CM_ERROR_TIMEDOUT:
+               case CM_ERROR_RETRY:
+               case CM_ERROR_WOULDBLOCK:
+                   break;
+               default:
+                   code = CM_ERROR_SHARING_VIOLATION;
+               }
+           }
         }
     }