diff -r aecda2763079 -r 4e3753b998a9 SI/lvm.pm --- a/SI/lvm.pm Mon Jan 18 22:55:10 2010 +0100 +++ b/SI/lvm.pm Tue Jan 19 14:49:43 2010 +0100 @@ -5,7 +5,8 @@ use strict; use warnings; use IO::File; - +use Cwd qw(abs_path); +use File::Basename; use SI::tools; @@ -16,6 +17,7 @@ my $devs = shift; + # find the physical volumes we've already recognised as „non-removable“ my @pvs = grep { $_ ~~ $devs->{known} } map { s/\s*//; (split /:/)[0] } `pvdisplay -c`; return @volumegroups = map { (split /:/)[1] } `pvdisplay -c @pvs 2>/dev/null`; @@ -28,10 +30,12 @@ # physical devices known to lvm, not just the non-removable my @vgs = _vgs(%$devs); - my @lvs = map { readlink } + run("vgchange -ay @vgs 2>/dev/null"); + + my @lvs = + map { abs_path ((dirname $_) . "/" . readlink) } map { s/^\s*//; (split /:/)[0] } grep { (split /:/)[1] ~~ @vgs } `lvdisplay -c`; - foreach (@lvs) { $devs->{volume}{$_} = { origin => "lvm" }; }