diff options
author | Tony Hutter <[email protected]> | 2017-05-19 12:30:16 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2017-05-19 12:30:16 -0700 |
commit | 4a283c7f77eb5065e9f03b122bf8ead4f4a1e2be (patch) | |
tree | 2a4daf72ae62343aa7f24305a592fc2f31bb2eeb /include | |
parent | a32df59e187a6187eb96c52b93cf02e8af51f327 (diff) |
Force fault a vdev with 'zpool offline -f'
This patch adds a '-f' option to 'zpool offline' to fault a vdev
instead of bringing it offline. Unlike the OFFLINE state, the
FAULTED state will trigger the FMA code, allowing for things like
autoreplace and triggering the slot fault LED. The -f faults
persist across imports, unless they were set with the temporary
(-t) flag. Both persistent and temporary faults can be cleared
with zpool clear.
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Tony Hutter <[email protected]>
Closes #6094
Diffstat (limited to 'include')
-rw-r--r-- | include/libzfs.h | 1 | ||||
-rw-r--r-- | include/sys/fs/zfs.h | 5 |
2 files changed, 4 insertions, 2 deletions
diff --git a/include/libzfs.h b/include/libzfs.h index 1240c23d2..08c7813ed 100644 --- a/include/libzfs.h +++ b/include/libzfs.h @@ -284,6 +284,7 @@ extern nvlist_t *zpool_find_vdev_by_physpath(zpool_handle_t *, const char *, boolean_t *, boolean_t *, boolean_t *); extern int zpool_label_disk_wait(char *, int); extern int zpool_label_disk(libzfs_handle_t *, zpool_handle_t *, char *); +extern uint64_t zpool_vdev_path_to_guid(zpool_handle_t *zhp, const char *path); int zfs_dev_is_dm(char *dev_name); int zfs_dev_is_whole_disk(char *dev_name); diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h index 5b7bbb689..d59489de6 100644 --- a/include/sys/fs/zfs.h +++ b/include/sys/fs/zfs.h @@ -731,9 +731,10 @@ typedef enum vdev_aux { VDEV_AUX_ERR_EXCEEDED, /* too many errors */ VDEV_AUX_IO_FAILURE, /* experienced I/O failure */ VDEV_AUX_BAD_LOG, /* cannot read log chain(s) */ - VDEV_AUX_EXTERNAL, /* external diagnosis */ + VDEV_AUX_EXTERNAL, /* external diagnosis or forced fault */ VDEV_AUX_SPLIT_POOL, /* vdev was split off into another pool */ - VDEV_AUX_BAD_ASHIFT /* vdev ashift is invalid */ + VDEV_AUX_BAD_ASHIFT, /* vdev ashift is invalid */ + VDEV_AUX_EXTERNAL_PERSIST /* persistent forced fault */ } vdev_aux_t; /* |