pbs-restore: unref/close target block backend

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 <elacunza@binovo.es>
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
This commit is contained in:
Stefan Reiter 2021-02-24 14:34:47 +01:00 committed by Thomas Lamprecht
parent 42a90c4e1c
commit 4194124719
2 changed files with 6 additions and 5 deletions

View File

@ -7,8 +7,8 @@ Subject: [PATCH] PVE-Backup: pbs-restore - new command to restore from proxmox
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com> Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
--- ---
meson.build | 4 + meson.build | 4 +
pbs-restore.c | 217 ++++++++++++++++++++++++++++++++++++++++++++++++++ pbs-restore.c | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 221 insertions(+) 2 files changed, 222 insertions(+)
create mode 100644 pbs-restore.c create mode 100644 pbs-restore.c
diff --git a/meson.build b/meson.build diff --git a/meson.build b/meson.build
@ -28,10 +28,10 @@ index 3094f98c47..6f1fafee14 100644
subdir('contrib/elf2dmp') subdir('contrib/elf2dmp')
diff --git a/pbs-restore.c b/pbs-restore.c diff --git a/pbs-restore.c b/pbs-restore.c
new file mode 100644 new file mode 100644
index 0000000000..4bf37ef1fa index 0000000000..d4daee7e91
--- /dev/null --- /dev/null
+++ b/pbs-restore.c +++ b/pbs-restore.c
@@ -0,0 +1,217 @@ @@ -0,0 +1,218 @@
+/* +/*
+ * Qemu image restore helper for Proxmox Backup + * Qemu image restore helper for Proxmox Backup
+ * + *
@ -241,6 +241,7 @@ index 0000000000..4bf37ef1fa
+ verbose); + verbose);
+ +
+ proxmox_restore_disconnect(conn); + proxmox_restore_disconnect(conn);
+ blk_unref(blk);
+ +
+ if (res < 0) { + if (res < 0) {
+ fprintf(stderr, "restore failed: %s\n", pbs_error); + fprintf(stderr, "restore failed: %s\n", pbs_error);

View File

@ -9,7 +9,7 @@ Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
1 file changed, 8 insertions(+), 2 deletions(-) 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/pbs-restore.c b/pbs-restore.c diff --git a/pbs-restore.c b/pbs-restore.c
index 4bf37ef1fa..ff3fc38e8a 100644 index d4daee7e91..4d3f925a1b 100644
--- a/pbs-restore.c --- a/pbs-restore.c
+++ b/pbs-restore.c +++ b/pbs-restore.c
@@ -161,13 +161,19 @@ int main(int argc, char **argv) @@ -161,13 +161,19 @@ int main(int argc, char **argv)