Package: fai-client Version: 3.2.11 Severity: important Tags: patch If preserving a partition is requested, but the disk_config requires creating an extended partition with the to-be-preserved partition id, the partition will be lost. The attached patch fixes this.
Best, Michael
2008-10-10 Michael Tautschnig <[EMAIL PROTECTED]> * lib/setup-storage/Parser.pm, lib/setup-storage/Sizes.pm: Warn, if a preserved partition does not match the size specified in the disk_config; fail, if an extended partition is to be created in place of a to-be-preserved partition Index: trunk/lib/setup-storage/Parser.pm =================================================================== --- trunk.orig/lib/setup-storage/Parser.pm +++ trunk/lib/setup-storage/Parser.pm @@ -217,10 +217,11 @@ ($extended < 5) or die "Too many primary partitions while creating extended\n"; - # initialize the entry - (\%FAI::configs)->{$FAI::device}->{partitions}->{$extended} = { - size => {} - }; + # initialize the entry, unless it already exists + defined ($FAI::configs{$FAI::device}{partitions}{$extended}) + or (\%FAI::configs)->{$FAI::device}->{partitions}->{$extended} = { + size => {} + }; my $part_size = (\%FAI::configs)->{$FAI::device}->{partitions}->{$extended}->{size}; Index: trunk/lib/setup-storage/Sizes.pm =================================================================== --- trunk.orig/lib/setup-storage/Sizes.pm +++ trunk/lib/setup-storage/Sizes.pm @@ -294,6 +294,13 @@ ($next_start > $curr_part->{begin_byte}) and die "Previous partitions overflow begin of preserved partition $part_id\n"; + # get what the user desired + my ($start, $end) = &FAI::make_range($part->{size}->{range}, + $current_disk->{size} . "B"); + ($start > $curr_part->{count_byte} || $end < $curr_part->{count_byte}) + and warn "Preserved partition $part_id retains size " . + $curr_part->{count_byte} . "\n"; + # set the effective size to the value known already $part->{size}->{eff_size} = $curr_part->{count_byte}; @@ -321,6 +328,11 @@ $min_req_total_space += $current_disk->{bios_sectors_per_track} * $current_disk->{sector_size} if ($part_id > 4); + # make sure we don't change extended partitions to ordinary ones and + # vice-versa + ($part->{size}->{extended} == $curr_part->{is_extended}) + or die "Preserved partition $part_id can't change extended/normal setting\n"; + # extended partitions consume no space if ($part->{size}->{extended}) {
pgpoJJz8cmcLo.pgp
Description: PGP signature