summaryrefslogtreecommitdiffstats
path: root/perl-install/fs/dmraid.pm
diff options
context:
space:
mode:
authorPascal Terjan <pterjan@mandriva.org>2010-01-27 00:28:23 +0000
committerPascal Terjan <pterjan@mandriva.org>2010-01-27 00:28:23 +0000
commitf55b5875bbf545a2a4bc33bf5d70820589d4397d (patch)
treee7c7fcfe0982c78ea228322921ef46efb00fa530 /perl-install/fs/dmraid.pm
parentc171e831c85d97497bcddfcb6ef279162ac646fd (diff)
downloaddrakx-f55b5875bbf545a2a4bc33bf5d70820589d4397d.tar
drakx-f55b5875bbf545a2a4bc33bf5d70820589d4397d.tar.gz
drakx-f55b5875bbf545a2a4bc33bf5d70820589d4397d.tar.bz2
drakx-f55b5875bbf545a2a4bc33bf5d70820589d4397d.tar.xz
drakx-f55b5875bbf545a2a4bc33bf5d70820589d4397d.zip
support ddf1 dmraid
Diffstat (limited to 'perl-install/fs/dmraid.pm')
-rw-r--r--perl-install/fs/dmraid.pm16
1 files changed, 16 insertions, 0 deletions
diff --git a/perl-install/fs/dmraid.pm b/perl-install/fs/dmraid.pm
index fa06e05e9..68dd98a16 100644
--- a/perl-install/fs/dmraid.pm
+++ b/perl-install/fs/dmraid.pm
@@ -40,10 +40,26 @@ sub check {
}
sub _raid_devices_raw() {
+ # get the real vg names, needed for ddf1, and safer than begins_with for raid10
+ log::l("_raid_devices_raw");
+ my %vgs;
+ my %pv2vg = map {
+ log::l("got: $_");
+ my %l; @l{qw(name size stride level status subsets devs spares)} = split(':');
+ $vgs{$l{name}} = 1 if defined $l{spares};
+ if(/freeing device "(.*)", path "(.*)"/ && defined $vgs{$1}) {
+ log::l("$2 => $1");
+ { $2 => $1 };
+ }
+ } call_dmraid('-d', '-s', '-c', '-c');
map {
chomp;
log::l("got: $_");
my %l; @l{qw(pv format vg level status size)} = split(':');
+ if(defined $l{size} && defined $l{vg} && defined $pv2vg{$l{pv}} && !defined $vgs{$l{vg}}) {
+ log::l("using $pv2vg{$l{pv}} instead of $l{vg}");
+ $l{vg} = $pv2vg{$l{pv}};
+ }
if_(defined $l{size}, \%l);
} call_dmraid('-r', '-c', '-c');
}