[collectd] disk plugin patch version2

Oleg King king2 at kaluga.ru
Thu May 1 19:13:33 CEST 2008


Hello!

  I found a error in my disks patch: #if instead of #elif.
  Sorry :(

  This is revised patch:

diff -pur collectd/configure.in collectd.my/configure.in
--- collectd/configure.in       2008-05-01 21:09:44.000000000 +0400
+++ collectd.my/configure.in    2008-05-01 21:09:26.000000000 +0400
@@ -2331,6 +2331,7 @@ fi
 # libstatgrab
 if test "x$with_libstatgrab" = "xyes"
 then
+       plugin_disk="yes"
        plugin_interface="yes"
        plugin_load="yes"
        plugin_memory="yes"
diff -pur collectd/src/Makefile.am collectd.my/src/Makefile.am
--- collectd/src/Makefile.am    2008-05-01 21:09:45.000000000 +0400
+++ collectd.my/src/Makefile.am 2008-05-01 21:09:26.000000000 +0400
@@ -193,6 +193,10 @@ endif
 if BUILD_WITH_LIBIOKIT
 disk_la_LDFLAGS += -lIOKit
 endif
+if BUILD_WITH_LIBSTATGRAB
+disk_la_CFLAGS = $(BUILD_WITH_LIBSTATGRAB_CFLAGS)  
+disk_la_LIBADD = $(BUILD_WITH_LIBSTATGRAB_LDFLAGS)
+endif
 collectd_LDADD += "-dlopen" disk.la
 collectd_DEPENDENCIES += disk.la
 endif
diff -pur collectd/src/disk.c collectd.my/src/disk.c
--- collectd/src/disk.c 2008-05-01 21:09:45.000000000 +0400
+++ collectd.my/src/disk.c      2008-05-01 21:10:19.000000000 +0400
@@ -59,6 +59,10 @@
 #  define UINT_MAX 4294967295U
 #endif
 
+#if HAVE_STATGRAB_H
+# include <statgrab.h>
+#endif
+
 #if HAVE_IOKIT_IOKITLIB_H
 static mach_port_t io_master_port = MACH_PORT_NULL;
 /* #endif HAVE_IOKIT_IOKITLIB_H */
@@ -98,6 +102,9 @@ static kstat_t *ksp[MAX_NUMDISK];
 static int numdisk = 0;
 /* #endif HAVE_LIBKSTAT */
 
+#elif defined(HAVE_LIBSTATGRAB)
+/* #endif HAVE_LIBKSTATGRAB */
+
 #else
 # error "No applicable input method."
 #endif
@@ -661,7 +668,23 @@ static int disk_read (void)
                                        kio.KIO_ROPS, kio.KIO_WOPS);
                }
        }
-#endif /* defined(HAVE_LIBKSTAT) */
+/* #endif defined(HAVE_LIBKSTAT) */
+
+#elif defined(HAVE_LIBSTATGRAB)
+        sg_disk_io_stats *ds;
+        int disks, counter;
+        char name[16];
+        
+        if ((ds = sg_get_disk_io_stats(&disks)) == NULL)
+                return (0);
+                
+       for (counter=0; counter < disks; counter++) {
+               strncpy(name, ds->disk_name, sizeof(name));
+               name[sizeof(name)-1] = '\0'; /* strncpy doesn't terminate longer strings */
+               disk_submit (name, "disk_octets", ds->read_bytes, ds->write_bytes);
+               ds++;
+       }
+#endif /* defined(HAVE_LIBSTATGRAB) */
 
        return (0);
 } /* int disk_read */





-- 
WBR,
 Oleg                          mailto:king2 at kaluga.ru




More information about the collectd mailing list