[pve-devel] [PATCH qemu-server] remove legacy vm_monitor_command

Thomas Lamprecht t.lamprecht at proxmox.com
Tue Mar 13 08:21:59 CET 2018


We introduced our QMP socket with commit
c971c4f2213524f27125f558978a428b53628f34 (29.05.2012)

Already tried to remove this with commit
7b7c6d1b5dcee25e1194d4b8a0219bd5c31a5639 (13.07.2012)

But reverted that to allow migration of VMs still using the old
montior to ones which already switched over to the new QMP one,
in commit dab36e1ee924be0efab3f85937c23910b456f4b9 (17.08.2012)
see bug #242 for reference

This was all done  and released in PVE 2.2, as no migration through
nodes differing more than one major version is possible we can
finally remove this code for good.

Signed-off-by: Thomas Lamprecht <t.lamprecht at proxmox.com>
---
 PVE/QemuServer.pm | 79 -------------------------------------------------------
 1 file changed, 79 deletions(-)

diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
index a26b2ab..5462d07 100644
--- a/PVE/QemuServer.pm
+++ b/PVE/QemuServer.pm
@@ -4169,81 +4169,6 @@ sub __read_avail {
     return $res;
 }
 
-# old code, only used to shutdown old VM after update
-sub vm_monitor_command {
-    my ($vmid, $cmdstr, $nocheck) = @_;
-
-    my $res;
-
-    eval {
-	die "VM $vmid not running\n" if !check_running($vmid, $nocheck);
-
-	my $sname = "${var_run_tmpdir}/$vmid.mon";
-
-	my $sock = IO::Socket::UNIX->new( Peer => $sname ) ||
-	    die "unable to connect to VM $vmid socket - $!\n";
-
-	my $timeout = 3;
-
-	# hack: migrate sometime blocks the monitor (when migrate_downtime
-	# is set)
-	if ($cmdstr =~ m/^(info\s+migrate|migrate\s)/) {
-	    $timeout = 60*60; # 1 hour
-	}
-
-	# read banner;
-	my $data = __read_avail($sock, $timeout);
-
-	if ($data !~ m/^QEMU\s+(\S+)\s+monitor\s/) {
-	    die "got unexpected qemu monitor banner\n";
-	}
-
-	my $sel = new IO::Select;
-	$sel->add($sock);
-
-	if (!scalar(my @ready = $sel->can_write($timeout))) {
-	    die "monitor write error - timeout";
-	}
-
-	my $fullcmd = "$cmdstr\r";
-
-	# syslog('info', "VM $vmid monitor command: $cmdstr");
-
-	my $b;
-	if (!($b = $sock->syswrite($fullcmd)) || ($b != length($fullcmd))) {
-	    die "monitor write error - $!";
-	}
-
-	return if ($cmdstr eq 'q') || ($cmdstr eq 'quit');
-
-	$timeout = 20;
-
-	if ($cmdstr =~ m/^(info\s+migrate|migrate\s)/) {
-	    $timeout = 60*60; # 1 hour
-	} elsif ($cmdstr =~ m/^(eject|change)/) {
-	    $timeout = 60; # note: cdrom mount command is slow
-	}
-	if ($res = __read_avail($sock, $timeout)) {
-
-	    my @lines = split("\r?\n", $res);
-
-	    shift @lines if $lines[0] !~ m/^unknown command/; # skip echo
-
-	    $res = join("\n", @lines);
-	    $res .= "\n";
-	}
-    };
-
-    my $err = $@;
-
-    if ($err) {
-	syslog("err", "VM $vmid monitor command failed - $err");
-	die $err;
-    }
-
-    return $res;
-}
-
 sub qemu_block_resize {
     my ($vmid, $deviceid, $storecfg, $volid, $size) = @_;
 
@@ -5049,10 +4974,6 @@ sub vm_qmp_command {
 	    my $qmpclient = PVE::QMPClient->new();
 
 	    $res = $qmpclient->cmd($vmid, $cmd, $timeout);
-	} elsif (-e "${var_run_tmpdir}/$vmid.mon") {
-	    die "can't execute complex command on old monitor - stop/start your vm to fix the problem\n"
-		if scalar(%{$cmd->{arguments}});
-	    vm_monitor_command($vmid, $cmd->{execute}, $nocheck);
 	} else {
 	    die "unable to open monitor socket\n";
 	}
-- 
2.14.2





More information about the pve-devel mailing list