avoid call to lvs when deactivating devices
Because this can be slow if there are many devices.
This commit is contained in:
@ -1981,8 +1981,6 @@ sub deactivate_volumes {
|
|||||||
|
|
||||||
return if !($vollist && scalar(@$vollist));
|
return if !($vollist && scalar(@$vollist));
|
||||||
|
|
||||||
my $lvs = lvm_lvs ();
|
|
||||||
|
|
||||||
my @errlist = ();
|
my @errlist = ();
|
||||||
foreach my $volid (@$vollist) {
|
foreach my $volid (@$vollist) {
|
||||||
my ($storeid, $volname) = parse_volume_id ($volid);
|
my ($storeid, $volname) = parse_volume_id ($volid);
|
||||||
@ -1990,10 +1988,9 @@ sub deactivate_volumes {
|
|||||||
my $scfg = storage_config ($cfg, $storeid);
|
my $scfg = storage_config ($cfg, $storeid);
|
||||||
|
|
||||||
if ($scfg->{type} eq 'lvm') {
|
if ($scfg->{type} eq 'lvm') {
|
||||||
my ($name) = parse_volname_lvm ($volname);
|
|
||||||
|
|
||||||
if ($lvs->{$scfg->{vgname}}->{$name}) {
|
|
||||||
my $path = path ($cfg, $volid);
|
my $path = path ($cfg, $volid);
|
||||||
|
next if ! -b $path;
|
||||||
|
|
||||||
my $cmd = ['/sbin/lvchange', '-aln', $path];
|
my $cmd = ['/sbin/lvchange', '-aln', $path];
|
||||||
eval { run_command($cmd, errmsg => "can't deactivate LV '$volid'"); };
|
eval { run_command($cmd, errmsg => "can't deactivate LV '$volid'"); };
|
||||||
if (my $err = $@) {
|
if (my $err = $@) {
|
||||||
@ -2002,7 +1999,6 @@ sub deactivate_volumes {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
die "volume deativation failed: " . join(' ', @errlist)
|
die "volume deativation failed: " . join(' ', @errlist)
|
||||||
if scalar(@errlist);
|
if scalar(@errlist);
|
||||||
|
|||||||
Reference in New Issue
Block a user