public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH proxmox-backup] tools/process_locker: Decrement writer count in drop handler
@ 2020-12-17 14:33 Dominik Csapak
  2020-12-18  6:15 ` [pbs-devel] applied: " Dietmar Maurer
  0 siblings, 1 reply; 2+ messages in thread
From: Dominik Csapak @ 2020-12-17 14:33 UTC (permalink / raw)
  To: pbs-devel

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@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





^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pbs-devel] applied: [PATCH proxmox-backup] tools/process_locker: Decrement writer count in drop handler
  2020-12-17 14:33 [pbs-devel] [PATCH proxmox-backup] tools/process_locker: Decrement writer count in drop handler Dominik Csapak
@ 2020-12-18  6:15 ` Dietmar Maurer
  0 siblings, 0 replies; 2+ messages in thread
From: Dietmar Maurer @ 2020-12-18  6:15 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Dominik Csapak

applied

> On 12/17/2020 3:33 PM Dominik Csapak <d.csapak@proxmox.com> wrote:
> 
>  
> 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@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
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-12-18  6:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-17 14:33 [pbs-devel] [PATCH proxmox-backup] tools/process_locker: Decrement writer count in drop handler Dominik Csapak
2020-12-18  6:15 ` [pbs-devel] applied: " Dietmar Maurer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal