Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 02 Mar 2001 18:19:43 +0200
From:      Maxim Sobolev <sobomax@FreeBSD.org>
To:        jkh@FreeBSD.org
Cc:        current@FreeBSD.org
Subject:   Labeling Vinum partitions in the sysinstall(8) [patch]
Message-ID:  <3A9FC81E.1B2EDCC7@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.
--------------A9805AA2D47C2FC02223933A
Content-Type: text/plain; charset=koi8-r
Content-Transfer-Encoding: 7bit

Hi folks,

I'm currently creating a Vinum(4) configuration wizard for sysinstall(8), which
would simplify Vinum configuration procedure for the vinum newbies. So far I
finished a patch that allows create vinum partitions using sysinstall's
disklabel editor and would like to commit it. Please review attached patches.

Thanks!

-Maxim

--------------A9805AA2D47C2FC02223933A
Content-Type: text/plain; charset=koi8-r;
 name="si.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="si.diff"

Index: label.c
===================================================================
RCS file: /home/ncvs/src/usr.sbin/sysinstall/label.c,v
retrieving revision 1.102
diff -d -u -r1.102 label.c
--- label.c	2001/02/07 11:26:41	1.102
+++ label.c	2001/03/02 14:12:59
@@ -277,6 +277,8 @@
 		    if (c2->type == part) {
 			if (c2->subtype == FS_SWAP)
 			    label_chunk_info[j].type = PART_SWAP;
+			else if (c2->subtype == FS_VINUM)
+			    label_chunk_info[j].type = PART_VINUM;
 			else
 			    label_chunk_info[j].type = PART_FILESYSTEM;
 			label_chunk_info[j].c = c2;
@@ -383,19 +385,24 @@
 	"A file system",
 	"Swap",
 	"A swap partition.",
+	"Vinum",
+	"A vinum subdisk."
     };
     WINDOW *w = savescr();
 
     i = dialog_menu("Please choose a partition type",
 		    "If you want to use this partition for swap space, select Swap.\n"
-		    "If you want to put a filesystem on it, choose FS.",
-		    -1, -1, 2, 2, fs_types, selection, NULL, NULL);
+		    "If you want to put a filesystem on it, choose FS.\n"
+		    "If you want to use it as a subdisk in a Vinum plex, choose Vinum.",
+		    -1, -1, 3, 3, fs_types, selection, NULL, NULL);
     restorescr(w);
     if (!i) {
 	if (!strcmp(selection, "FS"))
 	    return PART_FILESYSTEM;
 	else if (!strcmp(selection, "Swap"))
 	    return PART_SWAP;
+	else if (!strcmp(selection, "Vinum"))
+	    return PART_VINUM;
     }
     return PART_NONE;
 }
@@ -571,6 +578,8 @@
 	        mountpoint = ((PartInfo *)label_chunk_info[i].c->private_data)->mountpoint;
 	    else if (label_chunk_info[i].type == PART_SWAP)
 		mountpoint = "swap";
+	    else if (label_chunk_info[i].type == PART_VINUM)
+		mountpoint = "vinum";
 	    else
 	        mountpoint = "<none>";
 
@@ -581,6 +590,8 @@
 		newfs = ((PartInfo *)label_chunk_info[i].c->private_data)->newfs ? "UFS Y" : "UFS N";
 	    else if (label_chunk_info[i].type == PART_SWAP)
 		newfs = "SWAP";
+	    else if (label_chunk_info[i].type == PART_VINUM)
+		newfs = "VINUM";
 	    else
 		newfs = "*";
 	    for (j = 0; j < MAX_MOUNT_NAME && mountpoint[j]; j++)
@@ -895,6 +906,7 @@
 	    else {
 		char *val;
 		int size;
+		int subtype;
 		struct chunk *tmp;
 		char osize[80];
 		u_long flags = 0;
@@ -959,17 +971,26 @@
 				   "partitions should usually be at least %dMB in size", ROOT_MIN_SIZE);
 		    }
 		}
+		switch (type) {
+		case PART_SWAP:
+		    subtype = FS_SWAP;
+		    break;
+		case PART_VINUM:
+		    subtype = FS_VINUM;
+		    break;
+		default:
+		    subtype = FS_BSDFFS;
+		    break;
+		}
 		tmp = Create_Chunk_DWIM(label_chunk_info[here].c->disk,
 					label_chunk_info[here].c,
-					size, part,
-					(type == PART_SWAP) ? FS_SWAP : FS_BSDFFS,
-					flags);
+					size, part, subtype, flags);
 		if (!tmp) {
 		    msgConfirm("Unable to create the partition. Too big?");
 		    clear_wins();
 		    break;
 		}
-		if (type != PART_SWAP) {
+		if (type != PART_SWAP && type != PART_VINUM) {
 		    /* This is needed to tell the newfs -u about the size */
 		    tmp->private_data = new_part(p->mountpoint, p->newfs, tmp->size);
 		    safe_free(p);
@@ -1021,6 +1042,10 @@
 
 	    case PART_SWAP:
 		msg = "You don't need to specify a mountpoint for a swap partition.";
+		break;
+
+	    case PART_VINUM:
+		msg = "You don't need to specify a mountpoint for a vinum subdisk.";
 		break;
 
 	    case PART_FAT:
Index: sysinstall.h
===================================================================
RCS file: /home/ncvs/src/usr.sbin/sysinstall/sysinstall.h,v
retrieving revision 1.202
diff -d -u -r1.202 sysinstall.h
--- sysinstall.h	2001/03/02 08:15:40	1.202
+++ sysinstall.h	2001/03/02 14:13:01
@@ -245,7 +245,7 @@
     DEVICE_TYPE_UFS,
     DEVICE_TYPE_NFS,
     DEVICE_TYPE_ANY,
-    DEVICE_TYPE_HTTP,
+    DEVICE_TYPE_HTTP
 } DeviceType;
 
 /* CDROM mount codes */
@@ -274,6 +274,7 @@
     PART_SWAP,
     PART_FILESYSTEM,
     PART_FAT,
+    PART_VINUM
 } PartType;
 
 /* The longest newfs command we'll hand to system() */

--------------A9805AA2D47C2FC02223933A--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3A9FC81E.1B2EDCC7>