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