summaryrefslogtreecommitdiffstats
path: root/perl-install/raid.pm
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>1999-11-09 15:59:39 +0000
committerPascal Rigaux <pixel@mandriva.com>1999-11-09 15:59:39 +0000
commitab18bd5253ea6b8edcc72f176566505e9ba84390 (patch)
tree78f959fa158974381055d796e23b7a320aa83c52 /perl-install/raid.pm
parentc3b5ff8158ed25327e34de957573b8c17b80b0eb (diff)
downloaddrakx-ab18bd5253ea6b8edcc72f176566505e9ba84390.tar
drakx-ab18bd5253ea6b8edcc72f176566505e9ba84390.tar.gz
drakx-ab18bd5253ea6b8edcc72f176566505e9ba84390.tar.bz2
drakx-ab18bd5253ea6b8edcc72f176566505e9ba84390.tar.xz
drakx-ab18bd5253ea6b8edcc72f176566505e9ba84390.zip
no_comment
Diffstat (limited to 'perl-install/raid.pm')
-rw-r--r--perl-install/raid.pm22
1 files changed, 17 insertions, 5 deletions
diff --git a/perl-install/raid.pm b/perl-install/raid.pm
index 45d58c750..8b4fb4c8e 100644
--- a/perl-install/raid.pm
+++ b/perl-install/raid.pm
@@ -30,7 +30,7 @@ sub new($$) {
}
sub add($$$) {
- my ($raid, $part, $nb) = @_;
+ my ($raid, $part, $nb) = @_; $nb = nb($nb);
$raid->[$nb]{isMounted} and die _("Can't add a partition to _formatted_ RAID md%d", $nb);
$part->{raid} = $nb;
push @{$raid->[$nb]{disks}}, $part;
@@ -44,6 +44,16 @@ sub delete($$) {
$raid->[$nb] = undef;
}
+sub changeNb($$$) {
+ my ($raid, $oldnb, $newnb) = @_;
+ if ($oldnb != $newnb) {
+ ($raid->[$newnb], $raid->[$oldnb]) = ($raid->[$oldnb], undef);
+ $raid->[$newnb]{device} = "md$newnb";
+ $_->{raid} = $newnb foreach @{$raid->[$newnb]{disks}};
+ }
+ $newnb;
+}
+
sub removeDisk($$) {
my ($raid, $part) = @_;
my $nb = nb($part->{raid});
@@ -78,9 +88,11 @@ sub updateIsFormatted($) {
$part->{isFormatted} = and_ map { $_->{isFormatted} } @{$part->{disks}};
$part->{notFormatted} = and_ map { $_->{notFormatted} } @{$part->{disks}};
}
-sub update($) {
- &updateSize;
- &updateIsFormatted;
+sub update {
+ foreach (@_) {
+ updateSize($_);
+ updateIsFormatted($_);
+ }
}
sub write($) {
@@ -123,7 +135,7 @@ sub format_part($$) {
sub verify($) {
my ($raid) = @_;
$raid && $raid->{raid} or return;
- foreach (@{$raid->{raid}}) {
+ foreach (grep {$_} @{$raid->{raid}}) {
@{$_->{disks}} >= ($_->{level} =~ /4|5/ ? 3 : 2) or die _("Not enough partitions for RAID level %d\n", $_->{level});
}
}