equal
deleted
inserted
replaced
15 sub _vgs(\%) { |
15 sub _vgs(\%) { |
16 return @volumegroups if @volumegroups; |
16 return @volumegroups if @volumegroups; |
17 |
17 |
18 my $devs = shift; |
18 my $devs = shift; |
19 |
19 |
|
20 # find the physical volumes we've already recognised as „non-removable“ |
|
21 my @known = keys %{$devs->{volume}}, keys %{$devs->{disk}}; |
20 |
22 |
21 # find the physical volumes we've already recognised as „non-removable“ |
23 my @pvs = grep { $_ ~~ @known } map { s/\s*//; (split /:/)[0] } `pvdisplay -c`; |
22 my @pvs = grep { $_ ~~ $devs->{known} } map { s/\s*//; (split /:/)[0] } `pvdisplay -c`; |
24 @volumegroups = map { (split /:/)[1] } `pvdisplay -c @pvs 2>/dev/null`; |
23 return @volumegroups = map { (split /:/)[1] } `pvdisplay -c @pvs 2>/dev/null`; |
25 run("vgchange -ay @volumegroups 2>&1 >/dev/null"); |
|
26 return @volumegroups; |
24 } |
27 } |
25 |
28 |
26 sub volumes(\%) { |
29 sub volumes(\%) { |
27 my ($devs) = @_; |
30 my ($devs) = @_; |
28 |
31 |
29 # we can't just use `pvs', since this would return *all* |
32 # we can't just use `pvs', since this would return *all* |
30 # physical devices known to lvm, not just the non-removable |
33 # physical devices known to lvm, not just the non-removable |
31 |
34 |
32 my @vgs = _vgs(%$devs); |
35 my @vgs = _vgs(%$devs); |
33 run("vgchange -ay @vgs 2>/dev/null"); |
|
34 |
|
35 my @lvs = |
36 my @lvs = |
36 map { abs_path ((dirname $_) . "/" . readlink) } |
37 map { abs_path ((dirname $_) . "/" . readlink) } |
37 map { s/^\s*//; (split /:/)[0] } |
38 map { s/^\s*//; (split /:/)[0] } |
38 grep { (split /:/)[1] ~~ @vgs } `lvdisplay -c`; |
39 grep { (split /:/)[1] ~~ @vgs } `lvdisplay -c`; |
39 foreach (@lvs) { |
40 foreach (@lvs) { |