--- 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" };
}