Compare commits
No commits in common. 'c9' and 'i10c-beta' have entirely different histories.
@ -1,3 +1 @@
|
||||
SOURCES/parted-3.5.tar.xz
|
||||
SOURCES/pubkey.brian.lane
|
||||
SOURCES/pubkey.phillip.susi
|
||||
SOURCES/parted-3.6.tar.xz
|
||||
|
@ -1,3 +1 @@
|
||||
55023eb2acb3b22e6fc999d73e285f0a3706101a SOURCES/parted-3.5.tar.xz
|
||||
2c4a3e3c329d04ece68fdca92225441bc7c28f09 SOURCES/pubkey.brian.lane
|
||||
0ef8ad4c6cc02bbacd5c9de79187c116c3efb10a SOURCES/pubkey.phillip.susi
|
||||
b83f10e654250a69dd9278f4425802c1b7fb0c74 SOURCES/parted-3.6.tar.xz
|
||||
|
@ -1,50 +0,0 @@
|
||||
From cec533a00a2cd0b64a7a0f5debc26554f6025831 Mon Sep 17 00:00:00 2001
|
||||
From: "Brian C. Lane" <bcl@redhat.com>
|
||||
Date: Mon, 18 Apr 2022 15:10:06 -0400
|
||||
Subject: [PATCH 1/5] maint: post-release administrivia
|
||||
|
||||
* NEWS: Add header line for next release.
|
||||
* .prev-version: Record previous version.
|
||||
* cfg.mk (old_NEWS_hash): Auto-update.
|
||||
---
|
||||
.prev-version | 2 +-
|
||||
NEWS | 3 +++
|
||||
cfg.mk | 2 +-
|
||||
3 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/.prev-version b/.prev-version
|
||||
index e917998..5a95802 100644
|
||||
--- a/.prev-version
|
||||
+++ b/.prev-version
|
||||
@@ -1 +1 @@
|
||||
-3.4.64.2
|
||||
+3.5
|
||||
diff --git a/NEWS b/NEWS
|
||||
index 68a164a..2bd161f 100644
|
||||
--- a/NEWS
|
||||
+++ b/NEWS
|
||||
@@ -1,5 +1,8 @@
|
||||
GNU parted NEWS -*- outline -*-
|
||||
|
||||
+* Noteworthy changes in release ?.? (????-??-??) [?]
|
||||
+
|
||||
+
|
||||
* Noteworthy changes in release 3.5 (2022-04-18) [stable]
|
||||
|
||||
** New Features
|
||||
diff --git a/cfg.mk b/cfg.mk
|
||||
index d5fdd80..11fa51b 100644
|
||||
--- a/cfg.mk
|
||||
+++ b/cfg.mk
|
||||
@@ -45,7 +45,7 @@ local-checks-to-skip = \
|
||||
export VERBOSE = yes
|
||||
|
||||
# Hash of lines 42-208 for release 3.2
|
||||
-old_NEWS_hash = 64a8f4d9ec1a5c256f3cc792450dc257
|
||||
+old_NEWS_hash = 81f624d1d62a34f24e1286bd3cf5c736
|
||||
|
||||
include $(srcdir)/dist-check.mk
|
||||
|
||||
--
|
||||
2.35.3
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -1,228 +0,0 @@
|
||||
From 29ffc6a1f285f48ac0b9efa7299373e486c486e8 Mon Sep 17 00:00:00 2001
|
||||
From: Arvin Schnell <aschnell@suse.com>
|
||||
Date: Fri, 8 Oct 2021 10:06:24 +0000
|
||||
Subject: [PATCH 3/5] libparted: add swap flag for DASD label
|
||||
|
||||
Support the swap flag and fix reading flags from disk. Also
|
||||
cleanup code by dropping the 2 flags "raid" and "lvm" from
|
||||
DasdPartitionData and instead use "system" directly.
|
||||
|
||||
Signed-off-by: Brian C. Lane <bcl@redhat.com>
|
||||
---
|
||||
include/parted/fdasd.in.h | 2 -
|
||||
libparted/labels/dasd.c | 118 ++++++++++++++++----------------------
|
||||
2 files changed, 50 insertions(+), 70 deletions(-)
|
||||
|
||||
diff --git a/include/parted/fdasd.in.h b/include/parted/fdasd.in.h
|
||||
index 9e5d7d1..e3ba183 100644
|
||||
--- a/include/parted/fdasd.in.h
|
||||
+++ b/include/parted/fdasd.in.h
|
||||
@@ -28,10 +28,8 @@
|
||||
|
||||
#define PARTITION_LINUX_SWAP 0x82
|
||||
#define PARTITION_LINUX 0x83
|
||||
-#define PARTITION_LINUX_EXT 0x85
|
||||
#define PARTITION_LINUX_LVM 0x8e
|
||||
#define PARTITION_LINUX_RAID 0xfd
|
||||
-#define PARTITION_LINUX_LVM_OLD 0xfe
|
||||
|
||||
#define PART_TYPE_NATIVE "NATIVE"
|
||||
#define PART_TYPE_SWAP "SWAP "
|
||||
diff --git a/libparted/labels/dasd.c b/libparted/labels/dasd.c
|
||||
index 0c00c4f..27baad0 100644
|
||||
--- a/libparted/labels/dasd.c
|
||||
+++ b/libparted/labels/dasd.c
|
||||
@@ -53,10 +53,8 @@
|
||||
|
||||
#define PARTITION_LINUX_SWAP 0x82
|
||||
#define PARTITION_LINUX 0x83
|
||||
-#define PARTITION_LINUX_EXT 0x85
|
||||
#define PARTITION_LINUX_LVM 0x8e
|
||||
#define PARTITION_LINUX_RAID 0xfd
|
||||
-#define PARTITION_LINUX_LVM_OLD 0xfe
|
||||
|
||||
extern void ped_disk_dasd_init ();
|
||||
extern void ped_disk_dasd_done ();
|
||||
@@ -66,8 +64,6 @@ extern void ped_disk_dasd_done ();
|
||||
typedef struct {
|
||||
int type;
|
||||
int system;
|
||||
- int raid;
|
||||
- int lvm;
|
||||
} DasdPartitionData;
|
||||
|
||||
typedef struct {
|
||||
@@ -134,6 +130,31 @@ static PedDiskType dasd_disk_type = {
|
||||
features: 0
|
||||
};
|
||||
|
||||
+struct flag_id_mapping_t
|
||||
+{
|
||||
+ enum _PedPartitionFlag flag;
|
||||
+ int type_id;
|
||||
+};
|
||||
+
|
||||
+static const struct flag_id_mapping_t flag_id_mapping[] =
|
||||
+{
|
||||
+ { PED_PARTITION_LVM, PARTITION_LINUX_LVM },
|
||||
+ { PED_PARTITION_RAID, PARTITION_LINUX_RAID },
|
||||
+ { PED_PARTITION_SWAP, PARTITION_LINUX_SWAP },
|
||||
+};
|
||||
+
|
||||
+static const struct flag_id_mapping_t* _GL_ATTRIBUTE_CONST
|
||||
+dasd_find_flag_id_mapping (PedPartitionFlag flag)
|
||||
+{
|
||||
+ int n = sizeof(flag_id_mapping) / sizeof(flag_id_mapping[0]);
|
||||
+
|
||||
+ for (int i = 0; i < n; ++i)
|
||||
+ if (flag_id_mapping[i].flag == flag)
|
||||
+ return &flag_id_mapping[i];
|
||||
+
|
||||
+ return NULL;
|
||||
+}
|
||||
+
|
||||
static PedDisk*
|
||||
dasd_alloc (const PedDevice* dev)
|
||||
{
|
||||
@@ -310,8 +331,6 @@ dasd_read (PedDisk* disk)
|
||||
part->num = 1;
|
||||
part->fs_type = ped_file_system_probe (&part->geom);
|
||||
dasd_data = part->disk_specific;
|
||||
- dasd_data->raid = 0;
|
||||
- dasd_data->lvm = 0;
|
||||
dasd_data->type = 0;
|
||||
|
||||
if (!ped_disk_add_partition (disk, part, NULL))
|
||||
@@ -394,8 +413,6 @@ dasd_read (PedDisk* disk)
|
||||
part->num = 1;
|
||||
part->fs_type = ped_file_system_probe (&part->geom);
|
||||
dasd_data = part->disk_specific;
|
||||
- dasd_data->raid = 0;
|
||||
- dasd_data->lvm = 0;
|
||||
dasd_data->type = 0;
|
||||
|
||||
if (!ped_disk_add_partition (disk, part, NULL))
|
||||
@@ -452,25 +469,12 @@ dasd_read (PedDisk* disk)
|
||||
|
||||
dasd_data = part->disk_specific;
|
||||
|
||||
- if ((strncmp(PART_TYPE_RAID, str, 6) == 0) &&
|
||||
- (ped_file_system_probe(&part->geom) == NULL))
|
||||
- ped_partition_set_flag(part, PED_PARTITION_RAID, 1);
|
||||
- else
|
||||
- ped_partition_set_flag(part, PED_PARTITION_RAID, 0);
|
||||
-
|
||||
- if ((strncmp(PART_TYPE_LVM, str, 6) == 0) &&
|
||||
- (ped_file_system_probe(&part->geom) == NULL))
|
||||
- ped_partition_set_flag(part, PED_PARTITION_LVM, 1);
|
||||
- else
|
||||
- ped_partition_set_flag(part, PED_PARTITION_LVM, 0);
|
||||
-
|
||||
- if (strncmp(PART_TYPE_SWAP, str, 6) == 0) {
|
||||
- fs = ped_file_system_probe(&part->geom);
|
||||
- if (fs && is_linux_swap(fs->name)) {
|
||||
- dasd_data->system = PARTITION_LINUX_SWAP;
|
||||
- PDEBUG;
|
||||
- }
|
||||
- }
|
||||
+ if (strncmp(PART_TYPE_RAID, str, 6) == 0)
|
||||
+ dasd_data->system = PARTITION_LINUX_RAID;
|
||||
+ else if (strncmp(PART_TYPE_LVM, str, 6) == 0)
|
||||
+ dasd_data->system = PARTITION_LINUX_LVM;
|
||||
+ else if (strncmp(PART_TYPE_SWAP, str, 6) == 0)
|
||||
+ dasd_data->system = PARTITION_LINUX_SWAP;
|
||||
|
||||
vtoc_ebcdic_enc(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
|
||||
|
||||
@@ -747,20 +751,17 @@ dasd_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
|
||||
PED_ASSERT(part->disk_specific != NULL);
|
||||
dasd_data = part->disk_specific;
|
||||
|
||||
- switch (flag) {
|
||||
- case PED_PARTITION_RAID:
|
||||
- if (state)
|
||||
- dasd_data->lvm = 0;
|
||||
- dasd_data->raid = state;
|
||||
- return ped_partition_set_system(part, part->fs_type);
|
||||
- case PED_PARTITION_LVM:
|
||||
- if (state)
|
||||
- dasd_data->raid = 0;
|
||||
- dasd_data->lvm = state;
|
||||
- return ped_partition_set_system(part, part->fs_type);
|
||||
- default:
|
||||
- return 0;
|
||||
+ const struct flag_id_mapping_t* p = dasd_find_flag_id_mapping (flag);
|
||||
+ if (p)
|
||||
+ {
|
||||
+ if (state)
|
||||
+ dasd_data->system = p->type_id;
|
||||
+ else if (dasd_data->system == p->type_id)
|
||||
+ return dasd_partition_set_system (part, part->fs_type);
|
||||
+ return 1;
|
||||
}
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
@@ -772,14 +773,11 @@ dasd_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
|
||||
PED_ASSERT (part->disk_specific != NULL);
|
||||
dasd_data = part->disk_specific;
|
||||
|
||||
- switch (flag) {
|
||||
- case PED_PARTITION_RAID:
|
||||
- return dasd_data->raid;
|
||||
- case PED_PARTITION_LVM:
|
||||
- return dasd_data->lvm;
|
||||
- default:
|
||||
- return 0;
|
||||
- }
|
||||
+ const struct flag_id_mapping_t* p = dasd_find_flag_id_mapping (flag);
|
||||
+ if (p)
|
||||
+ return dasd_data->system == p->type_id;
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -800,14 +798,10 @@ dasd_partition_is_flag_available (const PedPartition* part,
|
||||
if (disk_specific->format_type == 1)
|
||||
return 0;
|
||||
|
||||
- switch (flag) {
|
||||
- case PED_PARTITION_RAID:
|
||||
- return 1;
|
||||
- case PED_PARTITION_LVM:
|
||||
- return 1;
|
||||
- default:
|
||||
- return 0;
|
||||
- }
|
||||
+ if (dasd_find_flag_id_mapping (flag))
|
||||
+ return 1;
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -938,18 +932,6 @@ dasd_partition_set_system (PedPartition* part,
|
||||
|
||||
part->fs_type = fs_type;
|
||||
|
||||
- if (dasd_data->lvm) {
|
||||
- dasd_data->system = PARTITION_LINUX_LVM;
|
||||
- PDEBUG;
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
- if (dasd_data->raid) {
|
||||
- dasd_data->system = PARTITION_LINUX_RAID;
|
||||
- PDEBUG;
|
||||
- return 1;
|
||||
- }
|
||||
-
|
||||
if (!fs_type) {
|
||||
dasd_data->system = PARTITION_LINUX;
|
||||
PDEBUG;
|
||||
--
|
||||
2.35.3
|
||||
|
@ -1,30 +0,0 @@
|
||||
From 9b0a83a747b28bd1b778bdd32616e6f7ea88c84d Mon Sep 17 00:00:00 2001
|
||||
From: "Brian C. Lane" <bcl@redhat.com>
|
||||
Date: Fri, 13 May 2022 10:02:06 -0700
|
||||
Subject: [PATCH 4/5] parted: Reset the filesystem type when changing the
|
||||
id/uuid
|
||||
|
||||
Without this the print command keeps showing the type selected with
|
||||
mkpart, which doesn't match the id/uuid set by the user. So rescan the
|
||||
partition for a filesystem.
|
||||
---
|
||||
parted/parted.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/parted/parted.c b/parted/parted.c
|
||||
index b8a4acf..96da30d 100644
|
||||
--- a/parted/parted.c
|
||||
+++ b/parted/parted.c
|
||||
@@ -991,6 +991,9 @@ do_type (PedDevice** dev, PedDisk** diskp)
|
||||
|
||||
free (input);
|
||||
|
||||
+ // Reset the fs_type based on the filesystem, if it exists
|
||||
+ part->fs_type = ped_file_system_probe (&part->geom);
|
||||
+
|
||||
if (!ped_disk_commit (*diskp))
|
||||
goto error;
|
||||
return 1;
|
||||
--
|
||||
2.35.3
|
||||
|
@ -1,23 +0,0 @@
|
||||
From ac2a35c2214ef42352d0ddb4f7f4cb77d116e92e Mon Sep 17 00:00:00 2001
|
||||
From: "Brian C. Lane" <bcl@redhat.com>
|
||||
Date: Fri, 13 May 2022 10:15:41 -0700
|
||||
Subject: [PATCH 5/5] tests: t3200-type-change now passes
|
||||
|
||||
---
|
||||
tests/Makefile.am | 3 ---
|
||||
1 file changed, 3 deletions(-)
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 2da653b..1d109d7 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -1,6 +1,3 @@
|
||||
-XFAIL_TESTS = \
|
||||
- t3200-type-change.sh
|
||||
-
|
||||
TEST_EXTENSIONS = .sh
|
||||
SH_LOG_COMPILER = $(SHELL)
|
||||
|
||||
--
|
||||
2.35.3
|
||||
|
@ -1,101 +0,0 @@
|
||||
From 22ec6553b00b8cc21bf8e78529e1cd0f775ff36f Mon Sep 17 00:00:00 2001
|
||||
From: "Brian C. Lane" <bcl@redhat.com>
|
||||
Date: Mon, 8 Aug 2022 12:04:32 -0700
|
||||
Subject: [PATCH 6/9] libparted: Fix handling of gpt partition types
|
||||
|
||||
This restores the previous behavior by testing the GUID against the list
|
||||
of known types and skipping the filesystem GUID reset. Now the sequence
|
||||
of:
|
||||
|
||||
ped_partition_new(...)
|
||||
ped_partition_set_flag(part, PED_PARTITION_BIOS_GRUB, 1);
|
||||
ped_partition_set_system(part, ped_file_system_type_get("ext4"));
|
||||
|
||||
Will keep the GUID set to PED_PARTITION_BIOS_GRUB, which is how it used
|
||||
to behave.
|
||||
---
|
||||
libparted/labels/gpt.c | 45 ++++++++++++++++++++++++++++++++++++++++--
|
||||
1 file changed, 43 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
|
||||
index 0e9e060..8e6a37d 100644
|
||||
--- a/libparted/labels/gpt.c
|
||||
+++ b/libparted/labels/gpt.c
|
||||
@@ -196,6 +196,24 @@ static const struct flag_uuid_mapping_t flag_uuid_mapping[] =
|
||||
{ PED_PARTITION_SWAP, PARTITION_SWAP_GUID },
|
||||
};
|
||||
|
||||
+static const efi_guid_t skip_set_system_guids[] =
|
||||
+{
|
||||
+ PARTITION_LVM_GUID,
|
||||
+ PARTITION_SWAP_GUID,
|
||||
+ PARTITION_RAID_GUID,
|
||||
+ PARTITION_PREP_GUID,
|
||||
+ PARTITION_SYSTEM_GUID,
|
||||
+ PARTITION_BIOS_GRUB_GUID,
|
||||
+ PARTITION_HPSERVICE_GUID,
|
||||
+ PARTITION_MSFT_RESERVED_GUID,
|
||||
+ PARTITION_BASIC_DATA_GUID,
|
||||
+ PARTITION_MSFT_RECOVERY,
|
||||
+ PARTITION_APPLE_TV_RECOVERY_GUID,
|
||||
+ PARTITION_IRST_GUID,
|
||||
+ PARTITION_CHROMEOS_KERNEL_GUID,
|
||||
+ PARTITION_BLS_BOOT_GUID,
|
||||
+};
|
||||
+
|
||||
static const struct flag_uuid_mapping_t* _GL_ATTRIBUTE_CONST
|
||||
gpt_find_flag_uuid_mapping (PedPartitionFlag flag)
|
||||
{
|
||||
@@ -1421,6 +1439,21 @@ gpt_partition_destroy (PedPartition *part)
|
||||
_ped_partition_free (part);
|
||||
}
|
||||
|
||||
+/* is_skip_guid checks the guid against the list of guids that should not be
|
||||
+ * overridden by set_system. It returns a 1 if it is in the list.
|
||||
+*/
|
||||
+static bool
|
||||
+is_skip_guid(efi_guid_t guid) {
|
||||
+ int n = sizeof(skip_set_system_guids) / sizeof(skip_set_system_guids[0]);
|
||||
+ for (int i = 0; i < n; ++i) {
|
||||
+ if (guid_cmp(guid, skip_set_system_guids[i]) == 0) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
gpt_partition_set_system (PedPartition *part,
|
||||
const PedFileSystemType *fs_type)
|
||||
@@ -1431,6 +1464,11 @@ gpt_partition_set_system (PedPartition *part,
|
||||
|
||||
part->fs_type = fs_type;
|
||||
|
||||
+ // Is this a GUID that should skip fs_type checking?
|
||||
+ if (is_skip_guid(gpt_part_data->type)) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
if (fs_type)
|
||||
{
|
||||
if (strncmp (fs_type->name, "fat", 3) == 0
|
||||
@@ -1563,10 +1601,13 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
|
||||
const struct flag_uuid_mapping_t* p = gpt_find_flag_uuid_mapping (flag);
|
||||
if (p)
|
||||
{
|
||||
- if (state)
|
||||
+ if (state) {
|
||||
gpt_part_data->type = p->type_uuid;
|
||||
- else if (guid_cmp (gpt_part_data->type, p->type_uuid) == 0)
|
||||
+ } else if (guid_cmp (gpt_part_data->type, p->type_uuid) == 0) {
|
||||
+ // Clear the GUID so that fs_type will be used to return it to the default
|
||||
+ gpt_part_data->type = PARTITION_LINUX_DATA_GUID;
|
||||
return gpt_partition_set_system (part, part->fs_type);
|
||||
+ }
|
||||
return 1;
|
||||
}
|
||||
|
||||
--
|
||||
2.37.1
|
||||
|
@ -1,160 +0,0 @@
|
||||
From 8b4a30cc60ecbe9b7bc966e70560e5ce0fc0c1ad Mon Sep 17 00:00:00 2001
|
||||
From: "Brian C. Lane" <bcl@redhat.com>
|
||||
Date: Mon, 8 Aug 2022 13:49:09 -0700
|
||||
Subject: [PATCH 7/9] tests: Add a libparted test for ped_partition_set_system
|
||||
on gpt
|
||||
|
||||
Test the libparted API to make sure the flag is not cleared by calling
|
||||
ped_partition_set_system.
|
||||
---
|
||||
libparted/tests/Makefile.am | 6 ++-
|
||||
libparted/tests/flags.c | 81 ++++++++++++++++++++++++++++++++++
|
||||
libparted/tests/t1001-flags.sh | 23 ++++++++++
|
||||
3 files changed, 108 insertions(+), 2 deletions(-)
|
||||
create mode 100644 libparted/tests/flags.c
|
||||
create mode 100755 libparted/tests/t1001-flags.sh
|
||||
|
||||
diff --git a/libparted/tests/Makefile.am b/libparted/tests/Makefile.am
|
||||
index fd5cba5..260b692 100644
|
||||
--- a/libparted/tests/Makefile.am
|
||||
+++ b/libparted/tests/Makefile.am
|
||||
@@ -3,9 +3,10 @@
|
||||
#
|
||||
# This file may be modified and/or distributed without restriction.
|
||||
|
||||
-TESTS = t1000-label.sh t2000-disk.sh t2100-zerolen.sh t3000-symlink.sh t4000-volser.sh
|
||||
+TESTS = t1000-label.sh t1001-flags.sh t2000-disk.sh t2100-zerolen.sh \
|
||||
+ t3000-symlink.sh t4000-volser.sh
|
||||
EXTRA_DIST = $(TESTS)
|
||||
-check_PROGRAMS = label disk zerolen symlink volser
|
||||
+check_PROGRAMS = label disk zerolen symlink volser flags
|
||||
AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
|
||||
|
||||
LDADD = \
|
||||
@@ -24,6 +25,7 @@ disk_SOURCES = common.h common.c disk.c
|
||||
zerolen_SOURCES = common.h common.c zerolen.c
|
||||
symlink_SOURCES = common.h common.c symlink.c
|
||||
volser_SOURCES = common.h common.c volser.c
|
||||
+flags_SOURCES = common.h common.c flags.c
|
||||
|
||||
# Arrange to symlink to tests/init.sh.
|
||||
CLEANFILES = init.sh
|
||||
diff --git a/libparted/tests/flags.c b/libparted/tests/flags.c
|
||||
new file mode 100644
|
||||
index 0000000..c83a361
|
||||
--- /dev/null
|
||||
+++ b/libparted/tests/flags.c
|
||||
@@ -0,0 +1,81 @@
|
||||
+#include <config.h>
|
||||
+#include <unistd.h>
|
||||
+
|
||||
+#include <check.h>
|
||||
+
|
||||
+#include <parted/parted.h>
|
||||
+
|
||||
+#include "common.h"
|
||||
+#include "progname.h"
|
||||
+
|
||||
+#define STREQ(a, b) (strcmp (a, b) == 0)
|
||||
+
|
||||
+static char* temporary_disk;
|
||||
+
|
||||
+static void
|
||||
+create_disk (void)
|
||||
+{
|
||||
+ temporary_disk = _create_disk (80 * 1024 * 1024);
|
||||
+ fail_if (temporary_disk == NULL, "Failed to create temporary disk");
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+destroy_disk (void)
|
||||
+{
|
||||
+ unlink (temporary_disk);
|
||||
+ free (temporary_disk);
|
||||
+}
|
||||
+
|
||||
+/* TEST: Test partition type flag on gpt disklabel */
|
||||
+START_TEST (test_gpt_flag)
|
||||
+{
|
||||
+ PedDevice* dev = ped_device_get (temporary_disk);
|
||||
+ if (dev == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ PedDisk* disk = ped_disk_new_fresh (dev, ped_disk_type_get ("gpt"));
|
||||
+ PedConstraint *constraint = ped_constraint_any (dev);
|
||||
+ PedPartition *part = ped_partition_new (disk, PED_PARTITION_NORMAL,
|
||||
+ ped_file_system_type_get("ext4"), 2048, 4096);
|
||||
+ ped_partition_set_flag(part, PED_PARTITION_BIOS_GRUB, 1);
|
||||
+ // Type should remain set to BIOS_GRUB
|
||||
+ ped_partition_set_system(part, ped_file_system_type_get("ext4"));
|
||||
+
|
||||
+ ped_disk_add_partition (disk, part, constraint);
|
||||
+ ped_disk_commit (disk);
|
||||
+ ped_constraint_destroy (constraint);
|
||||
+
|
||||
+ // Check flag to confirm it is still set
|
||||
+ part = ped_disk_get_partition (disk, 1);
|
||||
+ fail_if (ped_partition_get_flag(part, PED_PARTITION_BIOS_GRUB) != 1, "BIOS_GRUB flag not set");
|
||||
+
|
||||
+ ped_disk_destroy (disk);
|
||||
+ ped_device_destroy (dev);
|
||||
+}
|
||||
+END_TEST
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ set_program_name (argv[0]);
|
||||
+ int number_failed;
|
||||
+ Suite* suite = suite_create ("Partition Flags");
|
||||
+ TCase* tcase_gpt = tcase_create ("GPT");
|
||||
+
|
||||
+ /* Fail when an exception is raised */
|
||||
+ ped_exception_set_handler (_test_exception_handler);
|
||||
+
|
||||
+ tcase_add_checked_fixture (tcase_gpt, create_disk, destroy_disk);
|
||||
+ tcase_add_test (tcase_gpt, test_gpt_flag);
|
||||
+ /* Disable timeout for this test */
|
||||
+ tcase_set_timeout (tcase_gpt, 0);
|
||||
+ suite_add_tcase (suite, tcase_gpt);
|
||||
+
|
||||
+ SRunner* srunner = srunner_create (suite);
|
||||
+ srunner_run_all (srunner, CK_VERBOSE);
|
||||
+
|
||||
+ number_failed = srunner_ntests_failed (srunner);
|
||||
+ srunner_free (srunner);
|
||||
+
|
||||
+ return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
+}
|
||||
diff --git a/libparted/tests/t1001-flags.sh b/libparted/tests/t1001-flags.sh
|
||||
new file mode 100755
|
||||
index 0000000..60a6248
|
||||
--- /dev/null
|
||||
+++ b/libparted/tests/t1001-flags.sh
|
||||
@@ -0,0 +1,23 @@
|
||||
+#!/bin/sh
|
||||
+# run the flags unittest
|
||||
+
|
||||
+# Copyright (C) 2007-2014, 2019-2022 Free Software Foundation, Inc.
|
||||
+
|
||||
+# This program is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+. "${top_srcdir=../..}/tests/init.sh"; path_prepend_ .
|
||||
+
|
||||
+flags || fail=1
|
||||
+
|
||||
+Exit $fail
|
||||
--
|
||||
2.37.1
|
||||
|
@ -1,109 +0,0 @@
|
||||
From d37d5e7a9470bb5bf8446f79f8e9c508366e06b6 Mon Sep 17 00:00:00 2001
|
||||
From: "Brian C. Lane" <bcl@redhat.com>
|
||||
Date: Mon, 8 Aug 2022 15:02:30 -0700
|
||||
Subject: [PATCH 8/9] libparted: Fix handling of msdos partition types
|
||||
|
||||
This restores the previous behavior by testing the partition type
|
||||
against the list of known types and skipping the filesystem type reset.
|
||||
Now the sequence of:
|
||||
|
||||
ped_partition_new(...)
|
||||
ped_partition_set_flag(part, PED_PARTITION_BLS_BOOT, 1);
|
||||
ped_partition_set_system(part, ped_file_system_type_get("ext4"));
|
||||
|
||||
Will keep the type set to PED_PARTITION_BLS_BOOT, which is how it used
|
||||
to behave.
|
||||
---
|
||||
libparted/labels/dos.c | 54 +++++++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 46 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/libparted/labels/dos.c b/libparted/labels/dos.c
|
||||
index bd7465d..4359276 100644
|
||||
--- a/libparted/labels/dos.c
|
||||
+++ b/libparted/labels/dos.c
|
||||
@@ -121,6 +121,22 @@ static const struct flag_id_mapping_t flag_id_mapping[] =
|
||||
{ PED_PARTITION_SWAP, PARTITION_LINUX_SWAP },
|
||||
};
|
||||
|
||||
+static const unsigned char skip_set_system_types[] =
|
||||
+{
|
||||
+ PARTITION_EXT_LBA,
|
||||
+ PARTITION_DOS_EXT,
|
||||
+ PARTITION_COMPAQ_DIAG,
|
||||
+ PARTITION_MSFT_RECOVERY,
|
||||
+ PARTITION_LINUX_LVM,
|
||||
+ PARTITION_LINUX_SWAP,
|
||||
+ PARTITION_LINUX_RAID,
|
||||
+ PARTITION_PALO,
|
||||
+ PARTITION_PREP,
|
||||
+ PARTITION_IRST,
|
||||
+ PARTITION_ESP,
|
||||
+ PARTITION_BLS_BOOT
|
||||
+};
|
||||
+
|
||||
static const struct flag_id_mapping_t* _GL_ATTRIBUTE_CONST
|
||||
dos_find_flag_id_mapping (PedPartitionFlag flag)
|
||||
{
|
||||
@@ -1540,6 +1556,21 @@ msdos_partition_destroy (PedPartition* part)
|
||||
free (part);
|
||||
}
|
||||
|
||||
+/* is_skip_type checks the type against the list of types that should not be
|
||||
+ * overridden by set_system. It returns a 1 if it is in the list.
|
||||
+*/
|
||||
+static bool
|
||||
+is_skip_type(unsigned char type_id) {
|
||||
+ int n = sizeof(skip_set_system_types) / sizeof(skip_set_system_types[0]);
|
||||
+ for (int i = 0; i < n; ++i) {
|
||||
+ if (type_id == skip_set_system_types[i]) {
|
||||
+ return true;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
msdos_partition_set_system (PedPartition* part,
|
||||
const PedFileSystemType* fs_type)
|
||||
@@ -1548,6 +1579,11 @@ msdos_partition_set_system (PedPartition* part,
|
||||
|
||||
part->fs_type = fs_type;
|
||||
|
||||
+ // Is this a type that should skip fs_type checking?
|
||||
+ if (is_skip_type(dos_data->system)) {
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
if (part->type & PED_PARTITION_EXTENDED) {
|
||||
dos_data->system = PARTITION_EXT_LBA;
|
||||
return 1;
|
||||
@@ -1590,15 +1626,17 @@ msdos_partition_set_flag (PedPartition* part,
|
||||
const struct flag_id_mapping_t* p = dos_find_flag_id_mapping (flag);
|
||||
if (p)
|
||||
{
|
||||
- if (part->type & PED_PARTITION_EXTENDED)
|
||||
- return 0;
|
||||
-
|
||||
- if (state)
|
||||
- dos_data->system = p->type_id;
|
||||
- else if (dos_data->system == p->type_id || dos_data->system == p->alt_type_id)
|
||||
- return ped_partition_set_system (part, part->fs_type);
|
||||
+ if (part->type & PED_PARTITION_EXTENDED)
|
||||
+ return 0;
|
||||
|
||||
- return 1;
|
||||
+ if (state) {
|
||||
+ dos_data->system = p->type_id;
|
||||
+ } else if (dos_data->system == p->type_id || dos_data->system == p->alt_type_id) {
|
||||
+ // Clear the type so that fs_type will be used to return it to the default
|
||||
+ dos_data->system = PARTITION_LINUX;
|
||||
+ return ped_partition_set_system (part, part->fs_type);
|
||||
+ }
|
||||
+ return 1;
|
||||
}
|
||||
|
||||
switch (flag) {
|
||||
--
|
||||
2.37.1
|
||||
|
@ -1,75 +0,0 @@
|
||||
From 3deaae7a19ebfbc2dad6ad67ba65409e7238efc8 Mon Sep 17 00:00:00 2001
|
||||
From: "Brian C. Lane" <bcl@redhat.com>
|
||||
Date: Mon, 8 Aug 2022 15:06:03 -0700
|
||||
Subject: [PATCH 9/9] tests: Add a libparted test for ped_partition_set_system
|
||||
on msdos
|
||||
|
||||
Test the libparted API to make sure the flag is not cleared by calling
|
||||
ped_partition_set_system.
|
||||
---
|
||||
libparted/tests/flags.c | 35 +++++++++++++++++++++++++++++++++++
|
||||
1 file changed, 35 insertions(+)
|
||||
|
||||
diff --git a/libparted/tests/flags.c b/libparted/tests/flags.c
|
||||
index c83a361..c4b290b 100644
|
||||
--- a/libparted/tests/flags.c
|
||||
+++ b/libparted/tests/flags.c
|
||||
@@ -54,6 +54,34 @@ START_TEST (test_gpt_flag)
|
||||
}
|
||||
END_TEST
|
||||
|
||||
+/* TEST: Test partition type flag on msdos disklabel */
|
||||
+START_TEST (test_msdos_flag)
|
||||
+{
|
||||
+ PedDevice* dev = ped_device_get (temporary_disk);
|
||||
+ if (dev == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ PedDisk* disk = ped_disk_new_fresh (dev, ped_disk_type_get ("msdos"));
|
||||
+ PedConstraint *constraint = ped_constraint_any (dev);
|
||||
+ PedPartition *part = ped_partition_new (disk, PED_PARTITION_NORMAL,
|
||||
+ ped_file_system_type_get("ext4"), 2048, 4096);
|
||||
+ ped_partition_set_flag(part, PED_PARTITION_BLS_BOOT, 1);
|
||||
+ // Type should remain set to BIOS_GRUB
|
||||
+ ped_partition_set_system(part, ped_file_system_type_get("ext4"));
|
||||
+
|
||||
+ ped_disk_add_partition (disk, part, constraint);
|
||||
+ ped_disk_commit (disk);
|
||||
+ ped_constraint_destroy (constraint);
|
||||
+
|
||||
+ // Check flag to confirm it is still set
|
||||
+ part = ped_disk_get_partition (disk, 1);
|
||||
+ fail_if (ped_partition_get_flag(part, PED_PARTITION_BLS_BOOT) != 1, "BLS_BOOT flag not set");
|
||||
+
|
||||
+ ped_disk_destroy (disk);
|
||||
+ ped_device_destroy (dev);
|
||||
+}
|
||||
+END_TEST
|
||||
+
|
||||
int
|
||||
main (int argc, char **argv)
|
||||
{
|
||||
@@ -61,6 +89,7 @@ main (int argc, char **argv)
|
||||
int number_failed;
|
||||
Suite* suite = suite_create ("Partition Flags");
|
||||
TCase* tcase_gpt = tcase_create ("GPT");
|
||||
+ TCase* tcase_msdos = tcase_create ("MSDOS");
|
||||
|
||||
/* Fail when an exception is raised */
|
||||
ped_exception_set_handler (_test_exception_handler);
|
||||
@@ -71,6 +100,12 @@ main (int argc, char **argv)
|
||||
tcase_set_timeout (tcase_gpt, 0);
|
||||
suite_add_tcase (suite, tcase_gpt);
|
||||
|
||||
+ tcase_add_checked_fixture (tcase_msdos, create_disk, destroy_disk);
|
||||
+ tcase_add_test (tcase_msdos, test_msdos_flag);
|
||||
+ /* Disable timeout for this test */
|
||||
+ tcase_set_timeout (tcase_msdos, 0);
|
||||
+ suite_add_tcase (suite, tcase_msdos);
|
||||
+
|
||||
SRunner* srunner = srunner_create (suite);
|
||||
srunner_run_all (srunner, CK_VERBOSE);
|
||||
|
||||
--
|
||||
2.37.1
|
||||
|
@ -1,11 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQEzBAABCgAdFiEEtMa0UeT6i0IyyhkeEX6MFo7+On8FAmJduCkACgkQEX6MFo7+
|
||||
On9cLAgAmAn86lYjZj+Ka5EHrVtaFgh1Nvz84EOwZd0TVRTJyP/u56QrOXxRYFFr
|
||||
6SiJuI1sWfpkzMGG8RYhcr/hu0Os4rtDdhwXXA75QexpSZamPRSo/EU7skrPW0ZD
|
||||
ycw6jUIBO5de4kCLmM/4byl6LV5eFixJYJ5zfD+SnQsMJvO6/fBo0Dv+pNGF/m5F
|
||||
mQeLWmgfqCNZ3INoHLPxuP08gpA9aELp6UFipbqBZqeRIk4K+jGSWlLu62mwl2sQ
|
||||
1OYIIdKacBrh14ZhRqXZKGKHk94RxiFtD/7CLXK/qzEFylKUMQ/XpUB0QkZNHVZW
|
||||
l2kRXsEGC1c7dWSbMX8lgy02HjfuVQ==
|
||||
=7scj
|
||||
-----END PGP SIGNATURE-----
|
@ -0,0 +1,11 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iQFDBAABCgAtFiEEtMa0UeT6i0IyyhkeEX6MFo7+On8FAmQ0njkPHGJjbEByZWRo
|
||||
YXQuY29tAAoJEBF+jBaO/jp/IpcH/jLOvn+dQCMp0rJnX4DZmPyFfaRdiqxQCd1a
|
||||
czIOd5TZlS7nMbmpL8+8uyCPxTpcaPR83uSuTZtTNoq5PjGrK41ErF1JnparPbBe
|
||||
4LThHPNnL6VQFy1OSZ0MjI5bGKryasZG3ZAdCzYqWz5Lquzm46OsTNtfRAI7nDlX
|
||||
SFEdNxV+WpUQXu9HgHvI/qHR59X9bdx9LLOt4beQauz/G2lQChGs/a3DrfPpRXG5
|
||||
0eBWS5zAfvHFJzZEnTDfDbYkBzQ7GF5quqcDiEDU7xJwDwKL5G/Ke1jaGZpOCFMu
|
||||
U/wF74657pKna3YStrGTPYJ/Ig3Cg71PI99wK3dGAETDfKZ7hXU=
|
||||
=ObPo
|
||||
-----END PGP SIGNATURE-----
|
@ -0,0 +1,108 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
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
|
||||
MupQVzWmw8NNbNuPfGmsE/s=
|
||||
=Frrv
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
@ -0,0 +1,153 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
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
|
||||
J06Mmq/4oTsyCpbhLO1MtYvb45vm0/qStw==
|
||||
=/VGh
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
Loading…
Reference in new issue