[pve-devel] applied: [PATCH qemu-server] remove legacy vm_monitor_command
Wolfgang Bumiller
w.bumiller at proxmox.com
Wed Mar 14 11:19:34 CET 2018
applied
On Tue, Mar 13, 2018 at 08:21:59AM +0100, Thomas Lamprecht wrote:
> 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