Signed-off-by: Thomas Lamprecht <t.lampre...@proxmox.com>
---
 data/PVE/Cluster.pm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/data/PVE/Cluster.pm b/data/PVE/Cluster.pm
index af30f09..0a9dfa3 100644
--- a/data/PVE/Cluster.pm
+++ b/data/PVE/Cluster.pm
@@ -860,6 +860,8 @@ sub cfs_write_file {
 my $cfs_lock = sub {
     my ($lockid, $timeout, $code, @param) = @_;
 
+    my $prev_alarm = alarm(0); # suspend outer alarm early
+
     my $res;
     my $got_lock = 0;
 
@@ -895,8 +897,8 @@ my $cfs_lock = sub {
 
        # fixed command timeout: cfs locks have a timeout of 120
        # using 60 gives us another 60 seconds to abort the task
-       alarm(60);
        local $SIG{ALRM} = sub { die "got lock timeout - aborting command\n"; };
+       alarm(60);
 
        cfs_update(); # make sure we read latest versions inside code()
 
@@ -907,12 +909,12 @@ my $cfs_lock = sub {
 
     my $err = $@;
 
-    alarm(0);
-
     $err = "no quorum!\n" if !$got_lock && !check_cfs_quorum(1);
 
     rmdir $filename if $got_lock; # if we held the lock always unlock again
 
+    alarm($prev_alarm);
+
     if ($err) {
         $@ = "error with cfs lock '$lockid': $err";
         return undef;
-- 
2.11.0


_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to