geom_raid tasting providers that can't be raw disks
Gavin Atkinson
gavin at FreeBSD.org
Thu Jun 23 18:11:12 UTC 2011
Hi,
While debugging a problem that looks like it was unrelated to geom_raid,
I realised that it tastes all providers, including each partition and
slice on raid devices it itself created.
Given that geom_raid is purely a replacement for ataraid, the only place
that the metadata can be valid is on the raw disk itself. Therefore,
I'm proposing this patch:
Index: sys/geom/raid/g_raid.c
===================================================================
--- sys/geom/raid/g_raid.c (revision 223446)
+++ sys/geom/raid/g_raid.c (working copy)
@@ -1993,6 +1993,12 @@
g_trace(G_T_TOPOLOGY, "%s(%s, %s)", __func__, mp->name, pp->name);
G_RAID_DEBUG(2, "Tasting provider %s.", pp->name);
+ if (pp->geom->rank > 1) {
+ G_RAID_DEBUG(2, "Rank of provider %s is %d, skipping.",
+ pp->name, pp->geom->rank);
+ return (NULL);
+ }
+
gp = g_new_geomf(mp, "mirror:taste");
/*
* This orphan function should be never called.
This will only allow the probing to happen on providers of rank 1, i.e.
the disks themselves. I can't see any reason to probe any other
providers. Any objection to this?
Also, should geom_raid be in GENERIC? ataraid was, and it's one less
"gotcha" for upgrades. Given the lack of ar0 -> raid/r0 aliases, the
upgrade is painful enough for users already, putting it in GENERIC may
at least help slightly...
Thanks,
Gavin
--
Gavin Atkinson
FreeBSD committer and bugmeister
GPG: A093262B (313A A79F 697D 3A5C 216A EDF5 935D EF44 A093 262B)
More information about the freebsd-geom
mailing list