Skip to content
Browse files

Index: external/strftime.c

... openbsd compiler warning fix

Index: protocols/sip.c
... openbsd compiler warning fix

Index: device/sysdep_FREEBSD.c
... allow usage of path to block device in filesystem check path - formerly monit took filesystem where the device file resides (usually devfs pseudo filesystem)

Index: device/sysdep_OPENBSD.c
... allow usage of path to block device in filesystem check path - formerly monit took filesystem where the device file resides (usually devfs pseudo filesystem)

Index: device/sysdep_NETBSD.c
... allow usage of path to block device in filesystem check path - formerly monit took filesystem where the device file resides (usually devfs pseudo filesystem)
... fix space usage value (it used wrong block size so monit showed multiple of real filesystem size)

Index: device/device_common.c
... openbsd uses character device in place for block device => need to allow it too

Index: device/sysdep_DARWIN.c
... allow usage of path to block device in filesystem check path - formerly monit took filesystem where the device file resides (usually devfs pseudo filesystem)

Index: socket.c
... openbsd compiler warning fix

Index: process/sysdep_LINUX.c
... support for OpenVZ 2.6.32 kernel which hides part of /proc/meminfo in VPS hosts (only basic statistics are available in OpenVZ)




git-svn-id: http://monit.googlecode.com/svn/trunk@308 808b68a2-07de-11de-a1f0-819f45317607
  • Loading branch information...
1 parent 6a2bb2e commit 87d9ff9f50f06580189372f29927a12991c2a471 janhenrik.haukeland committed Dec 18, 2010
Showing with 126 additions and 116 deletions.
  1. +18 −1 CHANGES.txt
  2. +2 −1 configure.ac
  3. +1 −1 device/device_common.c
  4. +21 −10 device/sysdep_DARWIN.c
  5. +21 −10 device/sysdep_FREEBSD.c
  6. +23 −34 device/sysdep_NETBSD.c
  7. +17 −10 device/sysdep_OPENBSD.c
  8. +1 −0 external/strftime.c
  9. +1 −3 monit.pod
  10. +13 −46 process/sysdep_LINUX.c
  11. +4 −0 protocols/sip.c
  12. +4 −0 socket.c
View
19 CHANGES.txt
@@ -1,4 +1,4 @@
- CHANGES version 5.2.3
+ CHANGES version 5.2.4
This file summarizes changes made since 5.0
@@ -7,12 +7,29 @@
https://savannah.nongnu.org/bugs/?group=monit
+Version 5.2.4
+
+BUGFIXES:
+
+* FreeBSD, NetBSD, OpenBSD, MacOSX filesystem check fix:
+ If block/character device was used in the check path instead
+ of mountpoint, monit reported usage of wrong filesystem.
+
+* NetBSD filesystem check: Fix space usage report
+
+* Linux OpenVZ 2.6.32+: Fix memory usage monitoring in VPS
+ virtual hosts. Thanks to Kelly for report.
+
+
+
Version 5.2.3
BUGFIXES:
* Mysql protocol test supports mysql 5.5.x and newer now.
+
+
Version 5.2.2
BUGFIXES:
View
3 configure.ac
@@ -10,7 +10,7 @@ AC_PREREQ([2.53])
# Note: in case of beta subversion, use underscore "_" rather then dash "-"
# since RPM doesn't allow dash in Version
# Example: 5.0_beta2
-AC_INIT([monit], [5.2.3], [monit-general@nongnu.org])
+AC_INIT([monit], [5.2.4], [monit-general@nongnu.org])
# Package info
AC_REVISION([$Revision: 1.194 $])
@@ -141,6 +141,7 @@ AC_CHECK_HEADERS([ \
sys/time.h \
sys/tree.h \
sys/types.h \
+ sys/ucred.h \
sys/un.h \
sys/utsname.h \
sys/vmmeter.h \
View
2 device/device_common.c
@@ -104,7 +104,7 @@ char *device_path(Info_T inf, char *object) {
inf->mntpath[sizeof(inf->mntpath) - 1] = 0;
return strncpy(inf->mntpath, object, sizeof(inf->mntpath) - 1);
- } else if(S_ISBLK(buf.st_mode)) {
+ } else if(S_ISBLK(buf.st_mode) || S_ISCHR(buf.st_mode)) {
return device_mountpoint_sysdep(inf, object);
View
31 device/sysdep_DARWIN.c
@@ -54,6 +54,10 @@
#include <sys/param.h>
#endif
+#if defined HAVE_SYS_UCRED_H
+#include <sys/ucred.h>
+#endif
+
#if defined HAVE_SYS_MOUNT_H
#include <sys/mount.h>
#endif
@@ -71,21 +75,28 @@
* @return NULL in the case of failure otherwise mountpoint
*/
char *device_mountpoint_sysdep(Info_T inf, char *blockdev) {
-
- struct statfs usage;
+ int countfs;
ASSERT(inf);
ASSERT(blockdev);
- if(statfs(blockdev, &usage) != 0) {
- LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n",
- prog, blockdev, STRERROR);
- return NULL;
+ if ((countfs = getfsstat(NULL, 0, MNT_NOWAIT)) != -1) {
+ struct statfs *statfs = xcalloc(countfs, sizeof(struct statfs));
+ if ((countfs = getfsstat(statfs, countfs * sizeof(struct statfs), MNT_NOWAIT)) != -1) {
+ int i;
+ for (i = 0; i < countfs; i++) {
+ struct statfs *sfs = statfs + i;
+ if (IS(sfs->f_mntfromname, blockdev)) {
+ snprintf(inf->mntpath, sizeof(inf->mntpath), "%s", sfs->f_mntonname);
+ FREE(statfs);
+ return inf->mntpath;
+ }
+ }
+ }
+ FREE(statfs);
}
-
- inf->mntpath[sizeof(inf->mntpath) - 1] = 0;
- return strncpy(inf->mntpath, usage.f_mntonname, sizeof(inf->mntpath) - 1);
-
+ LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n", prog, blockdev, STRERROR);
+ return NULL;
}
View
31 device/sysdep_FREEBSD.c
@@ -54,6 +54,10 @@
#include <sys/param.h>
#endif
+#if defined HAVE_SYS_UCRED_H
+#include <sys/ucred.h>
+#endif
+
#ifdef HAVE_SYS_MOUNT_H
#include <sys/mount.h>
#endif
@@ -71,21 +75,28 @@
* @return NULL in the case of failure otherwise mountpoint
*/
char *device_mountpoint_sysdep(Info_T inf, char *blockdev) {
-
- struct statfs usage;
+ int countfs;
ASSERT(inf);
ASSERT(blockdev);
- if(statfs(blockdev, &usage) != 0) {
- LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n",
- prog, blockdev, STRERROR);
- return NULL;
+ if ((countfs = getfsstat(NULL, 0, MNT_NOWAIT)) != -1) {
+ struct statfs *statfs = xcalloc(countfs, sizeof(struct statfs));
+ if ((countfs = getfsstat(statfs, countfs * sizeof(struct statfs), MNT_NOWAIT)) != -1) {
+ int i;
+ for (i = 0; i < countfs; i++) {
+ struct statfs *sfs = statfs + i;
+ if (IS(sfs->f_mntfromname, blockdev)) {
+ snprintf(inf->mntpath, sizeof(inf->mntpath), "%s", sfs->f_mntonname);
+ FREE(statfs);
+ return inf->mntpath;
+ }
+ }
+ }
+ FREE(statfs);
}
-
- inf->mntpath[sizeof(inf->mntpath) - 1] = 0;
- return strncpy(inf->mntpath, usage.f_mntonname, sizeof(inf->mntpath) - 1);
-
+ LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n", prog, blockdev, STRERROR);
+ return NULL;
}
View
57 device/sysdep_NETBSD.c
@@ -57,6 +57,10 @@
#include <sys/mount.h>
#endif
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
#ifdef HAVE_SYS_STATVFS_H
#include <sys/statvfs.h>
#endif
@@ -74,28 +78,28 @@
* @return NULL in the case of failure otherwise mountpoint
*/
char *device_mountpoint_sysdep(Info_T inf, char *blockdev) {
-
-#if(__NetBSD_Version__ >= 300000000)
- struct statvfs usage;
-#else
- struct statfs usage;
-#endif
+ int countfs;
ASSERT(inf);
ASSERT(blockdev);
-#if(__NetBSD_Version__ >= 300000000)
- if(statvfs(blockdev, &usage) != 0) {
-#else
- if(statfs(blockdev, &usage) != 0) {
-#endif
- LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n",
- prog, blockdev, STRERROR);
- return NULL;
+ if ((countfs = getvfsstat(NULL, 0, ST_NOWAIT)) != -1) {
+ struct statvfs *statvfs = xcalloc(countfs, sizeof(struct statvfs));
+ if ((countfs = getvfsstat(statvfs, countfs * sizeof(struct statvfs), ST_NOWAIT)) != -1) {
+ int i;
+ for (i = 0; i < countfs; i++) {
+ struct statvfs *sfs = statvfs + i;
+ if (IS(sfs->f_mntfromname, blockdev)) {
+ snprintf(inf->mntpath, sizeof(inf->mntpath), "%s", sfs->f_mntonname);
+ FREE(statvfs);
+ return inf->mntpath;
+ }
+ }
+ }
+ FREE(statvfs);
}
-
- inf->mntpath[sizeof(inf->mntpath) - 1] = 0;
- return strncpy(inf->mntpath, usage.f_mntonname, sizeof(inf->mntpath) - 1);
+ LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n", prog, blockdev, STRERROR);
+ return NULL;
}
@@ -108,38 +112,23 @@ char *device_mountpoint_sysdep(Info_T inf, char *blockdev) {
* @return TRUE if informations were succesfully read otherwise FALSE
*/
int filesystem_usage_sysdep(Info_T inf) {
-
-#if(__NetBSD_Version__ >= 300000000)
struct statvfs usage;
-#else
- struct statfs usage;
-#endif
ASSERT(inf);
-#if(__NetBSD_Version__ >= 300000000)
if(statvfs(inf->mntpath, &usage) != 0) {
-#else
- if(statfs(inf->mntpath, &usage) != 0) {
-#endif
- LogError("%s: Error getting usage statistics for filesystem '%s' -- %s\n",
- prog, inf->mntpath, STRERROR);
+ LogError("%s: Error getting usage statistics for filesystem '%s' -- %s\n", prog, inf->mntpath, STRERROR);
return FALSE;
}
- inf->f_bsize= usage.f_bsize;
+ inf->f_bsize= usage.f_frsize;
inf->f_blocks= usage.f_blocks;
inf->f_blocksfree= usage.f_bavail;
inf->f_blocksfreetotal= usage.f_bfree;
inf->f_files= usage.f_files;
inf->f_filesfree= usage.f_ffree;
-#if(__NetBSD_Version__ >= 300000000)
inf->flags= usage.f_flag;
-#else
- inf->flags= usage.f_flags;
-#endif
return TRUE;
-
}
View
27 device/sysdep_OPENBSD.c
@@ -71,21 +71,28 @@
* @return NULL in the case of failure otherwise mountpoint
*/
char *device_mountpoint_sysdep(Info_T inf, char *blockdev) {
-
- struct statfs usage;
+ int countfs;
ASSERT(inf);
ASSERT(blockdev);
- if(statfs(blockdev, &usage) != 0) {
- LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n",
- prog, blockdev, STRERROR);
- return NULL;
+ if ((countfs = getfsstat(NULL, 0, MNT_NOWAIT)) != -1) {
+ struct statfs *statfs = xcalloc(countfs, sizeof(struct statfs));
+ if ((countfs = getfsstat(statfs, countfs * sizeof(struct statfs), MNT_NOWAIT)) != -1) {
+ int i;
+ for (i = 0; i < countfs; i++) {
+ struct statfs *sfs = statfs + i;
+ if (IS(sfs->f_mntfromname, blockdev)) {
+ snprintf(inf->mntpath, sizeof(inf->mntpath), "%s", sfs->f_mntonname);
+ FREE(statfs);
+ return inf->mntpath;
+ }
+ }
+ }
+ FREE(statfs);
}
-
- inf->mntpath[sizeof(inf->mntpath) - 1] = 0;
- return strncpy(inf->mntpath, usage.f_mntonname, sizeof(inf->mntpath) - 1);
-
+ LogError("%s: Error getting mountpoint for filesystem '%s' -- %s\n", prog, blockdev, STRERROR);
+ return NULL;
}
View
1 external/strftime.c
@@ -999,6 +999,7 @@ strftime (s, maxsize, format, tp)
valid time_t value. Check whether an error really
occurred. */
struct tm tm;
+ memset(&tm, 0, sizeof(struct tm));
localtime_r (&lt, &tm);
if ((ltm.tm_sec ^ tm.tm_sec)
View
4 monit.pod
@@ -476,9 +476,7 @@ for example by:
Monit will then not monitor the service. This allows for having
services configured in monitrc and start it with Monit only if it
should run. This feature can be used to build a simple failsafe
-cluster. To see how, read more about how to setup a cluster with
-Monit using the I<heartbeat> system in the examples sections
-below.
+cluster.
A service's monitoring state is persistent across Monit restart.
This means that you probably would like to make certain that
View
59 process/sysdep_LINUX.c
@@ -321,70 +321,37 @@ int getloadavg_sysdep (double *loadv, int nelem) {
int used_system_memory_sysdep(SystemInfo_T *si) {
char *ptr;
char buf[1024];
- unsigned long mem_free;
- unsigned long buffers;
- unsigned long cached;
- unsigned long swap_total;
- unsigned long swap_free;
+ unsigned long mem_free = 0UL;
+ unsigned long buffers = 0UL;
+ unsigned long cached = 0UL;
+ unsigned long swap_total = 0UL;
+ unsigned long swap_free = 0UL;
- /* Memory */
-
if (! read_proc_file(buf, 1024, "meminfo", -1, NULL)) {
LogError("system statistic error -- cannot get real memory free amount\n");
goto error;
}
- if (! (ptr = strstr(buf, MEMFREE))) {
- LogError("system statistic error -- cannot get real memory free amount\n");
- goto error;
- }
- if (sscanf(ptr + strlen(MEMFREE), "%ld", &mem_free) != 1) {
+ /* Memory */
+ if (! (ptr = strstr(buf, MEMFREE)) || sscanf(ptr + strlen(MEMFREE), "%ld", &mem_free) != 1) {
LogError("system statistic error -- cannot get real memory free amount\n");
goto error;
}
-
- if (! (ptr = strstr(buf, MEMBUF))) {
- LogError("system statistic error -- cannot get real memory buffers "
- "amount\n");
- goto error;
- }
- if (sscanf(ptr + strlen(MEMBUF), "%ld", &buffers) != 1) {
- LogError("system statistic error -- cannot get real memory buffers amount\n");
- goto error;
- }
-
- if (! (ptr = strstr(buf, MEMCACHE))) {
- LogError("system statistic error -- cannot get real memory cache amount\n");
- goto error;
- }
- if (sscanf(ptr + strlen(MEMCACHE), "%ld", &cached) != 1) {
- LogError("system statistic error -- cannot get real memory cache free "
- "amount\n");
- goto error;
- }
-
+ if (! (ptr = strstr(buf, MEMBUF)) || sscanf(ptr + strlen(MEMBUF), "%ld", &buffers) != 1)
+ DEBUG("system statistic error -- cannot get real memory buffers amount\n");
+ if (! (ptr = strstr(buf, MEMCACHE)) || sscanf(ptr + strlen(MEMCACHE), "%ld", &cached) != 1)
+ DEBUG("system statistic error -- cannot get real memory cache amount\n");
si->total_mem_kbyte = systeminfo.mem_kbyte_max - mem_free - buffers - cached;
/* Swap */
-
- if (! (ptr = strstr(buf, SWAPTOTAL))) {
+ if (! (ptr = strstr(buf, SWAPTOTAL)) || sscanf(ptr + strlen(SWAPTOTAL), "%ld", &swap_total) != 1) {
LogError("system statistic error -- cannot get swap total amount\n");
goto error;
}
- if (sscanf(ptr + strlen(SWAPTOTAL), "%ld", &swap_total) != 1) {
- LogError("system statistic error -- cannot get swap total amount\n");
- goto error;
- }
-
- if (! (ptr = strstr(buf, SWAPFREE))) {
- LogError("system statistic error -- cannot get swap free amount\n");
- goto error;
- }
- if (sscanf(ptr + strlen(SWAPFREE), "%ld", &swap_free) != 1) {
+ if (! (ptr = strstr(buf, SWAPFREE)) || sscanf(ptr + strlen(SWAPFREE), "%ld", &swap_free) != 1) {
LogError("system statistic error -- cannot get swap free amount\n");
goto error;
}
-
si->swap_kbyte_max = swap_total;
si->total_swap_kbyte = swap_total - swap_free;
View
4 protocols/sip.c
@@ -64,6 +64,10 @@
#include <unistd.h>
#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
View
4 socket.c
@@ -49,6 +49,10 @@
#include <unistd.h>
#endif
+#ifdef HAVE_NETINET_IN_H
+#include <netinet/in.h>
+#endif
+
#ifdef HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif

0 comments on commit 87d9ff9

Please sign in to comment.
Something went wrong with that request. Please try again.