(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 82d598e..69c8730 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;