components/net-snmp-57/patches/058.15372155.hr_storage.patch
author saurabh.vyas@oracle.com
Tue, 04 Apr 2017 10:36:17 -0700
changeset 7828 f7ee70770225
parent 5867 445e2cf1c845
permissions -rw-r--r--
25824451 ps2pdf fails after uprev of ghostscript to 9.20
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4711
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     1
This patch fixes an issue where snmpdf was not returning the 
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     2
correct total disk size and available disk size when the size 
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     3
of the filesystem is larger than 1TB.This bug is already fixed 
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     4
in the community and the fix is available from the net-snmp 
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     5
version 5.6 onwards.The fix here slightly differs from the community 
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     6
since the patch in the community is applied on net-snmp version 5.6 .
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     7
This patch is taken from the below link.
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     8
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
     9
https://bugs.launchpad.net/ubuntu/+source/net-snmp/+bug/865268
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    10
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    11
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    12
--- net-snmp-5.4.1/agent/mibgroup/host/hr_storage.c	Thu May 21 23:47:45 2015
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    13
+++ net-snmp-5.4.1/agent/mibgroup/host/hr_storage.c	Thu May 21 23:55:59 2015
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    14
@@ -505,6 +505,7 @@
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    15
             int exact, size_t * var_len, WriteMethod ** write_method)
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    16
 {
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    17
     int             store_idx = 0;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    18
+    int             factor = 0;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    19
     static char     string[1024];
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    20
     struct HRFS_statfs stat_buf;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    21
     void                *ptr;
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 4711
diff changeset
    22
@@ -558,6 +558,12 @@
4711
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    23
 	    mem = (netsnmp_memory_info*)ptr;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    24
         }
5867
445e2cf1c845 PSARC/2014/169 Net-snmp upgrade to version 5.7.2.1
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 4711
diff changeset
    25
 
4711
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    26
+/* Scaling factor for large filesystems */
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    27
+    if (store_idx > NETSNMP_MEM_TYPE_MAX) {
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    28
+        unsigned long long tmp = stat_buf.f_blocks;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    29
+        while (tmp > 0x7fffffff)
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    30
+            tmp >>= 1, factor++;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    31
+    }
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    32
 
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    33
 
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    34
     switch (vp->magic) {
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    35
@@ -593,9 +599,9 @@
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    36
     case HRSTORE_UNITS:
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    37
         if (store_idx > NETSNMP_MEM_TYPE_MAX)
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    38
 #if HRFS_HAS_FRSIZE
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    39
-            long_return = stat_buf.f_frsize;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    40
+            long_return = stat_buf.f_frsize << factor;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    41
 #else
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    42
-            long_return = stat_buf.f_bsize;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    43
+            long_return = stat_buf.f_bsize << factor;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    44
 #endif
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    45
         else {
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    46
             if ( !mem || mem->units == -1 )
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    47
@@ -605,7 +611,7 @@
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    48
         return (u_char *) & long_return;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    49
     case HRSTORE_SIZE:
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    50
         if (store_idx > NETSNMP_MEM_TYPE_MAX)
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    51
-            long_return = stat_buf.f_blocks;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    52
+            long_return = stat_buf.f_blocks >> factor;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    53
         else {
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    54
             if ( !mem || mem->size == -1 )
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    55
                 goto try_next;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    56
@@ -614,7 +620,7 @@
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    57
         return (u_char *) & long_return;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    58
     case HRSTORE_USED:
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    59
         if (store_idx > NETSNMP_MEM_TYPE_MAX)
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    60
-            long_return = (stat_buf.f_blocks - stat_buf.f_bfree);
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    61
+            long_return = (stat_buf.f_blocks - stat_buf.f_bfree) >> factor;
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    62
         else {
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    63
             if ( !mem || mem->size == -1 || mem->free == -1 )
c2328acb8517 15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff changeset
    64
                 goto try_next;