From 788f613dc10c6d432b9241069e101cf59fdbf1c1 Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Tue, 6 Oct 2009 18:53:21 +0000 Subject: [PATCH] - ped_partition_is_busy() should not throw exceptions (#527035) - msdos_partition_is_flag_available() should return 1 for swap flag (#513729) --- ...0-ped_partition_is_busy-no-exception.patch | 43 +++++++++++++++++++ parted-1.9.0-swap-flag.patch | 8 ++++ parted.spec | 9 +++- 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 parted-1.9.0-ped_partition_is_busy-no-exception.patch diff --git a/parted-1.9.0-ped_partition_is_busy-no-exception.patch b/parted-1.9.0-ped_partition_is_busy-no-exception.patch new file mode 100644 index 0000000..791161b --- /dev/null +++ b/parted-1.9.0-ped_partition_is_busy-no-exception.patch @@ -0,0 +1,43 @@ +From fa2ad81437541251d6e47eccf3bc413cf68a0c31 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Tue, 6 Oct 2009 11:18:25 +0200 +Subject: [PATCH] ped_partition_busy should not call the libparted exception handler + +Modify libparted/arch/linux.c _partition_get_part_dev() to not call +_device_stat() but instead use stat directly, as _device_stat() calls +the libparted exception handler and we don't want this here, the only caller +of _partition_get_part_dev() is _partition_is_mounted(), which in turn only +gets called by linux_partition_is_busy(), and we don't want to "throw" +exceptions from ped_partition_busy() + +This issue was noticed in combination with pyparted as used by anaconda, see: +https://bugzilla.redhat.com/show_bug.cgi?id=527035#c10 +--- + libparted/arch/linux.c | 4 +++- + 1 files changed, 3 insertions(+), 1 deletions(-) + +diff --git a/libparted/arch/linux.c b/libparted/arch/linux.c +index 52f7d21..a8d6daf 100644 +--- a/libparted/arch/linux.c ++++ b/libparted/arch/linux.c +@@ -2127,7 +2127,7 @@ _partition_get_part_dev (const PedPartition* part) + struct stat dev_stat; + int dev_major, dev_minor; + +- if (!_device_stat (part->disk->dev, &dev_stat)) ++ if (stat (part->disk->dev->path, &dev_stat)) + return (dev_t)0; + dev_major = major (dev_stat.st_rdev); + dev_minor = minor (dev_stat.st_rdev); +@@ -2184,6 +2184,8 @@ _partition_is_mounted (const PedPartition *part) + if (!ped_partition_is_active (part)) + return 0; + dev = _partition_get_part_dev (part); ++ if (!dev) ++ return 0; + return _partition_is_mounted_by_dev (dev); + } + +-- +1.6.5.rc2 + diff --git a/parted-1.9.0-swap-flag.patch b/parted-1.9.0-swap-flag.patch index 35da84a..a311ce3 100644 --- a/parted-1.9.0-swap-flag.patch +++ b/parted-1.9.0-swap-flag.patch @@ -124,6 +124,14 @@ index 7ec15ee..f8307c5 100644 default: return 0; } +@@ -1496,6 +1496,7 @@ msdos_partition_is_flag_available (const + case PED_PARTITION_LBA: + case PED_PARTITION_PALO: + case PED_PARTITION_PREP: ++ case PED_PARTITION_SWAP: + return 1; + + default: -- 1.6.0.6 diff --git a/parted.spec b/parted.spec index 2bf2b65..98f63dd 100644 --- a/parted.spec +++ b/parted.spec @@ -4,7 +4,7 @@ Summary: The GNU disk partition manipulation program Name: parted Version: 1.9.0 -Release: 14%{?dist} +Release: 15%{?dist} License: GPLv3+ Group: Applications/System URL: http://www.gnu.org/software/parted @@ -25,6 +25,7 @@ Patch12: %{name}-1.9.0-volkeysize.patch Patch13: %{name}-1.9.0-no-BLKPG.patch Patch14: %{name}-1.9.0-commit-without-close.patch Patch15: %{name}-1.9.0-dont-touch-part-nodes.patch +Patch16: %{name}-1.9.0-ped_partition_is_busy-no-exception.patch Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: e2fsprogs-devel @@ -77,6 +78,7 @@ Parted library, you need to install this package. %patch13 -p1 -b .no-BLKPG %patch14 -p1 -b .commit-without-close %patch15 -p1 -b .dont-touch-part-nodes +%patch16 -p1 -b .ped_partition_is_busy %build @@ -101,6 +103,7 @@ popd %{__rm} -rf %{buildroot}%{_libdir}/*.la %{__rm} -rf %{buildroot}%{_infodir}/dir %{__rm} -rf %{buildroot}%{_bindir}/label +%{__rm} -rf %{buildroot}%{_bindir}/disk %find_lang %{name} @@ -137,6 +140,10 @@ fi %{_exec_prefix}/%{_lib}/pkgconfig/libparted.pc %changelog +* Tue Oct 6 2009 Hans de Goede 1.9.0-15 +- ped_partition_is_busy() should not throw exceptions (#527035) +- msdos_partition_is_flag_available() should return 1 for swap flag (#513729) + * Mon Aug 31 2009 Joel Granados 1.9.0-14 - Patchs for 'commit to os' for linux. Thx to hansg.