diff options
author | Ameer Hamza <[email protected]> | 2024-11-16 04:08:16 +0500 |
---|---|---|
committer | GitHub <[email protected]> | 2024-11-15 15:08:16 -0800 |
commit | ff3df1211c4a08c36c6ced95eb141a9bb8151e12 (patch) | |
tree | 5bf7ffe0af90854e4b223250661f4bae42f4422e /cmd | |
parent | fd6e8c1d2a5c8d95d509b691b81c66597e354981 (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.c | 4 |
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 */ |