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

add new collection with callback stats

(cherry picked from commit cc324ae0653a7d2170a065f61b8475d76cdf03c1)

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

index 88da5555f344c041f823e5552855b0ecb81ef663..7d8f6751e1c296471e1d3b4dfbd7ff9c7178f583 100644 (file)
@@ -127,6 +127,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 df639c27f8eba8021d22ab2c20f6a9b78d03e6bc..561cab8ea8b4b3228536aa413c3ec0570181cee8 100644 (file)
@@ -5950,6 +5950,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);