afs: Handle VNOSERVICE as a timeout
authorAndrew Deason <adeason@sinenomine.net>
Wed, 14 Nov 2012 00:27:11 +0000 (18:27 -0600)
committerDerrick Brashear <shadow@your-file-system.com>
Wed, 28 Nov 2012 16:33:53 +0000 (08:33 -0800)
For whatever reason, the fileserver uses VNOSERVICE to indicate that
an Rx call was killed due to an idledead timeout. It is not used for
any volume errors, so treat it like the idle dead error codes.

Change-Id: I432cbb8ae011d5269ac8df31261d11204687fcf6
Reviewed-on: http://gerrit.openafs.org/8462
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>

src/afs/afs_analyze.c

index 34db88f..0e77b53 100644 (file)
@@ -621,7 +621,7 @@ afs_Analyze(struct afs_conn *aconn, struct rx_connection *rxconn,
        shouldRetry = 1;
        goto out;
     }
-    if (acode == RX_CALL_TIMEOUT || acode == RX_CALL_IDLE) {
+    if (acode == RX_CALL_TIMEOUT || acode == RX_CALL_IDLE || acode == VNOSERVICE) {
        serversleft = afs_BlackListOnce(areq, afid, tsp);
        if (afid)
            tvp = afs_FindVolume(afid, READ_LOCK);
@@ -778,7 +778,7 @@ afs_Analyze(struct afs_conn *aconn, struct rx_connection *rxconn,
     }
     /* Check for bad volume data base / missing volume. */
     else if (acode == VSALVAGE || acode == VOFFLINE || acode == VNOVOL
-            || acode == VNOSERVICE || acode == VMOVED) {
+            || acode == VMOVED) {
        struct cell *tcell;
        int same;