Merge remote-tracking branch 'github/pr/1027'
[collectd.git] / src / zfs_arc.c
index fb61dcc..b784ee3 100644 (file)
@@ -4,6 +4,7 @@
  * Copyright (C) 2012  Aurelien Rougemont
  * Copyright (C) 2013  Xin Li
  * Copyright (C) 2014  Marc Fournier
+ * Copyright (C) 2014  Wilfried Goesgens
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License as published by the
@@ -23,6 +24,7 @@
  *   Aurelien Rougemont <beorn at gandi.net>
  *   Xin Li <delphij at FreeBSD.org>
  *   Marc Fournier <marc.fournier at camptocamp.com>
+ *   Wilfried Goesgens <dothebart at citadel.org>
  **/
 
 #include "collectd.h"
@@ -51,7 +53,7 @@ static long long get_zfs_value(kstat_t *zfs_stats  __attribute__((unused)),
                return (-1);
        }
 
-       return ((long long int)e->value);
+       return (*(long long int*)e->value);
 }
 
 #elif !defined(__FreeBSD__) // Solaris
@@ -206,7 +208,7 @@ static int za_read (void)
                {
                        llentry_t *e;
                        llvalues = malloc(sizeof(long long int) * i);
-                       i = 0;
+                       int j = 0;
 
                        pnl = file_contents;
                        while (pnl != NULL)
@@ -218,9 +220,9 @@ static int za_read (void)
                                numfields = strsplit (pnl, fields, 4);
                                if (numfields == 3)
                                {
-                                       llvalues[i] = atoll (fields[2]);
+                                       llvalues[j] = atoll (fields[2]);
 
-                                       e = llentry_create (fields[0], (void *)llvalues[i]);
+                                       e = llentry_create (fields[0], &llvalues[j]);
                                        if (e == NULL)
                                        {
                                                ERROR ("zfs_arc plugin: `llentry_create' failed.");
@@ -229,6 +231,7 @@ static int za_read (void)
                                        {
                                                llist_append (ksp, e);
                                        }
+                                       j++;
                                }
                                pnl = pnnl;
                                if (pnl != NULL)