PERFORCE change 81921 for review

soc-cjones soc-cjones at FreeBSD.org
Sat Aug 13 02:14:18 GMT 2005


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

Change 81921 by soc-cjones at soc-cjones_ishtar on 2005/08/13 02:13:42

	Add debugging calls for object creation, to try to figure out what's breaking the saves.

Affected files ...

.. //depot/projects/soc2005/gvinum/src/sys/geom/vinum/geom_vinum.c#3 edit

Differences ...

==== //depot/projects/soc2005/gvinum/src/sys/geom/vinum/geom_vinum.c#3 (text+ko) ====

@@ -57,7 +57,7 @@
 	struct g_geom *gp;
 	struct gv_softc *sc;
 	int error;
-	
+
 	g_topology_assert();
 
 	KASSERT(cp != NULL, ("gv_orphan: null cp"));
@@ -156,7 +156,6 @@
 		gp = LIST_FIRST(&mp->geom);
 		sc = gp->softc;
 	}
-	
 
 	/* We need a temporary consumer to read the config from. */
 	cp = g_new_consumer(gp);
@@ -274,6 +273,8 @@
 
 	g_topology_assert();
 
+	printf("gv_create: started\n");
+
 	sc = gp->softc;
 
 	/* Find out how many of each object have been passed in. */
@@ -282,6 +283,8 @@
 	subdisks = gctl_get_paraml(req, "subdisks", sizeof(*subdisks));
 	drives = gctl_get_paraml(req, "drives", sizeof(*drives));
 
+	printf("gv_create: %d volumes, %d plexes, %d subdisks, %d drives\n", *volumes, *plexes, *subdisks, *volumes);
+
 	/* First, handle drive definitions ... */
 	for (i = 0; i < *drives; i++) {
 		snprintf(buf, sizeof(buf), "drive%d", i);
@@ -383,9 +386,13 @@
 		s = g_malloc(sizeof(*s), M_WAITOK | M_ZERO);
 		bcopy(s2, s, sizeof(*s));
 
+		printf("gv_create: at bcopy subdisk '%s', size %d\n", s->name, (int) s->size);
+		
 		/* Find the drive where this subdisk should be put on. */
 		d = gv_find_drive(sc, s->drive);
 
+		printf("gv_create: after gv_find_drive subdisk '%s', size %ld, drive '%s' avail %lld\n", s->name, (long) s->size, d->name, (long long) d->avail);
+		
 		/* drive not found - XXX */
 		if (d == NULL) {
 			printf("FOO: drive '%s' not found\n", s->drive);
@@ -396,6 +403,8 @@
 		/* Find the plex where this subdisk belongs to. */
 		p = gv_find_plex(sc, s->plex);
 
+		printf("gv_create: after gv_find_plex subdisk '%s', size %ld, drive '%s' avail %lld\n", s->name, (long) s->size, d->name, (long long) d->avail);
+		
 		/* plex not found - XXX */
 		if (p == NULL) {
 			printf("FOO: plex '%s' not found\n", s->plex);
@@ -414,6 +423,8 @@
 			continue;
 		}
 
+		printf("gv_create: after gv_sd_to_drive subdisk '%s', size %ld, drive '%s', avail %lld\n", s->name, (long) s->size, d->name, (long long) d->avail);
+		
 		/*
 		 * Then, we give the subdisk to the plex; we check if the
 		 * given values are correct and maybe adjust them.
@@ -425,12 +436,16 @@
 		}
 		s->flags |= GV_SD_NEWBORN;
 
+		printf("gv_create: after gv_sd_to_plex subdisk '%s', size %lld, drive '%s', avail %lld\n", s->name, (long long) s->size, d->name, (long long) d->avail);
+		
 		s->vinumconf = sc;
 		LIST_INSERT_HEAD(&sc->subdisks, s, sd);
 	}
 
-	LIST_FOREACH(s, &sc->subdisks, sd)
+	LIST_FOREACH(s, &sc->subdisks, sd) {
 		gv_update_sd_state(s);
+		printf("gv_create: LIST_FOREACH subdisk '%s', size %ld, drive '%s', avail %lld\n", s->name, (long) s->size, d->name, (long long) d->avail);
+	}
 	LIST_FOREACH(p, &sc->plexes, plex)
 		gv_update_plex_config(p);
 	LIST_FOREACH(v, &sc->volumes, volume)
@@ -442,6 +457,7 @@
 	 * geom.
 	 */
 	LIST_FOREACH(d, &sc->drives, drive) {
+		printf("LIST_FOREACH: drive '%s'\n", d->name);
 		if (d->geom == NULL) {
 			/*
 			 * XXX if the provider disapears before we get a chance
@@ -455,7 +471,9 @@
 				continue;
 			}
 			cp = g_new_consumer(gp);
+			printf("gv_create: calling g_attach\n");
 			g_attach(cp, pp);
+			printf("gv_create: calling gv_save_config\n");
 			gv_save_config(cp, d, sc);
 			g_detach(cp);
 			g_destroy_consumer(cp);


More information about the p4-projects mailing list