From owner-freebsd-ports-bugs@FreeBSD.ORG Sat Feb 23 15:40:03 2013 Return-Path: Delivered-To: freebsd-ports-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 033253C9 for ; Sat, 23 Feb 2013 15:40:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id DBFA721D for ; Sat, 23 Feb 2013 15:40:02 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.6/8.14.6) with ESMTP id r1NFe215032811 for ; Sat, 23 Feb 2013 15:40:02 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.6/8.14.6/Submit) id r1NFe2Jl032810; Sat, 23 Feb 2013 15:40:02 GMT (envelope-from gnats) Date: Sat, 23 Feb 2013 15:40:02 GMT Message-Id: <201302231540.r1NFe2Jl032810@freefall.freebsd.org> To: freebsd-ports-bugs@FreeBSD.org Cc: From: dfilter@FreeBSD.ORG (dfilter service) Subject: Re: ports/176107: commit references a PR X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list Reply-To: dfilter service List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 23 Feb 2013 15:40:03 -0000 The following reply was made to PR ports/176107; it has been noted by GNATS. From: dfilter@FreeBSD.ORG (dfilter service) To: bug-followup@FreeBSD.org Cc: Subject: Re: ports/176107: commit references a PR Date: Sat, 23 Feb 2013 15:37:08 +0000 (UTC) Author: pawel Date: Sat Feb 23 15:36:53 2013 New Revision: 312834 URL: http://svnweb.freebsd.org/changeset/ports/312834 Log: Add ZFS support PR: ports/176107 Submitted by: Krzysztof Stryjek (maintainer) Added: head/net-mgmt/collectd/files/patch-src__zfs_arc.c (contents, props changed) Modified: head/net-mgmt/collectd/Makefile head/net-mgmt/collectd/files/patch-configure.in head/net-mgmt/collectd/files/patch-src__Makefile.am head/net-mgmt/collectd/pkg-plist Modified: head/net-mgmt/collectd/Makefile ============================================================================== --- head/net-mgmt/collectd/Makefile Sat Feb 23 15:34:28 2013 (r312833) +++ head/net-mgmt/collectd/Makefile Sat Feb 23 15:36:53 2013 (r312834) @@ -3,7 +3,7 @@ PORTNAME= collectd PORTVERSION= 4.10.8 -PORTREVISION= 1 +PORTREVISION= 2 CATEGORIES= net-mgmt MASTER_SITES= http://collectd.org/files/ @@ -128,7 +128,6 @@ CONFIGURE_ARGS= --localstatedir=/var \ --disable-vmem \ --disable-vserver \ --disable-wireless \ - --disable-zfs_arc \ --without-perl-bindings \ --without-librabbitmq \ --disable-varnish \ Modified: head/net-mgmt/collectd/files/patch-configure.in ============================================================================== --- head/net-mgmt/collectd/files/patch-configure.in Sat Feb 23 15:34:28 2013 (r312833) +++ head/net-mgmt/collectd/files/patch-configure.in Sat Feb 23 15:36:53 2013 (r312834) @@ -1,6 +1,16 @@ ---- configure.in.orig 2011-10-14 12:49:49.000000000 -0800 -+++ configure.in 2012-03-20 08:09:25.000000000 -0800 -@@ -98,7 +98,7 @@ +--- configure.in.orig 2012-11-11 11:43:05.000000000 +0100 ++++ configure.in 2012-12-30 23:49:30.000000000 +0100 +@@ -67,6 +67,9 @@ + *openbsd*) + ac_system="OpenBSD" + ;; ++ *freebsd*) ++ ac_system="FreeBSD" ++ ;; + *aix*) + AC_DEFINE([KERNEL_AIX], 1, [True if program is to be compiled for a AIX kernel]) + ac_system="AIX" +@@ -98,7 +101,7 @@ fi # Where to install .pc files. @@ -9,7 +19,16 @@ AC_SUBST(pkgconfigdir) # Check for standards compliance mode -@@ -1745,9 +1745,6 @@ +@@ -1200,6 +1203,8 @@ + then + AC_DEFINE(HAVE_LIBKSTAT, 1, + [Define to 1 if you have the 'kstat' library (-lkstat)]) ++ BUILD_WITH_LIBKSTAT_LIBS="-lkstat" ++ AC_SUBST(BUILD_WITH_LIBKSTAT_LIBS) + fi + AM_CONDITIONAL(BUILD_WITH_LIBKSTAT, test "x$with_kstat" = "xyes") + AM_CONDITIONAL(BUILD_WITH_LIBDEVINFO, test "x$with_devinfo" = "xyes") +@@ -1562,9 +1567,6 @@ [with_libgcrypt="yes"], [with_libgcrypt="no (symbol gcry_md_hash_buffer not found)"]) @@ -19,7 +38,7 @@ fi CPPFLAGS="$SAVE_CPPFLAGS" -@@ -3165,7 +3162,7 @@ +@@ -3059,7 +3061,7 @@ if test "x$with_python" = "xyes" then AC_MSG_CHECKING([for Python LIBS]) @@ -28,7 +47,7 @@ python_config_status=$? if test "$python_config_status" -ne 0 || test "x$python_library_flags" = "x" -@@ -3180,7 +3177,7 @@ +@@ -3074,7 +3076,7 @@ if test "x$with_python" = "xyes" then LDFLAGS="-L$python_library_path $LDFLAGS" @@ -37,3 +56,16 @@ AC_CHECK_FUNC(PyObject_CallFunction, [with_python="yes"], +@@ -4171,6 +4173,12 @@ + plugin_zfs_arc="yes" + fi + ++# FreeBSD ++if test "x$ac_system" = "xFreeBSD" ++then ++ plugin_zfs_arc="yes" ++fi ++ + if test "x$with_devinfo$with_kstat" = "xyesyes" + then + plugin_cpu="yes" Modified: head/net-mgmt/collectd/files/patch-src__Makefile.am ============================================================================== --- head/net-mgmt/collectd/files/patch-src__Makefile.am Sat Feb 23 15:34:28 2013 (r312833) +++ head/net-mgmt/collectd/files/patch-src__Makefile.am Sat Feb 23 15:36:53 2013 (r312834) @@ -1,5 +1,5 @@ --- src/Makefile.am.orig 2012-11-11 11:43:05.000000000 +0100 -+++ src/Makefile.am 2012-12-21 16:19:37.000000000 +0100 ++++ src/Makefile.am 2012-12-30 23:34:44.000000000 +0100 @@ -7,7 +7,7 @@ endif @@ -9,6 +9,15 @@ endif AM_CPPFLAGS = -DPREFIX='"${prefix}"' +@@ -1198,7 +1198,7 @@ + zfs_arc_la_SOURCES = zfs_arc.c + zfs_arc_la_CFLAGS = $(AM_CFLAGS) + zfs_arc_la_LDFLAGS = -module -avoid-version +-zfs_arc_la_LIBADD = -lkstat ++zfs_arc_la_LIBADD = $(BUILD_WITH_LIBKSTAT_LIBS) + collectd_LDADD += "-dlopen" zfs_arc.la + collectd_DEPENDENCIES += zfs_arc.la + endif @@ -1257,12 +1257,7 @@ install-exec-hook: Added: head/net-mgmt/collectd/files/patch-src__zfs_arc.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net-mgmt/collectd/files/patch-src__zfs_arc.c Sat Feb 23 15:36:53 2013 (r312834) @@ -0,0 +1,161 @@ +--- src/zfs_arc.c.orig 2012-11-11 11:43:05.000000000 +0100 ++++ src/zfs_arc.c 2012-12-31 00:59:33.000000000 +0100 +@@ -23,11 +23,58 @@ + #include "common.h" + #include "plugin.h" + ++#if !defined(HAVE_LIBKSTAT) && defined(HAVE_SYSCTLBYNAME) ++#include ++#endif ++ + /* + * Global variables + */ + +-extern kstat_ctl_t *kc; ++#if defined(HAVE_LIBKSTAT) ++ extern kstat_ctl_t *kc; ++#endif ++ ++/* ++ * Context ++ */ ++struct za_context { ++#if defined(HAVE_LIBKSTAT) ++ kstat_t *ksp; ++#endif ++}; ++ ++static int za_init_context(struct za_context *ctx) ++{ ++#if defined(HAVE_LIBKSTAT) ++ get_kstat (&ctx->ksp, "zfs", 0, "arcstats"); ++ if (ctx->ksp == NULL) ++ { ++ ERROR ("zfs_arc plugin: Cannot find zfs:0:arcstats kstat."); ++ return (-1); ++ } ++#endif ++ return 0; ++} ++ ++static long long za_get_value(struct za_context *ctx, const char* name) ++{ ++#if defined(HAVE_LIBKSTAT) ++ return get_kstat_value(ctx->ksp, name); ++#elif defined(HAVE_SYSCTLBYNAME) ++ // kstat values are available on FreeBSD through sysctl ++ char fullname[512]; ++ long long result = 0; ++ size_t size = sizeof(result); ++ ssnprintf(fullname, sizeof(fullname), "kstat.zfs.misc.arcstats.%s", name); ++ if (sysctlbyname(fullname, &result, &size, NULL, 0) != 0 || size != sizeof(result)) ++ { ++ ERROR ("zfs_arc plugin: Cannot find stats using sysctl"); ++ result = 0; ++ } ++ return result; ++#endif ++} + + static void za_submit (const char* type, const char* type_instance, value_t* values, int values_len) + { +@@ -90,42 +137,40 @@ + + static int za_read (void) + { +- gauge_t arcsize, targetsize, minlimit, maxlimit, hits, misses, l2_size, l2_hits, l2_misses; +- counter_t demand_data_hits, demand_metadata_hits, prefetch_data_hits, prefetch_metadata_hits; +- counter_t demand_data_misses, demand_metadata_misses, prefetch_data_misses, prefetch_metadata_misses; +- counter_t l2_read_bytes, l2_write_bytes; +- kstat_t *ksp = NULL; ++ long long arcsize, targetsize, minlimit, maxlimit, hits, misses, l2_size, l2_hits, l2_misses; ++ long long demand_data_hits, demand_metadata_hits, prefetch_data_hits, prefetch_metadata_hits; ++ long long demand_data_misses, demand_metadata_misses, prefetch_data_misses, prefetch_metadata_misses; ++ long long l2_read_bytes, l2_write_bytes; ++ struct za_context ctx; + +- get_kstat (&ksp, "zfs", 0, "arcstats"); +- if (ksp == NULL) ++ if (za_init_context (&ctx) < 0) + { +- ERROR ("zfs_arc plugin: Cannot find zfs:0:arcstats kstat."); + return (-1); + } + +- arcsize = get_kstat_value(ksp, "size"); +- targetsize = get_kstat_value(ksp, "c"); +- minlimit = get_kstat_value(ksp, "c_min"); +- maxlimit = get_kstat_value(ksp, "c_max"); +- +- demand_data_hits = get_kstat_value(ksp, "demand_data_hits"); +- demand_metadata_hits = get_kstat_value(ksp, "demand_metadata_hits"); +- prefetch_data_hits = get_kstat_value(ksp, "prefetch_data_hits"); +- prefetch_metadata_hits = get_kstat_value(ksp, "prefetch_metadata_hits"); +- +- demand_data_misses = get_kstat_value(ksp, "demand_data_misses"); +- demand_metadata_misses = get_kstat_value(ksp, "demand_metadata_misses"); +- prefetch_data_misses = get_kstat_value(ksp, "prefetch_data_misses"); +- prefetch_metadata_misses = get_kstat_value(ksp, "prefetch_metadata_misses"); +- +- hits = get_kstat_value(ksp, "hits"); +- misses = get_kstat_value(ksp, "misses"); +- +- l2_size = get_kstat_value(ksp, "l2_size"); +- l2_read_bytes = get_kstat_value(ksp, "l2_read_bytes"); +- l2_write_bytes = get_kstat_value(ksp, "l2_write_bytes"); +- l2_hits = get_kstat_value(ksp, "l2_hits"); +- l2_misses = get_kstat_value(ksp, "l2_misses"); ++ arcsize = za_get_value(&ctx, "size"); ++ targetsize = za_get_value(&ctx, "c"); ++ minlimit = za_get_value(&ctx, "c_min"); ++ maxlimit = za_get_value(&ctx, "c_max"); ++ ++ demand_data_hits = za_get_value(&ctx, "demand_data_hits"); ++ demand_metadata_hits = za_get_value(&ctx, "demand_metadata_hits"); ++ prefetch_data_hits = za_get_value(&ctx, "prefetch_data_hits"); ++ prefetch_metadata_hits = za_get_value(&ctx, "prefetch_metadata_hits"); ++ ++ demand_data_misses = za_get_value(&ctx, "demand_data_misses"); ++ demand_metadata_misses = za_get_value(&ctx, "demand_metadata_misses"); ++ prefetch_data_misses = za_get_value(&ctx, "prefetch_data_misses"); ++ prefetch_metadata_misses = za_get_value(&ctx, "prefetch_metadata_misses"); ++ ++ hits = za_get_value(&ctx, "hits"); ++ misses = za_get_value(&ctx, "misses"); ++ ++ l2_size = za_get_value(&ctx, "l2_size"); ++ l2_read_bytes = za_get_value(&ctx, "l2_read_bytes"); ++ l2_write_bytes = za_get_value(&ctx, "l2_write_bytes"); ++ l2_hits = za_get_value(&ctx, "l2_hits"); ++ l2_misses = za_get_value(&ctx, "l2_misses"); + + + za_submit_size (arcsize, targetsize, minlimit, maxlimit); +@@ -146,12 +191,23 @@ + + static int za_init (void) /* {{{ */ + { +- /* kstats chain already opened by update_kstat (using *kc), verify everything went fine. */ +- if (kc == NULL) ++#if defined(HAVE_LIBKSTAT) ++ /* kstats chain already opened by update_kstat (using *kc), verify everything went fine. */ ++ if (kc == NULL) ++ { ++ ERROR ("zfs_arc plugin: kstat chain control structure not available."); ++ return (-1); ++ } ++#elif defined(HAVE_SYSCTLBYNAME) ++ /* make sure ARC is available (arc_size is not null) */ ++ unsigned long long arc_size; ++ size_t size = sizeof(arc_size); ++ if (sysctlbyname("kstat.zfs.misc.arcstats.size", &arc_size, &size, NULL, 0) != 0 || arc_size == 0) + { +- ERROR ("zfs_arc plugin: kstat chain control structure not available."); ++ ERROR ("zfs_arc plugin: could not get ARC size using sysctl, is ARC enabled?"); + return (-1); + } ++#endif + + return (0); + } /* }}} int za_init */ Modified: head/net-mgmt/collectd/pkg-plist ============================================================================== --- head/net-mgmt/collectd/pkg-plist Sat Feb 23 15:34:28 2013 (r312833) +++ head/net-mgmt/collectd/pkg-plist Sat Feb 23 15:36:53 2013 (r312834) @@ -107,6 +107,8 @@ lib/collectd/uuid.la %%WRITE_HTTP%%lib/collectd/write_http.so %%XMMS%%lib/collectd/xmms.la %%XMMS%%lib/collectd/xmms.so +lib/collectd/zfs_arc.la +lib/collectd/zfs_arc.so include/collectd/client.h include/collectd/lcc_features.h libdata/pkgconfig/libcollectdclient.pc _______________________________________________ svn-ports-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-ports-all To unsubscribe, send any mail to "svn-ports-all-unsubscribe@freebsd.org"