FreeBSD: notify userspace when a vdev is removed
This is needed for zfsd to autoreplace vdevs. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Signed-off-by: Ryan Moeller <ryan@iXsystems.com> Closes #11260
This commit is contained in:
parent
ec50cd24ba
commit
0aacde2e9a
|
@ -181,6 +181,8 @@ zfs_agent_post_event(const char *class, const char *subclass, nvlist_t *nvl)
|
||||||
* from the vdev_disk layer after a hot unplug. Fortunately we do
|
* from the vdev_disk layer after a hot unplug. Fortunately we do
|
||||||
* get an EC_DEV_REMOVE from our disk monitor and it is a suitable
|
* get an EC_DEV_REMOVE from our disk monitor and it is a suitable
|
||||||
* proxy so we remap it here for the benefit of the diagnosis engine.
|
* proxy so we remap it here for the benefit of the diagnosis engine.
|
||||||
|
* Starting in OpenZFS 2.0, we do get FM_RESOURCE_REMOVED from the spa
|
||||||
|
* layer. Processing multiple FM_RESOURCE_REMOVED events is not harmful.
|
||||||
*/
|
*/
|
||||||
if ((strcmp(class, EC_DEV_REMOVE) == 0) &&
|
if ((strcmp(class, EC_DEV_REMOVE) == 0) &&
|
||||||
(strcmp(subclass, ESC_DISK) == 0) &&
|
(strcmp(subclass, ESC_DISK) == 0) &&
|
||||||
|
|
|
@ -7974,6 +7974,9 @@ spa_async_remove(spa_t *spa, vdev_t *vd)
|
||||||
vd->vdev_stat.vs_checksum_errors = 0;
|
vd->vdev_stat.vs_checksum_errors = 0;
|
||||||
|
|
||||||
vdev_state_dirty(vd->vdev_top);
|
vdev_state_dirty(vd->vdev_top);
|
||||||
|
|
||||||
|
/* Tell userspace that the vdev is gone. */
|
||||||
|
zfs_post_remove(spa, vd);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int c = 0; c < vd->vdev_children; c++)
|
for (int c = 0; c < vd->vdev_children; c++)
|
||||||
|
|
Loading…
Reference in New Issue