[pbs-devel] [PATCH v3 proxmox-backup 0/9] fix #5982: check atime update is honored

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Mar 5 10:41:44 CET 2025


On March 4, 2025 7:35 pm, Christian Ebner wrote:
> These patches add a check to phase 1 of garbage collection in order
> to detect when the filesystem backing the chunk store does not honor
> atime updates. This avoids possible data loss for situations where
> garbage collection could otherwise delete chunks still referenced by
> a backup snaphost's index file.
> 
> The check is performed by inserting a fixed size 4 MiB unencrypted and
> compressed chunk of all-zeros. The check is performed by setting the
> atime to 1 second in the past followed by setting it to now in order to
> test if atime updates are honored immediately. The test is performed
> on datastore creation for early detection and before garbage collection
> phase 1. The test is enabled by default, but an opt-out option can be
> set via the datastore tuning parameters for backwards compatibility.

this is outdated ;)

> 
> Further, add a datastore tuning parameter to reduce the wait period for
> chunk removal in phase 2 of garbage collection. Make this conditional on
> the atime update check being enabled and successful, to avoid possible
> data loss.
> 
> Most notable changes sice version 1 (thanks Fabian and Thomas for
> comments and suggestions):
> - Take into account Linux timestamp granularity, do not set timestamp
>   to the past, as that introduces other error paths such as lack of
>   permissions or fs limitations.
> - Check relatime behavior, if atime behaviour is not honored. Fallback
>   to original cutoff in that case.
> - Adapt tuning parameter names.

but here it is correct :)

> 
> Most notable changes sice version 1 (thanks Fabian and Thomas for
> comments and suggestions):
> - Optimize check by using the all zero chunk
> - Enable the check by default and fail GC job if not honored, but allow
>   to opt-out
> - Add GC wait period tuning option
> 
> Link to the issue in the bugtracker:
> https://bugzilla.proxmox.com/show_bug.cgi?id=5982
> 
> proxmox:
> 
> Christian Ebner (2):
>   pbs api types: add garbage collection atime safety check flag
>   pbs api types: add option to set GC chunk cleanup atime cutoff
> 
>  pbs-api-types/src/datastore.rs | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> proxmox-backup:
> 
> Christian Ebner (7):
>   datastore: use libc's timespec constants instead of redefinition
>   fix #5982: garbage collection: check atime updates are honored
>   ui: expose GC atime safety check flag in datastore tuning options
>   docs: mention GC atime update check for tuning options
>   datastore: conditionally use custom GC atime cutoff if set
>   ui: expose GC atime cutoff in datastore tuning option
>   docs: mention gc-atime-cutoff as datastore tuning option
> 
>  docs/storage.rst                 |  19 +++-
>  pbs-datastore/src/chunk_store.rs | 144 ++++++++++++++++++++++++++++---
>  pbs-datastore/src/datastore.rs   |  32 +++++++
>  src/api2/config/datastore.rs     |   1 +
>  www/Utils.js                     |   9 ++
>  www/datastore/OptionView.js      |  17 ++++
>  6 files changed, 208 insertions(+), 14 deletions(-)
> 
> -- 
> 2.39.5
> 
> 
> 
> _______________________________________________
> pbs-devel mailing list
> pbs-devel at lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel
> 
> 
> 




More information about the pbs-devel mailing list