[pve-devel] applied: [PATCH common v2] (maybe) fixes #1229: fix port reservation

Wolfgang Bumiller w.bumiller at proxmox.com
Thu Feb 16 15:04:03 CET 2017


applied and (as requested) updated the '.flock' part of the commit
message ;-)

On Thu, Feb 16, 2017 at 09:24:18AM +0100, Dominik Csapak wrote:
> when reserving ports, we use lock_file to lock the
> reservation file, but then use file_set_content which
> writes a new file and renames it, making the lock invalid
> and different processes waiting for the lock get inconsistent
> data
> 
> instead we use a ".flock" file for the lock, so that we don't
> lose the lock when writing the reservation file
> 
> this should fix the problem that sometimes multiple vms get the
> same vnc/spice port
> 
> Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
> ---
> changes from v1:
>  used a lockfile in /var/lock with .lck naming convention
>  src/PVE/Tools.pm | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
> index 82d598e..69c8730 100644
> --- a/src/PVE/Tools.pm
> +++ b/src/PVE/Tools.pm
> @@ -799,7 +799,7 @@ sub next_unused_port {
>  	return $newport;
>      };
>  
> -    my $p = lock_file($filename, 10, $code);
> +    my $p = lock_file('/var/lock/pve-ports.lck', 10, $code);
>      die $@ if $@;
>  
>      die "unable to find free port (${range_start}-${range_end})\n" if !$p;
> -- 
> 2.1.4




More information about the pve-devel mailing list