]> git.proxmox.com Git - proxmox-backup.git/commit - pbs-datastore/src/datastore.rs
datastore: lookup: reuse ChunkStore on stale datastore re-open
authorDominik Csapak <d.csapak@proxmox.com>
Thu, 2 Jun 2022 14:27:44 +0000 (16:27 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 2 Jun 2022 15:00:49 +0000 (17:00 +0200)
commit0bd9c87010e25634ea6a91c65c2ff8088372340d
tree0124b626fa36d6df6907dbfbfa9132cbe0448378
parentfbfb64a6b2ef88ecbfa2ba48af3b5a9c8d6bec9c
datastore: lookup: reuse ChunkStore on stale datastore re-open

When re-opening a datastore due to the cached entry being stale
(config change) but also if the last re-open was >60s ago). On
datastore open the chunk store was also re-opened, which in turn
creates a new ProcessLocker, loosing any existing shared lock which
can cause conflicts between long running (24h+) backups  and GC.

To fix this, reuse the existing ChunkStore, and thus  its
ProcessLocker, when creating a up-to-date datastore instance on
lookup, since only the datastore config should be reloaded. This is
fine as the ChunkStore path is not updatable over our API.

This was always a potential issue but got exposed in practice by
commit 118deb4db8e709b02704bc66c0551bfa7e4369ed which introduced the
unconditional "re-open after 60s" mechanism.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
 [ T: reword commit message a bit and reference commit that made the
   issue much more likely ]
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
pbs-datastore/src/datastore.rs