From owner-freebsd-bugs@FreeBSD.ORG Tue Jul 8 16:50:04 2008 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B992106566C for ; Tue, 8 Jul 2008 16:50:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id ECFC58FC23 for ; Tue, 8 Jul 2008 16:50:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.2/8.14.2) with ESMTP id m68Go3xP075867 for ; Tue, 8 Jul 2008 16:50:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.2/8.14.1/Submit) id m68Go3vf075866; Tue, 8 Jul 2008 16:50:03 GMT (envelope-from gnats) Date: Tue, 8 Jul 2008 16:50:03 GMT Message-Id: <200807081650.m68Go3vf075866@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: hotlips Internet admin Cc: Subject: Re: kern/92412: [libexec] [patch] rpc.rstatd reports bogus packets-per-second info X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: hotlips Internet admin List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 08 Jul 2008 16:50:04 -0000 The following reply was made to PR kern/92412; it has been noted by GNATS. From: hotlips Internet admin To: bug-followup@FreeBSD.org Cc: jhb@freebsd.org Subject: Re: kern/92412: [libexec] [patch] rpc.rstatd reports bogus packets-per-second info Date: Tue, 8 Jul 2008 12:33:34 -0400 (EDT) Recently kern/122875 bug report provoked a change to libexec/rpc.rstatd (rather than a still-needed fix to sys/kern/kern_clock.c for RELENG_7 & HEAD) - Below is an updated patch to re-establish the required fixes so that it works properly... Bruce Becker +1 416 410 0879 GTS Network Administration Toronto, Ont. Email: hostmaster@GTS.Infra-service.CA --------- 8< --------- 8< --------- 8< --------- 8< --------- 8< --------- --- rstat_proc.c.2008062600 2008-06-26 22:20:37.000000000 -0400 +++ rstat_proc.c.2008070600 2008-07-06 15:36:25.000000000 -0400 @@ -125,6 +125,7 @@ if (! stat_is_init) stat_init(); sincelastreq = 0; + stats_all.s2.if_opackets = stats_all.s3.if_opackets; return(&stats_all.s2); } @@ -134,6 +135,7 @@ if (! stat_is_init) stat_init(); sincelastreq = 0; + stats_all.s1.if_opackets = stats_all.s3.if_opackets; return(&stats_all.s1); } @@ -205,13 +207,13 @@ exit(1); } for(i = 0; i < RSTAT_CPUSTATES ; i++) - stats_all.s1.cp_time[i] = bsd_cp_time[cp_time_xlat[i]]; + stats_all.s3.cp_time[i] = bsd_cp_time[cp_time_xlat[i]]; (void)getloadavg(avrun, sizeof(avrun) / sizeof(avrun[0])); - stats_all.s2.avenrun[0] = avrun[0] * FSCALE; - stats_all.s2.avenrun[1] = avrun[1] * FSCALE; - stats_all.s2.avenrun[2] = avrun[2] * FSCALE; + stats_all.s3.avenrun[0] = avrun[0] * FSCALE; + stats_all.s3.avenrun[1] = avrun[1] * FSCALE; + stats_all.s3.avenrun[2] = avrun[2] * FSCALE; mib[0] = CTL_KERN; mib[1] = KERN_BOOTTIME; @@ -221,13 +223,13 @@ exit(1); } - stats_all.s2.boottime.tv_sec = btm.tv_sec; - stats_all.s2.boottime.tv_usec = btm.tv_usec; + stats_all.s3.boottime.tv_sec = btm.tv_sec; + stats_all.s3.boottime.tv_usec = btm.tv_usec; #ifdef DEBUG - fprintf(stderr, "%d %d %d %d\n", stats_all.s1.cp_time[0], - stats_all.s1.cp_time[1], stats_all.s1.cp_time[2], stats_all.s1.cp_time[3]); + fprintf(stderr, "%d %d %d %d\n", stats_all.s3.cp_time[0], + stats_all.s3.cp_time[1], stats_all.s3.cp_time[2], stats_all.s3.cp_time[3]); #endif #define FETCH_CNT(stat, cnt) do { \ @@ -238,12 +240,12 @@ } \ } while (0) - FETCH_CNT(stats_all.s1.v_pgpgin, vm.v_vnodepgsin); - FETCH_CNT(stats_all.s1.v_pgpgout, vm.v_vnodepgsout); - FETCH_CNT(stats_all.s1.v_pswpin, vm.v_swappgsin); - FETCH_CNT(stats_all.s1.v_pswpout, vm.v_swappgsout); - FETCH_CNT(stats_all.s1.v_intr, sys.v_intr); - FETCH_CNT(stats_all.s2.v_swtch, sys.v_swtch); + FETCH_CNT(stats_all.s3.v_pgpgin, vm.v_vnodepgsin); + FETCH_CNT(stats_all.s3.v_pgpgout, vm.v_vnodepgsout); + FETCH_CNT(stats_all.s3.v_pswpin, vm.v_swappgsin); + FETCH_CNT(stats_all.s3.v_pswpout, vm.v_swappgsout); + FETCH_CNT(stats_all.s3.v_intr, sys.v_intr); + FETCH_CNT(stats_all.s3.v_swtch, sys.v_swtch); gettimeofday(&tm, (struct timezone *) 0); stats_all.s1.v_intr -= hz*(tm.tv_sec - btm.tv_sec) + hz*(tm.tv_usec - btm.tv_usec)/1000000; @@ -262,11 +264,11 @@ exit(1); } - stats_all.s1.if_ipackets = 0; - stats_all.s1.if_opackets = 0; - stats_all.s1.if_ierrors = 0; - stats_all.s1.if_oerrors = 0; - stats_all.s1.if_collisions = 0; + stats_all.s3.if_ipackets = 0; + stats_all.s3.if_opackets = 0; + stats_all.s3.if_ierrors = 0; + stats_all.s3.if_oerrors = 0; + stats_all.s3.if_collisions = 0; for (i = 1; i <= ifcount; i++) { len = sizeof ifmd; mib[3] = IFMIB_IFDATA; @@ -281,11 +283,11 @@ exit(1); } - stats_all.s1.if_ipackets += ifmd.ifmd_data.ifi_ipackets; - stats_all.s1.if_opackets += ifmd.ifmd_data.ifi_opackets; - stats_all.s1.if_ierrors += ifmd.ifmd_data.ifi_ierrors; - stats_all.s1.if_oerrors += ifmd.ifmd_data.ifi_oerrors; - stats_all.s1.if_collisions += ifmd.ifmd_data.ifi_collisions; + stats_all.s3.if_ipackets += ifmd.ifmd_data.ifi_ipackets; + stats_all.s3.if_opackets += ifmd.ifmd_data.ifi_opackets; + stats_all.s3.if_ierrors += ifmd.ifmd_data.ifi_ierrors; + stats_all.s3.if_oerrors += ifmd.ifmd_data.ifi_oerrors; + stats_all.s3.if_collisions += ifmd.ifmd_data.ifi_collisions; } gettimeofday((struct timeval *)&stats_all.s3.curtime, (struct timezone *) 0);