summaryrefslogtreecommitdiffstats
path: root/perl-install/fsedit.pm
diff options
context:
space:
mode:
authorPascal Rigaux <pixel@mandriva.com>2003-02-19 14:03:19 +0000
committerPascal Rigaux <pixel@mandriva.com>2003-02-19 14:03:19 +0000
commit64ee3f84430652de3e3c24d9a0c91a1c29d1dd37 (patch)
treefc8379330a3c9a4ef13319d18000ffa255b95dd2 /perl-install/fsedit.pm
parentb0b1c6146ae1dab13cc791f521b1634a08bdb2ee (diff)
downloaddrakx-backup-do-not-use-64ee3f84430652de3e3c24d9a0c91a1c29d1dd37.tar
drakx-backup-do-not-use-64ee3f84430652de3e3c24d9a0c91a1c29d1dd37.tar.gz
drakx-backup-do-not-use-64ee3f84430652de3e3c24d9a0c91a1c29d1dd37.tar.bz2
drakx-backup-do-not-use-64ee3f84430652de3e3c24d9a0c91a1c29d1dd37.tar.xz
drakx-backup-do-not-use-64ee3f84430652de3e3c24d9a0c91a1c29d1dd37.zip
- cleanup & simplify
- handle raid on raid detection
Diffstat (limited to 'perl-install/fsedit.pm')
-rw-r--r--perl-install/fsedit.pm26
1 files changed, 17 insertions, 9 deletions
diff --git a/perl-install/fsedit.pm b/perl-install/fsedit.pm
index 483e87000..3a16cc963 100644
--- a/perl-install/fsedit.pm
+++ b/perl-install/fsedit.pm
@@ -97,7 +97,6 @@ sub raids {
}
fs::get_major_minor(@parts);
- my %devname2part = map { $_->{dev} => { %$_, device => $_->{dev} } } read_proc_partitions_raw();
my @raids;
my @mdstat = cat_("/proc/mdstat");
@@ -113,24 +112,33 @@ sub raids {
my $chunks = $mdstat[$i+1] =~ /(\S+) chunks/ ? $1 : "64k";
my @raw_mdparts = map { /([^\[]+)/ } split ' ', $mdparts;
+
+ my $type = typeOfPart("md$nb");
+ log::l("RAID: found md$nb (raid $level) chunks $chunks ", if_($type, "type $type "), "with parts ", join(", ", @raw_mdparts));
+ $raids[$nb] = { 'chunk-size' => $chunks, type => $type || 0x83, raw_mdparts => \@raw_mdparts,
+ device => "md$nb", notFormatted => !$type, level => $level };
+ }
+
+ my %devname2part = map { $_->{dev} => { %$_, device => $_->{dev} } } read_proc_partitions_raw();
+ each_index {
+ my $raw_mdparts = delete $_->{raw_mdparts};
my @mdparts =
map {
my $mdpart = $devname2part{$_} || { device => $_ };
- if (my $part = find { is_same_hd($mdpart, $_) } @parts) {
- $part->{raid} = $nb;
+ if (my $part = find { is_same_hd($mdpart, $_) } @parts, @raids) {
+ $part->{raid} = $::i;
+ $part->{type} = 0xfd;
delete $part->{mntpoint};
$part;
} else {
#- forget it when not found? that way it won't break much... beurk.
();
}
- } @raw_mdparts;
+ } @$raw_mdparts;
+
+ $_->{disks} = \@mdparts;
+ } @raids;
- my $type = typeOfPart("md$nb");
- log::l("RAID: found md$nb (raid $level) chunks $chunks ", if_($type, "type $type "), "with parts ", join(", ", @raw_mdparts));
- $raids[$nb] = { 'chunk-size' => $chunks, type => $type || 0x83, disks => \@mdparts,
- device => "md$nb", notFormatted => !$type, level => $level };
- }
require raid;
raid::update(@raids);
\@raids;