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 99D78B8CA3 for ; Wed, 6 Dec 2023 14:29:10 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 7BA362757 for ; Wed, 6 Dec 2023 14:28:40 +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 ; Wed, 6 Dec 2023 14:28:38 +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 BC5CE42501 for ; Wed, 6 Dec 2023 14:28:38 +0100 (CET) From: Gabriel Goller To: pbs-devel@lists.proxmox.com Date: Wed, 6 Dec 2023 14:28:32 +0100 Message-Id: <20231206132834.240700-1-g.goller@proxmox.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.160 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. [man7.org] Subject: [pbs-devel] [PATCH v2 proxmox{, -backup} 0/2] Move ProcessLocker to 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: Wed, 06 Dec 2023 13:29:10 -0000 This moves the `ProcessLocker`'s `.lock` file to `/run/proxmox-backup/locks` (tmpfs). The first patch only converts all the `F_SETLK` flags to `F_OFD_SETLK` flags. This changes normal locks, which are based on the process, to locks based on an open file descriptor. This actually doesn't change anything, because we use mutexes, so the lock is already thread-safe. It would be cleaner though and would safe us from weird quirks like closing the lock-file which would drop all the locks when using the POSIX `F_SETLK`. See more here [0]. The second patch changes the location of the `.lock` file to the `/run/proxmox-backup/locks` tmpfs directory. Like this we don't need to lazy-lock anything and we can keep the lockfile open all the time. Unmounting datastores is now possible as the lock file is not on the datastore mount anymore. Another thing is noticed is that datastores that are not available (e.g. have been unmounted) don't display an error on the ui. That means the only way to see if a datastore is online is to either start a gc or verify run. An idea for a future patch would be to check if the datastore exists and (maybe) even automatically set the maintenance mode to `offline` if it doesn't exist? [0]: https://man7.org/linux/man-pages/man2/fcntl.2.html Changes since version 1: - create directory path if it doesn't exist. (f.e. on my instance the `locks` directory did not exist yet) proxmox: Gabriel Goller (1): process_locker: use ofd locking proxmox-sys/src/process_locker.rs | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) proxmox-backup: Gabriel Goller (1): datastore: store datastore lock on tmpfs pbs-datastore/src/chunk_store.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) Summary over all repositories: 2 files changed, 23 insertions(+), 14 deletions(-) -- murpp v0.4.0