kern/147664: [patch] Add the ability to create linux and fat32 partitions gpart

Bapt baptiste.daroussin at gmail.com
Mon Jun 7 18:20:05 UTC 2010


>Number:         147664
>Category:       kern
>Synopsis:       [patch] Add the ability to create linux and fat32 partitions gpart
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Mon Jun 07 18:20:04 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Bapt
>Release:        FreeBSD 8.1-PRERELEASE amd64
>Organization:
>Environment:
System: FreeBSD azathoth.lan 8.1-PRERELEASE FreeBSD 8.1-PRERELEASE #4 r208894M: Mon Jun 7 19:26:29 CEST 2010 root at azathoth.lan:/usr/obj/usr/src/sys/AZATHOTH amd64


	
>Description:
	This patch add the ability to create FAT32 partition (only on MBR scheme) while here I added the ability to create linux, linux-swap and linux-lvm partitions
	
	gpart add -t win95-fat32 da0 to to do it
	
	I can't test on current but it seems to be the same files as on 8-stable, so the patch should also work on current

>How-To-Repeat:
	
>Fix:

	

--- gpart-2.patch begins here ---
Index: sys/geom/part/g_part.h
===================================================================
--- sys/geom/part/g_part.h	(révision 208894)
+++ sys/geom/part/g_part.h	(copie de travail)
@@ -51,6 +51,7 @@
 	G_PART_ALIAS_FREEBSD_VINUM,	/* A Vinum partition entry. */
 	G_PART_ALIAS_FREEBSD_ZFS,	/* A ZFS file system entry. */
 	G_PART_ALIAS_MBR,		/* A MBR (extended) partition entry. */
+	G_PART_ALIAS_WIN95_FAT32, /* Win95 FAT32 entry */
 	G_PART_ALIAS_LINUX_DATA,	/* A Linux data partition entry. */
 	G_PART_ALIAS_LINUX_LVM,		/* A Linux LVM partition entry. */
 	G_PART_ALIAS_LINUX_RAID,	/* A Linux RAID partition entry. */
Index: sys/geom/part/g_part.c
===================================================================
--- sys/geom/part/g_part.c	(révision 208894)
+++ sys/geom/part/g_part.c	(copie de travail)
@@ -83,6 +83,7 @@
 	{ "freebsd-ufs", G_PART_ALIAS_FREEBSD_UFS },
 	{ "freebsd-vinum", G_PART_ALIAS_FREEBSD_VINUM },
 	{ "freebsd-zfs", G_PART_ALIAS_FREEBSD_ZFS },
+	{ "win95-fat32", G_PART_ALIAS_WIN95_FAT32 },
 	{ "linux-data", G_PART_ALIAS_LINUX_DATA },
 	{ "linux-lvm", G_PART_ALIAS_LINUX_LVM },
 	{ "linux-raid", G_PART_ALIAS_LINUX_RAID },
Index: sys/geom/part/g_part_mbr.c
===================================================================
--- sys/geom/part/g_part_mbr.c	(révision 208894)
+++ sys/geom/part/g_part_mbr.c	(copie de travail)
@@ -124,6 +124,30 @@
 		*dp_typ = DOSPTYP_386BSD;
 		return (0);
 	}
+
+	alias = g_part_alias_name(G_PART_ALIAS_WIN95_FAT32);
+	if (!strcasecmp(type, alias)) {
+		*dp_typ = DOSPTYP_WIN95_FAT32;
+		return (0);
+	}
+
+	alias = g_part_alias_name(G_PART_ALIAS_LINUX_DATA);
+	if (!strcasecmp(type, alias)) {
+		*dp_typ = DOSPTYP_LINUX;
+		return (0);
+	}
+
+	alias = g_part_alias_name(G_PART_ALIAS_LINUX_SWAP);
+	if (!strcasecmp(type, alias)) {
+		*dp_typ = DOSPTYP_LINSWP;
+		return (0);
+	}
+
+	alias = g_part_alias_name(G_PART_ALIAS_LINUX_LVM);
+	if (!strcasecmp(type, alias)) {
+		*dp_typ = DOSPTYP_LINLVM;
+		return (0);
+	}
 	return (EINVAL);
 }
 
@@ -483,6 +507,19 @@
 	type = entry->ent.dp_typ;
 	if (type == DOSPTYP_386BSD)
 		return (g_part_alias_name(G_PART_ALIAS_FREEBSD));
+
+	if (type == DOSPTYP_WIN95_FAT32)
+		return (g_part_alias_name(G_PART_ALIAS_WIN95_FAT32));
+
+	if (type == DOSPTYP_LINUX)
+		return (g_part_alias_name(G_PART_ALIAS_LINUX_DATA));
+	
+	if (type == DOSPTYP_LINSWP)
+		return (g_part_alias_name(G_PART_ALIAS_LINUX_SWAP));
+
+	if (type == DOSPTYP_LINLVM)
+		return (g_part_alias_name(G_PART_ALIAS_LINUX_LVM));
+
 	snprintf(buf, bufsz, "!%d", type);
 	return (buf);
 }
Index: sys/sys/diskmbr.h
===================================================================
--- sys/sys/diskmbr.h	(révision 208894)
+++ sys/sys/diskmbr.h	(copie de travail)
@@ -44,6 +44,8 @@
 #define	DOSMAGIC	0xAA55
 
 #define	DOSPTYP_386BSD	0xa5	/* 386BSD partition type */
+#define DOSPTYP_WIN95_FAT32	0x0b	/* Win95 FAT32 */
+#define DOSPTYP_LINLVM 0x8e		/* Linux LVM partition */
 #define	DOSPTYP_LINSWP	0x82	/* Linux swap partition */
 #define	DOSPTYP_LINUX	0x83	/* Linux partition */
 #define	DOSPTYP_PMBR	0xee	/* GPT Protective MBR */
--- gpart-2.patch ends here ---


>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list