]> git.proxmox.com Git - pve-common.git/commitdiff
(maybe) fixes #1229: fix port reservation
authorDominik Csapak <d.csapak@proxmox.com>
Thu, 16 Feb 2017 08:24:18 +0000 (09:24 +0100)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 16 Feb 2017 14:02:55 +0000 (15:02 +0100)
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 designated lock 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@proxmox.com>
src/PVE/Tools.pm

index 82d598e5bfc614eaa2b6153a785e9b48a548ec2a..69c87304396129fe7dc7d70847299fb0db256b84 100644 (file)
@@ -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;