author | Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM> |
Fri, 11 Dec 2015 03:49:26 -0800 | |
changeset 5867 | 445e2cf1c845 |
parent 4711 | components/net-snmp/patches/058.15372155.hr_storage.patch@c2328acb8517 |
permissions | -rw-r--r-- |
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; |