From 0dd5159163e464e35ccc73eb79225ea9fc0cd872 Mon Sep 17 00:00:00 2001 From: Derrick Brashear Date: Fri, 7 May 2010 10:32:09 -0400 Subject: [PATCH] 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 --- src/afs/VNOPS/afs_vnop_lookup.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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 = -- 2.39.5