]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
xstat-fs-callbacks-20060309
authorRainer Toebbicke <rtb@pclella.cern.ch>
Thu, 9 Mar 2006 16:25:48 +0000 (16:25 +0000)
committerDerrick Brashear <shadow@dementia.org>
Thu, 9 Mar 2006 16:25:48 +0000 (16:25 +0000)
FIXES 27912

add new collection with callback stats

src/fsint/common.xg
src/viced/afsfileprocs.c
src/xstat/xstat_fs_test.c

index d11340809213582e9287fdf6e7b07457ad3b5d07..42597f6c7a1f07e8b05a5464861b46d972e79365 100644 (file)
@@ -143,6 +143,7 @@ const AFSCB_XSTATSCOLL_FULL_PERF_INFO = 2;   /*CM performance info*/
 const AFS_XSTATSCOLL_CALL_INFO = 0;     /*FS call counting & info*/
 const AFS_XSTATSCOLL_PERF_INFO = 1;     /*FS performance info*/
 const AFS_XSTATSCOLL_FULL_PERF_INFO = 2; /*Full FS performance info*/
+const AFS_XSTATSCOLL_CBSTATS = 3;       /*Callback package counters */
 
 typedef afs_uint32 VolumeId;
 typedef afs_uint32 VolId;
index bda99f2a4f89215e9b34b9056a8533c90aec950c..4743a2cb99d53a571c198e7012d337ca034ef122 100644 (file)
@@ -5817,6 +5817,36 @@ SRXAFS_GetXStats(struct rx_call *a_call, afs_int32 a_clientVersionNum,
 #endif
        break;
 
+    case AFS_XSTATSCOLL_CBSTATS:
+       afs_perfstats.numPerfCalls++;
+
+       dataBytes = sizeof(struct cbcounters);
+       dataBuffP = (afs_int32 *) malloc(dataBytes);
+       {
+           extern struct cbcounters cbstuff;
+           dataBuffP[0]=cbstuff.DeleteFiles;
+           dataBuffP[1]=cbstuff.DeleteCallBacks;
+           dataBuffP[2]=cbstuff.BreakCallBacks;
+           dataBuffP[3]=cbstuff.AddCallBacks;
+           dataBuffP[4]=cbstuff.GotSomeSpaces;
+           dataBuffP[5]=cbstuff.DeleteAllCallBacks;
+           dataBuffP[6]=cbstuff.nFEs;
+           dataBuffP[7]=cbstuff.nCBs;
+           dataBuffP[8]=cbstuff.nblks;
+           dataBuffP[9]=cbstuff.CBsTimedOut;
+           dataBuffP[10]=cbstuff.nbreakers;
+           dataBuffP[11]=cbstuff.GSS1;
+           dataBuffP[12]=cbstuff.GSS2;
+           dataBuffP[13]=cbstuff.GSS3;
+           dataBuffP[14]=cbstuff.GSS4;
+           dataBuffP[15]=cbstuff.GSS5;
+       }
+
+       a_dataP->AFS_CollData_len = dataBytes >> 2;
+       a_dataP->AFS_CollData_val = dataBuffP;
+       break;
+
+
     default:
        /*
         * Illegal collection number.
index e3e00d151d1c046156e31e9f753bfbfdb040ce50..b0f1119597263bc7aa3b600dfe31e8905d5b2336 100644 (file)
@@ -494,6 +494,34 @@ PrintPerfInfo()
     PrintOverallPerfInfo(perfP);
 }
 
+static char *CbCounterStrings[] = {
+    "DeleteFiles",
+    "DeleteCallBacks",
+    "BreakCallBacks",
+    "AddCallBack",
+    "GotSomeSpaces",
+    "DeleteAllCallBacks",
+    "nFEs", "nCBs", "nblks",
+    "CBsTimedOut",
+    "nbreakers",
+    "GSS1", "GSS2", "GSS3", "GSS4", "GSS5"
+};
+
+
+void
+PrintCbCounters() {
+    int numInt32s = sizeof(CbCounterStrings)/sizeof(char *);
+    int i;
+    afs_uint32 *val=xstat_fs_Results.data.AFS_CollData_val;
+
+    if (numInt32s > xstat_fs_Results.data.AFS_CollData_len)
+       numInt32s = xstat_fs_Results.data.AFS_CollData_len;
+
+    for (i=0; i<numInt32s; i++) {
+       printf("\t%10u %s\n", val[i], CbCounterStrings[i]);
+    }
+}
+
 
 /*------------------------------------------------------------------------
  * FS_Handler
@@ -550,6 +578,10 @@ FS_Handler()
        PrintFullPerfInfo();
        break;
 
+    case AFS_XSTATSCOLL_CBSTATS:
+       PrintCbCounters();
+       break;
+
     default:
        printf("** Unknown collection: %d\n",
               xstat_fs_Results.collectionNumber);