author | Radhika Siravara<radhika.siravara@oracle.com> |
Tue, 17 Nov 2015 09:12:59 -0800 | |
changeset 5098 | 77b8086c6247 |
parent 2034 | c533107e2bd5 |
permissions | -rw-r--r-- |
2034
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
1 |
This fix has been submitted upstream as part of a combined patch |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
2 |
which has fixes for CR15758982(027.7118090.hr_filesys.patch) and this CR(16439911). |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
3 |
This can be found in the following location. |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
4 |
https://sourceforge.net/p/net-snmp/patches/1287/. |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
5 |
|
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
6 |
This patch has not been accepted yet. |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
7 |
--- net-snmp-5.4.1.old/agent/mibgroup/host/hr_filesys.c 2014-07-15 01:53:05.131000348 -0700 |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
8 |
+++ net-snmp-5.4.1/agent/mibgroup/host/hr_filesys.c 2014-07-15 01:48:04.221278640 -0700 |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
9 |
@@ -698,20 +698,25 @@ |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
10 |
static int |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
11 |
load_mnttab_cache_solaris() |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
12 |
{ |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
13 |
- char buf[512] = {NULL}; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
14 |
+ char buf[MNT_LINE_MAX] = {NULL}; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
15 |
int i = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
16 |
struct stat file_stat; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
17 |
const char **cpp; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
18 |
- char *ch; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
19 |
+ char *ch, *token_ptr; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
20 |
int token_flag = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
21 |
int skip_flag = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
22 |
int ignore_flag = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
23 |
int j = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
24 |
int lines = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
25 |
int ret = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
26 |
+ int chk_mnt = -1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
27 |
HRFS_index = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
28 |
|
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
29 |
- stat(ETC_MNTTAB, &file_stat); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
30 |
+ if(stat(ETC_MNTTAB, &file_stat) != 0) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
31 |
+ { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
32 |
+ DEBUGMSGTL(("host/hr_filesys", "stat failed for mnttab.\n")); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
33 |
+ return -1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
34 |
+ } |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
35 |
if (last_access == -1 || last_access != file_stat.st_mtime) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
36 |
fp = fopen(ETC_MNTTAB, "r"); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
37 |
if(fp == NULL) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
38 |
@@ -731,7 +736,7 @@ |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
39 |
* which determines the valid entries. |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
40 |
*/ |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
41 |
|
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
42 |
- ch = strtok(buf, " \t"); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
43 |
+ ch = strtok_r(buf, " \t", &token_ptr); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
44 |
while (ch != NULL) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
45 |
j++; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
46 |
if(j == 3) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
47 |
@@ -745,7 +750,7 @@ |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
48 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
49 |
if(token_flag) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
50 |
break; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
51 |
- ch = strtok(NULL, " \t"); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
52 |
+ ch = strtok_r(NULL, " \t", &token_ptr); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
53 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
54 |
if(!skip_flag) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
55 |
lines++; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
56 |
@@ -765,25 +770,43 @@ |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
57 |
free(HRFS_list); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
58 |
return -1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
59 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
60 |
- |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
61 |
- while (i < fscount) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
62 |
- if (getmntent(fp, &HRFS_entry_struct) == 0) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
63 |
- for (cpp = HRFS_ignores; *cpp != NULL; ++cpp) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
64 |
- if (!strcmp(HRFS_entry_struct.HRFS_type, *cpp)) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
65 |
- ignore_flag = 1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
66 |
- break; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
67 |
- } |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
68 |
+ while ((chk_mnt = getmntent(fp, &HRFS_entry_struct)) != -1) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
69 |
+ if(chk_mnt != 0) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
70 |
+ continue; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
71 |
+ for (cpp = HRFS_ignores; *cpp != NULL; ++cpp) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
72 |
+ if (!strcmp(HRFS_entry_struct.mnt_fstype, *cpp)) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
73 |
+ ignore_flag = 1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
74 |
+ break; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
75 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
76 |
- |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
77 |
- if(!ignore_flag) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
78 |
- HRFS_list[i].mnt_special = strdup(HRFS_entry_struct.mnt_special); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
79 |
- HRFS_list[i].mnt_mountp = strdup(HRFS_entry_struct.mnt_mountp); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
80 |
- HRFS_list[i].mnt_fstype = strdup(HRFS_entry_struct.mnt_fstype); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
81 |
- HRFS_list[i].mnt_mntopts = strdup(HRFS_entry_struct.mnt_mntopts); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
82 |
- i++; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
83 |
+ } |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
84 |
+ if(!ignore_flag) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
85 |
+ if(i >= fscount) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
86 |
+ { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
87 |
+ DEBUGMSGTL(("host/hr_filesys","increasing cachesize from %d to %d",fscount,i+1)); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
88 |
+ HRFS_list = realloc(HRFS_list, sizeof(struct mnttab) * (i+1)); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
89 |
+ fscount = i+1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
90 |
+ if(HRFS_list == NULL) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
91 |
+ { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
92 |
+ DEBUGMSGTL(("host/hr_filesys","\nrealloc failed for mnttab cache.\n")); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
93 |
+ return -1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
94 |
+ } |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
95 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
96 |
- |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
97 |
- ignore_flag = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
98 |
+ HRFS_list[i].mnt_special = strdup(HRFS_entry_struct.mnt_special); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
99 |
+ HRFS_list[i].mnt_mountp = strdup(HRFS_entry_struct.mnt_mountp); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
100 |
+ HRFS_list[i].mnt_fstype = strdup(HRFS_entry_struct.mnt_fstype); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
101 |
+ HRFS_list[i].mnt_mntopts = strdup(HRFS_entry_struct.mnt_mntopts); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
102 |
+ i++; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
103 |
+ } |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
104 |
+ ignore_flag = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
105 |
+ } |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
106 |
+ if(i < fscount) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
107 |
+ { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
108 |
+ DEBUGMSGTL(("host/hr_filesys","\ndecreasing cachesize from %d to %d\n",fscount,i)); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
109 |
+ HRFS_list = realloc(HRFS_list, sizeof(struct mnttab) * i ); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
110 |
+ if(HRFS_list == NULL) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
111 |
+ { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
112 |
+ DEBUGMSGTL(("host/hr_filesys","\nrealloc failed for mnttab cache.\n")); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
113 |
+ return -1; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
114 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
115 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
116 |
|
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
117 |
@@ -925,19 +948,19 @@ |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
118 |
HRFS_entry = NULL; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
119 |
} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
120 |
#else |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
121 |
- int i = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
122 |
if (fp != NULL) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
123 |
fclose(fp); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
124 |
fp = NULL; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
125 |
|
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
126 |
#ifdef solaris2 |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
127 |
-while (i < fscount) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
128 |
- free(HRFS_list[i].mnt_special); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
129 |
- free(HRFS_list[i].mnt_mountp); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
130 |
- free(HRFS_list[i].mnt_fstype); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
131 |
- free(HRFS_list[i].mnt_mntopts); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
132 |
- i++; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
133 |
-} |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
134 |
+ int i = 0; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
135 |
+ while (i < fscount) { |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
136 |
+ free(HRFS_list[i].mnt_special); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
137 |
+ free(HRFS_list[i].mnt_mountp); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
138 |
+ free(HRFS_list[i].mnt_fstype); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
139 |
+ free(HRFS_list[i].mnt_mntopts); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
140 |
+ i++; |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
141 |
+ } |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
142 |
if (HRFS_list != NULL) |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
143 |
free(HRFS_list); |
c533107e2bd5
16439911 snmpd stuck looping on ioctl(13, MNTIOC_GETMNTENT,) wo traffic
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
144 |
last_access = -1; |