[pve-devel] [PATCH 2/2] qmp drive-mirror : set big timeout

Alexandre Derumier aderumier at odiso.com
Mon May 11 15:55:22 CEST 2015


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 at odiso.com>
---
 PVE/QemuServer.pm | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index 869dcfe..3d3ef6d 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -5982,14 +5982,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");
-- 
2.1.4



More information about the pve-devel mailing list