From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 3CF5F1FF16E for ; Mon, 3 Mar 2025 13:58:39 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6ECC7A4BA; Mon, 3 Mar 2025 13:58:34 +0100 (CET) Date: Mon, 03 Mar 2025 13:58:28 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Proxmox Backup Server development discussion References: <20250219164847.757184-1-c.ebner@proxmox.com> <20250219164847.757184-3-c.ebner@proxmox.com> In-Reply-To: <20250219164847.757184-3-c.ebner@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1741005633.eo593uhjhw.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.045 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox 2/2] pbs api types: add option to set GC chunk cleanup wait period X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" On February 19, 2025 5:48 pm, Christian Ebner wrote: > Add the `gc-wait-period` option to the datastore tuning parameters. > This allows to specify the time after which the chunks are not > considered in use anymore if their atime has not been updated since > then. This option is only considered, if the `gc-atime-check` is > enabled, to avoid potential data loss. > > The default is to keep chunks within the 24h 5m timespan (given no > active writers). The 5m minimum was chosen to be in line with the > already used safety offset for garbage collection. > > Signed-off-by: Christian Ebner > --- > changes since version 1: > - not present in previous version > > pbs-api-types/src/datastore.rs | 13 +++++++++++++ > 1 file changed, 13 insertions(+) > > diff --git a/pbs-api-types/src/datastore.rs b/pbs-api-types/src/datastore.rs > index a7a9db7d..7542e969 100644 > --- a/pbs-api-types/src/datastore.rs > +++ b/pbs-api-types/src/datastore.rs > @@ -223,6 +223,13 @@ pub enum DatastoreFSyncLevel { > Filesystem, > } > > +pub const GC_WAIT_PERIOD_SCHEMA: Schema = > + IntegerSchema::new("Wait period (in minutes) for garbage collection phase 2 chunk cleanup (default 24h 5m)") > + .minimum(5) > + .maximum(1445) these seem a bit conservative - if we introduce the option, we could also allow to reduce the grace period to 0 or to require longer grace periods? wait period is also a bit of a misnomer IMHO, this is not something where we "wait" per se, but rather something to account for the timestamp information potentially not being accurate.. not sure what a better term would be, "grace period" doesn't really fit either.. it's a kind of "safety margin", maybe something related to that? naming can be quite hard.. maybe gc_atime_safety_margin ? that also implies that setting a non-default value has potential safety implications/risks your data, IMHO more than "reducing a wait period" does.. > + .default(1445) > + .schema(); > + > #[api( > properties: { > "chunk-order": { > @@ -235,6 +242,10 @@ pub enum DatastoreFSyncLevel { > default: true, > type: bool, > }, > + "gc-wait-period": { > + schema: GC_WAIT_PERIOD_SCHEMA, > + optional: true, > + }, > }, > )] > #[derive(Serialize, Deserialize, Default)] > @@ -248,6 +259,8 @@ pub struct DatastoreTuning { > pub sync_level: Option, > #[serde(skip_serializing_if = "Option::is_none")] > pub gc_atime_check: Option, > + #[serde(skip_serializing_if = "Option::is_none")] > + pub gc_wait_period: Option, > } > > pub const DATASTORE_TUNING_STRING_SCHEMA: Schema = StringSchema::new("Datastore tuning options") > -- > 2.39.5 _______________________________________________ pbs-devel mailing list pbs-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel