]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
inlinebulk analyze errors
authorDerrick Brashear <shadow@dementia.org>
Fri, 7 May 2010 14:32:09 +0000 (10:32 -0400)
committerDerrick Brashear <shadow@dementia.org>
Wed, 12 May 2010 14:01:46 +0000 (07:01 -0700)
afs_Analyze was not being called on inlinebulk errors if the error
potentially required a retry. do so.

Change-Id: I60fc0a7553f9ce592c40c7aecb60346e138468f0
Reviewed-on: http://gerrit.openafs.org/1926
Reviewed-by: Derrick Brashear <shadow@dementia.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
src/afs/VNOPS/afs_vnop_lookup.c

index 9e90a9135be0e5743d6d941068d718d6ebfcb379..074cf5d125c52addce2fa52f0d030502dc2fe57e 100644 (file)
@@ -933,6 +933,7 @@ afs_DoBulkStat(struct vcache *adp, long dirCookie, struct vrequest *areqp)
            RX_AFS_GUNLOCK();
 
            if (!(tcp->srvr->server->flags & SNO_INLINEBULK)) {
+           retryonce:
                code =
                    RXAFS_InlineBulkStatus(tcp->id, &fidParm, &statParm,
                                           &cbParm, &volSync);
@@ -942,8 +943,21 @@ afs_DoBulkStat(struct vcache *adp, long dirCookie, struct vrequest *areqp)
                    code =
                        RXAFS_BulkStatus(tcp->id, &fidParm, &statParm,
                                         &cbParm, &volSync);
-               } else
+               } else {
                    inlinebulk = 1;
+                   if (!code && ((&statsp[0])->errorCode)) {
+                       /*
+                        * If this is an error needing retry, do so.
+                        * Retryable errors are all whole-volume or
+                        * whole-server.
+                        */
+                       if (afs_Analyze(tcp, (&statsp[0])->errorCode,
+                                       &adp->f.fid, areqp,
+                                       AFS_STATS_FS_RPCIDX_BULKSTATUS,
+                                       SHARED_LOCK, NULL) != 0)
+                           goto retryonce;
+                   }
+               }
            } else {
                inlinebulk = 0;
                code =