qmp drive-mirror : set big timeout

drive-mirror is doing lseek on source image before starting, and this can take a lot of time for big nfs volume
during this time, qmp socket is hanging
http://lists.nongnu.org/archive/html/qemu-devel/2015-05/msg01838.html
so we need to setup a big timeout

qemu devs are currently working to fix this

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
Alexandre Derumier 2015-05-11 15:55:22 +02:00 committed by Dietmar Maurer
parent ad123d97f9
commit 38e0c3b8ae

View File

@ -6092,14 +6092,16 @@ sub qemu_drive_mirror {
my $dst_path = PVE::Storage::path($storecfg, $dst_volid);
my $opts = { timeout => 10, device => "drive-$drive", mode => "existing", sync => "full", target => $dst_path };
#drive-mirror is doing lseek on source image before starting, and this can take a lot of time for big nfs volume
#during this time, qmp socket is hanging
#http://lists.nongnu.org/archive/html/qemu-devel/2015-05/msg01838.html
#so we need to setup a big timeout
my $opts = { timeout => 14400, device => "drive-$drive", mode => "existing", sync => "full", target => $dst_path };
$opts->{format} = $format if $format;
#fixme : sometime drive-mirror timeout, but works fine after.
# (I have see the problem with big volume > 200GB), so we need to eval
eval { vm_mon_cmd($vmid, "drive-mirror", %$opts); };
# ignore errors here
print "drive mirror is starting : this step can take some minutes/hours, depend of disk size and storage speed\n";
vm_mon_cmd($vmid, "drive-mirror", %$opts);
eval {
while (1) {
my $stats = vm_mon_cmd($vmid, "query-block-jobs");