diff options
author | Gleb Smirnoff <glebius@FreeBSD.org> | 2025-07-16 18:15:12 +0000 |
---|---|---|
committer | Gleb Smirnoff <glebius@FreeBSD.org> | 2025-07-16 18:15:54 +0000 |
commit | 6dd0803ffd31c60a84488d06928813353c6303d3 (patch) | |
tree | 4d3a56886e58e036f02e9bff80fbbb76f137d15a /contrib/libpcap/(public-mirror) | |
parent | cc61a0793a0e7db8601e5eba1242befb810a5844 (diff) |
Before this change, the first probed member of a pool would initialize
vdev tree for the pool. Now, imagine a situation when a machine has a
disk that has been removed from the pool, but the ZFS label was not
erased. That's a typical scenario - disk goes offline, it is replaced
with a spare, no data changes written to the gone disk. Then, disk
appears back at boot time and it is the first one to be probed by the
loader. It has the same pool GUID as all other members and naive loader
would not see a conflict. Then the disk will be used as source of truth
to read the bootenv.
To fix that, provide vdev_free() that allows to rollback the already
prebuilt vdev tree, so that a new one can be built from scratch. Upon
encountering a newer configuration for already known top level part of a
pool, call vdev_free() and let vdev_probe() to build a new one.
The change has been tested with loader_lua and userboot.so, but it should
have same effect on the legacy boot1 loader.
Reviewed by: tsoome, mav, imp
Differential Revision: https://reviews.freebsd.org/D51219
Diffstat (limited to 'contrib/libpcap/(public-mirror)')
0 files changed, 0 insertions, 0 deletions