5
0
mirror of git://git.proxmox.com/git/qemu-server.git synced 2025-01-08 21:18:03 +03:00

fix #2816: restore: remove timeout when allocating disks

10 minutes is not long enough when disks are large and/or network
storages are used when preallocation is not disabled. The default is
metadata preallocation for qcow2, so there are still reports of the
issue [0][1]. If allocation really does not finish like the comment
describing the timeout feared, just let the user cancel it.

Also note that when restoring a PBS backup, there is no timeout for
disk allocation, and there don't seem to be any user complaints yet.

The 5 second timeout for receiving the config from vma is kept,
because certain corruptions in the VMA header can lead to the
operation hanging there.

There is no need for the $tmp variable before setting back the old
timeout, because that is at least one second, so we'll always be able
to set the $oldtimeout variable to undef in time in practice.
Currently, there shouldn't even be an outer timeout in the first
place, because the only call path leading to here is via the create
API (also used by qmrestore), both of which don't set a timeout.

[0]: https://forum.proxmox.com/threads/126825/
[1]: https://forum.proxmox.com/threads/128093/

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
This commit is contained in:
Fiona Ebner 2023-09-12 11:16:15 +02:00 committed by Thomas Lamprecht
parent 6d1ac42b95
commit 853757ccec

View File

@ -7483,14 +7483,11 @@ sub restore_vma_archive {
$devinfo->{$devname} = { size => $size, dev_id => $dev_id };
} elsif ($line =~ m/^CTIME: /) {
# we correctly received the vma config, so we can disable
# the timeout now for disk allocation (set to 10 minutes, so
# that we always timeout if something goes wrong)
alarm(600);
# the timeout now for disk allocation
alarm($oldtimeout || 0);
$oldtimeout = undef;
&$print_devmap();
print $fifofh "done\n";
my $tmp = $oldtimeout || 0;
$oldtimeout = undef;
alarm($tmp);
close($fifofh);
$fifofh = undef;
}