vdev: skip faulting disks pending removal

This patch fixes a race where vdev_remove_wanted may be set after probe
initiation, which could otherwise trigger redundant fault and removal.

Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: Alexander Motin <[email protected]>
Reviewed-by: Tony Hutter <[email protected]>
Signed-off-by: Ameer Hamza <[email protected]>
Closes #17400
This commit is contained in:
Ameer Hamza authored and Brian Behlendorf committed 2025-05-30 09:14:37 -07:00
1 parent 1d482ca6e3
commit b3b3cd1e4f
1 file changed
+4 -1
+4 -1
View File
@@ -1772,8 +1772,11 @@ vdev_probe_done(zio_t *zio)
* change the state in a spa_async_request. Probes that
* were initiated from a vdev_open can change the state
* as part of the open call.
* Skip fault injection if this vdev is already removed
* or a removal is pending.
*/
if (vps->vps_zio_done_probe) {
if (vps->vps_zio_done_probe &&
!vd->vdev_remove_wanted && !vd->vdev_removed) {
vd->vdev_fault_wanted = B_TRUE;
spa_async_request(spa, SPA_ASYNC_FAULT_VDEV);
}