summaryrefslogtreecommitdiffstats
path: root/collectors
diff options
context:
space:
mode:
authorIlya Mashchenko <ilya@netdata.cloud>2023-04-20 15:44:16 +0300
committerGitHub <noreply@github.com>2023-04-20 15:44:16 +0300
commit2f6d52103f1cf10388d1d9465c613c365c3b467c (patch)
treec2ad76672305f50ac6197a0ebf57405db70007e6 /collectors
parent1d23e1471cff9e0f10de8540e0f60f6d076cb18b (diff)
zfspool: add suspended state (#14934)
Diffstat (limited to 'collectors')
-rw-r--r--collectors/proc.plugin/proc_spl_kstat_zfs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/collectors/proc.plugin/proc_spl_kstat_zfs.c b/collectors/proc.plugin/proc_spl_kstat_zfs.c
index f54ba3c528..428ef0d329 100644
--- a/collectors/proc.plugin/proc_spl_kstat_zfs.c
+++ b/collectors/proc.plugin/proc_spl_kstat_zfs.c
@@ -216,6 +216,7 @@ struct zfs_pool {
RRDDIM *rd_offline;
RRDDIM *rd_removed;
RRDDIM *rd_unavail;
+ RRDDIM *rd_suspended;
int updated;
int disabled;
@@ -226,6 +227,7 @@ struct zfs_pool {
int offline;
int removed;
int unavail;
+ int suspended;
};
struct deleted_zfs_pool {
@@ -248,6 +250,7 @@ void disable_zfs_pool_state(struct zfs_pool *pool)
pool->rd_offline = NULL;
pool->rd_removed = NULL;
pool->rd_unavail = NULL;
+ pool->rd_suspended = NULL;
pool->disabled = 1;
}
@@ -285,6 +288,7 @@ int update_zfs_pool_state_chart(const DICTIONARY_ITEM *item, void *pool_p, void
pool->rd_offline = rrddim_add(pool->st, "offline", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
pool->rd_removed = rrddim_add(pool->st, "removed", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
pool->rd_unavail = rrddim_add(pool->st, "unavail", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
+ pool->rd_suspended = rrddim_add(pool->st, "suspended", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
rrdlabels_add(pool->st->rrdlabels, "pool", name, RRDLABEL_SRC_AUTO);
}
@@ -295,6 +299,7 @@ int update_zfs_pool_state_chart(const DICTIONARY_ITEM *item, void *pool_p, void
rrddim_set_by_pointer(pool->st, pool->rd_offline, pool->offline);
rrddim_set_by_pointer(pool->st, pool->rd_removed, pool->removed);
rrddim_set_by_pointer(pool->st, pool->rd_unavail, pool->unavail);
+ rrddim_set_by_pointer(pool->st, pool->rd_suspended, pool->suspended);
rrdset_done(pool->st);
}
} else {
@@ -364,6 +369,7 @@ int do_proc_spl_kstat_zfs_pool_state(int update_every, usec_t dt)
pool->offline = 0;
pool->removed = 0;
pool->unavail = 0;
+ pool->suspended = 0;
char filename[FILENAME_MAX + 1];
snprintfz(filename, FILENAME_MAX, "%s/%s/state", dirname, de->d_name);
@@ -387,6 +393,8 @@ int do_proc_spl_kstat_zfs_pool_state(int update_every, usec_t dt)
pool->removed = 1;
} else if (!strcmp(state, "UNAVAIL\n")) {
pool->unavail = 1;
+ } else if (!strcmp(state, "SUSPENDED\n")) {
+ pool->suspended = 1;
} else {
disable_zfs_pool_state(pool);