MUTEX_ENTER(&conn->conn_data_lock);
conn->refCount--;
MUTEX_EXIT(&conn->conn_data_lock);
+ MUTEX_ENTER(&rx_stats_mutex);
+ rx_stats.nBusies++;
+ MUTEX_EXIT(&rx_stats_mutex);
return tp;
}
rxi_KeepAliveOn(call);
int ignorePacketDally; /* packets dropped because call is in dally state */
int receiveCbufPktAllocFailures;
int sendCbufPktAllocFailures;
- int spares[5];
+ int nBusies;
+ int spares[4];
};
/* structures for debug input and output packets */
/* I'm not really worried about when we restarted, I'm */
/* just worried about when the first VBUSY was returned. */
TM_GetTimeOfDay(&restartedat, 0);
+ if (busyonrst) {
+ FS_LOCK;
+ afs_perfstats.fs_nBusies++;
+ FS_UNLOCK;
+ }
return (busyonrst ? VBUSY : VRESTARTING);
} else {
struct timeval now;
TM_GetTimeOfDay(&now, 0);
if ((now.tv_sec - restartedat.tv_sec) < (11 * 60)) {
+ if (busyonrst) {
+ FS_LOCK;
+ afs_perfstats.fs_nBusies++;
+ FS_UNLOCK;
+ }
return (busyonrst ? VBUSY : VRESTARTING);
} else {
return (VRESTARTING);
a_perfP->host_ClientBlocks = CEBlocks;
a_perfP->sysname_ID = afs_perfstats.sysname_ID;
-
+ a_perfP->rx_nBusies = (afs_int32) rx_stats.nBusies;
+ a_perfP->fs_nBusies = afs_perfstats.fs_nBusies;
} /*FillPerfValues */
*/
afs_int32 sysname_ID; /*Unique hardware/OS identifier */
+ afs_int32 rx_nBusies; /*Ttl VBUSYs sent to shed load */
+ afs_int32 fs_nBusies; /*Ttl VBUSYs sent during restart/vol clone */
+
/*
* Spares
*/
- afs_int32 spare[31];
+ afs_int32 spare[29];
};
#if FS_STATS_DETAILED
printf("\t%10d rx_nClientConns\n", a_ovP->rx_nClientConns);
printf("\t%10d rx_nPeerStructs\n", a_ovP->rx_nPeerStructs);
printf("\t%10d rx_nCallStructs\n", a_ovP->rx_nCallStructs);
- printf("\t%10d rx_nFreeCallStructs\n\n", a_ovP->rx_nFreeCallStructs);
+ printf("\t%10d rx_nFreeCallStructs\n", a_ovP->rx_nFreeCallStructs);
+ printf("\t%10d rx_nBusies\n\n", a_ovP->rx_nBusies);
+ printf("\t%10d fs_nBusies\n\n", a_ovP->fs_nBusies);
/*
* Host module fields.
*/