aboutsummaryrefslogtreecommitdiffstats
path: root/cmd
diff options
context:
space:
mode:
authorAmeer Hamza <[email protected]>2024-11-16 04:08:16 +0500
committerGitHub <[email protected]>2024-11-15 15:08:16 -0800
commitff3df1211c4a08c36c6ced95eb141a9bb8151e12 (patch)
tree5bf7ffe0af90854e4b223250661f4bae42f4422e /cmd
parentfd6e8c1d2a5c8d95d509b691b81c66597e354981 (diff)
zed: prevent automatic replacement of offline vdevs
When an OFFLINE device is physically removed, a spare is automatically activated. However, this behavior differs in FreeBSD, where we do not transition from OFFLINE state to REMOVED. Our support team has encountered cases where customers experienced unexpected behavior during drive replacements, with multiple spares activating for the same VDEV due to a single disk replacement. This patch ensures that a drive in an OFFLINE state remains in that state, preventing it from transitioning to REMOVED and being automatically replaced by a spare. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Alexander Motin <[email protected]> Signed-off-by: Ameer Hamza <[email protected]> Closes #16751
Diffstat (limited to 'cmd')
-rw-r--r--cmd/zed/agents/zfs_retire.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/cmd/zed/agents/zfs_retire.c b/cmd/zed/agents/zfs_retire.c
index 1ef5c631a..6f994b68a 100644
--- a/cmd/zed/agents/zfs_retire.c
+++ b/cmd/zed/agents/zfs_retire.c
@@ -445,8 +445,8 @@ zfs_retire_recv(fmd_hdl_t *hdl, fmd_event_t *ep, nvlist_t *nvl,
* its a loopback event from spa_async_remove(). Just
* ignore it.
*/
- if (vs->vs_state == VDEV_STATE_REMOVED &&
- state == VDEV_STATE_REMOVED)
+ if ((vs->vs_state == VDEV_STATE_REMOVED && state ==
+ VDEV_STATE_REMOVED) || vs->vs_state == VDEV_STATE_OFFLINE)
return;
/* Remove the vdev since device is unplugged */