- tests: Make sure the extended partition length is 2 (#1135493)

- libparted: BLKPG_RESIZE_PARTITION uses bytes not sectors (#1135493)
This commit is contained in:
Brian C. Lane 2015-06-05 15:46:45 -07:00
parent 123da5f5e2
commit 441cefc372
3 changed files with 116 additions and 1 deletions

View File

@ -0,0 +1,76 @@
From 8b23531d1432c7ca0918c2a1c5a7f00ca881968c Mon Sep 17 00:00:00 2001
From: "Brian C. Lane" <bcl@redhat.com>
Date: Fri, 5 Jun 2015 13:46:29 -0700
Subject: [PATCH 12/13] tests: Make sure the extended partition length is 2
(#1135493)
parted tells the kernel the wrong length when reporting a resize of an
extended partition.
---
tests/Makefile.am | 1 +
tests/t2320-dos-extended-noclobber.sh | 41 +++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+)
create mode 100644 tests/t2320-dos-extended-noclobber.sh
diff --git a/tests/Makefile.am b/tests/Makefile.am
index ce8391d..001b9de 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -47,6 +47,7 @@ TESTS = \
t2201-pc98-label-recog.sh \
t2300-dos-label-extended-bootcode.sh \
t2310-dos-extended-2-sector-min-offset.sh \
+ t2320-dos-extended-noclobber.sh \
t2400-dos-hfs-partition-type.sh \
t2500-probe-corrupt-hfs.sh \
t3000-resize-fs.sh \
diff --git a/tests/t2320-dos-extended-noclobber.sh b/tests/t2320-dos-extended-noclobber.sh
new file mode 100644
index 0000000..1a4638a
--- /dev/null
+++ b/tests/t2320-dos-extended-noclobber.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+# Ensure that the extended partition reports the correct length
+# after adding another partition.
+
+# Copyright (C) 2015 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
+
+require_root_
+require_scsi_debug_module_
+
+# create memory-backed device
+ss=$sector_size_
+scsi_debug_setup_ sector_size=$ss dev_size_mb=10 > dev-name ||
+ skip_ 'failed to create scsi_debug device'
+scsi_dev=$(cat dev-name)
+
+# Create a DOS label with an extended partition and a primary partition
+parted -s $scsi_dev mklabel msdos || fail=1
+parted -s $scsi_dev mkpart extended 1 5 > out 2>&1 || fail=1
+parted -s $scsi_dev mkpart primary 5 10 > out 2>&1 || fail=1
+
+# Make sure the size of the extended partition is 2 sectors
+dev=${scsi_dev#/dev/}
+ext_len=$(cat /sys/block/$dev/${dev}1/size)
+[ $ext_len -eq 2 ] || fail=1
+
+Exit $fail
--
2.4.0

View File

@ -0,0 +1,33 @@
From 1174a9cca1610611ad5d8cf9f3611e9d4c984fb0 Mon Sep 17 00:00:00 2001
From: "Brian C. Lane" <bcl@redhat.com>
Date: Fri, 5 Jun 2015 14:40:00 -0700
Subject: [PATCH 13/13] libparted: BLKPG_RESIZE_PARTITION uses bytes, not
sectors (#1135493)
This results in the extended partition vanishing after adding another
partition.
Resolves: rhbz#1135493
---
libparted/arch/linux.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c
index 90ab21d..e73fe1c 100644
--- a/libparted/arch/linux.c
+++ b/libparted/arch/linux.c
@@ -2547,7 +2547,10 @@ static int _blkpg_resize_partition (PedDisk* disk, const PedPartition *part)
if (walk->geom.start == part->geom.start+1)
linux_part.length = 1;
}
- } else linux_part.length = 1;
+ } else {
+ linux_part.length = 1;
+ }
+ linux_part.length *= disk->dev->sector_size;
}
else
linux_part.length = part->geom.length * disk->dev->sector_size;
--
2.4.0

View File

@ -4,7 +4,7 @@
Summary: The GNU disk partition manipulation program
Name: parted
Version: 3.2
Release: 7%{?dist}
Release: 8%{?dist}
License: GPLv3+
Group: Applications/System
URL: http://www.gnu.org/software/parted
@ -25,6 +25,8 @@ Patch0008: 0008-parted-don-t-crash-in-disk_set-when-disk-label-not-f.patch
Patch0009: 0009-tests-Add-a-test-for-device-mapper-partition-sizes.patch
Patch0010: 0010-libparted-device-mapper-uses-512b-sectors.patch
Patch0011: 0011-Update-manpage-NAME-so-whatis-will-work.patch
Patch0012: 0012-tests-Make-sure-the-extended-partition-length-is-2-1.patch
Patch0013: 0013-libparted-BLKPG_RESIZE_PARTITION-uses-bytes-not-sect.patch
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: e2fsprogs-devel
@ -167,6 +169,10 @@ fi
%changelog
* Fri Jun 05 2015 Brian C. Lane <bcl@redhat.com> 3.2-8
- tests: Make sure the extended partition length is 2 (#1135493)
- libparted: BLKPG_RESIZE_PARTITION uses bytes not sectors (#1135493)
* Tue Apr 28 2015 Brian C. Lane <bcl@redhat.com> 3.2-7
- Add python2 as a BuildRequires, used in some of the tests