The branch main has been updated by glebius:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=8e8fd66ca06ff73f3b4bdf3f7735d727a881cf60

commit 8e8fd66ca06ff73f3b4bdf3f7735d727a881cf60
Author:     Gleb Smirnoff <gleb...@freebsd.org>
AuthorDate: 2025-07-11 03:26:01 +0000
Commit:     Gleb Smirnoff <gleb...@freebsd.org>
CommitDate: 2025-07-11 03:26:01 +0000

    libsa/zfs: fail earlier in vdev_probe() if can't find ZPOOL_CONFIG_GUID
    
    Don't store any configuration in memory from such weird label.
---
 stand/libsa/zfs/zfsimpl.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/stand/libsa/zfs/zfsimpl.c b/stand/libsa/zfs/zfsimpl.c
index a31fa24f358e..c7dc72561eff 100644
--- a/stand/libsa/zfs/zfsimpl.c
+++ b/stand/libsa/zfs/zfsimpl.c
@@ -2067,7 +2067,9 @@ vdev_probe(vdev_phys_read_t *_read, vdev_phys_write_t 
*_write, void *priv,
            nvlist_find(nvl, ZPOOL_CONFIG_POOL_GUID, DATA_TYPE_UINT64,
            NULL, &pool_guid, NULL) != 0 ||
            nvlist_find(nvl, ZPOOL_CONFIG_POOL_NAME, DATA_TYPE_STRING,
-           NULL, &pool_name, &namelen) != 0) {
+           NULL, &pool_name, &namelen) != 0 ||
+           nvlist_find(nvl, ZPOOL_CONFIG_GUID, DATA_TYPE_UINT64,
+           NULL, &guid, NULL) != 0) {
                /*
                 * Cache and spare devices end up here - just ignore
                 * them.
@@ -2106,11 +2108,6 @@ vdev_probe(vdev_phys_read_t *_read, vdev_phys_write_t 
*_write, void *priv,
         * be some kind of alias (overlapping slices, dangerously dedicated
         * disks etc).
         */
-       if (nvlist_find(nvl, ZPOOL_CONFIG_GUID, DATA_TYPE_UINT64,
-           NULL, &guid, NULL) != 0) {
-               nvlist_destroy(nvl);
-               return (EIO);
-       }
        vdev = vdev_find(guid);
        /* Has this vdev already been inited? */
        if (vdev && vdev->v_phys_read) {

Reply via email to