[pbs-devel] [PATCH proxmox-backup] tools/process_locker: Decrement writer count in drop handler

Dominik Csapak d.csapak at proxmox.com
Thu Dec 17 15:33:31 CET 2020


of ProcessLockSharedGuard.

We use a counter to determine if we can unlock the file again, but
we never actually decremented the writer count, so we held the
lock forever.

This fixes the issue that we could not start a garbage collect after
a reload, as long as the old process is still running, even when that
process has no active backup anymore but another long running task
(e.g. file download, terminal, etc.).

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 src/tools/process_locker.rs | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/tools/process_locker.rs b/src/tools/process_locker.rs
index 56f8c514..6ab2e1c1 100644
--- a/src/tools/process_locker.rs
+++ b/src/tools/process_locker.rs
@@ -55,7 +55,9 @@ impl  Drop for ProcessLockSharedGuard {
             if let Err(err) = nix::fcntl::fcntl(data.file.as_raw_fd(), nix::fcntl::FcntlArg::F_SETLKW(&op)) {
                 panic!("unable to drop writer lock - {}", err);
             }
-            data.writers = 0;
+        }
+        if data.writers > 0 {
+            data.writers -= 1;
         }
     }
 }
-- 
2.20.1





More information about the pbs-devel mailing list