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 GitHub
parent e94549d868
commit c02e1cf055
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

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