summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorTony Hutter <[email protected]>2018-06-06 09:33:54 -0700
committerBrian Behlendorf <[email protected]>2018-06-06 09:33:54 -0700
commitf0ed6c744872ec6dc4838947ffc597f4d141864a (patch)
treec82a6cc535f94c2a1f7656b2224195d9c2b81eda /include
parent2d9142c9d4c9db4edcef4777fecfafa4832610cb (diff)
Add pool state /proc entry, "SUSPENDED" pools
1. Add a proc entry to display the pool's state: $ cat /proc/spl/kstat/zfs/tank/state ONLINE This is done without using the spa config locks, so it will never hang. 2. Fix 'zpool status' and 'zpool list -o health' output to print "SUSPENDED" instead of "ONLINE" for suspended pools. Reviewed-by: Olaf Faaland <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed by: Richard Elling <[email protected]> Signed-off-by: Tony Hutter <[email protected]> Closes #7331 Closes #7563
Diffstat (limited to 'include')
-rw-r--r--include/libzfs.h2
-rw-r--r--include/spl/sys/kstat.h7
-rw-r--r--include/sys/spa.h3
3 files changed, 8 insertions, 4 deletions
diff --git a/include/libzfs.h b/include/libzfs.h
index 7ea6d7fa0..b98963158 100644
--- a/include/libzfs.h
+++ b/include/libzfs.h
@@ -301,6 +301,8 @@ int zfs_dev_is_whole_disk(char *dev_name);
char *zfs_get_underlying_path(char *dev_name);
char *zfs_get_enclosure_sysfs_path(char *dev_name);
+const char *zpool_get_state_str(zpool_handle_t *);
+
/*
* Functions to manage pool properties
*/
diff --git a/include/spl/sys/kstat.h b/include/spl/sys/kstat.h
index 9170fe24e..f197ce455 100644
--- a/include/spl/sys/kstat.h
+++ b/include/spl/sys/kstat.h
@@ -69,10 +69,9 @@
#define KSTAT_FLAG_WRITABLE 0x04
#define KSTAT_FLAG_PERSISTENT 0x08
#define KSTAT_FLAG_DORMANT 0x10
-#define KSTAT_FLAG_UNSUPPORTED \
- (KSTAT_FLAG_VAR_SIZE | KSTAT_FLAG_WRITABLE | \
- KSTAT_FLAG_PERSISTENT | KSTAT_FLAG_DORMANT)
-
+#define KSTAT_FLAG_INVALID 0x20
+#define KSTAT_FLAG_LONGSTRINGS 0x40
+#define KSTAT_FLAG_NO_HEADERS 0x80
#define KS_MAGIC 0x9d9d9d9d
diff --git a/include/sys/spa.h b/include/sys/spa.h
index 8a3938e86..e8578be9a 100644
--- a/include/sys/spa.h
+++ b/include/sys/spa.h
@@ -873,6 +873,7 @@ typedef struct spa_stats {
spa_stats_history_t tx_assign_histogram;
spa_stats_history_t io_history;
spa_stats_history_t mmp_history;
+ spa_stats_history_t state; /* pool state */
} spa_stats_t;
typedef enum txg_state {
@@ -1048,6 +1049,8 @@ extern void spa_history_log_internal_ds(struct dsl_dataset *ds, const char *op,
extern void spa_history_log_internal_dd(dsl_dir_t *dd, const char *operation,
dmu_tx_t *tx, const char *fmt, ...);
+extern const char *spa_state_to_name(spa_t *spa);
+
/* error handling */
struct zbookmark_phys;
extern void spa_log_error(spa_t *spa, const zbookmark_phys_t *zb);