From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 069D46B3E7 for ; Fri, 18 Mar 2022 15:07:51 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id ECE921E838 for ; Fri, 18 Mar 2022 15:07:20 +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 id 012211E823 for ; Fri, 18 Mar 2022 15:07:20 +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 C94D146EF4 for ; Fri, 18 Mar 2022 15:07:19 +0100 (CET) From: Stefan Sterz To: pbs-devel@lists.proxmox.com Date: Fri, 18 Mar 2022 15:06:50 +0100 Message-Id: <20220318140655.170656-1-s.sterz@proxmox.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.000 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% 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 - Subject: [pbs-devel] [RFC PATCH 0/5] fix #3935: refactor datastore locking to use tmpfs 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: , X-List-Received-Date: Fri, 18 Mar 2022 14:07:51 -0000 This RFC overhauls the locking mechanism for snapshots and backup groups in pbs-datastore and wherever groups and snapshots are accessed. Sending this as an RFC in case I missed places where locking occurs on groups, snapshots or manifests. The first patch in this series moves most of the locking into new functions that are part of the `datastore` trait. These functions create a mirror of the directory structure under `/run/proxmox-backup/locks` that is used for locking. The second patch adds one more locking function that enables shared locks on groups. This functionality has not been needed so far, but might be useful in the future. I am unsure whether it should be included. The third patch moves the `/run/proxmox-backup/locks` path into a constant in order to be able to switch the lock location more easily latter. Sending this as its own patch as it also affects manifest locking in a minor way, unlike the previous patches. Lastly, patch four and five fix issues that are locking related and currently present in the codebase. For patch four, see my comment there. Patch five resolves a race condition when two clients try to change the owner of a data store via the API. Patch five depends on patch one, but patch four could be applied independently. Stefan Sterz (5): fix #3935: datastore/api2/backup: move datastore locking to '/run' fix #3935: datastore: add shared group lock to datastore fix #3935: datastore/config: add a constant for the locking directory fix #3935: datastore: keep manifest locks, avoid similar locking issue fix: api: avoid race condition in set_backup_owner pbs-datastore/src/datastore.rs | 95 +++++++++++++++++++++------- pbs-datastore/src/snapshot_reader.rs | 12 +--- src/api2/admin/datastore.rs | 9 ++- src/api2/backup/mod.rs | 5 +- src/api2/reader/mod.rs | 7 +- src/backup/verify.rs | 8 +-- 6 files changed, 88 insertions(+), 48 deletions(-) -- 2.30.2