From: Derrick Brashear Date: Fri, 7 May 2010 14:32:09 +0000 (-0400) Subject: inlinebulk analyze errors X-Git-Tag: openafs-devel-1_5_75~289 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=0dd5159163e464e35ccc73eb79225ea9fc0cd872;p=packages%2Fo%2Fopenafs.git inlinebulk analyze errors 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 Tested-by: Derrick Brashear --- diff --git a/src/afs/VNOPS/afs_vnop_lookup.c b/src/afs/VNOPS/afs_vnop_lookup.c index 9e90a9135..074cf5d12 100644 --- a/src/afs/VNOPS/afs_vnop_lookup.c +++ b/src/afs/VNOPS/afs_vnop_lookup.c @@ -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 =