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-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=71be8dbbf03ccf9f8b727b0104dabd93f9a55311;hp=4935fa273d77d448bdf8f0646d7be3f179819fbd 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;