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
This commit is contained in:
parent
6d1c946e91
commit
ccf2121d59
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user