On 29/09/2021 16:20, Warner Losh wrote:
On Wed, Sep 29, 2021 at 2:37 AM Andriy Gapon <a...@freebsd.org
<mailto:a...@freebsd.org>> wrote:
For an introduction, I never liked consequences of GEOM labels being
implemented
as geoms. And I specifically do not mean explicitly created labels via
glabel
create / label. I mean GEOM labels based on partition and filesystem
labels,
disk IDs, etc, And I don't like things such as opening a device via one
label
spoiling other labels.
So, I've been reading through some recent-ish changes by Warner for GEOM
aliases
and I've got this (maybe not so) bright idea, what if those labels were
implemented as aliases. Would that work? Would that require a lot of work?
I did a quick hack as a proof of concept.
The change is quite small.
diff --git a/sys/geom/label/g_label.c b/sys/geom/label/g_label.c
index 1df7e799b014..72b97d314de4 100644
--- a/sys/geom/label/g_label.c
+++ b/sys/geom/label/g_label.c
@@ -418,12 +418,15 @@ g_label_taste(struct g_class *mp, struct g_provider
*pp,
int flags __unused)
if (label[0] == '\0')
continue;
if (g_labels[i] != &g_label_generic) {
- mediasize = pp->mediasize;
+ if (g_label_is_name_ok(label)) {
+ g_provider_add_alias(pp, "%s%s",
+ g_labels[i]->ld_dirprefix, label);
+ }
} else {
mediasize = pp->mediasize - pp->sectorsize;
+ g_label_create(NULL, mp, pp, label,
+ g_labels[i]->ld_dirprefix, mediasize);
}
- g_label_create(NULL, mp, pp, label,
- g_labels[i]->ld_dirprefix, mediasize);
}
g_access(cp, -1, 0, 0);
end:
This seems to work in a basic smoke test of just booting up with the change.
[snip]
Of course, the change can break existing scripts / tools that count on
labels
having their own geoms.
Also, it can be argued that it would be better to create such symbolic
links in
userland. It should be easy to port the label tasting code to userland and
hook
it to devd events. That should cover all use cases except for the root
filesystem.
Finally, I haven't tested glabel create / label yet, so the change may need
some
more work in that area.
What is your opinion?
Is this something worth pursuing?
Conrad did something similar in 5b9b571cb and wound up reverting it. Too many
unforeseen issues, IIRC.
Whoosh, I completely missed that commit.
Unfortunately, the revert message it too terse:
Revert r361838
Reported by: delphij
I wonder if the reported problem was indeed too hard to overcome.
However, I already see a number of issues in my simplistic change.
First of all, removing obsolete aliases.
I am thinking that maybe each "alias label" should still have a geom attached to
the corresponding provider but without a (downstream) provider of its own. This
way we can still receive events for spoiling, etc without introducing an
alternative provider. We then can manipulate aliases in response to the
upstream changes.
Yeah, I see, a lot more work is needed.
--
Andriy Gapon