From nobody Tue Jan 24 22:14:18 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4P1h8V3gsQz3bgsH; Tue, 24 Jan 2023 22:14:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P1h8V2whsz3LRB; Tue, 24 Jan 2023 22:14:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598458; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6jGy3lZGBMHvv/+r2ultQP/NB5ErfIUqXHc5236N1q0=; b=dtkya8Cn2bOVK10kkjECi8TiKBLVVj7uk8vJxws9Bytz2q3E1/UK6YXzTkysR2p2qMdpcf V+29vqIxHmw8yAMt673NesxSH+QXDrNIdtq7sCTDT/K3YnH3kVC4+Sf9wua8crKFCQPx8a xMuBPtonEDJC+ZB/UQiWg72xoUknqEoQwLvfpSipfM3f77HxKp8e+KW/k8fpfT+U6R1Wsd MKOPlbmhr7uZcVVkq0h4dWYMrKDt2w5o0hrjnhtOr6tEUaa7K+azkZrw2C/fo3wm0R+JdZ djy7GICjpFG3e71KLlGttpwlGnmRxeN2lRoFATM2GLW82Tf9rmK43J7cidQeVw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598458; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=6jGy3lZGBMHvv/+r2ultQP/NB5ErfIUqXHc5236N1q0=; b=FbrLD/4HNIjJyGGk9iWWJ31iQgBgeCUOMWxUZYZA7iEdKVXHVxeGm1/jzhck/HKq6kOfmL vyBd/j1DyP4Soa3VXk2cAty+CgMT0ouljnTuJSekADA2yUEa4CsaiIdpVXs18vlV5U8jlh trHa8nK7b885IIbWeIKdt+2xAk+HuVxcxiBz6yZSqptTSS9uIUcSKfprMMLcqdyoLbBWF5 XxYTwq5aqa+4K8fM6Ja/RLkEfoe/XbXBKSfvHpF7tNo/BxuSC9uE7aKw/oiAsYkJ1HyDNq 5jvBdEUO2rAIq7GmtSoCe+0Y9G4O9MQ+Qzptgh9HNR8LCN3uoph1mfPkfFCN2g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674598458; a=rsa-sha256; cv=none; b=cMbYRmy36Kc+guKuY5tilR85phbBQwM+wpxh8Qw6aZPabhOgnVZ9Pz8XVjSS1AVqZ7Dqt/ /CCi1MdrwdtJQUgyia0Ac2dXBJqCr1nBr7Cfe61DBtCT28iXSC/h4Xg+uRjNjjpIkzIAS9 Li8lvtEryxVtUxcH3HI4M49Ea7g9MYiiSL50ZUjgl9444mG6bZaGSss79ztfnjEmN7lA7Z E4iRX0Dkfhn4EikklSPwedFqtJ8SGU4xp1ZPFfyuzadjsjt90eqSsEoWs7NFj0uTRvw3m/ hpk+nbUutFPDlZ2FyUuhLn0knm7Gb3cvDjCVGdpjfoBnccfmr56qn6Qkqy9s2A== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4P1h8V1hdSzQs7; Tue, 24 Jan 2023 22:14:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30OMEI2F089625; Tue, 24 Jan 2023 22:14:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30OMEIYn089624; Tue, 24 Jan 2023 22:14:18 GMT (envelope-from git) Date: Tue, 24 Jan 2023 22:14:18 GMT Message-Id: <202301242214.30OMEIYn089624@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: 903ffbe57d2b - stable/13 - stand/zfs: Add a third argument to zfs_probe_dev: part_too List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 903ffbe57d2b6d5a129d8b01b5c9898a03c46d21 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=903ffbe57d2b6d5a129d8b01b5c9898a03c46d21 commit 903ffbe57d2b6d5a129d8b01b5c9898a03c46d21 Author: Warner Losh AuthorDate: 2022-12-16 23:19:51 +0000 Commit: Warner Losh CommitDate: 2023-01-24 21:49:45 +0000 stand/zfs: Add a third argument to zfs_probe_dev: part_too Pass in 'true' if you'd like to search this device's partitions or 'false' if you should just search the device. EFI and (in the future) kboot have discrete partitions that aren't accessed via the full disk device. Weird things happen if you try to search in these cases. Sponsored by: Netflix (cherry picked from commit 71bbe6fb709dcfbe36877fa53c928e2e6d881843) --- stand/efi/libefi/efizfs.c | 2 +- stand/i386/loader/main.c | 2 +- stand/i386/zfsboot/zfsboot.c | 4 ++-- stand/libsa/zfs/libzfs.h | 2 +- stand/libsa/zfs/zfs.c | 4 +++- stand/userboot/userboot/main.c | 2 +- 6 files changed, 9 insertions(+), 7 deletions(-) diff --git a/stand/efi/libefi/efizfs.c b/stand/efi/libefi/efizfs.c index 7f3986d47140..4fa336df1d59 100644 --- a/stand/efi/libefi/efizfs.c +++ b/stand/efi/libefi/efizfs.c @@ -115,7 +115,7 @@ efi_zfs_probe(void) snprintf(devname, sizeof(devname), "%s%dp%d:", efipart_hddev.dv_name, hd->pd_unit, pd->pd_unit); guid = 0; - if (zfs_probe_dev(devname, &guid) == 0) { + if (zfs_probe_dev(devname, &guid, false) == 0) { insert_zfs(pd->pd_handle, guid); if (pd->pd_handle == boot_img->DeviceHandle) pool_guid = guid; diff --git a/stand/i386/loader/main.c b/stand/i386/loader/main.c index 861e08e7569c..16ac23909c0d 100644 --- a/stand/i386/loader/main.c +++ b/stand/i386/loader/main.c @@ -453,7 +453,7 @@ i386_zfs_probe(void) for (dev.dd.d_unit = 0; bd_unit2bios(&dev) >= 0; dev.dd.d_unit++) { snprintf(devname, sizeof(devname), "%s%d:", bioshd.dv_name, dev.dd.d_unit); - zfs_probe_dev(devname, NULL); + zfs_probe_dev(devname, NULL, true); } } #endif diff --git a/stand/i386/zfsboot/zfsboot.c b/stand/i386/zfsboot/zfsboot.c index c6305b41493e..da91fc3a5d20 100644 --- a/stand/i386/zfsboot/zfsboot.c +++ b/stand/i386/zfsboot/zfsboot.c @@ -706,9 +706,9 @@ i386_zfs_probe(void) dev.dd.d_unit); /* If this is not boot disk, use generic probe. */ if (dev.dd.d_unit != boot_unit) - zfs_probe_dev(devname, NULL); + zfs_probe_dev(devname, NULL, true); else - zfs_probe_dev(devname, &pool_guid); + zfs_probe_dev(devname, &pool_guid, true); if (pool_guid != 0 && bdev == NULL) { bdev = malloc(sizeof (struct i386_devdesc)); diff --git a/stand/libsa/zfs/libzfs.h b/stand/libsa/zfs/libzfs.h index b6b6cd78f073..d9758f49ab78 100644 --- a/stand/libsa/zfs/libzfs.h +++ b/stand/libsa/zfs/libzfs.h @@ -49,7 +49,7 @@ struct zfs_devdesc { }; char *zfs_fmtdev(struct devdesc *); -int zfs_probe_dev(const char *devname, uint64_t *pool_guid); +int zfs_probe_dev(const char *devname, uint64_t *pool_guid, bool part_too); int zfs_list(const char *name); int zfs_get_bootonce(void *, const char *, char *, size_t); int zfs_get_bootenv(void *, nvlist_t **); diff --git a/stand/libsa/zfs/zfs.c b/stand/libsa/zfs/zfs.c index d7aecc71ab5c..57fecf2f4d68 100644 --- a/stand/libsa/zfs/zfs.c +++ b/stand/libsa/zfs/zfs.c @@ -1492,7 +1492,7 @@ zfs_attach_nvstore(void *vdev) } int -zfs_probe_dev(const char *devname, uint64_t *pool_guid) +zfs_probe_dev(const char *devname, uint64_t *pool_guid, bool parts_too) { struct ptable *table; struct zfs_probe_args pa; @@ -1508,6 +1508,8 @@ zfs_probe_dev(const char *devname, uint64_t *pool_guid) ret = zfs_probe(pa.fd, pool_guid); if (ret == 0) return (0); + if (!parts_too) + return (ENXIO); /* Probe each partition */ ret = ioctl(pa.fd, DIOCGMEDIASIZE, &mediasz); diff --git a/stand/userboot/userboot/main.c b/stand/userboot/userboot/main.c index 6ec5c5ddbbb6..b403d9b48f56 100644 --- a/stand/userboot/userboot/main.c +++ b/stand/userboot/userboot/main.c @@ -313,7 +313,7 @@ userboot_zfs_probe(void) for (unit = 0; unit < userboot_disk_maxunit; unit++) { sprintf(devname, "disk%d:", unit); pool_guid = 0; - zfs_probe_dev(devname, &pool_guid); + zfs_probe_dev(devname, &pool_guid, true); if (pool_guid != 0) userboot_zfs_found = 1; }