dc75c40906
- tests: Fixing libparted test framework usage
134 lines
4.7 KiB
Diff
134 lines
4.7 KiB
Diff
From 9b009985da2e5eee5b5c179acfafab3aa1624f8b Mon Sep 17 00:00:00 2001
|
|
From: "Brian C. Lane" <bcl@redhat.com>
|
|
Date: Tue, 10 May 2022 15:04:12 -0700
|
|
Subject: [PATCH 16/17] libparted: Fix problem with creating 1s partitions
|
|
|
|
There was a 1-off error in _partition_get_overlap_constraint that
|
|
prevented partitions from being created in 1s free space. You could
|
|
create 1s partitions as long they were done in order, but not after
|
|
leaving 'holes'.
|
|
|
|
This fixes this and adds tests for it on msdos and gpt disklabels.
|
|
---
|
|
libparted/disk.c | 2 +-
|
|
tests/Makefile.am | 2 ++
|
|
tests/t9024-msdos-1s-partition.sh | 36 +++++++++++++++++++++++++++++++
|
|
tests/t9025-gpt-1s-partition.sh | 36 +++++++++++++++++++++++++++++++
|
|
4 files changed, 75 insertions(+), 1 deletion(-)
|
|
create mode 100644 tests/t9024-msdos-1s-partition.sh
|
|
create mode 100644 tests/t9025-gpt-1s-partition.sh
|
|
|
|
diff --git a/libparted/disk.c b/libparted/disk.c
|
|
index 45f35fd..e1a3489 100644
|
|
--- a/libparted/disk.c
|
|
+++ b/libparted/disk.c
|
|
@@ -1960,7 +1960,7 @@ _partition_get_overlap_constraint (PedPartition* part, PedGeometry* geom)
|
|
if (walk)
|
|
max_end = walk->geom.start - 1;
|
|
|
|
- if (min_start >= max_end)
|
|
+ if (min_start > max_end)
|
|
return NULL;
|
|
|
|
ped_geometry_init (&free_space, part->disk->dev,
|
|
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
|
index 1d109d7..fa27b44 100644
|
|
--- a/tests/Makefile.am
|
|
+++ b/tests/Makefile.am
|
|
@@ -91,6 +91,8 @@ TESTS = \
|
|
t9021-maxima.sh \
|
|
t9022-one-unit-snap.sh \
|
|
t9023-value-lt-one.sh \
|
|
+ t9024-msdos-1s-partition.sh \
|
|
+ t9025-gpt-1s-partition.sh \
|
|
t9030-align-check.sh \
|
|
t9040-many-partitions.sh \
|
|
t9041-undetected-in-use-16th-partition.sh \
|
|
diff --git a/tests/t9024-msdos-1s-partition.sh b/tests/t9024-msdos-1s-partition.sh
|
|
new file mode 100644
|
|
index 0000000..7115156
|
|
--- /dev/null
|
|
+++ b/tests/t9024-msdos-1s-partition.sh
|
|
@@ -0,0 +1,36 @@
|
|
+#!/bin/sh
|
|
+# Test creating 1s partitions in 1s free space
|
|
+
|
|
+# Copyright (C) 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/>.
|
|
+
|
|
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
|
|
+
|
|
+dev=loop-file
|
|
+
|
|
+# create device
|
|
+truncate --size 10MiB "$dev" || fail=1
|
|
+
|
|
+# create msdos label and some partitions with 1s free space between
|
|
+parted --script "$dev" mklabel msdos > out 2>&1 || fail=1
|
|
+parted --script "$dev" mkpart primary ext4 64s 128s > out 2>&1 || fail=1
|
|
+parted --script "$dev" mkpart primary ext4 130s 200s > out 2>&1 || fail=1
|
|
+parted --script "$dev" u s p free
|
|
+
|
|
+# Free space is at 129s
|
|
+parted --script "$dev" mkpart primary ext4 129s 129s > out 2>&1 || fail=1
|
|
+parted --script "$dev" u s p free
|
|
+
|
|
+Exit $fail
|
|
diff --git a/tests/t9025-gpt-1s-partition.sh b/tests/t9025-gpt-1s-partition.sh
|
|
new file mode 100644
|
|
index 0000000..c97ab8b
|
|
--- /dev/null
|
|
+++ b/tests/t9025-gpt-1s-partition.sh
|
|
@@ -0,0 +1,36 @@
|
|
+#!/bin/sh
|
|
+# Test creating 1s partitions in 1s free space
|
|
+
|
|
+# Copyright (C) 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/>.
|
|
+
|
|
+. "${srcdir=.}/init.sh"; path_prepend_ ../parted
|
|
+
|
|
+dev=loop-file
|
|
+
|
|
+# create device
|
|
+truncate --size 10MiB "$dev" || fail=1
|
|
+
|
|
+# create msdos label and some partitions with 1s free space between
|
|
+parted --script "$dev" mklabel gpt > out 2>&1 || fail=1
|
|
+parted --script "$dev" mkpart p1 ext4 64s 128s > out 2>&1 || fail=1
|
|
+parted --script "$dev" mkpart p2 ext4 130s 200s > out 2>&1 || fail=1
|
|
+parted --script "$dev" u s p free
|
|
+
|
|
+# Free space is at 129s
|
|
+parted --script "$dev" mkpart p3 ext4 129s 129s > out 2>&1 || fail=1
|
|
+parted --script "$dev" u s p free
|
|
+
|
|
+Exit $fail
|
|
--
|
|
2.39.1
|
|
|