diff --git a/.gitignore b/.gitignore index b6ebf88..2fbdba0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ SOURCES/libguestfs.keyring -SOURCES/nbdkit-1.28.2.tar.gz +SOURCES/nbdkit-1.28.3.tar.gz diff --git a/.nbdkit.metadata b/.nbdkit.metadata index 2e5f25c..5720bc3 100644 --- a/.nbdkit.metadata +++ b/.nbdkit.metadata @@ -1,2 +1,2 @@ cc1b37b9cfafa515aab3eefd345ecc59aac2ce7b SOURCES/libguestfs.keyring -ee726a0b63e9a52b787de1462b11e1af34ca51ab SOURCES/nbdkit-1.28.2.tar.gz +0ec6c759802dd658a7e78b657886c1af11fd16e8 SOURCES/nbdkit-1.28.3.tar.gz diff --git a/SOURCES/0001-vddk-Refactor-how-D-vddk.stats-1-is-collected.patch b/SOURCES/0001-vddk-Refactor-how-D-vddk.stats-1-is-collected.patch index ba66d22..75f6622 100644 --- a/SOURCES/0001-vddk-Refactor-how-D-vddk.stats-1-is-collected.patch +++ b/SOURCES/0001-vddk-Refactor-how-D-vddk.stats-1-is-collected.patch @@ -1,4 +1,4 @@ -From 96ee8f6f2844bceb8e27ffb442359a2b7521c950 Mon Sep 17 00:00:00 2001 +From 40016b4cf27cd68c55fc505e97b658b4fc3643c9 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 21 Oct 2021 14:49:52 +0100 Subject: [PATCH] vddk: Refactor how -D vddk.stats=1 is collected diff --git a/SOURCES/0002-vddk-Extend-D-vddk.stats-1-to-show-number-of-calls-a.patch b/SOURCES/0002-vddk-Extend-D-vddk.stats-1-to-show-number-of-calls-a.patch index 1823655..c1abb4e 100644 --- a/SOURCES/0002-vddk-Extend-D-vddk.stats-1-to-show-number-of-calls-a.patch +++ b/SOURCES/0002-vddk-Extend-D-vddk.stats-1-to-show-number-of-calls-a.patch @@ -1,4 +1,4 @@ -From f388c9b6c983d395ced0d4f467980b182d0a1b84 Mon Sep 17 00:00:00 2001 +From 262f7fcd22dd57ae30739703c94bc56f32a8ceec Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 21 Oct 2021 15:10:00 +0100 Subject: [PATCH] vddk: Extend -D vddk.stats=1 to show number of calls and diff --git a/SOURCES/0003-vddk-Simplify-and-consolidate-VDDK_CALL_START-END-ma.patch b/SOURCES/0003-vddk-Simplify-and-consolidate-VDDK_CALL_START-END-ma.patch index 1d51262..fc35b4c 100644 --- a/SOURCES/0003-vddk-Simplify-and-consolidate-VDDK_CALL_START-END-ma.patch +++ b/SOURCES/0003-vddk-Simplify-and-consolidate-VDDK_CALL_START-END-ma.patch @@ -1,4 +1,4 @@ -From cc1c3b4ab57a1662bf87766161167fac40a78c0e Mon Sep 17 00:00:00 2001 +From ea29f00332300e5a5808931ae48920c715c59182 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 21 Oct 2021 22:55:17 +0100 Subject: [PATCH] vddk: Simplify and consolidate VDDK_CALL_START/END macros diff --git a/SOURCES/0004-vddk-Document-troubleshooting-performance-problems.patch b/SOURCES/0004-vddk-Document-troubleshooting-performance-problems.patch index 48fe653..0dfca05 100644 --- a/SOURCES/0004-vddk-Document-troubleshooting-performance-problems.patch +++ b/SOURCES/0004-vddk-Document-troubleshooting-performance-problems.patch @@ -1,4 +1,4 @@ -From 4bd9926c0e506fdb04976d348b1c7614865c8b06 Mon Sep 17 00:00:00 2001 +From 7433c58a81d156fe078a8d5d39d75c8cfde458de Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 22 Oct 2021 18:00:27 +0100 Subject: [PATCH] vddk: Document troubleshooting performance problems diff --git a/SOURCES/0005-vddk-Include-VDDK-major-library-version-in-dump-plug.patch b/SOURCES/0005-vddk-Include-VDDK-major-library-version-in-dump-plug.patch index 373a0a5..0e68cf3 100644 --- a/SOURCES/0005-vddk-Include-VDDK-major-library-version-in-dump-plug.patch +++ b/SOURCES/0005-vddk-Include-VDDK-major-library-version-in-dump-plug.patch @@ -1,4 +1,4 @@ -From eb6ccb03d0ca12ef19e5705cd96f81824910087b Mon Sep 17 00:00:00 2001 +From e1b498bef17d1be8a19a5d29f34bc99c21b54e12 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 23 Oct 2021 16:16:39 +0100 Subject: [PATCH] vddk: Include VDDK major library version in --dump-plugin diff --git a/SOURCES/0006-vddk-Add-logical-and-physical-sector-size-to-D-vddk..patch b/SOURCES/0006-vddk-Add-logical-and-physical-sector-size-to-D-vddk..patch index 0709f63..1e91952 100644 --- a/SOURCES/0006-vddk-Add-logical-and-physical-sector-size-to-D-vddk..patch +++ b/SOURCES/0006-vddk-Add-logical-and-physical-sector-size-to-D-vddk..patch @@ -1,4 +1,4 @@ -From 0139f1815e9259fa789d84d2f32d30ee59bd728c Mon Sep 17 00:00:00 2001 +From 7cd9b2bbbdae01513baa215abfacecbf19af2b1d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 23 Oct 2021 16:24:27 +0100 Subject: [PATCH] vddk: Add logical and physical sector size to -D diff --git a/SOURCES/0007-vddk-Fix-typo-in-debug-message.patch b/SOURCES/0007-vddk-Fix-typo-in-debug-message.patch index 734ba2e..c849e80 100644 --- a/SOURCES/0007-vddk-Fix-typo-in-debug-message.patch +++ b/SOURCES/0007-vddk-Fix-typo-in-debug-message.patch @@ -1,4 +1,4 @@ -From a5f73cbcbb6891d2e3c2cb541d47b44a236785ce Mon Sep 17 00:00:00 2001 +From f00a059f71372a38703a2393b791703dfcb4f143 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 23 Oct 2021 19:41:07 +0100 Subject: [PATCH] vddk: Fix typo in debug message diff --git a/SOURCES/0008-vddk-Only-print-vddk_library_version-when-we-managed.patch b/SOURCES/0008-vddk-Only-print-vddk_library_version-when-we-managed.patch index 0e9dd8f..de5f980 100644 --- a/SOURCES/0008-vddk-Only-print-vddk_library_version-when-we-managed.patch +++ b/SOURCES/0008-vddk-Only-print-vddk_library_version-when-we-managed.patch @@ -1,4 +1,4 @@ -From 1cb810a416e1bdd78a8e5df886a3185d3cfa54d0 Mon Sep 17 00:00:00 2001 +From 27926a76f087cc81fc07f5a72da50384aab785c6 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 23 Oct 2021 19:50:52 +0100 Subject: [PATCH] vddk: Only print vddk_library_version when we managed to load diff --git a/SOURCES/0009-vddk-Print-one-line-in-dump-plugin-output-for-each-V.patch b/SOURCES/0009-vddk-Print-one-line-in-dump-plugin-output-for-each-V.patch index 786076d..bb7be49 100644 --- a/SOURCES/0009-vddk-Print-one-line-in-dump-plugin-output-for-each-V.patch +++ b/SOURCES/0009-vddk-Print-one-line-in-dump-plugin-output-for-each-V.patch @@ -1,4 +1,4 @@ -From 8780009ec092d9cc5a408b7597d88aa54db13639 Mon Sep 17 00:00:00 2001 +From 7b43137763287b3d79874e27146ea2fecc5f9a17 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 25 Oct 2021 08:36:53 +0100 Subject: [PATCH] vddk: Print one line in --dump-plugin output for each VDDK diff --git a/SOURCES/0010-vddk-Move-minimum-version-to-VDDK-6.5.patch b/SOURCES/0010-vddk-Move-minimum-version-to-VDDK-6.5.patch index 913ddfc..b09e5f7 100644 --- a/SOURCES/0010-vddk-Move-minimum-version-to-VDDK-6.5.patch +++ b/SOURCES/0010-vddk-Move-minimum-version-to-VDDK-6.5.patch @@ -1,4 +1,4 @@ -From e34016cbba4340b25f9a52c98db918aa72b38a7c Mon Sep 17 00:00:00 2001 +From d4e1acf2e9b607a05b08ceb49d2879db02016cfe Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 26 Oct 2021 19:46:32 +0100 Subject: [PATCH] vddk: Move minimum version to VDDK 6.5 diff --git a/SOURCES/0011-vddk-Add-read-write-and-wait-asynchronous-functions.patch b/SOURCES/0011-vddk-Add-read-write-and-wait-asynchronous-functions.patch index c836f82..2c8be18 100644 --- a/SOURCES/0011-vddk-Add-read-write-and-wait-asynchronous-functions.patch +++ b/SOURCES/0011-vddk-Add-read-write-and-wait-asynchronous-functions.patch @@ -1,4 +1,4 @@ -From 69b989b37c8e33f52d928c7202146e9e11a2a93c Mon Sep 17 00:00:00 2001 +From 53622e928682d08acafb27ce973a654ef7814c4d Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 27 Oct 2021 11:57:35 +0100 Subject: [PATCH] vddk: Add read, write and wait asynchronous functions diff --git a/SOURCES/0012-vddk-Start-to-split-VDDK-over-several-files.patch b/SOURCES/0012-vddk-Start-to-split-VDDK-over-several-files.patch index 0e49adf..85c5a8c 100644 --- a/SOURCES/0012-vddk-Start-to-split-VDDK-over-several-files.patch +++ b/SOURCES/0012-vddk-Start-to-split-VDDK-over-several-files.patch @@ -1,4 +1,4 @@ -From 98a499c0e9d08f208474759012ec3ed823ce2335 Mon Sep 17 00:00:00 2001 +From 35436075eb0df59c6480b79adaa755a2c6138833 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 27 Oct 2021 12:20:31 +0100 Subject: [PATCH] vddk: Start to split VDDK over several files diff --git a/SOURCES/0013-vddk-Refactor-D-vddk.stats-1-into-a-new-file.patch b/SOURCES/0013-vddk-Refactor-D-vddk.stats-1-into-a-new-file.patch index 5dc720a..7a2fd48 100644 --- a/SOURCES/0013-vddk-Refactor-D-vddk.stats-1-into-a-new-file.patch +++ b/SOURCES/0013-vddk-Refactor-D-vddk.stats-1-into-a-new-file.patch @@ -1,4 +1,4 @@ -From d602150dbb5ebacea42c25a0f6c8c26c45766a49 Mon Sep 17 00:00:00 2001 +From 27b7a2b4b58a99eb79386412a2b3d5387d28f6bc Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 27 Oct 2021 12:30:41 +0100 Subject: [PATCH] vddk: Refactor -D vddk.stats=1 into a new file diff --git a/SOURCES/0014-vddk-Implement-parallel-thread-model.patch b/SOURCES/0014-vddk-Implement-parallel-thread-model.patch index 4b12382..9b5073e 100644 --- a/SOURCES/0014-vddk-Implement-parallel-thread-model.patch +++ b/SOURCES/0014-vddk-Implement-parallel-thread-model.patch @@ -1,4 +1,4 @@ -From 5744b0000addaa0d50b6e0ee8e4540349623be0a Mon Sep 17 00:00:00 2001 +From d12a244fa6b5b582a7790a525a621b4573133749 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Wed, 27 Oct 2021 10:17:22 +0100 Subject: [PATCH] vddk: Implement parallel thread model diff --git a/SOURCES/0015-vddk-Assume-that-VixDiskLib_Flush-is-available.patch b/SOURCES/0015-vddk-Assume-that-VixDiskLib_Flush-is-available.patch index 5735b1d..813fa89 100644 --- a/SOURCES/0015-vddk-Assume-that-VixDiskLib_Flush-is-available.patch +++ b/SOURCES/0015-vddk-Assume-that-VixDiskLib_Flush-is-available.patch @@ -1,4 +1,4 @@ -From eda9dd7f5e610fd4e17019813c5a045f0b3603df Mon Sep 17 00:00:00 2001 +From dd2ae58503f3c17e8aee2f78f97e0f669ce464c6 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 29 Oct 2021 20:56:55 +0100 Subject: [PATCH] vddk: Assume that VixDiskLib_Flush is available diff --git a/SOURCES/0016-vddk-Simplify-detection-of-VDDK-symbols-and-baseline.patch b/SOURCES/0016-vddk-Simplify-detection-of-VDDK-symbols-and-baseline.patch index 85b8528..8571342 100644 --- a/SOURCES/0016-vddk-Simplify-detection-of-VDDK-symbols-and-baseline.patch +++ b/SOURCES/0016-vddk-Simplify-detection-of-VDDK-symbols-and-baseline.patch @@ -1,4 +1,4 @@ -From 1b2b386c9a254808a25fbfce3640c96bdb8cf9be Mon Sep 17 00:00:00 2001 +From 10bbf28ad230a887ec05a2b1d25d95fd0d742072 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Fri, 29 Oct 2021 21:02:54 +0100 Subject: [PATCH] vddk: Simplify detection of VDDK symbols and baseline 6.5 diff --git a/SOURCES/0017-vddk-Remove-some-whitespace-from-a-couple-of-functio.patch b/SOURCES/0017-vddk-Remove-some-whitespace-from-a-couple-of-functio.patch index d62f431..2f91a3b 100644 --- a/SOURCES/0017-vddk-Remove-some-whitespace-from-a-couple-of-functio.patch +++ b/SOURCES/0017-vddk-Remove-some-whitespace-from-a-couple-of-functio.patch @@ -1,4 +1,4 @@ -From 2363e76ab34a2e11b57970d82161f73453a4a8ec Mon Sep 17 00:00:00 2001 +From c0d6f863ecd47535fe55bae12ce5bf292e356dbd Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 30 Oct 2021 08:34:28 +0100 Subject: [PATCH] vddk: Remove some whitespace from a couple of functions diff --git a/SOURCES/0018-vddk-Move-config-debug-error-and-utility-functions-a.patch b/SOURCES/0018-vddk-Move-config-debug-error-and-utility-functions-a.patch index fbfa113..a8111d4 100644 --- a/SOURCES/0018-vddk-Move-config-debug-error-and-utility-functions-a.patch +++ b/SOURCES/0018-vddk-Move-config-debug-error-and-utility-functions-a.patch @@ -1,4 +1,4 @@ -From 6c0034cf8802d466b170135fec0d6a97d1eb2f2a Mon Sep 17 00:00:00 2001 +From c55eb650440d9cd713db74622ddc2afa3c1ce740 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Sat, 30 Oct 2021 08:27:39 +0100 Subject: [PATCH] vddk: Move config, debug/error and utility functions around diff --git a/SOURCES/0019-common-utils-test-vector.c-Add-vector-benchmarks.patch b/SOURCES/0019-common-utils-test-vector.c-Add-vector-benchmarks.patch index 02c96c2..1850ee7 100644 --- a/SOURCES/0019-common-utils-test-vector.c-Add-vector-benchmarks.patch +++ b/SOURCES/0019-common-utils-test-vector.c-Add-vector-benchmarks.patch @@ -1,4 +1,4 @@ -From 6459704cc66f5fa0a2e6fc1e199458b77327fe52 Mon Sep 17 00:00:00 2001 +From 4cc4e2cfc6202d522b3c4282bbaedf3d47de16bb Mon Sep 17 00:00:00 2001 From: Nir Soffer Date: Fri, 5 Nov 2021 20:36:42 +0200 Subject: [PATCH] common/utils/test-vector.c: Add vector benchmarks diff --git a/SOURCES/0020-common-urils-vector.c-Optimize-vector-append.patch b/SOURCES/0020-common-urils-vector.c-Optimize-vector-append.patch index 99da6d7..d697c52 100644 --- a/SOURCES/0020-common-urils-vector.c-Optimize-vector-append.patch +++ b/SOURCES/0020-common-urils-vector.c-Optimize-vector-append.patch @@ -1,4 +1,4 @@ -From 5454ced7c8cfc2ba278c2635eecb9a5e4841e613 Mon Sep 17 00:00:00 2001 +From 20029d23e2992f929a3d75b5dea64832f8684d20 Mon Sep 17 00:00:00 2001 From: Nir Soffer Date: Fri, 5 Nov 2021 22:16:26 +0200 Subject: [PATCH] common/urils/vector.c: Optimize vector append diff --git a/SOURCES/0021-common-utils-vector-Rename-alloc-to-cap.patch b/SOURCES/0021-common-utils-vector-Rename-alloc-to-cap.patch index 0cf18b9..c043386 100644 --- a/SOURCES/0021-common-utils-vector-Rename-alloc-to-cap.patch +++ b/SOURCES/0021-common-utils-vector-Rename-alloc-to-cap.patch @@ -1,4 +1,4 @@ -From 304f180b61fa28421b9901d2173a280e633b55c2 Mon Sep 17 00:00:00 2001 +From a329cd90b350b17eac3227c0f30794015b710366 Mon Sep 17 00:00:00 2001 From: Nir Soffer Date: Fri, 5 Nov 2021 22:59:38 +0200 Subject: [PATCH] common/utils/vector: Rename `alloc` to `cap` diff --git a/SOURCES/0022-common-utils-vector-Rename-size-to-len.patch b/SOURCES/0022-common-utils-vector-Rename-size-to-len.patch index 822f84e..6577f6d 100644 --- a/SOURCES/0022-common-utils-vector-Rename-size-to-len.patch +++ b/SOURCES/0022-common-utils-vector-Rename-size-to-len.patch @@ -1,4 +1,4 @@ -From a53a2234147543b04ee483aff7b9895c0d5082b5 Mon Sep 17 00:00:00 2001 +From 932679668fc44839727ae350a1c2e94b26bcfc0a Mon Sep 17 00:00:00 2001 From: Nir Soffer Date: Sat, 6 Nov 2021 00:03:11 +0200 Subject: [PATCH] common/utils/vector: Rename `size` to `len` @@ -139,7 +139,7 @@ index 81fe4ed0..1675d21c 100644 return NULL; } diff --git a/common/regions/regions.h b/common/regions/regions.h -index 13fc41e2..34a398cd 100644 +index 6dfd5d88..3d562316 100644 --- a/common/regions/regions.h +++ b/common/regions/regions.h @@ -84,17 +84,17 @@ extern void free_regions (regions *regions) diff --git a/SOURCES/0023-podwrapper.pl.in-Use-short-commit-date.patch b/SOURCES/0023-podwrapper.pl.in-Use-short-commit-date.patch index e4b16de..e9d3eb0 100644 --- a/SOURCES/0023-podwrapper.pl.in-Use-short-commit-date.patch +++ b/SOURCES/0023-podwrapper.pl.in-Use-short-commit-date.patch @@ -1,4 +1,4 @@ -From ece6d7e1a5827de17e86a20f7dae5f6f853d419b Mon Sep 17 00:00:00 2001 +From 83f7325a317b4a3d670f1288715af8854627b0f6 Mon Sep 17 00:00:00 2001 From: Nir Soffer Date: Mon, 8 Nov 2021 19:47:57 +0200 Subject: [PATCH] podwrapper.pl.in: Use short commit date diff --git a/SOURCES/0024-ocaml-Replace-noalloc-with-noalloc-annotation.patch b/SOURCES/0024-ocaml-Replace-noalloc-with-noalloc-annotation.patch index 983c610..355c596 100644 --- a/SOURCES/0024-ocaml-Replace-noalloc-with-noalloc-annotation.patch +++ b/SOURCES/0024-ocaml-Replace-noalloc-with-noalloc-annotation.patch @@ -1,4 +1,4 @@ -From 2955179919fc6233427b82d27ae61755b2b5e3d7 Mon Sep 17 00:00:00 2001 +From 8e5248fda608adbce5b86d938855294001276906 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Tue, 9 Nov 2021 09:07:42 +0000 Subject: [PATCH] ocaml: Replace "noalloc" with [@@noalloc] annotation diff --git a/SOURCES/0025-vddk-Drop-obsolete-documentation-related-to-thread-m.patch b/SOURCES/0025-vddk-Drop-obsolete-documentation-related-to-thread-m.patch new file mode 100644 index 0000000..6ba172c --- /dev/null +++ b/SOURCES/0025-vddk-Drop-obsolete-documentation-related-to-thread-m.patch @@ -0,0 +1,39 @@ +From 6e85906311377b845f299d3a570e23db2809529c Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Sat, 27 Nov 2021 16:44:41 +0000 +Subject: [PATCH] vddk: Drop obsolete documentation related to thread model + +Since commit 1eecf15fc3 ("vddk: Implement parallel thread model") we +have implemented a parallel thread model in this plugin, and thread +handling is believed to be safe and in conformity with the VDDK +documentation. Remove obsolete documentation contradicting this. + +Reported-by: Ming Xie +Fixes: commit 1eecf15fc3d8ea253ccec4f5883fdbb9aa6f8c2b +(cherry picked from commit 370ecb711c23f9143c933e13468e11d688d0d651) +--- + plugins/vddk/nbdkit-vddk-plugin.pod | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod +index ce82a734..acec0bd2 100644 +--- a/plugins/vddk/nbdkit-vddk-plugin.pod ++++ b/plugins/vddk/nbdkit-vddk-plugin.pod +@@ -452,14 +452,6 @@ sector boundaries. This is because the VDDK Read and Write APIs only + take sector numbers. If your client needs finer granularity, you can + use L with the setting C. + +-=head2 Threads +- +-Handling threads in the VDDK API is complex and does not map well to +-any of the thread models offered by nbdkit (see +-L). The plugin uses the nbdkit +-C model, but technically even this is not +-completely safe. This is a subject of future work. +- + =head2 Out of memory errors + + In the verbose log you may see errors like: +-- +2.31.1 + diff --git a/SOURCES/0026-Revert-podwrapper.pl.in-Use-short-commit-date.patch b/SOURCES/0026-Revert-podwrapper.pl.in-Use-short-commit-date.patch new file mode 100644 index 0000000..1f56807 --- /dev/null +++ b/SOURCES/0026-Revert-podwrapper.pl.in-Use-short-commit-date.patch @@ -0,0 +1,32 @@ +From b235076a7df96253aa41a7859c3ba54386bd3fef Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Sat, 20 Nov 2021 17:50:25 +0000 +Subject: [PATCH] Revert "podwrapper.pl.in: Use short commit date" + +This commit breaks man page output because there is an extra newline +after the date which wasn't being removed. + +This reverts commit 7a1e79c6b5ca4adcef47fc0929d25d54610fc417. + +(cherry picked from commit 750ad5972bb082d188f17f8f71ef1ec0c616c676) +--- + podwrapper.pl.in | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/podwrapper.pl.in b/podwrapper.pl.in +index 63c1025a..abad578d 100755 +--- a/podwrapper.pl.in ++++ b/podwrapper.pl.in +@@ -233,7 +233,8 @@ my $date; + my $filename = "$abs_top_srcdir/.git"; + if (!$date && -d $filename) { + local $ENV{GIT_DIR} = $filename; +- $date = `git show -O/dev/null -s --format=%cs`; ++ $_ = `git show -O/dev/null -s --format=%ci`; ++ $date = $1 if /^(\d+-\d+-\d+)\s/; + } + if (!$date) { + my ($day, $month, $year) = (gmtime($ENV{SOURCE_DATE_EPOCH} || time))[3,4,5]; +-- +2.31.1 + diff --git a/SOURCES/0027-Fix-podwrapper.pl.in-Use-short-commit-date.patch b/SOURCES/0027-Fix-podwrapper.pl.in-Use-short-commit-date.patch new file mode 100644 index 0000000..c828fb8 --- /dev/null +++ b/SOURCES/0027-Fix-podwrapper.pl.in-Use-short-commit-date.patch @@ -0,0 +1,31 @@ +From fb7749b3497a7aaf1b00e975af166af029209c01 Mon Sep 17 00:00:00 2001 +From: Eric Blake +Date: Tue, 30 Nov 2021 12:42:01 -0600 +Subject: [PATCH] Fix "podwrapper.pl.in: Use short commit date" + +This reverts commit 750ad5972bb082d188f17f8f71ef1ec0c616c676, then +fixes the broken newline as suggested in the thread at +https://listman.redhat.com/archives/libguestfs/2021-November/msg00275.html. + +(cherry picked from commit 80036dbb0b8f9e0aab5994d80de6321c2a55c669) +--- + podwrapper.pl.in | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/podwrapper.pl.in b/podwrapper.pl.in +index abad578d..6f256ba8 100755 +--- a/podwrapper.pl.in ++++ b/podwrapper.pl.in +@@ -233,8 +233,7 @@ my $date; + my $filename = "$abs_top_srcdir/.git"; + if (!$date && -d $filename) { + local $ENV{GIT_DIR} = $filename; +- $_ = `git show -O/dev/null -s --format=%ci`; +- $date = $1 if /^(\d+-\d+-\d+)\s/; ++ $date = `git show -O/dev/null -s --format=format:%cs`; + } + if (!$date) { + my ($day, $month, $year) = (gmtime($ENV{SOURCE_DATE_EPOCH} || time))[3,4,5]; +-- +2.31.1 + diff --git a/SOURCES/0028-scripts-Add-simple-script-for-automating-VDDK-disk-c.patch b/SOURCES/0028-scripts-Add-simple-script-for-automating-VDDK-disk-c.patch new file mode 100644 index 0000000..e953d6b --- /dev/null +++ b/SOURCES/0028-scripts-Add-simple-script-for-automating-VDDK-disk-c.patch @@ -0,0 +1,154 @@ +From 599f64f5885cf546f85e6c28d98b0444c18ad1fa Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 30 Nov 2021 17:56:02 +0000 +Subject: [PATCH] scripts: Add simple script for automating VDDK disk + connections + +It's tedious to work out how to do this by hand every time. Include a +developer script to make connecting to a guest disk easy. + +(cherry picked from commit 44ee90ee01677032a14d5b71118b7af0651db3d5) +--- + .gitignore | 1 + + Makefile.am | 2 +- + configure.ac | 2 + + scripts/vddk-open.sh.in | 89 +++++++++++++++++++++++++++++++++++++++++ + 4 files changed, 93 insertions(+), 1 deletion(-) + create mode 100755 scripts/vddk-open.sh.in + +diff --git a/.gitignore b/.gitignore +index 847b72dd..6565600f 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -89,6 +89,7 @@ plugins/*/*.3 + /plugins/S3/nbdkit-S3-plugin + /plugins/tmpdisk/default-command.c + /podwrapper.pl ++/scripts/vddk-open.sh + /server/libnbdkit.a + /server/local/nbdkit.pc + /server/nbdkit +diff --git a/Makefile.am b/Makefile.am +index 49f5d91c..6df5eba0 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -46,7 +46,7 @@ EXTRA_DIST = \ + SECURITY \ + $(NULL) + +-CLEANFILES += html/*.html ++CLEANFILES += html/*.html scripts/*~ + + if !ENABLE_LIBFUZZER + # NB: This is not the real nbdkit binary. It's a wrapper that allows +diff --git a/configure.ac b/configure.ac +index 19514ef6..8a86326e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1253,6 +1253,8 @@ dnl Produce output files. + AC_CONFIG_HEADERS([config.h]) + AC_CONFIG_FILES([podwrapper.pl], + [chmod +x,-w podwrapper.pl]) ++AC_CONFIG_FILES([scripts/vddk-open.sh], ++ [chmod +x,-w scripts/vddk-open.sh]) + AC_CONFIG_FILES([common/protocol/generate-protostrings.sh], + [chmod +x,-w common/protocol/generate-protostrings.sh]) + AC_CONFIG_FILES([Makefile +diff --git a/scripts/vddk-open.sh.in b/scripts/vddk-open.sh.in +new file mode 100755 +index 00000000..218bc93c +--- /dev/null ++++ b/scripts/vddk-open.sh.in +@@ -0,0 +1,89 @@ ++#!/bin/bash - ++# @configure_input@ ++# Copyright (C) 2013-2021 Red Hat Inc. ++# ++# Redistribution and use in source and binary forms, with or without ++# modification, are permitted provided that the following conditions are ++# met: ++# ++# * Redistributions of source code must retain the above copyright ++# notice, this list of conditions and the following disclaimer. ++# ++# * Redistributions in binary form must reproduce the above copyright ++# notice, this list of conditions and the following disclaimer in the ++# documentation and/or other materials provided with the distribution. ++# ++# * Neither the name of Red Hat nor the names of its contributors may be ++# used to endorse or promote products derived from this software without ++# specific prior written permission. ++# ++# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND ++# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ++# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A ++# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR ++# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ++# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ++# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ++# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++# SUCH DAMAGE. ++ ++# Open an nbdkit-vddk-plugin connection to the first disk of a guest ++# on a VMware ESXi server. This script automates the tedious bits of ++# getting the disk name, moref, etc. However please read the ++# nbdkit-vddk-plugin documentation as well. ++# ++# Usage: ++# scripts/vddk-open.sh SERVER GUEST -r -f -v libdir=/path/to/vmware-vix-disklib-distrib [...] ++# ++# where SERVER is the hostname or IP address of the ESXi server and ++# GUEST is the name of the guest. ++# ++# These two required parameters are followed by any extra nbdkit ++# parameters you want to use, such as VDDK libdir, flags, filters etc. ++# ++# Note that the script runs ./nbdkit (ie. the wrapper in the top build ++# directory). ++ ++nbdkit="@abs_top_builddir@/nbdkit" ++ ++server="$1" ++guest="$2" ++shift 2 ++ ++# Get the libvirt XML, filename and moref. ++echo -n "root password? " ++xml="$( virsh -c "esx://root@$server/?no_verify=1" dumpxml "$guest" )" ++echo ++ ++file="$( echo "$xml" | grep '\(.*\)<.*,\1,' )" ++ ++#echo file="$file" ++#echo moref="$moref" ++ ++# Get the thumbprint. ++thumbprint="$( openssl s_client -connect "$server:443" /dev/null | ++ openssl x509 -in /dev/stdin -fingerprint -sha1 -noout 2>/dev/null | ++ grep '^sha1 Fingerprint=' | ++ sed 's/.*Fingerprint=\([A-F0-9:]\+\)/\1/' )" ++ ++#echo thumbprint="$thumbprint" ++ ++# Construct the nbdkit command line. ++declare -a args ++ ++args[${#args[@]}]="$nbdkit" ++args[${#args[@]}]="vddk" ++args[${#args[@]}]="file=$file" ++args[${#args[@]}]="vm=moref=$moref" ++args[${#args[@]}]="server=$server" ++args[${#args[@]}]="thumbprint=$thumbprint" ++args[${#args[@]}]="user=root" ++ ++echo "${args[@]}" "$@" ++"${args[@]}" "$@" +-- +2.31.1 + diff --git a/SOURCES/0029-file-Fix-implementation-of-cache-none-for-writes.patch b/SOURCES/0029-file-Fix-implementation-of-cache-none-for-writes.patch new file mode 100644 index 0000000..7ed3e22 --- /dev/null +++ b/SOURCES/0029-file-Fix-implementation-of-cache-none-for-writes.patch @@ -0,0 +1,181 @@ +From 86b2baa7cd4a32246d447cbcedaaef3a15212ea4 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 7 Dec 2021 21:08:26 +0000 +Subject: [PATCH] file: Fix implementation of cache=none for writes + +When testing virt-v2v we found that cache=none had very pessimal +performance in its current implementation when writing. See: + + https://github.com/libguestfs/virt-v2v/commit/ac59d3b2310511b1537d408b675b19ec9a5d384e + +However we know of a much better implementation - the one in nbdcopy. +This commit copies that implementation (for writes only). + +A simple test is to do: + + $ ./nbdkit file out.img cache=none --run 'nbdcopy fedora-33.img $uri' + +and then check the cache usage of the output file, which should be +around 0% (using https://github.com/Feh/nocache): + + $ cachestats out.img + pages in cache: 409/1572864 (0.0%) [filesize=6291456.0K, pagesize=4K] + +For modular virt-v2v doing a local disk to local disk conversion: + + - before this change, without cache=none + virt-v2v took 93.7 seconds, 19.1% pages cached in output file + + - before this change, enabling cache=none + virt-v2v took 125.4 seconds, 0.0% pages cached in output file + ^^^ this is the bad case which caused the investigation + + - after this change, without cache=none + virt-v2v took 93.2 seconds, 19.1% pages cached in output file + + - after this change, enabling cache=none + virt-v2v took 97.9 seconds, 0.1% pages cached in output file + +I tried to adjust NR_WINDOWS to find an optimum. Increasing it made +no difference in performance but predictably caused a slight increase +in cached pages. Reducing it slowed performance slightly. So I +conclude that 8 is about right, but it probably depends on the +hardware. + +(cherry picked from commit a956e2e75d6c88eeefecd967505667c9f176e3af) +--- + plugins/file/file.c | 79 +++++++++++++++++++++++++---- + plugins/file/nbdkit-file-plugin.pod | 3 ++ + 2 files changed, 72 insertions(+), 10 deletions(-) + +diff --git a/plugins/file/file.c b/plugins/file/file.c +index 35270a24..caf24b2c 100644 +--- a/plugins/file/file.c ++++ b/plugins/file/file.c +@@ -85,6 +85,69 @@ static int fadvise_mode = + /* cache mode */ + static enum { cache_default, cache_none } cache_mode = cache_default; + ++/* Define EVICT_WRITES if we are going to evict the page cache ++ * (cache=none) after writing. This is only known to work on Linux. ++ */ ++#ifdef __linux__ ++#define EVICT_WRITES 1 ++#endif ++ ++#ifdef EVICT_WRITES ++/* Queue writes so they will be evicted from the cache. See ++ * libnbd.git copy/file-ops.c for the rationale behind this. ++ */ ++#define NR_WINDOWS 8 ++ ++struct write_window { ++ int fd; ++ uint64_t offset; ++ size_t len; ++}; ++ ++static pthread_mutex_t window_lock = PTHREAD_MUTEX_INITIALIZER; ++static struct write_window window[NR_WINDOWS]; ++ ++static void ++evict_writes (int fd, uint64_t offset, size_t len) ++{ ++ ACQUIRE_LOCK_FOR_CURRENT_SCOPE (&window_lock); ++ ++ /* Evict the oldest window from the page cache. */ ++ if (window[0].len > 0) { ++ sync_file_range (window[0].fd, window[0].offset, window[0].len, ++ SYNC_FILE_RANGE_WAIT_BEFORE|SYNC_FILE_RANGE_WRITE| ++ SYNC_FILE_RANGE_WAIT_AFTER); ++ posix_fadvise (window[0].fd, window[0].offset, window[0].len, ++ POSIX_FADV_DONTNEED); ++ } ++ ++ /* Move the Nth window to N-1. */ ++ memmove (&window[0], &window[1], sizeof window[0] * (NR_WINDOWS-1)); ++ ++ /* Set up the current window and tell Linux to start writing it out ++ * to disk (asynchronously). ++ */ ++ sync_file_range (fd, offset, len, SYNC_FILE_RANGE_WRITE); ++ window[NR_WINDOWS-1].fd = fd; ++ window[NR_WINDOWS-1].offset = offset; ++ window[NR_WINDOWS-1].len = len; ++} ++ ++/* When we close the handle we must remove any windows which are still ++ * associated. They missed the boat, oh well :-( ++ */ ++static void ++remove_fd_from_window (int fd) ++{ ++ ACQUIRE_LOCK_FOR_CURRENT_SCOPE (&window_lock); ++ size_t i; ++ ++ for (i = 0; i < NR_WINDOWS; ++i) ++ if (window[i].len > 0 && window[i].fd == fd) ++ window[i].len = 0; ++} ++#endif /* EVICT_WRITES */ ++ + /* Any callbacks using lseek must be protected by this lock. */ + static pthread_mutex_t lseek_lock = PTHREAD_MUTEX_INITIALIZER; + +@@ -431,6 +494,9 @@ file_close (void *handle) + { + struct handle *h = handle; + ++#ifdef EVICT_WRITES ++ remove_fd_from_window (h->fd); ++#endif + close (h->fd); + free (h); + } +@@ -583,15 +649,9 @@ file_pwrite (void *handle, const void *buf, uint32_t count, uint64_t offset, + { + struct handle *h = handle; + +-#if defined (HAVE_POSIX_FADVISE) && defined (POSIX_FADV_DONTNEED) ++#if EVICT_WRITES + uint32_t orig_count = count; + uint64_t orig_offset = offset; +- +- /* If cache=none we want to force pages we have just written to the +- * file to be flushed to disk so we can immediately evict them from +- * the page cache. +- */ +- if (cache_mode == cache_none) flags |= NBDKIT_FLAG_FUA; + #endif + + while (count > 0) { +@@ -608,10 +668,9 @@ file_pwrite (void *handle, const void *buf, uint32_t count, uint64_t offset, + if ((flags & NBDKIT_FLAG_FUA) && file_flush (handle, 0) == -1) + return -1; + +-#if defined (HAVE_POSIX_FADVISE) && defined (POSIX_FADV_DONTNEED) +- /* On Linux this will evict the pages we just wrote from the page cache. */ ++#if EVICT_WRITES + if (cache_mode == cache_none) +- posix_fadvise (h->fd, orig_offset, orig_count, POSIX_FADV_DONTNEED); ++ evict_writes (h->fd, orig_offset, orig_count); + #endif + + return 0; +diff --git a/plugins/file/nbdkit-file-plugin.pod b/plugins/file/nbdkit-file-plugin.pod +index 0ac0ee53..f8f0e198 100644 +--- a/plugins/file/nbdkit-file-plugin.pod ++++ b/plugins/file/nbdkit-file-plugin.pod +@@ -117,6 +117,9 @@ cache: + + nbdkit file disk.img fadvise=sequential cache=none + ++Only use fadvise=sequential if reading, and the reads are mainly ++sequential. ++ + =head2 Files on tmpfs + + If you want to expose a file that resides on a file system known to +-- +2.31.1 + diff --git a/SOURCES/nbdkit-1.28.2.tar.gz.sig b/SOURCES/nbdkit-1.28.2.tar.gz.sig deleted file mode 100644 index ffd05bc..0000000 --- a/SOURCES/nbdkit-1.28.2.tar.gz.sig +++ /dev/null @@ -1,17 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmGKYx0RHHJpY2hAYW5u -ZXhpYS5vcmcACgkQkXOPc+G3aKAw7g//Q/42avSvu3DZQXPCl772S9K7erYzw1LK -PzffbDKWwsR4YN+m4w94gFjb6n2NZOnSBVpDYofkt5mzHM9dwYTlCJdS+J4SxV8e -s23+RQjgX0fQMDv4qfGE7CUNQXX6CLRWUlXSu4dMMbsxbF8y18VHl+eLIN7U15Ec -8E2lwcthQ8ipwz0xuxKE1GUNXzWsJ1SHBaCmo8HH1x1Rs+mWu0QjwFllhTc4+gq9 -5yrdZuViv96DxIsk3u7RByqrTJYZi2tK9dU75dVeXI6o74b1WUrXkwqW8uqIR4m5 -hZry1+vXPzWIO4G5o1gika+C4xvYuyIShNl/c/aWJsA0ku4fDtUxAkjC/k78D4yR -0FQbNfztiCFgvQNS3UH6M0d63S4GE76m7HgwI7SkUtczlnPl2AhzSjjfXZ5DrHH9 -S8SgmgwP4qfwszY6Xs7ISFofRV5YBgMhSIiJc/5yYRLtZZCcRWNvv/OWYNTGdVBp -rRYQRvnhe2VbaaVexOn1Fkzcv/FNeD+96bsTp1B1SailUUFrTOpRZ0yIOxfZZZO/ -JcroGuFvq0BywP1U6Rq2PI1IHD4I6x3QLYIfNBP076Rc17BhcXyn2Ei18XkRo+xd -iFTCDpe0zlSCl3tLL7Hvp2EtetYkpiQKHA59g7RoSVQDX/RAml3VFDvwZ2rNBeCL -yegMoVPEmc0= -=c3GR ------END PGP SIGNATURE----- diff --git a/SOURCES/nbdkit-1.28.3.tar.gz.sig b/SOURCES/nbdkit-1.28.3.tar.gz.sig new file mode 100644 index 0000000..5381c33 --- /dev/null +++ b/SOURCES/nbdkit-1.28.3.tar.gz.sig @@ -0,0 +1,17 @@ +-----BEGIN PGP SIGNATURE----- + +iQJFBAABCAAvFiEE93dPsa0HSn6Mh2fqkXOPc+G3aKAFAmGvLUARHHJpY2hAYW5u +ZXhpYS5vcmcACgkQkXOPc+G3aKCUVA//RZwRNUPITvdw9CG8gaLAyvkQfhmHWR+X +AlEHW3MmpG8esuX8Q3DEGwgub9q029J5kvnbKtZsKuGF78Fi1XPvbzZPCLa3M+VF +kUABAOIht3Hg97h8dxURVUjv8QbG871buEQy3sENaGPAzI0sJHiO7VnykG0N/5S8 +YWbEh7i75KRMy3OqHQ9mNb7kq8OKM2h7LmJzK4QItvPX1/b5UkxC6w9h4N4fEbc1 +oJb9FXcS0TP/vYIZZwhO4FTmChaTGXRYFmfqe5b5zzeacqec3ufHpTevFCwxuVSc +zHoVxYN7zGdLheYeUG2MMbbs8JR7Ia8hBHoP8tG707Y+IJ2yFYubs8SupbA4oJKj +RfZD8jOIErdn56Qh3r9V0ExuGWWkhFYdjUBaEACMRm366d5GdPkvw5VEW1/Tf1Id +JtRroke50G2hNrt+nrnGO2lU9G/xdJ1gz9+aMBqXMtk1MIBedtvDnDthEfEHNUwY +dJGhoFwKBuWUI1ha2DX9bk7pb4jS29+eiIFbMv9Gw748Etfmr2pcNQEGIcauGz9e +6rAtg5Afk8Z4vQUK0IN5Ex1+JnF1OIjTHFQSuCTVVyYhhVn7nWQWKWlwgXT/A4F4 +ciu6WlBnNgD86Kq0HJ9fSjWE6K3kKkUUHnDYYtnmt3CqzNeoKCZMt4VHMFMOMfR7 +LPKn+zwrGb8= +=SDiY +-----END PGP SIGNATURE----- diff --git a/SPECS/nbdkit.spec b/SPECS/nbdkit.spec index 815a753..b1ade79 100644 --- a/SPECS/nbdkit.spec +++ b/SPECS/nbdkit.spec @@ -50,8 +50,8 @@ ExclusiveArch: x86_64 %global source_directory 1.28-stable Name: nbdkit -Version: 1.28.2 -Release: 1%{?dist} +Version: 1.28.3 +Release: 2%{?dist} Summary: NBD server License: BSD @@ -100,6 +100,11 @@ Patch0021: 0021-common-utils-vector-Rename-alloc-to-cap.patch Patch0022: 0022-common-utils-vector-Rename-size-to-len.patch Patch0023: 0023-podwrapper.pl.in-Use-short-commit-date.patch Patch0024: 0024-ocaml-Replace-noalloc-with-noalloc-annotation.patch +Patch0025: 0025-vddk-Drop-obsolete-documentation-related-to-thread-m.patch +Patch0026: 0026-Revert-podwrapper.pl.in-Use-short-commit-date.patch +Patch0027: 0027-Fix-podwrapper.pl.in-Use-short-commit-date.patch +Patch0028: 0028-scripts-Add-simple-script-for-automating-VDDK-disk-c.patch +Patch0029: 0029-file-Fix-implementation-of-cache-none-for-writes.patch BuildRequires: make %if 0%{patches_touch_autotools} @@ -1213,15 +1218,19 @@ export LIBGUESTFS_TRACE=1 %changelog -* Tue Nov 09 2021 Richard W.M. Jones - 1.28.2-1 +* Wed Dec 08 2021 Richard W.M. Jones - 1.28.3-2 +- Rebase to new stable branch version 1.28.3 + resolves: rhbz#2011709 - Move nbdkit-null-plugin to nbdkit-server package resolves: rhbz#2021154 - Add asynchronous support in nbdkit-vddk-plugin +- Drop obsolete documentation related to thread model in vddk plugin resolves: rhbz#2018463 -- Rebase to new stable branch version 1.28.2 - resolves: rhbz#2011709 - Switch to xorriso (instead of genisoimage) - Distribute README.VDDK in nbdkit-vddk-plugin subpackage +- Fix nbdkit-cow-filter cow-block-size=4096 +- file: Fix implementation of cache=none for writes + resolves: rhbz#2029751 * Thu Aug 19 2021 Richard W.M. Jones - 1.26.5-1 - Rebase along stable branch to 1.26.5