git: 8e8fd66ca06f - main - libsa/zfs: fail earlier in vdev_probe() if can't find ZPOOL_CONFIG_GUID

From: Gleb Smirnoff <glebius_at_FreeBSD.org>
Date: Fri, 11 Jul 2025 03:27:24 UTC
The branch main has been updated by glebius:

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

commit 8e8fd66ca06ff73f3b4bdf3f7735d727a881cf60
Author:     Gleb Smirnoff <glebius@FreeBSD.org>
AuthorDate: 2025-07-11 03:26:01 +0000
Commit:     Gleb Smirnoff <glebius@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) {