diff --git a/0012-tests-Make-sure-the-extended-partition-length-is-2-1.patch b/0012-tests-Make-sure-the-extended-partition-length-is-2-1.patch new file mode 100644 index 0000000..c5da04b --- /dev/null +++ b/0012-tests-Make-sure-the-extended-partition-length-is-2-1.patch @@ -0,0 +1,76 @@ +From 8b23531d1432c7ca0918c2a1c5a7f00ca881968c Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +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 . ++ ++. "${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 + diff --git a/0013-libparted-BLKPG_RESIZE_PARTITION-uses-bytes-not-sect.patch b/0013-libparted-BLKPG_RESIZE_PARTITION-uses-bytes-not-sect.patch new file mode 100644 index 0000000..4a1b90f --- /dev/null +++ b/0013-libparted-BLKPG_RESIZE_PARTITION-uses-bytes-not-sect.patch @@ -0,0 +1,33 @@ +From 1174a9cca1610611ad5d8cf9f3611e9d4c984fb0 Mon Sep 17 00:00:00 2001 +From: "Brian C. Lane" +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 + diff --git a/parted.spec b/parted.spec index d9c2d8b..dc65dfd 100644 --- a/parted.spec +++ b/parted.spec @@ -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 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 3.2-7 - Add python2 as a BuildRequires, used in some of the tests