- libparted: Fix handling of msdos partition types

- tests: Add a libparted test for ped_partition_set_system on msdos
- parted: Add display of GPT UUIDs in JSON output
- Add no_automount flag support
- increase xfs size to 300M
This commit is contained in:
Brian C. Lane 2022-10-04 08:43:04 -07:00
parent 8298c363a4
commit 7fc0182f62
17 changed files with 862 additions and 227 deletions

View File

@ -1,7 +1,7 @@
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
Subject: [PATCH 01/13] maint: post-release administrivia
* NEWS: Add header line for next release.
* .prev-version: Record previous version.
@ -46,5 +46,5 @@ index d5fdd80..11fa51b 100644
include $(srcdir)/dist-check.mk
--
2.35.3
2.37.3

View File

@ -1,7 +1,7 @@
From 61b3a9733c0e0a79ccc43096642d378c8706add6 Mon Sep 17 00:00:00 2001
From: Arvin Schnell <aschnell@suse.com>
Date: Wed, 11 May 2022 14:02:21 +0000
Subject: [PATCH 2/5] parted: add type command
Subject: [PATCH 02/13] parted: add type command
Include the partition type-id and type-uuid in the JSON
output. Also add the the command 'type' to set them. Remove
@ -1632,5 +1632,5 @@ index f2001c5..b35d443 100644
for mode in on_only on_and_off ; do
--
2.35.3
2.37.3

View File

@ -1,7 +1,7 @@
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
Subject: [PATCH 03/13] 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
@ -224,5 +224,5 @@ index 0c00c4f..27baad0 100644
dasd_data->system = PARTITION_LINUX;
PDEBUG;
--
2.35.3
2.37.3

View File

@ -1,7 +1,7 @@
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
Subject: [PATCH 04/13] parted: Reset the filesystem type when changing the
id/uuid
Without this the print command keeps showing the type selected with
@ -26,5 +26,5 @@ index b8a4acf..96da30d 100644
goto error;
return 1;
--
2.35.3
2.37.3

View File

@ -1,7 +1,7 @@
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
Subject: [PATCH 05/13] tests: t3200-type-change now passes
---
tests/Makefile.am | 3 ---
@ -19,5 +19,5 @@ index 2da653b..1d109d7 100644
SH_LOG_COMPILER = $(SHELL)
--
2.35.3
2.37.3

View File

@ -0,0 +1,40 @@
From bafa84b25a265ef9eed3872790d52bf56ac42998 Mon Sep 17 00:00:00 2001
From: Arvin Schnell <aschnell@suse.com>
Date: Wed, 27 Jul 2022 09:36:54 +0000
Subject: [PATCH 06/13] libparted: Fix check for availability of _type_id
functions
Fix a copy/paste error. In practice this didn't cause any problems
because the *_set_type_id and *_get_type_id are either both NULL or both
set to the function.
Signed-off-by: Brian C. Lane <bcl@redhat.com>
---
libparted/disk.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libparted/disk.c b/libparted/disk.c
index 22dff36..a961d65 100644
--- a/libparted/disk.c
+++ b/libparted/disk.c
@@ -1572,7 +1572,7 @@ ped_partition_get_type_id (const PedPartition *part)
if (!_assert_partition_type_id_feature (part->disk->type))
return 0;
- PED_ASSERT (part->disk->type->ops->partition_set_type_id != NULL);
+ PED_ASSERT (part->disk->type->ops->partition_get_type_id != NULL);
return part->disk->type->ops->partition_get_type_id (part);
}
@@ -1608,7 +1608,7 @@ ped_partition_get_type_uuid (const PedPartition *part)
if (!_assert_partition_type_uuid_feature (part->disk->type))
return NULL;
- PED_ASSERT (part->disk->type->ops->partition_set_type_uuid != NULL);
+ PED_ASSERT (part->disk->type->ops->partition_get_type_uuid != NULL);
return part->disk->type->ops->partition_get_type_uuid (part);
}
--
2.37.3

View File

@ -0,0 +1,34 @@
From b16be5ffc8e700df2b6b2545c4b6794cea71b8e7 Mon Sep 17 00:00:00 2001
From: Arvin Schnell <aschnell@suse.com>
Date: Wed, 27 Jul 2022 13:36:08 +0000
Subject: [PATCH 07/13] parted: Simplify code for json output
_PedDiskOps::get_max_primary_partition_count is always available, the
macro PT_op_function_initializers ensures it. So use
ped_disk_get_max_primary_partition_count instead of
_PedDiskOps::get_max_primary_partition_count directly.
Signed-off-by: Brian C. Lane <bcl@redhat.com>
---
parted/parted.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/parted/parted.c b/parted/parted.c
index 96da30d..36c39c7 100644
--- a/parted/parted.c
+++ b/parted/parted.c
@@ -1215,9 +1215,8 @@ _print_disk_info (const PedDevice *dev, const PedDisk *diskp)
ul_jsonwrt_value_u64 (&json, "physical-sector-size", dev->phys_sector_size);
ul_jsonwrt_value_s (&json, "label", pt_name);
if (diskp) {
- if (diskp->type->ops->get_max_primary_partition_count)
- ul_jsonwrt_value_u64 (&json, "max-partitions",
- diskp->type->ops->get_max_primary_partition_count(diskp));
+ ul_jsonwrt_value_u64 (&json, "max-partitions",
+ ped_disk_get_max_primary_partition_count(diskp));
disk_print_flags_json (diskp);
}
} else {
--
2.37.3

View File

@ -1,7 +1,7 @@
From aa690ee275db86d1edb2468bcf31c3d7cf81228e Mon Sep 17 00:00:00 2001
From: "Brian C. Lane" <bcl@redhat.com>
Date: Thu, 4 Aug 2022 11:39:09 -0700
Subject: [PATCH] disk.in.h: Remove use of enums with #define
Subject: [PATCH 08/13] disk.in.h: Remove use of enums with #define
The preprocessor doesn't evaluate the enum, so it ends up being 0, which
causes problems for library users like pyparted which try to use the _LAST
@ -55,5 +55,5 @@ index 672c4ee..715637d 100644
struct _PedDisk;
struct _PedPartition;
--
2.37.1
2.37.3

View File

@ -1,160 +0,0 @@
From 14cf5be3d322d7e3e81c21a3542ae046a5fe1fda 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 08/10] 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

View File

@ -1,7 +1,7 @@
From 717d39a0a16b6fddfac65cf355a895d04995cdff Mon Sep 17 00:00:00 2001
From 8957382b98fd79bc06dad132ef28a0be8b46ea16 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 07/10] libparted: Fix handling of gpt partition types
Subject: [PATCH 09/13] 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
@ -97,5 +97,5 @@ index 0e9e060..8e6a37d 100644
}
--
2.37.1
2.37.3

View File

@ -1,35 +1,90 @@
From 7830678dbe832ea6815d9a31be8cbe3a67f3ed7e Mon Sep 17 00:00:00 2001
From d50b7bf2b66b7b67ee332c1af63bc1f5fdfba7ad 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 10/10] tests: Add a libparted test for
ped_partition_set_system on msdos
Date: Mon, 8 Aug 2022 13:49:09 -0700
Subject: [PATCH 10/13] 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/flags.c | 35 +++++++++++++++++++++++++++++++++++
1 file changed, 35 insertions(+)
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/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
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.
+/* TEST: Test partition type flag on msdos disklabel */
+START_TEST (test_msdos_flag)
-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 ("msdos"));
+ 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_BLS_BOOT, 1);
+ 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"));
+
@ -39,37 +94,67 @@ index c83a361..c4b290b 100644
+
+ // 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");
+ 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)
{
@@ -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);
+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");
+
SRunner* srunner = srunner_create (suite);
srunner_run_all (srunner, CK_VERBOSE);
+ /* 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
2.37.3

View File

@ -1,7 +1,7 @@
From 9be9067bc5a3641fc890b0d4ba994000941109bf Mon Sep 17 00:00:00 2001
From 4a0e468ed63fff85a1f9b923189f20945b32f4f1 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 09/10] libparted: Fix handling of msdos partition types
Subject: [PATCH 11/13] 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.
@ -105,5 +105,5 @@ index bd7465d..4359276 100644
switch (flag) {
--
2.37.1
2.37.3

View File

@ -0,0 +1,75 @@
From 8f37b28825933af9bbbac7f00cc7e23f916c7018 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 12/13] 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.3

View File

@ -0,0 +1,351 @@
From 2194035fc0fe678472d279676a13511769f7ef20 Mon Sep 17 00:00:00 2001
From: Arvin Schnell <aschnell@suse.com>
Date: Thu, 28 Jul 2022 09:20:09 +0000
Subject: [PATCH 13/13] show GPT UUIDs in JSON output
Include GPT UUIDs in JSON output.
---
include/parted/disk.in.h | 13 ++++++--
libparted/disk.c | 64 ++++++++++++++++++++++++++++++++++++++++
libparted/labels/gpt.c | 40 ++++++++++++++++++++++++-
parted/parted.c | 18 +++++++++++
tests/t0800-json-gpt.sh | 7 +++--
tests/t0900-type-gpt.sh | 8 +++--
6 files changed, 142 insertions(+), 8 deletions(-)
diff --git a/include/parted/disk.in.h b/include/parted/disk.in.h
index 715637d..f649bcc 100644
--- a/include/parted/disk.in.h
+++ b/include/parted/disk.in.h
@@ -98,10 +98,12 @@ enum _PedDiskTypeFeature {
PED_DISK_TYPE_PARTITION_NAME=2, /**< supports partition names */
PED_DISK_TYPE_PARTITION_TYPE_ID=4, /**< supports partition type-ids */
PED_DISK_TYPE_PARTITION_TYPE_UUID=8, /**< supports partition type-uuids */
+ PED_DISK_TYPE_DISK_UUID=16, /**< supports disk uuids */
+ PED_DISK_TYPE_PARTITION_UUID=32, /**< supports partition uuids */
};
// NOTE: DO NOT define using enums
-#define PED_DISK_TYPE_FIRST_FEATURE 1 // PED_DISK_TYPE_EXTENDED
-#define PED_DISK_TYPE_LAST_FEATURE 8 // PED_DISK_TYPE_PARTITION_TYPE_UUID
+#define PED_DISK_TYPE_FIRST_FEATURE 1 // PED_DISK_TYPE_EXTENDED
+#define PED_DISK_TYPE_LAST_FEATURE 32 // PED_DISK_TYPE_PARTITION_UUID
struct _PedDisk;
struct _PedPartition;
@@ -228,6 +230,7 @@ struct _PedDiskOps {
int (*disk_is_flag_available) (
const PedDisk *disk,
PedDiskFlag flag);
+ uint8_t* (*disk_get_uuid) (const PedDisk* disk);
/** \todo add label guessing op here */
/* partition operations */
@@ -260,6 +263,8 @@ struct _PedDiskOps {
int (*partition_set_type_uuid) (PedPartition* part, const uint8_t* uuid);
uint8_t* (*partition_get_type_uuid) (const PedPartition* part);
+ uint8_t* (*partition_get_uuid) (const PedPartition* part);
+
int (*partition_align) (PedPartition* part,
const PedConstraint* constraint);
int (*partition_enumerate) (PedPartition* part);
@@ -331,6 +336,8 @@ extern int ped_disk_set_flag(PedDisk *disk, PedDiskFlag flag, int state);
extern int ped_disk_get_flag(const PedDisk *disk, PedDiskFlag flag);
extern int ped_disk_is_flag_available(const PedDisk *disk, PedDiskFlag flag);
+extern uint8_t* ped_disk_get_uuid (const PedDisk* disk);
+
extern const char *ped_disk_flag_get_name(PedDiskFlag flag);
extern PedDiskFlag ped_disk_flag_get_by_name(const char *name);
extern PedDiskFlag ped_disk_flag_next(PedDiskFlag flag) _GL_ATTRIBUTE_CONST;
@@ -367,6 +374,8 @@ extern uint8_t ped_partition_get_type_id (const PedPartition* part);
extern int ped_partition_set_type_uuid (PedPartition* part, const uint8_t* uuid);
extern uint8_t* ped_partition_get_type_uuid (const PedPartition* part);
+extern uint8_t* ped_partition_get_uuid (const PedPartition* part);
+
extern int ped_partition_is_busy (const PedPartition* part);
extern char* ped_partition_get_path (const PedPartition* part);
diff --git a/libparted/disk.c b/libparted/disk.c
index a961d65..0ed3d91 100644
--- a/libparted/disk.c
+++ b/libparted/disk.c
@@ -886,6 +886,37 @@ ped_disk_flag_next(PedDiskFlag flag)
return (flag + 1) % (PED_DISK_LAST_FLAG + 1);
}
+static int
+_assert_disk_uuid_feature (const PedDiskType* disk_type)
+{
+ if (!ped_disk_type_check_feature (
+ disk_type, PED_DISK_TYPE_DISK_UUID)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ "%s disk labels do not support disk uuids.",
+ disk_type->name);
+ return 0;
+ }
+ return 1;
+}
+
+/**
+ * Get the uuid of the disk \p disk. This will only work if the disk label
+ * supports it.
+ */
+uint8_t*
+ped_disk_get_uuid (const PedDisk *disk)
+{
+ PED_ASSERT (disk != NULL);
+
+ if (!_assert_disk_uuid_feature (disk->type))
+ return NULL;
+
+ PED_ASSERT (disk->type->ops->disk_get_uuid != NULL);
+ return disk->type->ops->disk_get_uuid (disk);
+}
+
/**
* \internal We turned a really nasty bureaucracy problem into an elegant maths
* problem :-) Basically, there are some constraints to a partition's
@@ -1488,6 +1519,21 @@ _assert_partition_type_uuid_feature (const PedDiskType* disk_type)
return 1;
}
+static int
+_assert_partition_uuid_feature (const PedDiskType* disk_type)
+{
+ if (!ped_disk_type_check_feature (
+ disk_type, PED_DISK_TYPE_PARTITION_UUID)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ "%s disk labels do not support partition uuids.",
+ disk_type->name);
+ return 0;
+ }
+ return 1;
+}
+
/**
* Sets the name of a partition.
*
@@ -1612,6 +1658,24 @@ ped_partition_get_type_uuid (const PedPartition *part)
return part->disk->type->ops->partition_get_type_uuid (part);
}
+/**
+ * Get the uuid of the partition \p part. This will only work if the disk label
+ * supports it.
+ */
+uint8_t*
+ped_partition_get_uuid (const PedPartition *part)
+{
+ PED_ASSERT (part != NULL);
+ PED_ASSERT (part->disk != NULL);
+ PED_ASSERT (ped_partition_is_active (part));
+
+ if (!_assert_partition_uuid_feature (part->disk->type))
+ return NULL;
+
+ PED_ASSERT (part->disk->type->ops->partition_get_uuid != NULL);
+ return part->disk->type->ops->partition_get_uuid (part);
+}
+
/** @} */
/**
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
index 8e6a37d..1993863 100644
--- a/libparted/labels/gpt.c
+++ b/libparted/labels/gpt.c
@@ -1576,6 +1576,24 @@ gpt_disk_is_flag_available(const PedDisk *disk, PedDiskFlag flag)
}
}
+static uint8_t*
+gpt_disk_get_uuid (const PedDisk *disk)
+{
+ GPTDiskData *gpt_disk_data = disk->disk_specific;
+
+ efi_guid_t uuid = gpt_disk_data->uuid;
+
+ /* uuid is always LE, while uint8_t is always kind of BE */
+
+ uuid.time_low = PED_SWAP32(uuid.time_low);
+ uuid.time_mid = PED_SWAP16(uuid.time_mid);
+ uuid.time_hi_and_version = PED_SWAP16(uuid.time_hi_and_version);
+
+ uint8_t *buf = ped_malloc(sizeof (uuid_t));
+ memcpy(buf, &uuid, sizeof (uuid_t));
+ return buf;
+}
+
static int
gpt_disk_get_flag (const PedDisk *disk, PedDiskFlag flag)
{
@@ -1764,6 +1782,23 @@ gpt_partition_get_type_uuid (const PedPartition *part)
return buf;
}
+static uint8_t*
+gpt_partition_get_uuid (const PedPartition *part)
+{
+ const GPTPartitionData *gpt_part_data = part->disk_specific;
+
+ efi_guid_t uuid = gpt_part_data->uuid;
+
+ /* uuid is always LE, while uint8_t is always kind of BE */
+
+ uuid.time_low = PED_SWAP32(uuid.time_low);
+ uuid.time_mid = PED_SWAP16(uuid.time_mid);
+ uuid.time_hi_and_version = PED_SWAP16(uuid.time_hi_and_version);
+
+ uint8_t *buf = ped_malloc(sizeof (uuid_t));
+ memcpy(buf, &uuid, sizeof (uuid_t));
+ return buf;
+}
static int
gpt_get_max_primary_partition_count (const PedDisk *disk)
@@ -1864,9 +1899,11 @@ static PedDiskOps gpt_disk_ops =
partition_get_type_id: NULL,
partition_set_type_uuid: gpt_partition_set_type_uuid,
partition_get_type_uuid: gpt_partition_get_type_uuid,
+ partition_get_uuid: gpt_partition_get_uuid,
disk_set_flag: gpt_disk_set_flag,
disk_get_flag: gpt_disk_get_flag,
disk_is_flag_available: gpt_disk_is_flag_available,
+ disk_get_uuid: gpt_disk_get_uuid,
PT_op_function_initializers (gpt)
};
@@ -1876,7 +1913,8 @@ static PedDiskType gpt_disk_type =
next: NULL,
name: "gpt",
ops: &gpt_disk_ops,
- features: PED_DISK_TYPE_PARTITION_NAME | PED_DISK_TYPE_PARTITION_TYPE_UUID
+ features: PED_DISK_TYPE_PARTITION_NAME | PED_DISK_TYPE_PARTITION_TYPE_UUID |
+ PED_DISK_TYPE_DISK_UUID | PED_DISK_TYPE_PARTITION_UUID
};
void
diff --git a/parted/parted.c b/parted/parted.c
index 36c39c7..84187b7 100644
--- a/parted/parted.c
+++ b/parted/parted.c
@@ -1215,6 +1215,14 @@ _print_disk_info (const PedDevice *dev, const PedDisk *diskp)
ul_jsonwrt_value_u64 (&json, "physical-sector-size", dev->phys_sector_size);
ul_jsonwrt_value_s (&json, "label", pt_name);
if (diskp) {
+ bool has_disk_uuid = ped_disk_type_check_feature (diskp->type, PED_DISK_TYPE_DISK_UUID);
+ if (has_disk_uuid) {
+ uint8_t* uuid = ped_disk_get_uuid (diskp);
+ static char buf[UUID_STR_LEN];
+ uuid_unparse_lower (uuid, buf);
+ ul_jsonwrt_value_s (&json, "uuid", buf);
+ free (uuid);
+ }
ul_jsonwrt_value_u64 (&json, "max-partitions",
ped_disk_get_max_primary_partition_count(diskp));
disk_print_flags_json (diskp);
@@ -1360,6 +1368,8 @@ do_print (PedDevice** dev, PedDisk** diskp)
PED_DISK_TYPE_PARTITION_TYPE_ID);
bool has_type_uuid = ped_disk_type_check_feature ((*diskp)->type,
PED_DISK_TYPE_PARTITION_TYPE_UUID);
+ bool has_part_uuid = ped_disk_type_check_feature ((*diskp)->type,
+ PED_DISK_TYPE_PARTITION_UUID);
PedPartition* part;
if (opt_output_mode == HUMAN) {
@@ -1512,6 +1522,14 @@ do_print (PedDevice** dev, PedDisk** diskp)
free (type_uuid);
}
+ if (has_part_uuid) {
+ uint8_t* uuid = ped_partition_get_uuid (part);
+ static char buf[UUID_STR_LEN];
+ uuid_unparse_lower (uuid, buf);
+ ul_jsonwrt_value_s (&json, "uuid", buf);
+ free (uuid);
+ }
+
if (has_name) {
name = ped_partition_get_name (part);
if (strcmp (name, "") != 0)
diff --git a/tests/t0800-json-gpt.sh b/tests/t0800-json-gpt.sh
index 354c0bd..f6a3fb9 100755
--- a/tests/t0800-json-gpt.sh
+++ b/tests/t0800-json-gpt.sh
@@ -32,8 +32,8 @@ parted --script "$dev" mkpart "test1" ext4 10% 20% > out 2>&1 || fail=1
parted --script "$dev" mkpart "test2" xfs 20% 60% > out 2>&1 || fail=1
parted --script "$dev" set 2 raid on > out 2>&1 || fail=1
-# print with json format
-parted --script --json "$dev" unit s print free > out 2>&1 || fail=1
+# print with json format, replace non-deterministic uuids
+parted --script --json "$dev" unit s print free | sed -E 's/"uuid": "[0-9a-f-]{36}"/"uuid": "<uuid>"/' > out 2>&1 || fail=1
cat <<EOF > exp || fail=1
{
@@ -45,6 +45,7 @@ cat <<EOF > exp || fail=1
"logical-sector-size": 512,
"physical-sector-size": 512,
"label": "gpt",
+ "uuid": "<uuid>",
"max-partitions": 128,
"flags": [
"pmbr_boot"
@@ -63,6 +64,7 @@ cat <<EOF > exp || fail=1
"size": "10240s",
"type": "primary",
"type-uuid": "0fc63daf-8483-4772-8e79-3d69d8477de4",
+ "uuid": "<uuid>",
"name": "test1"
},{
"number": 2,
@@ -71,6 +73,7 @@ cat <<EOF > exp || fail=1
"size": "40960s",
"type": "primary",
"type-uuid": "a19d880f-05fc-4d3b-a006-743f0f84911e",
+ "uuid": "<uuid>",
"name": "test2",
"flags": [
"raid"
diff --git a/tests/t0900-type-gpt.sh b/tests/t0900-type-gpt.sh
index 2014820..03febba 100755
--- a/tests/t0900-type-gpt.sh
+++ b/tests/t0900-type-gpt.sh
@@ -32,8 +32,8 @@ parted --script "$dev" mkpart "''" "linux-swap" 10% 20% > out 2>&1 || fail=1
# set type-uuid
parted --script "$dev" type 1 "deadfd6d-a4ab-43c4-84e5-0933c84b4f4f" || fail=1
-# print with json format
-parted --script --json "$dev" unit s print > out 2>&1 || fail=1
+# print with json format, replace non-deterministic uuids
+parted --script --json "$dev" unit s print | sed -E 's/"uuid": "[0-9a-f-]{36}"/"uuid": "<uuid>"/' > out 2>&1 || fail=1
cat <<EOF > exp || fail=1
{
@@ -45,6 +45,7 @@ cat <<EOF > exp || fail=1
"logical-sector-size": 512,
"physical-sector-size": 512,
"label": "gpt",
+ "uuid": "<uuid>",
"max-partitions": 128,
"partitions": [
{
@@ -53,7 +54,8 @@ cat <<EOF > exp || fail=1
"end": "20479s",
"size": "10240s",
"type": "primary",
- "type-uuid": "deadfd6d-a4ab-43c4-84e5-0933c84b4f4f"
+ "type-uuid": "deadfd6d-a4ab-43c4-84e5-0933c84b4f4f",
+ "uuid": "<uuid>"
}
]
}
--
2.37.3

View File

@ -0,0 +1,145 @@
From 55e4775c989af42d629401b9aa22c60ba2993e7d Mon Sep 17 00:00:00 2001
From: Mike Fleetwood <mike.fleetwood@googlemail.com>
Date: Tue, 13 Dec 2022 12:53:07 +0000
Subject: [PATCH] gpt: Add no_automount partition flag
Add user requested support for GPT partition type attribute bit 63 [1]
so the no-auto flag in the systemd originated Discoverable Partitions
Specification [2] can be manipulated. The UEFI specification [3] says
partition attribute bits 48 to 63 are partition type specific, however
the DPS [2] and Microsoft [4] use the bit 63 to mean no automounting /
assign no drive letter and apply it to multiple partition types so don't
restrict its application.
[1] Request for GPT partition attribute bit 63 "no automount" editing
support
https://gitlab.gnome.org/GNOME/gparted/-/issues/214
[2] The Discoverable Partitions Specification (DPS),
Partition Attribute Flags
https://uapi-group.org/specifications/specs/discoverable_partitions_specification/
[3] UEFI Specification, version 2.8,
Table 24. Defined GPT Partition Entry - Attributes
https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
[4] CREATE_PARTITION_PARAMETERS structure (vds.h)
https://learn.microsoft.com/en-gb/windows/win32/api/vds/ns-vds-create_partition_parameters
Signed-off-by: Mike Fleetwood <mike.fleetwood@googlemail.com>
Signed-off-by: Brian C. Lane <bcl@redhat.com>
---
NEWS | 2 ++
doc/C/parted.8 | 2 +-
include/parted/disk.in.h | 3 ++-
libparted/disk.c | 2 ++
libparted/labels/gpt.c | 12 ++++++++++--
5 files changed, 17 insertions(+), 4 deletions(-)
diff --git a/NEWS b/NEWS
index 099f8bd..ac759fe 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@ GNU parted NEWS -*- outline -*-
** New Features
+ Support GPT partition attribute bit 63 as no_automount flag.
+
Add type commands to set type-id on MS-DOS and type-uuid on GPT.
* Noteworthy changes in release 3.5 (2022-04-18) [stable]
diff --git a/doc/C/parted.8 b/doc/C/parted.8
index ab34be7..3069c33 100644
--- a/doc/C/parted.8
+++ b/doc/C/parted.8
@@ -120,7 +120,7 @@ or an LVM logical volume if necessary.
Change the state of the \fIflag\fP on \fIpartition\fP to \fIstate\fP.
Supported flags are: "boot", "root", "swap", "hidden", "raid", "lvm", "lba",
"legacy_boot", "irst", "msftres", "esp", "chromeos_kernel", "bls_boot", "linux-home",
-"bios_grub", and "palo".
+"no_automount", "bios_grub", and "palo".
\fIstate\fP should be either "on" or "off".
.TP
.B unit \fIunit\fP
diff --git a/include/parted/disk.in.h b/include/parted/disk.in.h
index f649bcc..402d78a 100644
--- a/include/parted/disk.in.h
+++ b/include/parted/disk.in.h
@@ -88,10 +88,11 @@ enum _PedPartitionFlag {
PED_PARTITION_CHROMEOS_KERNEL=19,
PED_PARTITION_BLS_BOOT=20,
PED_PARTITION_LINUX_HOME=21,
+ PED_PARTITION_NO_AUTOMOUNT=22,
};
// NOTE: DO NOT define using enums
#define PED_PARTITION_FIRST_FLAG 1 // PED_PARTITION_BOOT
-#define PED_PARTITION_LAST_FLAG 21 // PED_PARTITION_LINUX_HOME
+#define PED_PARTITION_LAST_FLAG 22 // PED_PARTITION_NO_AUTOMOUNT
enum _PedDiskTypeFeature {
PED_DISK_TYPE_EXTENDED=1, /**< supports extended partitions */
diff --git a/libparted/disk.c b/libparted/disk.c
index 0ed3d91..45f35fd 100644
--- a/libparted/disk.c
+++ b/libparted/disk.c
@@ -2579,6 +2579,8 @@ ped_partition_flag_get_name (PedPartitionFlag flag)
return N_("bls_boot");
case PED_PARTITION_LINUX_HOME:
return N_("linux-home");
+ case PED_PARTITION_NO_AUTOMOUNT:
+ return N_("no_automount");
default:
ped_exception_throw (
diff --git a/libparted/labels/gpt.c b/libparted/labels/gpt.c
index 1993863..780fb70 100644
--- a/libparted/labels/gpt.c
+++ b/libparted/labels/gpt.c
@@ -252,7 +252,8 @@ struct __attribute__ ((packed)) _GuidPartitionEntryAttributes_t
uint64_t NoBlockIOProtocol:1;
uint64_t LegacyBIOSBootable:1;
uint64_t Reserved:45;
- uint64_t GuidSpecific:16;
+ uint64_t GuidSpecific:15;
+ uint64_t NoAutomount:1;
#else
# warning "Using crippled partition entry type"
uint32_t RequiredToFunction:1;
@@ -260,7 +261,8 @@ struct __attribute__ ((packed)) _GuidPartitionEntryAttributes_t
uint32_t LegacyBIOSBootable:1;
uint32_t Reserved:30;
uint32_t LOST:5;
- uint32_t GuidSpecific:16;
+ uint32_t GuidSpecific:15;
+ uint32_t NoAutomount:1;
#endif
};
@@ -1637,6 +1639,9 @@ gpt_partition_set_flag (PedPartition *part, PedPartitionFlag flag, int state)
case PED_PARTITION_LEGACY_BOOT:
gpt_part_data->attributes.LegacyBIOSBootable = state;
return 1;
+ case PED_PARTITION_NO_AUTOMOUNT:
+ gpt_part_data->attributes.NoAutomount = state;
+ return 1;
case PED_PARTITION_ROOT:
case PED_PARTITION_LBA:
default:
@@ -1662,6 +1667,8 @@ gpt_partition_get_flag (const PedPartition *part, PedPartitionFlag flag)
return gpt_part_data->attributes.RequiredToFunction;
case PED_PARTITION_LEGACY_BOOT:
return gpt_part_data->attributes.LegacyBIOSBootable;
+ case PED_PARTITION_NO_AUTOMOUNT:
+ return gpt_part_data->attributes.NoAutomount;
case PED_PARTITION_LBA:
case PED_PARTITION_ROOT:
default:
@@ -1681,6 +1688,7 @@ gpt_partition_is_flag_available (const PedPartition *part,
{
case PED_PARTITION_HIDDEN:
case PED_PARTITION_LEGACY_BOOT:
+ case PED_PARTITION_NO_AUTOMOUNT:
return 1;
case PED_PARTITION_ROOT:
case PED_PARTITION_LBA:
--
2.38.1

View File

@ -0,0 +1,54 @@
From caa588269709659d5cf51bf64c559e193f371de4 Mon Sep 17 00:00:00 2001
From: "Brian C. Lane" <bcl@redhat.com>
Date: Tue, 13 Dec 2022 14:38:24 -0800
Subject: [PATCH] tests: XFS requires a minimum size of 300M
---
tests/t1700-probe-fs.sh | 3 ++-
tests/t4100-dvh-partition-limits.sh | 2 +-
tests/t4100-msdos-partition-limits.sh | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/tests/t1700-probe-fs.sh b/tests/t1700-probe-fs.sh
index d33606e..f8af74e 100755
--- a/tests/t1700-probe-fs.sh
+++ b/tests/t1700-probe-fs.sh
@@ -42,7 +42,8 @@ for type in ext2 ext3 ext4 btrfs xfs nilfs2 ntfs vfat hfsplus udf f2fs; do
# create an $type file system, creation failures are not parted bugs,
# skip the filesystem instead of failing the test.
if [ "$type" = "xfs" ]; then
- mkfs.xfs -ssize=$ss -dfile,name=$dev,size=${n_sectors}s || { warn_ "$ME: mkfs.$type failed, skipping"; continue; }
+ # XFS requires at least 300M which is > 1024 sectors with 8192b sector size
+ mkfs.xfs -ssize=$ss -dfile,name=$dev,size=300m || { warn_ "$ME: mkfs.$type failed, skipping"; continue; }
else
dd if=/dev/null of=$dev bs=$ss seek=$n_sectors >/dev/null || { warn_ "$ME: dd failed, skipping $type"; continue; }
mkfs.$type $force $dev || { warn_ "$ME: mkfs.$type failed skipping"; continue; }
diff --git a/tests/t4100-dvh-partition-limits.sh b/tests/t4100-dvh-partition-limits.sh
index d3798d2..a5b3516 100755
--- a/tests/t4100-dvh-partition-limits.sh
+++ b/tests/t4100-dvh-partition-limits.sh
@@ -37,7 +37,7 @@ mp=`pwd`/mount-point
n=4096
# create an XFS file system
-mkfs.xfs -dfile,name=$fs,size=100m || fail=1
+mkfs.xfs -dfile,name=$fs,size=300m || fail=1
mkdir "$mp" || fail=1
# Unmount upon interrupt, failure, etc., as well as upon normal completion.
diff --git a/tests/t4100-msdos-partition-limits.sh b/tests/t4100-msdos-partition-limits.sh
index b591123..09267b5 100755
--- a/tests/t4100-msdos-partition-limits.sh
+++ b/tests/t4100-msdos-partition-limits.sh
@@ -37,7 +37,7 @@ mp=`pwd`/mount-point
n=4096
# create an XFS file system
-mkfs.xfs -dfile,name=$fs,size=100m || fail=1
+mkfs.xfs -dfile,name=$fs,size=300m || fail=1
mkdir "$mp" || fail=1
# Unmount upon interrupt, failure, etc., as well as upon normal completion.
--
2.38.1

View File

@ -1,7 +1,7 @@
Summary: The GNU disk partition manipulation program
Name: parted
Version: 3.5
Release: 6%{?dist}
Release: 7%{?dist}
License: GPLv3+
URL: http://www.gnu.org/software/parted
@ -16,12 +16,16 @@ Patch0002: 0002-parted-add-type-command.patch
Patch0003: 0003-libparted-add-swap-flag-for-DASD-label.patch
Patch0004: 0004-parted-Reset-the-filesystem-type-when-changing-the-i.patch
Patch0005: 0005-tests-t3200-type-change-now-passes.patch
Patch0006: 0006-disk.in.h-Remove-use-of-enums-with-define.patch
Patch0007: 0007-libparted-Fix-handling-of-gpt-partition-types.patch
Patch0008: 0008-tests-Add-a-libparted-test-for-ped_partition_set_sys.patch
Patch0009: 0009-libparted-Fix-handling-of-msdos-partition-types.patch
Patch0006: 0006-libparted-Fix-check-for-availability-of-_type_id-fun.patch
Patch0007: 0007-parted-Simplify-code-for-json-output.patch
Patch0008: 0008-disk.in.h-Remove-use-of-enums-with-define.patch
Patch0009: 0009-libparted-Fix-handling-of-gpt-partition-types.patch
Patch0010: 0010-tests-Add-a-libparted-test-for-ped_partition_set_sys.patch
Patch0011: 0011-libparted-Fix-handling-of-msdos-partition-types.patch
Patch0012: 0012-tests-Add-a-libparted-test-for-ped_partition_set_sys.patch
Patch0013: 0013-show-GPT-UUIDs-in-JSON-output.patch
Patch0014: 0014-gpt-Add-no_automount-partition-flag.patch
Patch0015: 0015-tests-XFS-requires-a-minimum-size-of-300M.patch
BuildRequires: gcc
BuildRequires: e2fsprogs-devel
@ -126,7 +130,14 @@ make check
%changelog
* Mon Aug 08 2022 Brian C. Lane <bcl@redhat.com> - 3.5-5.bcl.1
* Wed Dec 14 2022 Brian C. Lane <bcl@redhat.com> - 3.5-7
- libparted: Fix handling of msdos partition types
- tests: Add a libparted test for ped_partition_set_system on msdos
- parted: Add display of GPT UUIDs in JSON output
- Add no_automount flag support
- increase xfs size to 300M
* Mon Aug 08 2022 Brian C. Lane <bcl@redhat.com> - 3.5-6
- Fix ped_partition_set_system handling of existing flags
* Thu Aug 04 2022 Brian C. Lane <bcl@redhat.com> - 3.5-5