[pve-devel] applied: [PATCH qemu-server] start: fork before entering scope

Thomas Lamprecht t.lamprecht at proxmox.com
Tue May 8 09:26:43 CEST 2018


Am 05/07/2018 um 12:09 PM schrieb Wolfgang Bumiller:
> To avoid potential cleanup & post-start actions to cause
> unwanted processes (such as gpg-agent) to be started as part
> of the scope, as the enter_systemd_scope() function causes
> the current process to enter the scope.
> 

makes sense to me to not bring the parent process into the scope,
tested a bit around, found no regressions, as expected from this:

applied

> Signed-off-by: Wolfgang Bumiller <w.bumiller at proxmox.com>
> ---
> This either fixes the 'scope already exists' issue some people have with
> backups, or narrows it down to something that happens from out of
> qemu...
> 
>   PVE/QemuServer.pm | 18 +++++++++---------
>   1 file changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm
> index 015c725..0c63d6c 100644
> --- a/PVE/QemuServer.pm
> +++ b/PVE/QemuServer.pm
> @@ -4841,6 +4841,13 @@ sub vm_start {
>   	}
>   	$properties{timeout} = 10 if $statefile; # setting up the scope shoul be quick
>   
> +	my $run_qemu = sub {
> +	    PVE::Tools::run_fork sub {
> +		PVE::Tools::enter_systemd_scope($vmid, "Proxmox VE VM $vmid", %properties);
> +		run_command($cmd, %run_params);
> +	    };
> +	};
> +
>   	if ($conf->{hugepages}) {
>   
>   	    my $code = sub {
> @@ -4850,11 +4857,7 @@ sub vm_start {
>   		PVE::QemuServer::Memory::hugepages_mount();
>   		PVE::QemuServer::Memory::hugepages_allocate($hugepages_topology, $hugepages_host_topology);
>   
> -		eval  {
> -		    PVE::Tools::enter_systemd_scope($vmid, "Proxmox VE VM $vmid", %properties);
> -		    run_command($cmd, %run_params);
> -		};
> -
> +		eval { $run_qemu->() };
>   		if (my $err = $@) {
>   		    PVE::QemuServer::Memory::hugepages_reset($hugepages_host_topology);
>   		    die $err;
> @@ -4865,10 +4868,7 @@ sub vm_start {
>   	    eval { PVE::QemuServer::Memory::hugepages_update_locked($code); };
>   
>   	} else {
> -	    eval  {
> -		PVE::Tools::enter_systemd_scope($vmid, "Proxmox VE VM $vmid", %properties);
> -		run_command($cmd, %run_params);
> -	    };
> +	    eval { $run_qemu->() };
>   	}
>   
>   	if (my $err = $@) {
> 




More information about the pve-devel mailing list