Date: Sat, 6 Jun 2020 14:19:16 +0000 (UTC) From: Conrad Meyer <cem@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r361870 - in head/sys/geom: . label Message-ID: <202006061419.056EJGKf029931@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: cem Date: Sat Jun 6 14:19:16 2020 New Revision: 361870 URL: https://svnweb.freebsd.org/changeset/base/361870 Log: Revert r361838 Reported by: delphij Modified: head/sys/geom/geom_dev.c head/sys/geom/label/g_label.c Modified: head/sys/geom/geom_dev.c ============================================================================== --- head/sys/geom/geom_dev.c Sat Jun 6 07:13:06 2020 (r361869) +++ head/sys/geom/geom_dev.c Sat Jun 6 14:19:16 2020 (r361870) @@ -336,20 +336,9 @@ g_dev_taste(struct g_class *mp, struct g_provider *pp, struct cdev *dev, *adev; char buf[SPECNAMELEN + 6]; struct make_dev_args args; - bool retaste; g_trace(G_T_TOPOLOGY, "dev_taste(%s,%s)", mp->name, pp->name); g_topology_assert(); - /* Only one geom_dev per provider. */ - LIST_FOREACH(cp, &pp->consumers, consumers) { - if (cp->geom->class != mp || (cp->flags & G_CF_SPOILED)) - continue; - gp = cp->geom; - sc = cp->private; - dev = sc->sc_dev; - retaste = true; - goto aliases; - } gp = g_new_geomf(mp, "%s", pp->name); sc = g_malloc(sizeof(*sc), M_WAITOK | M_ZERO); mtx_init(&sc->sc_mtx, "g_dev", NULL, MTX_DEF); @@ -391,8 +380,6 @@ g_dev_taste(struct g_class *mp, struct g_provider *pp, g_dev_attrchanged(cp, "GEOM::physpath"); snprintf(buf, sizeof(buf), "cdev=%s", gp->name); devctl_notify_f("GEOM", "DEV", "CREATE", buf, M_WAITOK); - retaste = false; -aliases: /* * Now add all the aliases for this drive */ @@ -400,16 +387,8 @@ aliases: error = make_dev_alias_p(MAKEDEV_CHECKNAME | MAKEDEV_WAITOK, &adev, dev, "%s", gap->ga_alias); if (error) { - /* - * With aliases added after initial taste, we don't - * know which aliases are new in this retaste, so we - * try to create all of them. EEXIST is expected and - * silently ignored or else this becomes really spammy. - */ - if (error != EEXIST || !retaste) - printf("%s: make_dev_alias_p() failed (name=%s," - " error=%d)\n", __func__, gap->ga_alias, - error); + printf("%s: make_dev_alias_p() failed (name=%s, error=%d)\n", + __func__, gap->ga_alias, error); continue; } snprintf(buf, sizeof(buf), "cdev=%s", gap->ga_alias); Modified: head/sys/geom/label/g_label.c ============================================================================== --- head/sys/geom/label/g_label.c Sat Jun 6 07:13:06 2020 (r361869) +++ head/sys/geom/label/g_label.c Sat Jun 6 14:19:16 2020 (r361870) @@ -46,7 +46,6 @@ __FBSDID("$FreeBSD$"); #include <sys/sysctl.h> #include <geom/geom.h> #include <geom/geom_dbg.h> -#include <geom/geom_int.h> #include <geom/geom_slice.h> #include <geom/label/g_label.h> @@ -345,16 +344,18 @@ g_label_taste(struct g_class *mp, struct g_provider *p { struct g_label_metadata md; struct g_consumer *cp; - struct g_class *clsp; struct g_geom *gp; int i; - bool changed; g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name); g_topology_assert(); G_LABEL_DEBUG(2, "Tasting %s.", pp->name); + /* Skip providers that are already open for writing. */ + if (pp->acw > 0) + return (NULL); + if (strcmp(pp->geom->class->name, mp->name) == 0) return (NULL); @@ -390,16 +391,9 @@ g_label_taste(struct g_class *mp, struct g_provider *p if (md.md_provsize != pp->mediasize) break; - /* Skip providers that are already open for writing. */ - if (pp->acw > 0) { - g_access(cp, -1, 0, 0); - goto end; - } - g_label_create(NULL, mp, pp, md.md_label, G_LABEL_DIR, pp->mediasize - pp->sectorsize); } while (0); - changed = false; for (i = 0; g_labels[i] != NULL; i++) { char label[128]; @@ -411,28 +405,8 @@ g_label_taste(struct g_class *mp, struct g_provider *p g_topology_lock(); if (label[0] == '\0') continue; - if (!g_label_is_name_ok(label)) { - G_LABEL_DEBUG(0, - "%s contains suspicious label, skipping.", - pp->name); - G_LABEL_DEBUG(1, "%s suspicious label is: %s", - pp->name, label); - continue; - } - g_provider_add_alias(pp, "%s/%s", g_labels[i]->ld_dir, label); - changed = true; - } - /* - * Force devfs interface to retaste the provider, to catch the new - * alias(es). - */ - if (changed) { - LIST_FOREACH(clsp, &g_classes, class) { - if (strcmp(clsp->name, "DEV") != 0) - continue; - clsp->taste(clsp, pp, 0); - break; - } + g_label_create(NULL, mp, pp, label, g_labels[i]->ld_dir, + pp->mediasize); } g_access(cp, -1, 0, 0); end:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202006061419.056EJGKf029931>