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 E849769807 for ; Wed, 24 Feb 2021 14:35:48 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id DC24B2AB2A for ; Wed, 24 Feb 2021 14:35:18 +0100 (CET) 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) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 1D4752AADF for ; Wed, 24 Feb 2021 14:35:00 +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 D6D15462CB; Wed, 24 Feb 2021 14:34:59 +0100 (CET) From: Stefan Reiter To: pve-devel@lists.proxmox.com Date: Wed, 24 Feb 2021 14:34:47 +0100 Message-Id: <20210224133447.14692-1-s.reiter@proxmox.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.025 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [meson.build] Subject: [pve-devel] [PATCH pve-qemu] pbs-restore: unref/close target block backend X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Feb 2021 13:35:49 -0000 Use blk_unref to drop the last reference, which will close the block backend and flush all caches and outstanding writes. This is especially important for restoring to Ceph, as the userspace librbd caches will not be flushed if the application exits immediately, leading to potentially incomplete restores. Reported-by: Eneko Lacunza Signed-off-by: Stefan Reiter --- I was now able to reproduce the issue on Ceph, and this successfully fixes it for me. Hash sums of before and after the restore now match up. Without this, the difference in restored images would manifest in the broken one simply missing some data at the back, instead just having zeroes there. This might also be why it's not too noticeable usually - most data would be stored in the earlier parts of the image, which always had enough time to be flushed. This also brings it more in line with the code in vma.c, though we do a bdrv_close_all there too - I did not find that to be necessary here, as blk_unref already closes all attached block driver instances. ...ackup-pbs-restore-new-command-to-restore-from-p.patch | 9 +++++---- debian/patches/pve/0039-PVE-fixup-pbs-restore-API.patch | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/debian/patches/pve/0029-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch b/debian/patches/pve/0029-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch index d7b0f39..2b04e1f 100644 --- a/debian/patches/pve/0029-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch +++ b/debian/patches/pve/0029-PVE-Backup-pbs-restore-new-command-to-restore-from-p.patch @@ -7,8 +7,8 @@ Subject: [PATCH] PVE-Backup: pbs-restore - new command to restore from proxmox Signed-off-by: Thomas Lamprecht --- meson.build | 4 + - pbs-restore.c | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 221 insertions(+) + pbs-restore.c | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 222 insertions(+) create mode 100644 pbs-restore.c diff --git a/meson.build b/meson.build @@ -28,10 +28,10 @@ index 3094f98c47..6f1fafee14 100644 subdir('contrib/elf2dmp') diff --git a/pbs-restore.c b/pbs-restore.c new file mode 100644 -index 0000000000..4bf37ef1fa +index 0000000000..d4daee7e91 --- /dev/null +++ b/pbs-restore.c -@@ -0,0 +1,217 @@ +@@ -0,0 +1,218 @@ +/* + * Qemu image restore helper for Proxmox Backup + * @@ -241,6 +241,7 @@ index 0000000000..4bf37ef1fa + verbose); + + proxmox_restore_disconnect(conn); ++ blk_unref(blk); + + if (res < 0) { + fprintf(stderr, "restore failed: %s\n", pbs_error); diff --git a/debian/patches/pve/0039-PVE-fixup-pbs-restore-API.patch b/debian/patches/pve/0039-PVE-fixup-pbs-restore-API.patch index c5199e0..cc8f30a 100644 --- a/debian/patches/pve/0039-PVE-fixup-pbs-restore-API.patch +++ b/debian/patches/pve/0039-PVE-fixup-pbs-restore-API.patch @@ -9,7 +9,7 @@ Signed-off-by: Stefan Reiter 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pbs-restore.c b/pbs-restore.c -index 4bf37ef1fa..ff3fc38e8a 100644 +index d4daee7e91..4d3f925a1b 100644 --- a/pbs-restore.c +++ b/pbs-restore.c @@ -161,13 +161,19 @@ int main(int argc, char **argv) -- 2.20.1