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