[pve-devel] r5649 - in pve-cluster/trunk: data data/perl data/src debian
svn-commits at proxmox.com
svn-commits at proxmox.com
Mon Mar 7 12:53:22 CET 2011
Author: dietmar
Date: 2011-03-07 12:53:22 +0100 (Mon, 07 Mar 2011)
New Revision: 5649
Modified:
pve-cluster/trunk/data/ChangeLog
pve-cluster/trunk/data/Makefile.in
pve-cluster/trunk/data/configure
pve-cluster/trunk/data/configure.in
pve-cluster/trunk/data/perl/Cluster.pm
pve-cluster/trunk/data/perl/Makefile
pve-cluster/trunk/data/perl/Makefile.in
pve-cluster/trunk/data/src/Makefile.am
pve-cluster/trunk/data/src/Makefile.in
pve-cluster/trunk/data/src/status.c
pve-cluster/trunk/debian/control
Log:
start rrd integration
Modified: pve-cluster/trunk/data/ChangeLog
===================================================================
--- pve-cluster/trunk/data/ChangeLog 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/ChangeLog 2011-03-07 11:53:22 UTC (rev 5649)
@@ -1,3 +1,7 @@
+2011-03-07 Proxmox Support Team <support at proxmox.com>
+
+ * perl/Cluster.pm (broadcast_rrd): start rrd integration
+
2011-02-25 Proxmox Support Team <support at proxmox.com>
* perl/Cluster.pm (cfs_lock_storage): impl.
Modified: pve-cluster/trunk/data/Makefile.in
===================================================================
--- pve-cluster/trunk/data/Makefile.in 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/Makefile.in 2011-03-07 11:53:22 UTC (rev 5649)
@@ -134,6 +134,8 @@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBRRD_CFLAGS = @LIBRRD_CFLAGS@
+LIBRRD_LIBS = @LIBRRD_LIBS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
Modified: pve-cluster/trunk/data/configure
===================================================================
--- pve-cluster/trunk/data/configure 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/configure 2011-03-07 11:53:22 UTC (rev 5649)
@@ -612,6 +612,8 @@
FUSE_CFLAGS
GLIB_LIBS
GLIB_CFLAGS
+LIBRRD_LIBS
+LIBRRD_CFLAGS
CHECK_LIBS
CHECK_CFLAGS
PKG_CONFIG_LIBDIR
@@ -717,6 +719,8 @@
PKG_CONFIG_LIBDIR
CHECK_CFLAGS
CHECK_LIBS
+LIBRRD_CFLAGS
+LIBRRD_LIBS
GLIB_CFLAGS
GLIB_LIBS
FUSE_CFLAGS
@@ -1365,6 +1369,9 @@
CHECK_CFLAGS
C compiler flags for CHECK, overriding pkg-config
CHECK_LIBS linker flags for CHECK, overriding pkg-config
+ LIBRRD_CFLAGS
+ C compiler flags for LIBRRD, overriding pkg-config
+ LIBRRD_LIBS linker flags for LIBRRD, overriding pkg-config
GLIB_CFLAGS C compiler flags for GLIB, overriding pkg-config
GLIB_LIBS linker flags for GLIB, overriding pkg-config
FUSE_CFLAGS C compiler flags for FUSE, overriding pkg-config
@@ -3939,12 +3946,14 @@
fi
+# Checks for libraries.
+
if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
@@ -4128,9 +4137,79 @@
HAVE_CHECK="yes"
fi
-# Checks for libraries.
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBRRD" >&5
+$as_echo_n "checking for LIBRRD... " >&6; }
+if test -n "$LIBRRD_CFLAGS"; then
+ pkg_cv_LIBRRD_CFLAGS="$LIBRRD_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librrd >= 1.4.3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "librrd >= 1.4.3") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LIBRRD_CFLAGS=`$PKG_CONFIG --cflags "librrd >= 1.4.3" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+if test -n "$LIBRRD_LIBS"; then
+ pkg_cv_LIBRRD_LIBS="$LIBRRD_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"librrd >= 1.4.3\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "librrd >= 1.4.3") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_LIBRRD_LIBS=`$PKG_CONFIG --libs "librrd >= 1.4.3" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ LIBRRD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "librrd >= 1.4.3" 2>&1`
+ else
+ LIBRRD_PKG_ERRORS=`$PKG_CONFIG --print-errors "librrd >= 1.4.3" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$LIBRRD_PKG_ERRORS" >&5
+
+ as_fn_error $? "librrd not found" "$LINENO" 5
+elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ as_fn_error $? "librrd not found" "$LINENO" 5
+else
+ LIBRRD_CFLAGS=$pkg_cv_LIBRRD_CFLAGS
+ LIBRRD_LIBS=$pkg_cv_LIBRRD_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ HAVE_LIBRRD="yes"
+fi
+
+
+
+
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GLIB" >&5
$as_echo_n "checking for GLIB... " >&6; }
Modified: pve-cluster/trunk/data/configure.in
===================================================================
--- pve-cluster/trunk/data/configure.in 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/configure.in 2011-03-07 11:53:22 UTC (rev 5649)
@@ -16,10 +16,15 @@
AC_PROG_CC
AC_PROG_RANLIB
+# Checks for libraries.
+
PKG_CHECK_MODULES([CHECK], [check >= 0.9.4],
HAVE_CHECK="yes", AC_MSG_ERROR([check not found]))
-# Checks for libraries.
+PKG_CHECK_MODULES([LIBRRD], [librrd >= 1.4.3],
+HAVE_LIBRRD="yes", AC_MSG_ERROR([librrd not found]))
+AC_SUBST(LIBRRD_CFLAGS)
+AC_SUBST(LIBRRD_LIBS)
PKG_CHECK_MODULES(GLIB,
glib-2.0 >= 2.2.0 gthread-2.0 >= 2.2.0,
Modified: pve-cluster/trunk/data/perl/Cluster.pm
===================================================================
--- pve-cluster/trunk/data/perl/Cluster.pm 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/perl/Cluster.pm 2011-03-07 11:53:22 UTC (rev 5649)
@@ -267,7 +267,8 @@
my ($name, $data) = @_;
# update status
- my $bindata = pack "Z[256]Z*", $name, encode_json($data);
+ my $bindata = pack "Z[256]Z*", $name, ref($data) ? encode_json($data) : $data;
+
return &$ipcc_send_rec(4, $bindata);
};
@@ -396,6 +397,17 @@
return &$ipcc_get_status("vminfo", $nodename);
}
+sub broadcast_rrd {
+ my ($rrdid, $data) = @_;
+
+ eval {
+ &$ipcc_update_status("rrd/$rrdid", $data);
+ };
+ my $err = $@;
+
+ warn $err if $err;
+}
+
# a fast way to read files (avoid fuse overhead)
sub get_config {
my ($path) = @_;
Modified: pve-cluster/trunk/data/perl/Makefile
===================================================================
--- pve-cluster/trunk/data/perl/Makefile 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/perl/Makefile 2011-03-07 11:53:22 UTC (rev 5649)
@@ -124,6 +124,8 @@
INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
LDFLAGS =
LIBOBJS =
+LIBRRD_CFLAGS =
+LIBRRD_LIBS = -lrrd
LIBS =
LTLIBOBJS =
MAINT = #
Modified: pve-cluster/trunk/data/perl/Makefile.in
===================================================================
--- pve-cluster/trunk/data/perl/Makefile.in 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/perl/Makefile.in 2011-03-07 11:53:22 UTC (rev 5649)
@@ -124,6 +124,8 @@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBRRD_CFLAGS = @LIBRRD_CFLAGS@
+LIBRRD_LIBS = @LIBRRD_LIBS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
Modified: pve-cluster/trunk/data/src/Makefile.am
===================================================================
--- pve-cluster/trunk/data/src/Makefile.am 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/src/Makefile.am 2011-03-07 11:53:22 UTC (rev 5649)
@@ -40,7 +40,7 @@
memdb.c
# add -lprofiler for google perftools
-CFLAGS = -g -O -std=gnu99 -Wall $(COROSYNC_CFLAGS) $(SQLITE3_CFLAGS) $(FUSE_CFLAGS) $(QB_CFLAGS) $(GLIB_CFLAGS)
-LDADD = libpmxcfs.a $(COROSYNC_LIBS) $(SQLITE3_LIBS) $(FUSE_LIBS) $(QB_LIBS) $(GLIB_LIBS)
+CFLAGS = -g -O -std=gnu99 -Wall $(COROSYNC_CFLAGS) $(SQLITE3_CFLAGS) $(FUSE_CFLAGS) $(QB_CFLAGS) $(GLIB_CFLAGS) $(LIBRRD_CFLAGS)
+LDADD = libpmxcfs.a $(COROSYNC_LIBS) $(SQLITE3_LIBS) $(FUSE_LIBS) $(QB_LIBS) $(GLIB_LIBS) $(LIBRRD_LIBS)
CLEANFILES = *~
\ No newline at end of file
Modified: pve-cluster/trunk/data/src/Makefile.in
===================================================================
--- pve-cluster/trunk/data/src/Makefile.in 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/src/Makefile.in 2011-03-07 11:53:22 UTC (rev 5649)
@@ -67,7 +67,8 @@
am__DEPENDENCIES_1 =
am__DEPENDENCIES_2 = libpmxcfs.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
check_memdb_DEPENDENCIES = $(am__DEPENDENCIES_2)
check_memdb_LINK = $(CCLD) $(check_memdb_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -76,13 +77,15 @@
logtest_LDADD = $(LDADD)
logtest_DEPENDENCIES = libpmxcfs.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_pmxcfs_OBJECTS = pmxcfs.$(OBJEXT)
pmxcfs_OBJECTS = $(am_pmxcfs_OBJECTS)
pmxcfs_LDADD = $(LDADD)
pmxcfs_DEPENDENCIES = libpmxcfs.a $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
DEFAULT_INCLUDES = -I. at am__isrc@ -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
@@ -110,7 +113,7 @@
CCDEPMODE = @CCDEPMODE@
# add -lprofiler for google perftools
-CFLAGS = -g -O -std=gnu99 -Wall $(COROSYNC_CFLAGS) $(SQLITE3_CFLAGS) $(FUSE_CFLAGS) $(QB_CFLAGS) $(GLIB_CFLAGS)
+CFLAGS = -g -O -std=gnu99 -Wall $(COROSYNC_CFLAGS) $(SQLITE3_CFLAGS) $(FUSE_CFLAGS) $(QB_CFLAGS) $(GLIB_CFLAGS) $(LIBRRD_CFLAGS)
CHECK_CFLAGS = @CHECK_CFLAGS@
CHECK_LIBS = @CHECK_LIBS@
COROSYNC_CFLAGS = @COROSYNC_CFLAGS@
@@ -137,6 +140,8 @@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
+LIBRRD_CFLAGS = @LIBRRD_CFLAGS@
+LIBRRD_LIBS = @LIBRRD_LIBS@
LIBS = @LIBS@
LTLIBOBJS = @LTLIBOBJS@
MAINT = @MAINT@
@@ -239,7 +244,7 @@
memdb.h \
memdb.c
-LDADD = libpmxcfs.a $(COROSYNC_LIBS) $(SQLITE3_LIBS) $(FUSE_LIBS) $(QB_LIBS) $(GLIB_LIBS)
+LDADD = libpmxcfs.a $(COROSYNC_LIBS) $(SQLITE3_LIBS) $(FUSE_LIBS) $(QB_LIBS) $(GLIB_LIBS) $(LIBRRD_LIBS)
CLEANFILES = *~
all: all-am
Modified: pve-cluster/trunk/data/src/status.c
===================================================================
--- pve-cluster/trunk/data/src/status.c 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/data/src/status.c 2011-03-07 11:53:22 UTC (rev 5649)
@@ -30,6 +30,8 @@
#include <errno.h>
#include <glib.h>
#include <sys/syslog.h>
+#include <rrd.h>
+#include <time.h>
#include "cfs-utils.h"
#include "status.h"
@@ -60,6 +62,13 @@
} kventry_t;
typedef struct {
+ char *key;
+ gpointer data;
+ size_t len;
+ uint32_t time;
+} rrdentry_t;
+
+typedef struct {
char *path;
uint32_t version;
} memdb_change_t;
@@ -87,6 +96,7 @@
dfsm_t *kvstore;
GHashTable *kvhash;
+ GHashTable *rrdhash;
GHashTable *memdb_changes;
@@ -307,6 +317,23 @@
(GDestroyNotify)kventry_free);
}
+static void
+rrdentry_free(rrdentry_t *entry)
+{
+ g_return_if_fail(entry != NULL);
+
+ g_free(entry->key);
+ g_free(entry->data);
+ g_free(entry);
+}
+
+static GHashTable *
+rrdentry_hash_new(void)
+{
+ return g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
+ (GDestroyNotify)rrdentry_free);
+}
+
void
cfs_cluster_log_dump(GString *str, const char *user, guint max_entries)
{
@@ -339,6 +366,8 @@
cfs_status.kvhash = kventry_hash_new();
+ cfs_status.rrdhash = rrdentry_hash_new();
+
cfs_status.memdb_changes = g_hash_table_new(g_str_hash, g_str_equal);
for (int i = 0; i < G_N_ELEMENTS(memdb_change_array); i++) {
@@ -377,6 +406,11 @@
cfs_status.kvhash = NULL;
}
+ if (cfs_status.rrdhash) {
+ g_hash_table_destroy(cfs_status.rrdhash);
+ cfs_status.rrdhash = NULL;
+ }
+
if (cfs_status.clusterlog)
clusterlog_destroy(cfs_status.clusterlog);
@@ -745,6 +779,135 @@
return TRUE;
}
+static char *rrd_def_node[] = {
+ "create",
+ NULL, /* filename */
+ "-b",
+ NULL, /* starttime */
+ "--step", "60",
+ "DS:loadavg:GAUGE:120:0:U",
+ "DS:cpu:GAUGE:120:0:1",
+ "DS:iowait:GAUGE:120:0:1",
+ "DS:memtotal:GAUGE:120:0:U",
+ "DS:memused:GAUGE:120:0:U",
+ "DS:swaptotal:GAUGE:120:0:U",
+ "DS:swapused:GAUGE:120:0:U",
+ "DS:roottotal:GAUGE:120:0:U",
+ "DS:rootused:GAUGE:120:0:U",
+
+ "RRA:AVERAGE:0.5:1:70", // 1 min avg - one hour
+ "RRA:AVERAGE:0.5:30:70", // 30 min avg - one day
+ "RRA:AVERAGE:0.5:180:70", // 3 hour avg - one week
+ "RRA:AVERAGE:0.5:720:70", // 12 hour avg - one month
+ "RRA:AVERAGE:0.5:10080:70", // 7 day avg - ony year
+
+ "RRA:MAX:0.5:1:70", // 1 min max - one hour
+ "RRA:MAX:0.5:30:70", // 30 min max - one day
+ "RRA:MAX:0.5:180:70", // 3 hour max - one week
+ "RRA:MAX:0.5:720:70", // 12 hour max - one month
+ "RRA:MAX:0.5:10080:70", // 7 day max - ony year
+ NULL,
+};
+
+
+#define RRDDIR "/var/lib/rrdcached/db"
+
+static void
+update_rrd_data(
+ const char *key,
+ gconstpointer data,
+ size_t len)
+{
+ g_return_if_fail(key != NULL);
+ g_return_if_fail(data != NULL);
+ g_return_if_fail(len > 0);
+ g_return_if_fail(len < 4096);
+
+ // fixme: when do we remove old entries ?
+
+ /* make sure we are 0 terminated */
+ char databuf[4096];
+ memcpy(databuf, data, len);
+ databuf[len] = 0;
+
+ if (strncmp(key, "pve-nodes/", 10) == 0) {
+ const char *node = key + 10;
+ g_return_if_fail(strchr(node, '/') == NULL);
+
+ char *filename = g_strdup_printf(RRDDIR "/pve-nodes/%s", node);
+
+ if (!g_file_test(filename, G_FILE_TEST_EXISTS)) {
+
+ /* start at day boundary */
+ time_t ctime;
+ time(&ctime);
+ struct tm *ltm = localtime(&ctime);
+ ltm->tm_sec = 0;
+ ltm->tm_min = 0;
+ ltm->tm_hour = 0;
+
+ char *start = g_strdup_printf("%lu", timelocal(ltm));
+
+ int argcount = sizeof(rrd_def_node)/sizeof(void*) - 1;
+
+ rrd_def_node[1] = filename;
+ rrd_def_node[3] = start;
+
+ mkdir(RRDDIR "/pve-nodes", 0755);
+ if (rrd_create(argcount, rrd_def_node) != 0) {
+ cfs_message("RRD create error %s: %s", filename, rrd_get_error());
+ }
+
+ g_free(start);
+ }
+
+ char *update_args[] = {
+ "update", filename, databuf,
+ NULL,
+ };
+
+ if (rrd_update(3, update_args) != 0) {
+ cfs_message("RRD update error %s: %s", filename, rrd_get_error());
+ }
+
+ g_free(filename);
+ }
+}
+
+static gboolean
+rrdentry_hash_set(
+ GHashTable *rrdhash,
+ const char *key,
+ gconstpointer data,
+ size_t len)
+{
+ g_return_val_if_fail(rrdhash != NULL, FALSE);
+ g_return_val_if_fail(key != NULL, FALSE);
+ g_return_val_if_fail(data != NULL, FALSE);
+ g_return_val_if_fail(len > 0, FALSE);
+
+ rrdentry_t *entry;
+ if ((entry = (rrdentry_t *)g_hash_table_lookup(rrdhash, key))) {
+ g_free(entry->data);
+ entry->data = g_memdup(data, len);
+ entry->len = len;
+ entry->time = time(NULL);
+ } else {
+ rrdentry_t *entry = g_new0(rrdentry_t, 1);
+
+ entry->key = g_strdup(key);
+ entry->data = g_memdup(data, len);
+ entry->len = len;
+ entry->time = time(NULL);
+
+ g_hash_table_replace(rrdhash, entry->key, entry);
+ }
+
+ update_rrd_data(key, data, len);
+
+ return TRUE;
+}
+
static int
kvstore_send_update_message(
dfsm_t *dfsm,
@@ -904,8 +1067,13 @@
g_static_mutex_lock (&mutex);
- gboolean res = kventry_hash_set(cfs_status.kvhash, key, data, len);
+ gboolean res;
+ if (strncmp(key, "rrd/", 4) == 0) {
+ res = rrdentry_hash_set(cfs_status.rrdhash, key + 4, data, len);
+ } else {
+ res = kventry_hash_set(cfs_status.kvhash, key, data, len);
+ }
g_static_mutex_unlock (&mutex);
if (cfs_status.kvstore)
@@ -936,14 +1104,20 @@
cfs_debug("got node %d status update %s", nodeid, key);
- if (!clnode->kvhash) {
- if (!(clnode->kvhash = kventry_hash_new())) {
- goto ret; /*ignore */
+ if (strncmp(key, "rrd/", 4) == 0) {
+
+ rrdentry_hash_set(cfs_status.rrdhash, key + 4, data, len);
+
+ } else {
+ if (!clnode->kvhash) {
+ if (!(clnode->kvhash = kventry_hash_new())) {
+ goto ret; /*ignore */
+ }
}
- }
- kventry_hash_set(clnode->kvhash, key, data, len);
+ kventry_hash_set(clnode->kvhash, key, data, len);
+ }
ret:
g_static_mutex_unlock (&mutex);
Modified: pve-cluster/trunk/debian/control
===================================================================
--- pve-cluster/trunk/debian/control 2011-03-07 06:33:02 UTC (rev 5648)
+++ pve-cluster/trunk/debian/control 2011-03-07 11:53:22 UTC (rev 5649)
@@ -2,12 +2,12 @@
Section: unknown
Priority: extra
Maintainer: Proxmox Support Team <support at proxmox.com>
-Build-Depends: debhelper (>= 7), autotools-dev, libsqlite3-dev, sqlite3, libfuse-dev, libcorosync-pve-dev, libqb-dev, libpve-common-perl, libglib2.0-dev, check
+Build-Depends: debhelper (>= 7), autotools-dev, libsqlite3-dev, sqlite3, libfuse-dev, libcorosync-pve-dev, libqb-dev, libpve-common-perl, libglib2.0-dev, librrd-dev, check
Standards-Version: 3.7.3
Package: pve-cluster
Architecture: any
-Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, rsync, libsqlite3-0, sqlite3, libfuse2, libqb, libpve-common-perl, rsyslog, openssl
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${perl:Depends}, rsync, libsqlite3-0, sqlite3, libfuse2, libqb, libpve-common-perl, rsyslog, openssl, librrd4
Description: Cluster Infrastructure for Proxmox Virtual Environment
This package contains the Cluster Infrastructure for the Proxmox
Virtual Environment, namely a distributed filesystem to store
More information about the pve-devel
mailing list