diff options
author | Pascal Rigaux <pixel@mandriva.com> | 2001-08-01 12:51:58 +0000 |
---|---|---|
committer | Pascal Rigaux <pixel@mandriva.com> | 2001-08-01 12:51:58 +0000 |
commit | a65380d6226ab184a590a6630bd460e2e01217a4 (patch) | |
tree | b061f39e85fce059e65315dcc908eea3cdc8771e /perl-install/fsedit.pm | |
parent | 5afb716b81f174980b45127ad48f30ebb17c209e (diff) | |
download | drakx-a65380d6226ab184a590a6630bd460e2e01217a4.tar drakx-a65380d6226ab184a590a6630bd460e2e01217a4.tar.gz drakx-a65380d6226ab184a590a6630bd460e2e01217a4.tar.bz2 drakx-a65380d6226ab184a590a6630bd460e2e01217a4.tar.xz drakx-a65380d6226ab184a590a6630bd460e2e01217a4.zip |
handle auto_allocate_raids for auto_installs
Diffstat (limited to 'perl-install/fsedit.pm')
-rw-r--r-- | perl-install/fsedit.pm | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm index 504d643dd..ea6e6443b 100644 --- a/perl-install/fsedit.pm +++ b/perl-install/fsedit.pm @@ -387,11 +387,34 @@ sub allocatePartitions($$) { } sub auto_allocate { - my ($hds, $suggestions) = @_; + my ($hds, $suggestions, $raid) = @_; allocatePartitions($hds, $suggestions || $suggestions{simple}); + + auto_allocate_raids($hds, $suggestions, $raid) if $raid && $suggestions; + map { partition_table::assign_device_numbers($_) } @$hds; } +sub auto_allocate_raids { + my ($hds, $suggestions, $raid) = @_; + + my @raids = grep { isRAID($_) } get_fstab(@$hds) or return; + if (@raids) { + require raid; + my @mds = grep { $_->{hd} =~ /md/ } @$suggestions; + foreach my $md (@mds) { + my @raids_ = grep { !$md->{parts} || $md->{parts} =~ /\Q$_->{mntpoint}/ } @raids; + @raids = difference2(\@raids, \@raids_); + my $nb = raid::new($raid, @raids_); + my $part = $raid->[$nb]; + + my %h = %$md; + delete @h{'hd', 'parts'}; + put_in_hash($part, \%h); # mntpoint, level, chunk-size, type + } + } +} + sub undo_prepare($) { my ($hds) = @_; require Data::Dumper; |