Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 27 Jun 2007 17:35:39 GMT
From:      Ulf Lilleengen <lulf@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 122416 for review
Message-ID:  <200706271735.l5RHZdZl076387@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=122416

Change 122416 by lulf@lulf_carrot on 2007/06/27 17:35:18

	- Fix bug in renaming code where we missed an 's'
	- Enable support for renaming in 'attach' command.
	- Enable support for setting subdisk offset when attaching a subdisk to
	  a plex.

Affected files ...

.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#21 edit
.. //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_subr.c#12 edit

Differences ...

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum.c#21 (text+ko) ====

@@ -216,9 +216,17 @@
 		gctl_error(req, "no parent given");
 		return;
 	}
-
 	offset = gctl_get_paraml(req, "offset", sizeof(*offset));
+	if (offset == NULL) {
+		gctl_error(req, "no offset given");
+		return;
+	}
 	rename = gctl_get_paraml(req, "rename", sizeof(*rename));
+	if (rename == NULL) {
+		gctl_error(req, "no rename flag given");
+		return;
+	}
+
 	type_child = gv_object_type(sc, child);
 	type_parent = gv_object_type(sc, parent);
 
@@ -230,8 +238,7 @@
 		}
 		v = gv_find_vol(sc, parent);
 		p = gv_find_plex(sc, child);
-		/* XXX: Rename not supported yet. */
-		gv_post_event(sc, GV_EVENT_ATTACH_PLEX, p, v, 0, 0);
+		gv_post_event(sc, GV_EVENT_ATTACH_PLEX, p, v, *offset, *rename);
 		break;
 	case GV_TYPE_SD:
 		if (type_parent != GV_TYPE_PLEX) {
@@ -241,7 +248,7 @@
 		p = gv_find_plex(sc, parent);
 		s = gv_find_sd(sc, child);
 		/* XXX: Rename not supported yet. */
-		gv_post_event(sc, GV_EVENT_ATTACH_SD, s, p, 0, 0);
+		gv_post_event(sc, GV_EVENT_ATTACH_SD, s, p, *offset, *rename);
 		break;
 	default:
 		gctl_error(req, "invalid child type");
@@ -514,7 +521,8 @@
 	struct gv_sd *s;
 	struct gv_drive *d;
 	struct bio *bp;
-	int newstate, flags, err;
+	int newstate, flags, err, rename;
+	off_t offset;
 
 	sc = arg;
 	KASSERT(sc != NULL, ("NULL sc"));
@@ -699,7 +707,8 @@
 				printf("VINUM: event 'attach'\n");
 				p = ev->arg1;
 				v = ev->arg2;
-				err = gv_attach_plex(p, v, 0);
+				rename = ev->arg4;
+				err = gv_attach_plex(p, v, rename);
 				if (err)
 					printf("VINUM: error attaching %s to "
 					    "%s: error code %d\n", p->name,
@@ -710,7 +719,9 @@
 				printf("VINUM: event 'attach'\n");
 				s = ev->arg1;
 				p = ev->arg2;
-				err = gv_attach_sd(s, p, -1, 0);
+				offset = ev->arg3;
+				rename = ev->arg4;
+				err = gv_attach_sd(s, p, offset, rename);
 				if (err)
 					printf("VINUM: error attaching %s to "
 					    "%s: error code %d\n", s->name,

==== //depot/projects/soc2007/lulf/gvinum_fixup/sys/geom/vinum/geom_vinum_subr.c#12 (text+ko) ====

@@ -1105,7 +1105,7 @@
 	gv_update_plex_config(p);
 
 	if (rename) {
-		snprintf(s->name, GV_MAXSDNAME, "%s.%d", s->plex,
+		snprintf(s->name, GV_MAXSDNAME, "%s.s%d", s->plex,
 		    p->sdcount - 1);
 	}
 	gv_save_config(p->vinumconf);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200706271735.l5RHZdZl076387>