bug-parted
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Patch to fix broken swap flag for msdos partitions


From: Corey Minyard
Subject: Patch to fix broken swap flag for msdos partitions
Date: Thu, 10 Jun 2010 18:09:10 -0500
User-agent: Mozilla-Thunderbird 2.0.0.24 (X11/20100329)


Fix the swap flag on msdos partitions so partitions that are labelled
as swap show up properly.

Index: parted-2.3/libparted/labels/dos.c
===================================================================
--- parted-2.3.orig/libparted/labels/dos.c
+++ parted-2.3/libparted/labels/dos.c
@@ -159,6 +159,7 @@ typedef struct {
        int             palo;
        int             prep;
        int             diag;
+       int             swap;
        OrigState*      orig;                   /* used for CHS stuff */
 } DosPartitionData;
 
@@ -837,6 +838,7 @@ raw_part_parse (const PedDisk* disk, con
        dos_data->raid = raw_part->type == PARTITION_LINUX_RAID;
        dos_data->lvm = raw_part->type == PARTITION_LINUX_LVM_OLD
                        || raw_part->type == PARTITION_LINUX_LVM;
+       dos_data->swap = raw_part->type == PARTITION_LINUX_SWAP;
        dos_data->lba = raw_part_is_lba (raw_part);
        dos_data->palo = raw_part->type == PARTITION_PALO;
        dos_data->prep = raw_part->type == PARTITION_PREP;
@@ -1239,6 +1241,7 @@ msdos_partition_new (const PedDisk* disk
                dos_data->diag = 0;
                dos_data->raid = 0;
                dos_data->lvm = 0;
+               dos_data->swap = 0;
                dos_data->lba = 0;
                dos_data->palo = 0;
                dos_data->prep = 0;
@@ -1274,6 +1277,7 @@ msdos_partition_duplicate (const PedPart
        new_dos_data->hidden = old_dos_data->hidden;
        new_dos_data->raid = old_dos_data->raid;
        new_dos_data->lvm = old_dos_data->lvm;
+       new_dos_data->swap = old_dos_data->swap;
        new_dos_data->lba = old_dos_data->lba;
        new_dos_data->palo = old_dos_data->palo;
        new_dos_data->prep = old_dos_data->prep;
@@ -1323,6 +1327,7 @@ msdos_partition_set_system (PedPartition
                dos_data->diag = 0;
                dos_data->raid = 0;
                dos_data->lvm = 0;
+               dos_data->swap = 0;
                dos_data->palo = 0;
                dos_data->prep = 0;
                if (dos_data->lba)
@@ -1357,6 +1362,11 @@ msdos_partition_set_system (PedPartition
                dos_data->system = PARTITION_PREP;
                return 1;
        }
+       if (dos_data->swap) {
+               dos_data->system = PARTITION_LINUX_SWAP;
+               return 1;
+       }
+
 
        if (!fs_type)
                dos_data->system = PARTITION_LINUX;
@@ -1394,6 +1404,7 @@ clear_flags (DosPartitionData *dos_data)
   dos_data->palo = 0;
   dos_data->prep = 0;
   dos_data->raid = 0;
+  dos_data->swap = 0;
 }
 
 static int
@@ -1455,6 +1466,12 @@ msdos_partition_set_flag (PedPartition* 
                dos_data->lvm = state;
                return ped_partition_set_system (part, part->fs_type);
 
+       case PED_PARTITION_SWAP:
+               if (state)
+                       clear_flags (dos_data);
+               dos_data->swap = state;
+               return ped_partition_set_system (part, part->fs_type);
+
        case PED_PARTITION_LBA:
                dos_data->lba = state;
                return ped_partition_set_system (part, part->fs_type);
@@ -1504,6 +1521,9 @@ msdos_partition_get_flag (const PedParti
        case PED_PARTITION_LVM:
                return dos_data->lvm;
 
+       case PED_PARTITION_SWAP:
+               return dos_data->swap;
+
        case PED_PARTITION_LBA:
                return dos_data->lba;
 
@@ -1536,6 +1556,7 @@ msdos_partition_is_flag_available (const
        case PED_PARTITION_PALO:
        case PED_PARTITION_PREP:
        case PED_PARTITION_DIAG:
+       case PED_PARTITION_SWAP:
                return 1;
 
        default:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]