@cryptotaxi247 / netdata-1 / commits / 2f6d52103

zfspool: add suspended state (#14934)

Ilya Mashchenko committed Apr 20, 2023 at 15:44 UTC 2f6d52103f1cf10388d1d9465c613c365c3b467c
1 file changed +8
collectors/proc.plugin/proc_spl_kstat_zfs.c
+8
@@ -216,6 +216,7 @@ struct zfs_pool {
216 RRDDIM *rd_offline;
217 RRDDIM *rd_removed;
218 RRDDIM *rd_unavail;
219 + RRDDIM *rd_suspended;
220
221 int updated;
222 int disabled;
@@ -226,6 +227,7 @@ struct zfs_pool {
227 int offline;
228 int removed;
229 int unavail;
230 + int suspended;
231 };
232
233 struct deleted_zfs_pool {
@@ -248,6 +250,7 @@ void disable_zfs_pool_state(struct zfs_pool *pool)
250 pool->rd_offline = NULL;
251 pool->rd_removed = NULL;
252 pool->rd_unavail = NULL;
253 + pool->rd_suspended = NULL;
254
255 pool->disabled = 1;
256 }
@@ -285,6 +288,7 @@ int update_zfs_pool_state_chart(const DICTIONARY_ITEM *item, void *pool_p, void
288 pool->rd_offline = rrddim_add(pool->st, "offline", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
289 pool->rd_removed = rrddim_add(pool->st, "removed", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
290 pool->rd_unavail = rrddim_add(pool->st, "unavail", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
291 + pool->rd_suspended = rrddim_add(pool->st, "suspended", NULL, 1, 1, RRD_ALGORITHM_ABSOLUTE);
292
293 rrdlabels_add(pool->st->rrdlabels, "pool", name, RRDLABEL_SRC_AUTO);
294 }
@@ -295,6 +299,7 @@ int update_zfs_pool_state_chart(const DICTIONARY_ITEM *item, void *pool_p, void
299 rrddim_set_by_pointer(pool->st, pool->rd_offline, pool->offline);
300 rrddim_set_by_pointer(pool->st, pool->rd_removed, pool->removed);
301 rrddim_set_by_pointer(pool->st, pool->rd_unavail, pool->unavail);
302 + rrddim_set_by_pointer(pool->st, pool->rd_suspended, pool->suspended);
303 rrdset_done(pool->st);
304 }
305 } else {
@@ -364,6 +369,7 @@ int do_proc_spl_kstat_zfs_pool_state(int update_every, usec_t dt)
369 pool->offline = 0;
370 pool->removed = 0;
371 pool->unavail = 0;
372 + pool->suspended = 0;
373
374 char filename[FILENAME_MAX + 1];
375 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)
393 pool->removed = 1;
394 } else if (!strcmp(state, "UNAVAIL\n")) {
395 pool->unavail = 1;
396 + } else if (!strcmp(state, "SUSPENDED\n")) {
397 + pool->suspended = 1;
398 } else {
399 disable_zfs_pool_state(pool);
400