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