Since fsusage.c is licensed under the GPL, the fact that this file is being
linked into libmetrics causes a licensing issue for gmond. The attached patch
removes the fsusage.c(.h) which relieves gmond of a licensing conflict between
the GPL and BSD.
Brad
Index: metrics.c
===================================================================
--- metrics.c (revision 100)
+++ metrics.c (revision 524)
@@ -9,16 +9,17 @@
#include <ctype.h>
#include <sys/sysinfo.h>
#include <sys/stat.h>
+#include <sys/statvfs.h>
/* From old ganglia 2.5.x... */
#include "file.h"
#include "libmetrics.h"
-#include "fsusage.h"
/* End old ganglia 2.5.x headers */
#define OSNAME "Linux"
#define OSNAME_LEN strlen(OSNAME)
+
/* /proc/net/dev hash table stuff */
typedef struct net_dev_stats net_dev_stats;
struct net_dev_stats {
@@ -1324,7 +1325,7 @@
/* ---------------------------------------------------------------------------
*/
float device_space(char *mount, char *device, double *total_size, double
*total_free)
{
- struct fs_usage fsu;
+ struct statvfs svfs;
uint32_t blocksize;
uint32_t free;
uint32_t size;
@@ -1334,16 +1335,14 @@
/* Avoid multiply-mounted disks - not done in df. */
if (seen_before(device)) return pct;
- if (get_fs_usage(mount, device, &fsu)) {
+ if (statvfs(mount, &svfs)) {
/* Ignore funky devices... */
return pct;
}
- free = fsu.fsu_bavail;
- /* Is the space available negative? */
- if (fsu.fsu_bavail_top_bit_set) free = 0;
- size = fsu.fsu_blocks;
- blocksize = fsu.fsu_blocksize;
+ free = svfs.f_bavail;
+ size = svfs.f_blocks;
+ blocksize = svfs.f_bsize;
/* Keep running sum of total used, free local disk space. */
*total_size += size * (double) blocksize;
*total_free += free * (double) blocksize;
Index: Makefile.am
===================================================================
--- Makefile.am (revision 100)
+++ Makefile.am (revision 524)
@@ -1,4 +1,4 @@
AM_CFLAGS=-I.. -I$(top_builddir)/lib -I../../lib
noinst_LTLIBRARIES = libmetric25.la
-libmetric25_la_SOURCES = metrics.c fsusage.c fsusage.h
+libmetric25_la_SOURCES = metrics.c