author | Sowrabha H G<sowrabha.hg@oracle.com> |
Thu, 26 Nov 2015 21:27:25 -0800 | |
branch | s11u3-sru |
changeset 5132 | 048ccb1a7e2c |
permissions | -rw-r--r-- |
5132
048ccb1a7e2c
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 |
048ccb1a7e2c
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 |
048ccb1a7e2c
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 |
048ccb1a7e2c
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 |
048ccb1a7e2c
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 |
048ccb1a7e2c
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 . |
048ccb1a7e2c
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. |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
8 |
|
048ccb1a7e2c
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 |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
10 |
|
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
11 |
|
048ccb1a7e2c
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 |
048ccb1a7e2c
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 |
048ccb1a7e2c
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 @@ |
048ccb1a7e2c
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) |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
16 |
{ |
048ccb1a7e2c
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; |
048ccb1a7e2c
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; |
048ccb1a7e2c
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]; |
048ccb1a7e2c
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; |
048ccb1a7e2c
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; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
22 |
@@ -537,9 +538,14 @@ |
048ccb1a7e2c
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; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
24 |
} |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
25 |
} |
048ccb1a7e2c
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 */ |
048ccb1a7e2c
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) { |
048ccb1a7e2c
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; |
048ccb1a7e2c
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) |
048ccb1a7e2c
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++; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
31 |
+ } |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
32 |
|
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
33 |
|
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
34 |
- |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
35 |
switch (vp->magic) { |
048ccb1a7e2c
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_MEMSIZE: |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
37 |
netsnmp_memory_load(); |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
38 |
@@ -593,9 +599,9 @@ |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
39 |
case HRSTORE_UNITS: |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
40 |
if (store_idx > NETSNMP_MEM_TYPE_MAX) |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
41 |
#if HRFS_HAS_FRSIZE |
048ccb1a7e2c
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_frsize; |
048ccb1a7e2c
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_frsize << factor; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
44 |
#else |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
45 |
- long_return = stat_buf.f_bsize; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
46 |
+ long_return = stat_buf.f_bsize << factor; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
47 |
#endif |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
48 |
else { |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
49 |
if ( !mem || mem->units == -1 ) |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
50 |
@@ -605,7 +611,7 @@ |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
51 |
return (u_char *) & long_return; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
52 |
case HRSTORE_SIZE: |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
53 |
if (store_idx > NETSNMP_MEM_TYPE_MAX) |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
54 |
- long_return = stat_buf.f_blocks; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
55 |
+ long_return = stat_buf.f_blocks >> factor; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
56 |
else { |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
57 |
if ( !mem || mem->size == -1 ) |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
58 |
goto try_next; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
59 |
@@ -614,7 +620,7 @@ |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
60 |
return (u_char *) & long_return; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
61 |
case HRSTORE_USED: |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
62 |
if (store_idx > NETSNMP_MEM_TYPE_MAX) |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
63 |
- long_return = (stat_buf.f_blocks - stat_buf.f_bfree); |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
64 |
+ long_return = (stat_buf.f_blocks - stat_buf.f_bfree) >> factor; |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
65 |
else { |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
66 |
if ( !mem || mem->size == -1 || mem->free == -1 ) |
048ccb1a7e2c
15372155 SUNBT6513126 SNMP monitoring large(>1Tb) ZFS filesystem reports faulty disk size
Sowrabha H G<sowrabha.hg@oracle.com>
parents:
diff
changeset
|
67 |
goto try_next; |