>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 [email protected]:/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:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to