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