From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <s.reiter@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 2F56F6075F
 for <pbs-devel@lists.proxmox.com>; Thu, 15 Oct 2020 09:53:23 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
 by firstgate.proxmox.com (Proxmox) with ESMTP id 23ECCFA01
 for <pbs-devel@lists.proxmox.com>; Thu, 15 Oct 2020 09:53:23 +0200 (CEST)
Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com
 [212.186.127.180])
 (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 id B84B2F9F4
 for <pbs-devel@lists.proxmox.com>; Thu, 15 Oct 2020 09:53:22 +0200 (CEST)
Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1])
 by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 86A7245D81
 for <pbs-devel@lists.proxmox.com>; Thu, 15 Oct 2020 09:53:22 +0200 (CEST)
To: Dietmar Maurer <dietmar@proxmox.com>,
 Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com>
References: <20201014121639.25276-1-s.reiter@proxmox.com>
 <20201014121639.25276-9-s.reiter@proxmox.com>
 <1789123029.110.1602740598761@webmail.proxmox.com>
From: Stefan Reiter <s.reiter@proxmox.com>
Message-ID: <e60d01ee-952e-7faa-c625-4e6419f38dac@proxmox.com>
Date: Thu, 15 Oct 2020 09:53:21 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101
 Thunderbird/60.9.0
MIME-Version: 1.0
In-Reply-To: <1789123029.110.1602740598761@webmail.proxmox.com>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 7bit
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.036 Adjusted score from AWL reputation of From: address
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 NICE_REPLY_A           -0.001 Looks like a legit reply (A)
 RCVD_IN_DNSWL_MED        -2.3 Sender listed at https://www.dnswl.org/,
 medium trust
 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-backup 08/11] datastore: add
 manifest locking
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: Thu, 15 Oct 2020 07:53:23 -0000

On 10/15/20 7:43 AM, Dietmar Maurer wrote:
> Note: This api does not work if you want to create a new manifest (because you
> do not have a lock)
> 
>> +    /// Store a given manifest. Requires a lock acquired with load_manifest_locked for safety.
>>       pub fn store_manifest(
>>           &self,
>>           backup_dir: &BackupDir,
>>           manifest: BackupManifest,
>> +        _manifest_lock: ManifestLock,
>>       ) -> Result<(), Error> {

Correct me if I'm wrong, but I believe we never create a manifest, 
except when we upload it from the client the first time (or on pull, 
which is the same thing).

That's also why I consider the flock directly on the manifest safe: The 
only path we write a new manifest is on creation, where we couldn't have 
possibly had a lock on it before, and whenever we change it afterward we 
use this API, meaning the flock is required to be held, and thus nothing 
can concurrently replace the file underneath us.