]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-windows-rxstats-20051001
authorJeffrey Altman <jaltman@secure-endpoints.com>
Sun, 2 Oct 2005 07:08:55 +0000 (07:08 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Sun, 2 Oct 2005 07:08:55 +0000 (07:08 +0000)
Add interface to rxstats api

(cherry picked from commit f3e2cdb5260e49d5335d37fdab909d360bbe7102)

src/WINNT/afsd/NTMakefile
src/WINNT/afsd/afsd_init.c
src/WINNT/afsd/cm_ioctl.c
src/WINNT/afsd/cm_ioctl.h
src/WINNT/afsd/fs.c
src/WINNT/afsd/smb_iocons.h
src/WINNT/afsd/smb_ioctl.c

index 8361c5188a3a4ffd18a6f8f6d35d3251faddb2d7..1f7dc1ae4b828053239da9ba0105c423a29021f2 100644 (file)
@@ -276,7 +276,8 @@ install_headers: $(IDLFILES) $(INCFILES)
 install: install_headers install_objs $(CONF_DLLFILE) \
        $(EXEDIR)\klog.exe \
        $(EXEDIR)\tokens.exe \
-       $(EXEDIR)\unlog.exe $(EXEDIR)\afsd.exe $(EXEDIR)\afsd_service.exe \
+       $(EXEDIR)\unlog.exe \
+       $(EXEDIR)\afsd_service.exe \
        $(EXEDIR)\fs.exe \
         $(EXEDIR)\symlink.exe \
         $(EXEDIR)\afsdacl.exe \
@@ -287,7 +288,7 @@ install: install_headers install_objs $(CONF_DLLFILE) \
 install9X: install_headers $(CONF_DLLFILE) \
        $(EXEDIR)\klog.exe \
        $(EXEDIR)\tokens.exe \
-       $(EXEDIR)\unlog.exe $(EXEDIR)\afsd_service.exe \
+       $(EXEDIR)\unlog.exe $(EXEDIR)\afsd.exe $(EXEDIR)\afsd_service.exe \
        $(EXEDIR)\fs.exe $(EXEDIR)\symlink.exe \
        $(LOGON_DLLFILE) $(LOG95_DLLFILE) \
        $(EXEDIR)\afsshare.exe \
@@ -380,7 +381,6 @@ AFSD_SDKLIBS =\
 AFSD_EXELIBS =\
        $(DESTDIR)\lib\libosi.lib \
        $(DESTDIR)\lib\afsrpc.lib \
-        $(DESTDIR)\lib\afsrx.lib \
        $(DESTDIR)\lib\afsauthent.lib \
        $(DESTDIR)\lib\afs\mtafsvldb.lib \
        $(DESTDIR)\lib\afs\mtafsint.lib \
index 83e9d1e21d9ed9466a2cf6131bf52f293f653f99..17073b91553f91f79b6e78a6d1be0e9ca1e51211 100644 (file)
@@ -536,6 +536,8 @@ int afsd_InitCM(char **reasonP)
     DWORD cacheSize;
     long logChunkSize;
     DWORD stats;
+    DWORD rx_enable_peer_stats = 0;
+    DWORD rx_enable_process_stats = 0;
     long traceBufSize;
     long maxcpus;
     long ltt, ltto;
@@ -987,6 +989,24 @@ int afsd_InitCM(char **reasonP)
     if (rx_mtu != -1)
         afsi_log("RX maximum MTU is %d", rx_mtu);
 
+    dummyLen = sizeof(rx_enable_peer_stats);
+    code = RegQueryValueEx(parmKey, "RxEnablePeerStats", NULL, NULL,
+                           (BYTE *) &rx_enable_peer_stats, &dummyLen);
+    if (code != ERROR_SUCCESS) {
+        rx_enable_peer_stats = 0;
+    }
+    if (rx_enable_peer_stats)
+        afsi_log("RX Peer Statistics gathering is enabled");
+
+    dummyLen = sizeof(rx_enable_process_stats);
+    code = RegQueryValueEx(parmKey, "RxEnableProcessStats", NULL, NULL,
+                           (BYTE *) &rx_enable_process_stats, &dummyLen);
+    if (code != ERROR_SUCCESS) {
+        rx_enable_process_stats = 0;
+    }
+    if (rx_enable_process_stats)
+        afsi_log("RX Process Statistics gathering is enabled");
+
     dummyLen = sizeof(ConnDeadtimeout);
     code = RegQueryValueEx(parmKey, "ConnDeadTimeout", NULL, NULL,
                            (BYTE *) &ConnDeadtimeout, &dummyLen);
@@ -1123,6 +1143,12 @@ int afsd_InitCM(char **reasonP)
     rx_StartServer(0);
     afsi_log("rx_StartServer");
 
+    if (rx_enable_peer_stats)
+       rx_enablePeerRPCStats();
+
+    if (rx_enable_process_stats)
+       rx_enableProcessRPCStats();
+
     code = cm_GetRootCellName(rootCellName);
     afsi_log("cm_GetRootCellName code %d, cm_freelanceEnabled= %d, rcn= %s", 
               code, cm_freelanceEnabled, (code ? "<none>" : rootCellName));
index 8f0ed439a42b99363c6a22491872d18096f22da4..32d234faf987b79a3311758728e6513c5095392c 100644 (file)
@@ -2367,6 +2367,49 @@ long cm_IoctlSetRxkcrypt(smb_ioctl_t *ioctlp, cm_user_t *userp)
     return 0;
 }
 
+long cm_IoctlRxStatProcess(struct smb_ioctl *ioctlp, struct cm_user *userp)
+{
+    afs_int32 flags;
+    int code = 0;
+
+    memcpy((char *)&flags, ioctlp->inDatap, sizeof(afs_int32));
+    if (!(flags & AFSCALL_RXSTATS_MASK) || (flags & ~AFSCALL_RXSTATS_MASK)) {
+        return -1;
+    }
+    if (flags & AFSCALL_RXSTATS_ENABLE) {
+        rx_enableProcessRPCStats();
+    }
+    if (flags & AFSCALL_RXSTATS_DISABLE) {
+        rx_disableProcessRPCStats();
+    }
+    if (flags & AFSCALL_RXSTATS_CLEAR) {
+        rx_clearProcessRPCStats(AFS_RX_STATS_CLEAR_ALL);
+    }
+    return 0;
+}
+
+long cm_IoctlRxStatPeer(struct smb_ioctl *ioctlp, struct cm_user *userp)
+{
+    afs_int32 flags;
+    int code = 0;
+
+    memcpy((char *)&flags, ioctlp->inDatap, sizeof(afs_int32));
+
+    if (!(flags & AFSCALL_RXSTATS_MASK) || (flags & ~AFSCALL_RXSTATS_MASK)) {
+       return -1;
+    }
+    if (flags & AFSCALL_RXSTATS_ENABLE) {
+        rx_enablePeerRPCStats();
+    }
+    if (flags & AFSCALL_RXSTATS_DISABLE) {
+        rx_disablePeerRPCStats();
+    }
+    if (flags & AFSCALL_RXSTATS_CLEAR) {
+        rx_clearPeerRPCStats(AFS_RX_STATS_CLEAR_ALL);
+    }
+    return 0;
+}
+
 #ifdef DJGPP
 extern int afsd_shutdown(int);
 extern int afs_shutdown;
index e958bfbbba372035b1e417995d08ef7dc9574e85..bbc4f15aee112b98727b541e50e43e9783a8e07f 100644 (file)
@@ -47,6 +47,13 @@ extern char *         cm_sysName;
 extern unsigned int   cm_sysNameCount;
 extern char *         cm_sysNameList[MAXNUMSYSNAMES];
 
+/* flags for rxstats pioctl */
+
+#define AFSCALL_RXSTATS_MASK    0x7     /* Valid flag bits */
+#define AFSCALL_RXSTATS_ENABLE  0x1     /* Enable RX stats */
+#define AFSCALL_RXSTATS_DISABLE 0x2     /* Disable RX stats */
+#define AFSCALL_RXSTATS_CLEAR   0x4     /* Clear RX stats */
+
 #ifndef __CM_IOCTL_INTERFACES_ONLY__
 
 void cm_InitIoctl(void);
@@ -144,6 +151,10 @@ extern long cm_IoctlFreemountAddCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
 extern long cm_IoctlFreemountRemoveCell(smb_ioctl_t *ioctlp, cm_user_t *userp);
 
 extern long cm_IoctlMemoryDump(smb_ioctl_t *ioctlp, cm_user_t *userp);
+
+extern long cm_IoctlRxStatProcess(smb_ioctl_t *ioctlp, cm_user_t *userp);
+
+extern long cm_IoctlRxStatPeer(smb_ioctl_t *ioctlp, cm_user_t *userp);
 #endif /* __CM_IOCTL_INTERFACES_ONLY__ */
 
 #endif /*  __CM_IOCTL_H_ENV__ */
index 6516b4779fbb6aecd502faf497ecf14342258630..2af31c05c5561a082bb876a177d6b029c18b497b 100644 (file)
@@ -4197,6 +4197,7 @@ FlushMountCmd(struct cmd_syndesc *as, char *arock)
     }
     return error;
 }
+#endif /* WIN32 */
 
 static int
 RxStatProcCmd(struct cmd_syndesc *as, char *arock)
@@ -4267,7 +4268,6 @@ RxStatPeerCmd(struct cmd_syndesc *as, char *arock)
 
     return 0;
 }
-#endif /* WIN32 */
 
 #ifndef WIN32
 #include "AFS_component_version_number.c"
@@ -4521,7 +4521,6 @@ main(int argc, char **argv)
 
     ts = cmd_CreateSyntax("getcrypt", GetCryptCmd, 0, "get cache manager encryption flag");
 
-#ifndef WIN32
     ts = cmd_CreateSyntax("rxstatproc", RxStatProcCmd, 0,
                          "Manage per process RX statistics");
     cmd_AddParm(ts, "-enable", CMD_FLAG, CMD_OPTIONAL, "Enable RX stats");
@@ -4534,6 +4533,7 @@ main(int argc, char **argv)
     cmd_AddParm(ts, "-disable", CMD_FLAG, CMD_OPTIONAL, "Disable RX stats");
     cmd_AddParm(ts, "-clear", CMD_FLAG, CMD_OPTIONAL, "Clear RX stats");
 
+#ifndef WIN32
     ts = cmd_CreateSyntax("setcbaddr", CallBackRxConnCmd, 0, "configure callback connection address");
     cmd_AddParm(ts, "-addr", CMD_SINGLE, CMD_OPTIONAL, "host name or address");
 #endif
index 92ea42f9b45d0fe580bacfbf4b7d0460667e39ec..585bdc8620224f1f0ffdfe301bb5d7ab3b116f65 100644 (file)
@@ -94,4 +94,6 @@ typedef struct cm_cacheParms {
 #define VIOC_FLUSHALL                   0x2b
 #define VIOCGETFID                      0x2c
 #define VIOCGETOWNER                    0x2d
+#define VIOC_RXSTAT_PROC                0x2e
+#define VIOC_RXSTAT_PEER                0x2f
 #endif /*  __SMB_IOCONS_H_ENV_ */
index 0f217baf47d3688b0ac65b48f68e106864d4b871..072bb1fccc1518191a9a5f330bec02b13fdacfee 100644 (file)
@@ -81,6 +81,8 @@ void smb_InitIoctl(void)
         smb_ioctlProcsp[VIOC_FLUSHALL] = cm_IoctlFlushAllVolumes;
         smb_ioctlProcsp[VIOCGETFID] = cm_IoctlGetFid;
         smb_ioctlProcsp[VIOCGETOWNER] = cm_IoctlGetOwner;
+        smb_ioctlProcsp[VIOC_RXSTAT_PROC] = cm_IoctlRxStatProcess;
+        smb_ioctlProcsp[VIOC_RXSTAT_PEER] = cm_IoctlRxStatPeer;
 }
 
 /* called to make a fid structure into an IOCTL fid structure */