mirror of
https://git.proxmox.com/git/qemu-server
synced 2025-08-12 10:10:39 +00:00
update_disk_config: use config volume iterators instead of loops
Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
beed0e3b0c
commit
ca04977c63
@ -5758,35 +5758,37 @@ sub update_disk_config {
|
|||||||
my $referencedpath = {};
|
my $referencedpath = {};
|
||||||
|
|
||||||
# update size info
|
# update size info
|
||||||
foreach my $opt (keys %$conf) {
|
PVE::QemuConfig->foreach_volume($conf, undef, sub {
|
||||||
if (is_valid_drivename($opt)) {
|
my ($opt, $drive) = @_;
|
||||||
my $drive = parse_drive($opt, $conf->{$opt});
|
|
||||||
my $volid = $drive->{file};
|
|
||||||
next if !$volid;
|
|
||||||
|
|
||||||
# mark volid as "in-use" for next step
|
my $volid = $drive->{file};
|
||||||
$referenced->{$volid} = 1;
|
return if !$volid;
|
||||||
if ($volid_hash->{$volid} &&
|
|
||||||
(my $path = $volid_hash->{$volid}->{path})) {
|
|
||||||
$referencedpath->{$path} = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
next if drive_is_cdrom($drive);
|
# mark volid as "in-use" for next step
|
||||||
next if !$volid_hash->{$volid};
|
$referenced->{$volid} = 1;
|
||||||
|
if ($volid_hash->{$volid} &&
|
||||||
my ($updated, $old_size, $new_size) = PVE::QemuServer::Drive::update_disksize($drive, $volid_hash);
|
(my $path = $volid_hash->{$volid}->{path})) {
|
||||||
if (defined($updated)) {
|
$referencedpath->{$path} = 1;
|
||||||
$changes = 1;
|
|
||||||
$conf->{$opt} = print_drive($updated);
|
|
||||||
print "$prefix size of disk '$volid' ($opt) updated from $old_size to $new_size\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
return if drive_is_cdrom($drive);
|
||||||
|
return if !$volid_hash->{$volid};
|
||||||
|
|
||||||
|
my ($updated, $old_size, $new_size) = PVE::QemuServer::Drive::update_disksize($drive, $volid_hash);
|
||||||
|
if (defined($updated)) {
|
||||||
|
$changes = 1;
|
||||||
|
$conf->{$opt} = print_drive($updated);
|
||||||
|
print "$prefix size of disk '$volid' ($opt) updated from $old_size to $new_size\n";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
# remove 'unusedX' entry if volume is used
|
# remove 'unusedX' entry if volume is used
|
||||||
foreach my $opt (keys %$conf) {
|
PVE::QemuConfig->foreach_unused_volume($conf, sub {
|
||||||
next if $opt !~ m/^unused\d+$/;
|
my ($opt, $drive) = @_;
|
||||||
my $volid = $conf->{$opt};
|
|
||||||
|
my $volid = $drive->{file};
|
||||||
|
return if !$volid;
|
||||||
|
|
||||||
my $path = $volid_hash->{$volid}->{path} if $volid_hash->{$volid};
|
my $path = $volid_hash->{$volid}->{path} if $volid_hash->{$volid};
|
||||||
if ($referenced->{$volid} || ($path && $referencedpath->{$path})) {
|
if ($referenced->{$volid} || ($path && $referencedpath->{$path})) {
|
||||||
print "$prefix remove entry '$opt', its volume '$volid' is in use\n";
|
print "$prefix remove entry '$opt', its volume '$volid' is in use\n";
|
||||||
@ -5796,7 +5798,7 @@ sub update_disk_config {
|
|||||||
|
|
||||||
$referenced->{$volid} = 1;
|
$referenced->{$volid} = 1;
|
||||||
$referencedpath->{$path} = 1 if $path;
|
$referencedpath->{$path} = 1 if $path;
|
||||||
}
|
});
|
||||||
|
|
||||||
foreach my $volid (sort keys %$volid_hash) {
|
foreach my $volid (sort keys %$volid_hash) {
|
||||||
next if $volid =~ m/vm-$vmid-state-/;
|
next if $volid =~ m/vm-$vmid-state-/;
|
||||||
|
Loading…
Reference in New Issue
Block a user