PERFORCE change 41754 for review

Juli Mallett jmallett at FreeBSD.org
Sat Nov 8 12:54:42 PST 2003


http://perforce.freebsd.org/chv.cgi?CH=41754

Change 41754 by jmallett at jmallett_dalek on 2003/11/08 12:53:45

	Merge from freebsd-jmallett to fix build.

Affected files ...

.. //depot/projects/mips/sys/geom/geom_fx.c#13 edit

Differences ...

==== //depot/projects/mips/sys/geom/geom_fx.c#13 (text+ko) ====

@@ -31,16 +31,17 @@
  * $FreeBSD$
  */
 
+/*
+ * TODO:
+ * 	o) Hotspots.
+ * 	o) geom_fx_enc.c.
+ * 	o) CONFIG stuff, including "write label" and so on.  bootcode
+ * 	   may or may not be an option.  Implementing a fake filesystem
+ * 	   for volhdr would probably be more viable.
+ */
 
 #include <sys/param.h>
 #include <sys/endian.h>
-#ifndef _KERNEL
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <err.h>
-#else
 #include <sys/systm.h>
 #include <sys/kernel.h>
 #include <sys/conf.h>
@@ -48,7 +49,6 @@
 #include <sys/malloc.h>
 #include <sys/lock.h>
 #include <sys/mutex.h>
-#endif
 #include <sys/diskfx.h>
 #include <geom/geom.h>
 #include <geom/geom_slice.h>
@@ -94,19 +94,6 @@
 	return (sum);
 }
 
-static int
-g_fx_start(struct bio *bp)
-{
-	struct g_geom *gp;
-	struct g_fx_softc *ms;
-	struct g_slicer *gsp;
-
-	gp = bp->bio_to->geom;
-	gsp = gp->softc;
-	ms = gsp->softc;
-	return (0);
-}
-
 static void
 g_fx_dumpconf(struct sbuf *sb, const char *indent, struct g_geom *gp, struct g_consumer *cp __unused, struct g_provider *pp)
 {
@@ -143,11 +130,10 @@
 	if (flags == G_TF_NORMAL &&
 	    !strcmp(pp->geom->class->name, FX_CLASS_NAME))
 		return (NULL);
-	gp = g_slice_new(mp, FX_NPARTS, pp, &cp, &ms, sizeof *ms, g_fx_start);
+	gp = g_slice_new(mp, FX_NPARTS, pp, &cp, &ms, sizeof *ms, NULL);
 	if (gp == NULL)
 		return (NULL);
 	gsp = gp->softc;
-	g_topology_unlock();
 	gp->dumpconf = g_fx_dumpconf;
 	npart = 0;
 	while (1) {	/* a trick to allow us to use break */
@@ -157,7 +143,9 @@
 		if (sectorsize < 512)
 			break;
 		mediasize = cp->provider->mediasize;
+		g_topology_unlock();
 		buf = g_read_data(cp, 0, sizeof (struct volhdr), &error);
+		g_topology_lock();
 		if (buf == NULL || error != 0)
 			break;
 		label = (struct volhdr *)buf;
@@ -177,11 +165,10 @@
 			g_fx_swap_volpart(vp);
 			if (!vp->vp_size)
 				continue;
-			g_topology_lock();
 			g_slice_config(gp, i, G_SLICE_CONFIG_SET,
-			    vp->vp_begin * sectorsize, vp->vp_size, sectorsize,
+			    ((off_t)vp->vp_begin) << 9ULL,
+			    ((off_t)vp->vp_size) << 9ULL, sectorsize,
 			    "%s%c", pp->name, 'a' + i);
-			g_topology_unlock();
 			if (bootverbose) {
 				printf("Added %s%c of type %d (%s)\n",
 				       pp->name, 'a' + i, vp->vp_type,
@@ -195,10 +182,9 @@
 		}
 		break;
 	}
-	g_topology_lock();
 	g_access_rel(cp, -1, 0, 0);
 	if (LIST_EMPTY(&gp->provider)) {
-		g_std_spoiled(cp);
+		g_slice_spoiled(cp);
 		return (NULL);
 	}
 	return (gp);
@@ -207,7 +193,6 @@
 static struct g_class g_fx_class = {
 	.name = FX_CLASS_NAME,
 	.taste = g_fx_taste,
-	G_CLASS_INITIALIZER
 };
 
 DECLARE_GEOM_CLASS(g_fx_class, g_fx);


More information about the p4-projects mailing list