SI/lvm.pm
changeset 15 4e3753b998a9
parent 13 2e3ad71484ea
child 16 fd87c1e3b451
--- 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" };
     }