vdev_open: clear async remove flag after reopen

It's possible for a vdev to be flagged for async remove after the pool
has suspended. If the removed device has been returned when the pool is
resumed, the ASYNC_REMOVE task will still run at the end of txg, and
remove the device from the pool again.

To fix, we clear the async remove flag at reopen, just as we did for the
async fault flag in 5de3ac223.

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Rob Norris <rob.norris@klarasystems.com>
Closes #16921
This commit is contained in:
Rob Norris 2025-01-04 09:42:06 +11:00 committed by Brian Behlendorf
parent e47b033eae
commit 4425a7bb85

View File

@ -2041,6 +2041,7 @@ vdev_open(vdev_t *vd)
vd->vdev_cant_read = B_FALSE; vd->vdev_cant_read = B_FALSE;
vd->vdev_cant_write = B_FALSE; vd->vdev_cant_write = B_FALSE;
vd->vdev_fault_wanted = B_FALSE; vd->vdev_fault_wanted = B_FALSE;
vd->vdev_remove_wanted = B_FALSE;
vd->vdev_min_asize = vdev_get_min_asize(vd); vd->vdev_min_asize = vdev_get_min_asize(vd);
/* /*