From: YmrDtnJu Date: Sat, 10 Dec 2016 00:30:59 +0000 (+0100) Subject: zfs_arc: Ignore the first two lines of the statistics file on Linux. X-Git-Tag: collectd-5.8.0~250^2~1 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=5b0c0bef2694766cb7c18d2d57017bf89fc3847d zfs_arc: Ignore the first two lines of the statistics file on Linux. The first two lines of the statistics file on Linux contain information about the rest of the file. They do not contain any usable statistics. See module/spl/spl-kstat.c of the spl module of ZFS on Linux for more information. --- diff --git a/src/zfs_arc.c b/src/zfs_arc.c index af5130aa..2f8b2f42 100644 --- a/src/zfs_arc.c +++ b/src/zfs_arc.c @@ -212,6 +212,21 @@ static int za_read(void) { return (-1); } + // Ignore the first two lines because they contain information about + // the rest of the file. + // See kstat_seq_show_headers module/spl/spl-kstat.c of the spl kernel + // module. + if (fgets(buffer, sizeof(buffer), fh) == NULL) { + ERROR("zfs_arc plugin: \"%s\" does not contain a single line.", ZOL_ARCSTATS_FILE); + fclose(fh); + return (-1); + } + if (fgets(buffer, sizeof(buffer), fh) == NULL) { + ERROR("zfs_arc plugin: \"%s\" does not contain at least two lines.", ZOL_ARCSTATS_FILE); + fclose(fh); + return (-1); + } + while (fgets(buffer, sizeof(buffer), fh) != NULL) { char *fields[3]; value_t v;