Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 19 Feb 2023 00:48:37 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 9ad4c0468f19 - stable/13 - efivar: Try harder to find label's efimedia
Message-ID:  <202302190048.31J0mbst069580@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/13 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=9ad4c0468f1924cf7bdb9830bb781de9ca095c61

commit 9ad4c0468f1924cf7bdb9830bb781de9ca095c61
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2023-02-16 16:36:03 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2023-02-19 00:46:57 +0000

    efivar: Try harder to find label's efimedia
    
    If there's no efimedia attribute on the provider, and the provider's a
    glabel, then find the 'parent' geom. In this case, the provider's name
    is label-type/name, but the geom's label will that of the underlying
    device (eg ada0p1). If it is, recurisvely call find_geom_efimedia with
    the geom's name, which shuold have the efimedia attribute.
    
    Sponsored by:           Netflix
    Reviewed by:            corvink, manu, asomers
    Differential Revision:  https://reviews.freebsd.org/D38614
    
    (cherry picked from commit ccf2121d59ac51e1a0287d75262d48018d09cad6)
---
 lib/libefivar/efivar-dp-xlate.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lib/libefivar/efivar-dp-xlate.c b/lib/libefivar/efivar-dp-xlate.c
index 1b30d1dfb143..effc8a2de475 100644
--- a/lib/libefivar/efivar-dp-xlate.c
+++ b/lib/libefivar/efivar-dp-xlate.c
@@ -527,6 +527,15 @@ find_geom_efimedia(struct gmesh *mesh, const char *dev)
 	if (pp == NULL)
 		return (NULL);
 	efimedia = geom_pp_attr(mesh, pp, "efimedia");
+
+	/*
+	 * If this device doesn't hav an efimedia attribute, see if it is a
+	 * glabel node, and if so look for the underlying provider to get the
+	 * efimedia attribute from.
+	 */
+	if (efimedia == NULL &&
+	    strcmp(pp->lg_geom->lg_class->lg_name, G_LABEL) == 0)
+		efimedia = find_geom_efimedia(mesh, pp->lg_geom->lg_name);
 	if (efimedia == NULL)
 		return (NULL);
 	return strdup(efimedia);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202302190048.31J0mbst069580>