NetBSD Problem Report #34671

From jandres@gmx.net  Sat Sep 30 13:09:18 2006
Return-Path: <jandres@gmx.net>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by narn.NetBSD.org (Postfix) with ESMTP id F1F6063B8CA
	for <gnats-bugs@gnats.NetBSD.org>; Sat, 30 Sep 2006 13:09:17 +0000 (UTC)
Message-Id: <20060930130914.85E311EC7@delta.home.jan>
Date: Sat, 30 Sep 2006 15:09:14 +0200 (MEST)
From: Jan Andres <jandres@gmx.net>
Reply-To: jandres@gmx.net
To: gnats-bugs@NetBSD.org
Subject: [Patch] 64-bitness fix and some enhancements to the net-snmp port
X-Send-Pr-Version: 3.95

>Number:         34671
>Category:       pkg
>Synopsis:       [Patch] 64-bitness fix and some enhancements to the net-snmp port
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    adam
>State:          feedback
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Sep 30 13:10:00 +0000 2006
>Closed-Date:    
>Last-Modified:  Thu Apr 04 23:56:51 +0000 2013
>Originator:     Jan Andres
>Release:        NetBSD 4.0_BETA
>Organization:

>Environment:


System: NetBSD delta.home.jan 4.0_BETA NetBSD 4.0_BETA (DELTA_PF) #2: Wed Aug 9 06:39:28 MEST 2006 jan@pitr.home.jan:/xfs/0/jan/nb/obj-alpha/sys/arch/alpha/compile/DELTA_PF alpha
Architecture: alpha
Machine: alpha
>Description:
I've made some small fixes and enhancements to the net-snmp port:

- Support for 64-bit counters in the Disk I/O MIB
- Support raw counters for IRQs, context switches, swap I/O (in ucd-snmp
  MIB)
- Fix 64-bitness issue in measurement of CPU usage. int is used as target
  of the oldlenp pointer passed to sysctl(3) where it should be size_t.

I've emailed those patches to the port maintainer a while ago, but he
never replied.

Please find the patch in the "Fix" section.

Regards,
Jan

>How-To-Repeat:

>Fix:
diff -ur net-snmp-5.3.1/agent/mibgroup/ucd-snmp/diskio.c net-snmp-5.3.1-patched/agent/mibgroup/ucd-snmp/diskio.c
--- net-snmp-5.3.1/agent/mibgroup/ucd-snmp/diskio.c	2006-09-30 14:36:55.000000000 +0200
+++ net-snmp-5.3.1-patched/agent/mibgroup/ucd-snmp/diskio.c	2006-09-30 14:35:38.000000000 +0200
@@ -498,8 +498,9 @@
            size_t * length,
            int exact, size_t * var_len, WriteMethod ** write_method)
 {
-    static long     long_ret;
-    unsigned int    indx;
+    static long               long_ret;
+    static struct counter64   c64_ret;
+    unsigned int              indx;

     if (getstats() == 0)
         return 0;
@@ -561,6 +562,32 @@
 #endif
         return (u_char *) & long_ret;

+    case DISKIO_NREADX:
+#ifdef HW_DISKSTATS
+     	c64_ret.low = dk[indx].dk_rbytes & 0xffffffff;
+     	c64_ret.high = dk[indx].dk_rbytes >> 32;
+#endif
+#ifdef HW_IOSTATS
+	if (dk[indx].type == IOSTAT_DISK) {
+	    c64_ret.low = dk[indx].rbytes & 0xffffffff;
+	    c64_ret.high = dk[indx].rbytes >> 32;
+	}
+#endif
+        return (u_char *) & c64_ret;
+
+    case DISKIO_NWRITTENX:
+#ifdef HW_DISKSTATS
+     	c64_ret.low = dk[indx].dk_wbytes & 0xffffffff;
+     	c64_ret.high = dk[indx].dk_wbytes >> 32;
+#endif
+#ifdef HW_IOSTATS
+	if (dk[indx].type == IOSTAT_DISK) {
+	    c64_ret.low = dk[indx].wbytes & 0xffffffff;
+	    c64_ret.high = dk[indx].wbytes >> 32;
+	}
+#endif
+        return (u_char *) & c64_ret;
+
     default:
         ERROR_MSG("diskio.c: don't know how to handle this request.");
     }
diff -ur net-snmp-5.3.1/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c net-snmp-5.3.1-patched/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c
--- net-snmp-5.3.1/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c	2004-07-07 22:31:54.000000000 +0200
+++ net-snmp-5.3.1-patched/agent/mibgroup/ucd-snmp/vmstat_netbsd1.c	2006-09-30 14:35:42.000000000 +0200
@@ -95,6 +95,14 @@
          {CPURAWKERNEL}},
         {CPURAWINTR, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
          {CPURAWINTR}},
+        {SYSRAWINTERRUPTS, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
+         {SYSRAWINTERRUPTS}},
+        {SYSRAWCONTEXT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
+         {SYSRAWCONTEXT}},
+        {RAWSWAPIN, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
+         {RAWSWAPIN}},
+        {RAWSWAPOUT, ASN_COUNTER, RONLY, var_extensible_vmstat, 1,
+         {RAWSWAPOUT}},

         /*
          * Future use: 
@@ -170,7 +178,7 @@

     static struct uvmexp mem_old, mem_new;
     int             mem_mib[] = { CTL_VM, VM_UVMEXP };
-    int             mem_size = sizeof(struct uvmexp);
+    size_t          mem_size = sizeof(struct uvmexp);

     static long     long_ret;
     static char     errmsg[300];
@@ -186,13 +194,13 @@
     if (time_new != time_old) {
 #ifdef KERN_CP_TIME
         int             mib[2] = { CTL_KERN, KERN_CP_TIME };
-        int             ssize = sizeof(cpu_new);
+        size_t          ssize = sizeof(cpu_new);

         if (sysctl(mib, 2, cpu_new, &ssize, NULL, 0) < 0)
             memset(cpu_new, 0, sizeof(cpu_new));
 #elif defined(KERN_CPTIME)
         int             mib[2] = { CTL_KERN, KERN_CPTIME };
-        int             ssize = sizeof(cpu_new);
+        size_t          ssize = sizeof(cpu_new);

         if (sysctl(mib, 2, cpu_new, &ssize, NULL, 0) < 0)
             memset(cpu_new, 0, sizeof(cpu_new));
@@ -301,6 +309,20 @@
     case CPURAWINTR:
         long_ret = cpu_new[CP_INTR];
         return ((u_char *) (&long_ret));
+    case SYSRAWINTERRUPTS:
+        long_ret = mem_new.intrs;
+        return ((u_char *) (&long_ret));
+    case SYSRAWCONTEXT:
+        long_ret = mem_new.swtch;
+        return ((u_char *) (&long_ret));
+    case RAWSWAPIN:
+        long_ret = mem_new.pgswapin * (mem_new.pagesize >> 9);
+        return ((u_char *) (&long_ret));
+    case RAWSWAPOUT:
+        long_ret = mem_new.pgswapout * (mem_new.pagesize >> 9);
+        return ((u_char *) (&long_ret));
+
+
         /*
          * reserved for future use 
          */

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: pkg-manager->adam
Responsible-Changed-By: reed@netbsd.org
Responsible-Changed-When: Sat, 30 Sep 2006 13:28:34 +0000
Responsible-Changed-Why:
Assigned to maintainer.


From: Sergey Svishchev <svs@ropnet.ru>
To: gnats-bugs@netbsd.org
Cc: 
Subject: Re: pkg/34671
Date: Tue, 18 Oct 2011 22:46:13 +0400

 64-bit diskio patch is already merged upstream, others aren't.

 -- 
 Sergey Svishchev

State-Changed-From-To: open->feedback
State-Changed-By: christos@NetBSD.org
State-Changed-When: Thu, 04 Apr 2013 19:56:51 -0400
State-Changed-Why:
this is probably fixed by now


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.