From 9602565a6c602906acb96c3192d8ff168ef5ebea Mon Sep 17 00:00:00 2001 From: Martin Whitaker Date: Sat, 20 Apr 2019 11:20:01 +0100 Subject: Minimise calls to ped_disk_probe() when writing partition tables. --- perl-install/partition_table.pm | 2 ++ perl-install/partition_table/gpt.pm | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/perl-install/partition_table.pm b/perl-install/partition_table.pm index da8a15b6e..13715852f 100644 --- a/perl-install/partition_table.pm +++ b/perl-install/partition_table.pm @@ -273,6 +273,7 @@ sub initialize { my $current = c::get_disk_type($hd->{file}); $current = 'dos' if $current eq 'msdos'; + $hd->{current_pt_table_type} = $current; my $type = $o_type || $current || default_type($hd); $hd->{pt_table_type} = $type; @@ -564,6 +565,7 @@ sub write { $hd->write($handle, $_->{start}, $_->{raw}) or die "writing of partition table failed"; } $hd->end_write($handle); + $hd->{current_pt_table_type} = $hd->{pt_table_type}; $hd->{isDirty} = 0; if (my $tell_kernel = delete $hd->{will_tell_kernel}) { diff --git a/perl-install/partition_table/gpt.pm b/perl-install/partition_table/gpt.pm index e1c07a761..af5509f27 100644 --- a/perl-install/partition_table/gpt.pm +++ b/perl-install/partition_table/gpt.pm @@ -87,7 +87,7 @@ sub write { my $partitions_killed; # Initialize the disk if current partition table is not gpt - if (c::get_disk_type($hd->{file}) ne "gpt") { + if ($hd->{current_pt_table_type} ne "gpt") { $ped_disk = c::disk_open($hd->{file}, "gpt") or die "failed to create new partition table on $hd->{file}"; $partitions_killed = 1; } else { -- cgit v1.2.1