From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <h.laimer@proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by lists.proxmox.com (Postfix) with ESMTPS id CB1D496C56
 for <pbs-devel@lists.proxmox.com>; Fri,  1 Mar 2024 11:43:56 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
 by firstgate.proxmox.com (Proxmox) with ESMTP id A7DEC305AF
 for <pbs-devel@lists.proxmox.com>; Fri,  1 Mar 2024 11:43:26 +0100 (CET)
Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com
 [94.136.29.106])
 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
 key-exchange X25519 server-signature RSA-PSS (2048 bits))
 (No client certificate requested)
 by firstgate.proxmox.com (Proxmox) with ESMTPS
 for <pbs-devel@lists.proxmox.com>; Fri,  1 Mar 2024 11:43:25 +0100 (CET)
Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1])
 by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 7EB13415C4
 for <pbs-devel@lists.proxmox.com>; Fri,  1 Mar 2024 11:43:25 +0100 (CET)
Mime-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; charset=UTF-8
Date: Fri, 01 Mar 2024 11:43:24 +0100
Message-Id: <CZICNZXYAZPE.3RIRCIN2D1GAD@dev>
To: "Proxmox Backup Server development discussion"
 <pbs-devel@lists.proxmox.com>
From: "Hannes Laimer" <h.laimer@proxmox.com>
X-Mailer: aerc 0.14.0
References: <20240222103319.49966-1-h.laimer@proxmox.com>
 <CZHQC54Z023V.3EGPI7YN8JAQG@proxmox.com>
In-Reply-To: <CZHQC54Z023V.3EGPI7YN8JAQG@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.007 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
 T_SCC_BODY_TEXT_LINE    -0.01 -
 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See
 http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more
 information. [proxmox.com]
Subject: Re: [pbs-devel] [PATCH proxmox-backup] datastore: remove datastore
 from internal cache based on maintenance mode
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
X-List-Received-Date: Fri, 01 Mar 2024 10:43:56 -0000

Thanks for the review, will send a v2

On Thu Feb 29, 2024 at 6:13 PM CET, Gabriel Goller wrote:
> Tested this thoroughly and it works as advertised!
>
> Just some small nits inline:
>
> >  impl MaintenanceMode {
> > +    /// Used for deciding weather the datastore is cleared from the in=
ternal cache after the last
>
> Small typo: weather -> whether
>
> > +            // remove datastore from cache iff last task finished
> > +            // and datastore is in a maintenance mode that says it sho=
uld be
>
> Did something get cut off here? The sentence doesn't sound correct...
>

I see where you're coming from, if the maintanance mode says it should
be clear from cache, since the maintenance mode defines weather it
should be or not. But I'll phrase this better

> > +            let remove_from_cache =3D last_task
> > +                && pbs_config::datastore::config()
> > +                    .and_then(|(s, _)| s.lookup::<DataStoreConfig>("da=
tastore", &self.name()))
>
> `self.name()` is enough here, we don't need `&self.name()`
>
> > +    pub fn update_datastore_cache() -> Result<(), Error> {
> > +        let (config, _digest) =3D pbs_config::datastore::config()?;
> > +        for (store, (_, _)) in &config.sections {
> > +            let datastore: DataStoreConfig =3D config.lookup("datastor=
e", &store)?;
>
> `store` is already a &String, we don't need to write `&store`
>
> > +            if datastore
> > +                .get_maintenance_mode()
> > +                .map_or(false, |m| m.clear_from_cache())
> > +            {
> > +                let _ =3D DataStore::lookup_datastore(&store, Some(Ope=
ration::Lookup));
>
> Same here
>
> >                              match operation {
> >                                  Operation::Read =3D> task.active_opera=
tions.read +=3D count,
> >                                  Operation::Write =3D> task.active_oper=
ations.write +=3D count,
> >                                  Operation::Lookup =3D> (), // no IO mu=
st happen there
> >                              };
> > +                            updated_active_operations =3D task.active_=
operations.clone();
>
> You can remove the `.clone()` call here
>
>
> Consider:
>
> Tested-by: Gabriel Goller <g.goller@proxmox.com>
> Reviewed-by: Gabriel Goller <g.goller@proxmox.com>
>
>
> _______________________________________________
> pbs-devel mailing list
> pbs-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel