]> git.proxmox.com Git - qemu-server.git/blobdiff - PVE/QMPClient.pm
followup: fixup comment
[qemu-server.git] / PVE / QMPClient.pm
index a527ffc4102f24446c6b79d82eca345fb6dde72f..6be4a41300c189d9ec29647011da3d796cfb35a9 100755 (executable)
@@ -92,6 +92,7 @@ sub cmd {
     my $callback = sub {
        my ($vmid, $resp) = @_;
        $result = $resp->{'return'};
+       $result = { error => $resp->{'error'} } if !defined($result) && $resp->{'error'};
     };
 
     die "no command specified" if !($cmd && $cmd->{execute});
@@ -107,17 +108,26 @@ sub cmd {
            $timeout = 60*60; # 1 hour
        } elsif ($cmd->{execute} =~ m/^(eject|change)/) {
            $timeout = 60; # note: cdrom mount command is slow
-       } elsif ($cmd->{execute} eq 'guest-fsfreeze-freeze' ||
-                $cmd->{execute} eq 'guest-fsfreeze-thaw') {
+       } elsif ($cmd->{execute} eq 'guest-fsfreeze-freeze') {
+           # freeze syncs all guest FS, if we kill it it stays in an unfreezable
+           # locked state with high probability, so use an generous timeout
+           $timeout = 60*60; # 1 hour
+       } elsif ($cmd->{execute} eq 'guest-fsfreeze-thaw') {
+           # thaw has no possible long blocking actions, either it returns
+           # instantly or never (dead locked)
            $timeout = 10;
        } elsif ($cmd->{execute} eq 'savevm-start' ||
                 $cmd->{execute} eq 'savevm-end' ||
                 $cmd->{execute} eq 'query-backup' ||
                 $cmd->{execute} eq 'query-block-jobs' ||
+                $cmd->{execute} eq 'block-job-cancel' ||
+                $cmd->{execute} eq 'block-job-complete' ||
                 $cmd->{execute} eq 'backup-cancel' ||
                 $cmd->{execute} eq 'query-savevm' ||
                 $cmd->{execute} eq 'delete-drive-snapshot' || 
                 $cmd->{execute} eq 'guest-shutdown' ||
+                $cmd->{execute} eq 'blockdev-snapshot-internal-sync' ||
+                $cmd->{execute} eq 'blockdev-snapshot-delete-internal-sync' ||
                 $cmd->{execute} eq 'snapshot-drive'  ) {
            $timeout = 10*60; # 10 mins ?
        } else {