Update nbdkit-vddk-plugin
Distribute README.VDDK in nbdkit-vddk-plugin subpackage resolves: rhbz#2018463, rhbz#2011709
This commit is contained in:
		
							parent
							
								
									0d3bf32327
								
							
						
					
					
						commit
						ceffede5b1
					
				| @ -0,0 +1,73 @@ | ||||
| From 5c4dcc9ade4b2d46d69478f711bd98b14b99c3d2 Mon Sep 17 00:00:00 2001 | ||||
| From: Hilko Bengen <bengen@hilluzination.de> | ||||
| Date: Mon, 25 Oct 2021 23:34:20 +0200 | ||||
| Subject: [PATCH] Skip vsock-related checks if AF_VSOCK is not supported. | ||||
| 
 | ||||
| (cherry picked from commit 068cd85375e9bd309f65ba3971db643e817fe912) | ||||
| ---
 | ||||
|  tests/functions.sh.in            | 10 ++++++++++ | ||||
|  tests/test-ip-filter-anyvsock.sh |  1 + | ||||
|  tests/test-nbd-vsock.sh          |  1 + | ||||
|  tests/test-vsock.sh              |  1 + | ||||
|  4 files changed, 13 insertions(+) | ||||
| 
 | ||||
| diff --git a/tests/functions.sh.in b/tests/functions.sh.in
 | ||||
| index 403fa56e..d6c4255c 100644
 | ||||
| --- a/tests/functions.sh.in
 | ||||
| +++ b/tests/functions.sh.in
 | ||||
| @@ -239,6 +239,16 @@ requires_non_root ()
 | ||||
|      fi | ||||
|  } | ||||
|   | ||||
| +# Tests that use the vsock interface will fail if vsock is not
 | ||||
| +# supported.
 | ||||
| +requires_vsock_support ()
 | ||||
| +{
 | ||||
| +    if ! grep -q ^AF_VSOCK /proc/net/protocols; then
 | ||||
| +        echo "$0: test skipped because AF_VSOCK is not supported."
 | ||||
| +        exit 77
 | ||||
| +    fi
 | ||||
| +}
 | ||||
| +
 | ||||
|  # start_nbdkit -P pidfile args... | ||||
|  # | ||||
|  # Run nbdkit with args and wait for it to start up.  If it fails to | ||||
| diff --git a/tests/test-ip-filter-anyvsock.sh b/tests/test-ip-filter-anyvsock.sh
 | ||||
| index 3160e982..016b1da9 100755
 | ||||
| --- a/tests/test-ip-filter-anyvsock.sh
 | ||||
| +++ b/tests/test-ip-filter-anyvsock.sh
 | ||||
| @@ -47,6 +47,7 @@ requires nbdsh --version
 | ||||
|  requires nbdsh -c 'print(h.connect_vsock)' | ||||
|  requires_nbdsh_uri | ||||
|  requires_linux_kernel_version 5.6 | ||||
| +requires_vsock_support
 | ||||
|   | ||||
|  # Not supported on Windows. | ||||
|  if is_windows; then | ||||
| diff --git a/tests/test-nbd-vsock.sh b/tests/test-nbd-vsock.sh
 | ||||
| index e3736898..f1f839a0 100755
 | ||||
| --- a/tests/test-nbd-vsock.sh
 | ||||
| +++ b/tests/test-nbd-vsock.sh
 | ||||
| @@ -47,6 +47,7 @@ set -x
 | ||||
|  requires_nbdsh_uri | ||||
|  requires nbdsh -c 'print(h.connect_vsock)' | ||||
|  requires_linux_kernel_version 5.6 | ||||
| +requires_vsock_support
 | ||||
|   | ||||
|  # Because vsock ports are 32 bits, we can basically pick one at random | ||||
|  # and be sure that it's not used.  However we must pick one >= 1024 | ||||
| diff --git a/tests/test-vsock.sh b/tests/test-vsock.sh
 | ||||
| index fc39cb7b..0bcfc4ba 100755
 | ||||
| --- a/tests/test-vsock.sh
 | ||||
| +++ b/tests/test-vsock.sh
 | ||||
| @@ -47,6 +47,7 @@ requires nbdsh --version
 | ||||
|  requires nbdsh -c 'print(h.connect_vsock)' | ||||
|  requires_nbdsh_uri | ||||
|  requires_linux_kernel_version 5.6 | ||||
| +requires_vsock_support
 | ||||
|   | ||||
|  # Because vsock ports are 32 bits, we can basically pick one at random | ||||
|  # and be sure that it's not used.  However we must pick one >= 1024 | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From 72f0a3ce7635c4a94135cb037ae9d36e82bd5f73 Mon Sep 17 00:00:00 2001 | ||||
| From 98da45afe98a59a1dc783968bb3b08008a3d6a68 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Tue, 26 Oct 2021 12:55:14 +0100 | ||||
| Subject: [PATCH] vddk: Update comment about VixDiskLib_PrepareForAccess | ||||
| @ -9,10 +9,10 @@ Subject: [PATCH] vddk: Update comment about VixDiskLib_PrepareForAccess | ||||
|  1 file changed, 3 insertions(+), 4 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 8955bc51..fc377a29 100644
 | ||||
| index c6e023eb..ee9853a7 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -721,10 +721,9 @@ vddk_open (int readonly)
 | ||||
| @@ -676,10 +676,9 @@ vddk_open (int readonly)
 | ||||
|      h->params->specType = VIXDISKLIB_SPEC_VMX; | ||||
|    } | ||||
|   | ||||
| @ -1,4 +1,4 @@ | ||||
| From 6c8f9fada5d50dc3ee5a1304420fdee3ed023d9f Mon Sep 17 00:00:00 2001 | ||||
| From 7d72530453550a613ee311dd0f3bbbbc87165b1c Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Tue, 26 Oct 2021 14:30:43 +0100 | ||||
| Subject: [PATCH] vddk: Document what I found about VixDiskLib_Flush | ||||
| @ -9,10 +9,10 @@ Subject: [PATCH] vddk: Document what I found about VixDiskLib_Flush | ||||
|  1 file changed, 8 insertions(+) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index fc377a29..c506b5a1 100644
 | ||||
| index ee9853a7..f5fa3dfc 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -957,6 +957,14 @@ vddk_flush (void *handle, uint32_t flags)
 | ||||
| @@ -906,6 +906,14 @@ vddk_flush (void *handle, uint32_t flags)
 | ||||
|    struct vddk_handle *h = handle; | ||||
|    VixError err; | ||||
|   | ||||
| @ -24,9 +24,9 @@ index fc377a29..c506b5a1 100644 | ||||
| +   * file so it appears to be the correct call to use here.
 | ||||
| +   */
 | ||||
| +
 | ||||
|    VDDK_CALL_START (VixDiskLib_Flush, "handle") | ||||
|    VDDK_CALL_START (VixDiskLib_Flush, "handle") { | ||||
|      err = VixDiskLib_Flush (h->handle); | ||||
|    VDDK_CALL_END (VixDiskLib_Flush, 0); | ||||
|    } VDDK_CALL_END (VixDiskLib_Flush); | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From 21bfaf35b4a0eb825a3db5736792dac97d1dd7c2 Mon Sep 17 00:00:00 2001 | ||||
| From aa9fdf84c9d77f2334501777a3800ac64b494c54 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Tue, 26 Oct 2021 19:44:46 +0100 | ||||
| Subject: [PATCH] vddk: Note that we have tested VDDK 7.0.3 | ||||
| @ -9,10 +9,10 @@ Subject: [PATCH] vddk: Note that we have tested VDDK 7.0.3 | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| index fd8950c2..0702aa75 100644
 | ||||
| index 2363b8fa..078badcc 100644
 | ||||
| --- a/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| +++ b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| @@ -551,7 +551,7 @@ server, which can also be very slow.
 | ||||
| @@ -480,7 +480,7 @@ For more information see L<https://bugzilla.redhat.com/1614276>.
 | ||||
|  This plugin requires VDDK E<ge> 5.5.5, which in turn means that it | ||||
|  is only supported on x64-64 platforms. | ||||
|   | ||||
							
								
								
									
										54
									
								
								0005-tests-vddk-Cannot-test-real-VDDK-under-valgrind.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								0005-tests-vddk-Cannot-test-real-VDDK-under-valgrind.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,54 @@ | ||||
| From 31317e5d7c249ed318398451ab36d81b0eb5095f Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Wed, 27 Oct 2021 20:20:31 +0100 | ||||
| Subject: [PATCH] tests: vddk: Cannot test real VDDK under valgrind | ||||
| 
 | ||||
| The LD_LIBRARY_PATH munging done in nbdkit-vddk-plugin is incompatible | ||||
| with valgrind, so skip it for both of the real VDDK tests.  This is | ||||
| already done in the dummy VDDK tests. | ||||
| 
 | ||||
| (cherry picked from commit d501b5266c3239b974b79fd6a74ad046729cd046) | ||||
| ---
 | ||||
|  tests/test-vddk-real-dump-plugin.sh | 7 +++++++ | ||||
|  tests/test-vddk-real.sh             | 7 +++++++ | ||||
|  2 files changed, 14 insertions(+) | ||||
| 
 | ||||
| diff --git a/tests/test-vddk-real-dump-plugin.sh b/tests/test-vddk-real-dump-plugin.sh
 | ||||
| index 1479e416..2cb7724e 100755
 | ||||
| --- a/tests/test-vddk-real-dump-plugin.sh
 | ||||
| +++ b/tests/test-vddk-real-dump-plugin.sh
 | ||||
| @@ -39,6 +39,13 @@ requires test -d "$vddkdir"
 | ||||
|  requires test -f "$vddkdir/lib64/libvixDiskLib.so" | ||||
|  requires cut --version | ||||
|   | ||||
| +# Testing $LD_LIBRARY_PATH stuff breaks valgrind, so skip the rest of
 | ||||
| +# this test if valgrinding.
 | ||||
| +if [ "x$NBDKIT_VALGRIND" = "x1" ]; then
 | ||||
| +    echo "$0: skipped LD_LIBRARY_PATH test when doing valgrind"
 | ||||
| +    exit 77
 | ||||
| +fi
 | ||||
| +
 | ||||
|  # VDDK > 5.1.1 only supports x86_64. | ||||
|  if [ `uname -m` != "x86_64" ]; then | ||||
|      echo "$0: unsupported architecture" | ||||
| diff --git a/tests/test-vddk-real.sh b/tests/test-vddk-real.sh
 | ||||
| index 08f6f8d8..e7007bfa 100755
 | ||||
| --- a/tests/test-vddk-real.sh
 | ||||
| +++ b/tests/test-vddk-real.sh
 | ||||
| @@ -45,6 +45,13 @@ requires nbdcopy --version
 | ||||
|  requires nbdinfo --version | ||||
|  requires stat --version | ||||
|   | ||||
| +# Testing $LD_LIBRARY_PATH stuff breaks valgrind, so skip the rest of
 | ||||
| +# this test if valgrinding.
 | ||||
| +if [ "x$NBDKIT_VALGRIND" = "x1" ]; then
 | ||||
| +    echo "$0: skipped LD_LIBRARY_PATH test when doing valgrind"
 | ||||
| +    exit 77
 | ||||
| +fi
 | ||||
| +
 | ||||
|  # VDDK > 5.1.1 only supports x86_64. | ||||
|  if [ `uname -m` != "x86_64" ]; then | ||||
|      echo "$0: unsupported architecture" | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
| @ -0,0 +1,36 @@ | ||||
| From 4b69e586155d10781390a607eb346421187bd72d Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Wed, 27 Oct 2021 20:21:24 +0100 | ||||
| Subject: [PATCH] tests/test-vddk-real.sh: Don't hide log messages on failure | ||||
| 
 | ||||
| Use tee here so we always get the log messages in the log file. | ||||
| Previously if nbdkit returned an error then the log messages were not | ||||
| printed (since "cat $log" line was not reached). | ||||
| 
 | ||||
| (cherry picked from commit efa13d12cd5eb1e15d783a39da5a9e709d157843) | ||||
| ---
 | ||||
|  tests/test-vddk-real.sh | 6 +++--- | ||||
|  1 file changed, 3 insertions(+), 3 deletions(-) | ||||
| 
 | ||||
| diff --git a/tests/test-vddk-real.sh b/tests/test-vddk-real.sh
 | ||||
| index e7007bfa..a6aceac9 100755
 | ||||
| --- a/tests/test-vddk-real.sh
 | ||||
| +++ b/tests/test-vddk-real.sh
 | ||||
| @@ -80,11 +80,11 @@ qemu-img create -f vmdk $vmdk 10M
 | ||||
|  # Check first that the VDDK library can be fully loaded.  We have to | ||||
|  # check the log file for missing modules since they may not show up as | ||||
|  # errors. | ||||
| -nbdkit -fv -U - vddk libdir="$vddkdir" $vmdk --run 'nbdinfo "$uri"' >$log 2>&1
 | ||||
| +nbdkit -fv -U - vddk libdir="$vddkdir" $vmdk --run 'nbdinfo "$uri"' 2>&1 |
 | ||||
| +    tee $log
 | ||||
|   | ||||
|  # Check the log for missing modules | ||||
| -cat $log
 | ||||
| -if grep 'cannot open shared object file' test-vddk-real.log; then
 | ||||
| +if grep 'cannot open shared object file' $log; then
 | ||||
|     exit 1 | ||||
|  fi | ||||
|   | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
							
								
								
									
										47
									
								
								0007-vddk-Small-copyedits-to-README.VDDK.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								0007-vddk-Small-copyedits-to-README.VDDK.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | ||||
| From 0923b0e70735139e1a548addecf6e20c567a96a0 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 30 Oct 2021 08:25:03 +0100 | ||||
| Subject: [PATCH] vddk: Small copyedits to README.VDDK | ||||
| 
 | ||||
| Clean up the sentence about LD_LIBRARY_PATH which could be | ||||
| misconstrued to mean that we recommend setting this (we do not). | ||||
| 
 | ||||
| Remove "bugs" section which was wrong. | ||||
| 
 | ||||
| (cherry picked from commit 55c2a029692fc20bf4a7d4ae857e3609b45ec3dd) | ||||
| ---
 | ||||
|  plugins/vddk/README.VDDK | 17 +++-------------- | ||||
|  1 file changed, 3 insertions(+), 14 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/README.VDDK b/plugins/vddk/README.VDDK
 | ||||
| index f2204d75..c38eaa51 100644
 | ||||
| --- a/plugins/vddk/README.VDDK
 | ||||
| +++ b/plugins/vddk/README.VDDK
 | ||||
| @@ -14,21 +14,10 @@ export VMDK files and VMware disks over NBD.
 | ||||
|  You do NOT require VDDK to compile the plugin, and the plugin does not | ||||
|  contain any VMware code.  You only need VDDK at runtime.  The plugin | ||||
|  uses dlopen to load the library from a directory determined by the | ||||
| -configuration parameter libdir (LD_LIBRARY_PATH or the standard shared
 | ||||
| -library locations can also be used, although that approach is not
 | ||||
| -recommended).
 | ||||
| +configuration parameter libdir.  It is NOT recommended to put VDDK in
 | ||||
| +your regular library path (eg /usr/lib) because it contains components
 | ||||
| +that conflict with system libraries.
 | ||||
|   | ||||
|  After building nbdkit-vddk-plugin.so, read the man page to find out | ||||
|  how to use it (nbdkit-vddk-plugin(1)).  You'll probably also want to | ||||
|  read the VDDK developer documentation. | ||||
| -
 | ||||
| -Bugs
 | ||||
| -----
 | ||||
| -
 | ||||
| -Write calls sometimes return VIX_E_DISK_OUTOFRANGE even for write
 | ||||
| -requests which are well inside the disk.
 | ||||
| -
 | ||||
| -The way we do threading in nbdkit is not congruent with the way you're
 | ||||
| -supposed to call VDDK from multithreaded programs.  For more
 | ||||
| -information see:
 | ||||
| -https://www.redhat.com/archives/libguestfs/2019-October/msg00062.html
 | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
							
								
								
									
										31
									
								
								0008-vddk-Fix-man-page-section-in-help-output.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								0008-vddk-Fix-man-page-section-in-help-output.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,31 @@ | ||||
| From 6a1d99df5750e0da071f7a246b2adea5ee297dd1 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 30 Oct 2021 08:35:05 +0100 | ||||
| Subject: [PATCH] vddk: Fix man page section in --help output | ||||
| 
 | ||||
| $ nbdkit vddk --help | ||||
| ... | ||||
| Many optional parameters are supported, see nbdkit-vddk-plugin(3). | ||||
|                                                         ^^^^^^^^^^ | ||||
| 
 | ||||
| (cherry picked from commit 10c43ad240ec219e7af3d680599dd8c7ef841bba) | ||||
| ---
 | ||||
|  plugins/vddk/vddk.c | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index f5fa3dfc..80f5870e 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -513,7 +513,7 @@ vddk_config_complete (void)
 | ||||
|   | ||||
|  #define vddk_config_help \ | ||||
|    "[file=]<FILENAME>   (required) The filename (eg. VMDK file) to serve.\n" \ | ||||
| -  "Many optional parameters are supported, see nbdkit-vddk-plugin(3)."
 | ||||
| +  "Many optional parameters are supported, see nbdkit-vddk-plugin(1)."
 | ||||
|   | ||||
|  static int | ||||
|  vddk_get_ready (void) | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From 7ab943bbb0ac0dd0094d6771d4cb04374d569eb3 Mon Sep 17 00:00:00 2001 | ||||
| From ec9c61a3f8950f0a196cd5904eea6f1a2a4c05dc Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Thu, 21 Oct 2021 14:49:52 +0100 | ||||
| Subject: [PATCH] vddk: Refactor how -D vddk.stats=1 is collected | ||||
| @ -12,7 +12,7 @@ struct per API for storing these stats. | ||||
|  1 file changed, 18 insertions(+), 18 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index c6e023eb..fc872883 100644
 | ||||
| index 80f5870e..3d751544 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -1,5 +1,5 @@
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From 7139553f4008c0d4dfdce1dae4c933713af60548 Mon Sep 17 00:00:00 2001 | ||||
| From 4636e9b9c9590b520463b16d9f7dedd7355fa54d Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Thu, 21 Oct 2021 15:10:00 +0100 | ||||
| Subject: [PATCH] vddk: Extend -D vddk.stats=1 to show number of calls and | ||||
| @ -34,7 +34,7 @@ nbdkit: debug:   AllocateConnectParams               22     3 | ||||
|  2 files changed, 37 insertions(+), 7 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| index 2363b8fa..88df0ddb 100644
 | ||||
| index 078badcc..e53d3286 100644
 | ||||
| --- a/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| +++ b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| @@ -517,8 +517,7 @@ Suppress debugging of datapath calls (C<Read> and C<Write>).
 | ||||
| @ -48,7 +48,7 @@ index 2363b8fa..88df0ddb 100644 | ||||
|  =back | ||||
|   | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index fc872883..b623c25c 100644
 | ||||
| index 3d751544..5f1d223b 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -106,6 +106,8 @@ static bool is_remote;
 | ||||
| @ -117,7 +117,7 @@ index fc872883..b623c25c 100644 | ||||
|    } | ||||
|    statlist_reset (&stats); | ||||
|  } | ||||
| @@ -832,7 +863,7 @@ vddk_pread (void *handle, void *buf, uint32_t count, uint64_t offset,
 | ||||
| @@ -831,7 +862,7 @@ vddk_pread (void *handle, void *buf, uint32_t count, uint64_t offset,
 | ||||
|                              "%" PRIu32 " sectors, buffer", | ||||
|                              offset, count) { | ||||
|      err = VixDiskLib_Read (h->handle, offset, count, buf); | ||||
| @ -126,7 +126,7 @@ index fc872883..b623c25c 100644 | ||||
|    if (err != VIX_OK) { | ||||
|      VDDK_ERROR (err, "VixDiskLib_Read"); | ||||
|      return -1; | ||||
| @@ -872,7 +903,7 @@ vddk_pwrite (void *handle, const void *buf, uint32_t count, uint64_t offset,
 | ||||
| @@ -871,7 +902,7 @@ vddk_pwrite (void *handle, const void *buf, uint32_t count, uint64_t offset,
 | ||||
|                              "%" PRIu32 " sectors, buffer", | ||||
|                              offset, count) { | ||||
|      err = VixDiskLib_Write (h->handle, offset, count, buf); | ||||
| @ -1,4 +1,4 @@ | ||||
| From 8bd83802eb36508c2ca647da9ba8fb8a5dce7a2b Mon Sep 17 00:00:00 2001 | ||||
| From f746ca775d28ac59a56be705b03fe804766204fa Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Thu, 21 Oct 2021 22:55:17 +0100 | ||||
| Subject: [PATCH] vddk: Simplify and consolidate VDDK_CALL_START/END macros | ||||
| @ -13,7 +13,7 @@ Furthermore we can remove extra { .. } when the macros are applied. | ||||
|  1 file changed, 56 insertions(+), 68 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index b623c25c..85b0c722 100644
 | ||||
| index 5f1d223b..993f2d76 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -125,28 +125,16 @@ static void display_stats (void);
 | ||||
| @ -121,7 +121,7 @@ index b623c25c..85b0c722 100644 | ||||
|    } | ||||
|    else | ||||
|      free (params); | ||||
| @@ -717,13 +705,13 @@ vddk_open (int readonly)
 | ||||
| @@ -716,13 +704,13 @@ vddk_open (int readonly)
 | ||||
|                     "h->params, %d, %s, %s, &connection", | ||||
|                     readonly, | ||||
|                     snapshot_moref ? : "NULL", | ||||
| @ -137,7 +137,7 @@ index b623c25c..85b0c722 100644 | ||||
|    if (err != VIX_OK) { | ||||
|      VDDK_ERROR (err, "VixDiskLib_ConnectEx"); | ||||
|      goto err1; | ||||
| @@ -744,25 +732,25 @@ vddk_open (int readonly)
 | ||||
| @@ -743,25 +731,25 @@ vddk_open (int readonly)
 | ||||
|    } | ||||
|   | ||||
|    VDDK_CALL_START (VixDiskLib_Open, | ||||
| @ -169,7 +169,7 @@ index b623c25c..85b0c722 100644 | ||||
|   err1: | ||||
|    free_connect_params (h->params); | ||||
|   err0: | ||||
| @@ -777,12 +765,12 @@ vddk_close (void *handle)
 | ||||
| @@ -776,12 +764,12 @@ vddk_close (void *handle)
 | ||||
|    ACQUIRE_LOCK_FOR_CURRENT_SCOPE (&open_close_lock); | ||||
|    struct vddk_handle *h = handle; | ||||
|   | ||||
| @ -186,7 +186,7 @@ index b623c25c..85b0c722 100644 | ||||
|   | ||||
|    free_connect_params (h->params); | ||||
|    free (h); | ||||
| @@ -797,9 +785,9 @@ vddk_get_size (void *handle)
 | ||||
| @@ -796,9 +784,9 @@ vddk_get_size (void *handle)
 | ||||
|    VixError err; | ||||
|    uint64_t size; | ||||
|   | ||||
| @ -198,7 +198,7 @@ index b623c25c..85b0c722 100644 | ||||
|    if (err != VIX_OK) { | ||||
|      VDDK_ERROR (err, "VixDiskLib_GetInfo"); | ||||
|      return -1; | ||||
| @@ -828,9 +816,9 @@ vddk_get_size (void *handle)
 | ||||
| @@ -827,9 +815,9 @@ vddk_get_size (void *handle)
 | ||||
|                    info->uuid ? : "NULL"); | ||||
|    } | ||||
|   | ||||
| @ -210,7 +210,7 @@ index b623c25c..85b0c722 100644 | ||||
|   | ||||
|    return (int64_t) size; | ||||
|  } | ||||
| @@ -858,12 +846,12 @@ vddk_pread (void *handle, void *buf, uint32_t count, uint64_t offset,
 | ||||
| @@ -857,12 +845,12 @@ vddk_pread (void *handle, void *buf, uint32_t count, uint64_t offset,
 | ||||
|    offset /= VIXDISKLIB_SECTOR_SIZE; | ||||
|    count /= VIXDISKLIB_SECTOR_SIZE; | ||||
|   | ||||
| @ -228,7 +228,7 @@ index b623c25c..85b0c722 100644 | ||||
|    if (err != VIX_OK) { | ||||
|      VDDK_ERROR (err, "VixDiskLib_Read"); | ||||
|      return -1; | ||||
| @@ -898,12 +886,12 @@ vddk_pwrite (void *handle, const void *buf, uint32_t count, uint64_t offset,
 | ||||
| @@ -897,12 +885,12 @@ vddk_pwrite (void *handle, const void *buf, uint32_t count, uint64_t offset,
 | ||||
|    offset /= VIXDISKLIB_SECTOR_SIZE; | ||||
|    count /= VIXDISKLIB_SECTOR_SIZE; | ||||
|   | ||||
| @ -246,9 +246,9 @@ index b623c25c..85b0c722 100644 | ||||
|    if (err != VIX_OK) { | ||||
|      VDDK_ERROR (err, "VixDiskLib_Write"); | ||||
|      return -1; | ||||
| @@ -938,9 +926,9 @@ vddk_flush (void *handle, uint32_t flags)
 | ||||
|    struct vddk_handle *h = handle; | ||||
|    VixError err; | ||||
| @@ -945,9 +933,9 @@ vddk_flush (void *handle, uint32_t flags)
 | ||||
|     * file so it appears to be the correct call to use here. | ||||
|     */ | ||||
|   | ||||
| -  VDDK_CALL_START (VixDiskLib_Flush, "handle") {
 | ||||
| +  VDDK_CALL_START (VixDiskLib_Flush, "handle")
 | ||||
| @ -258,7 +258,7 @@ index b623c25c..85b0c722 100644 | ||||
|    if (err != VIX_OK) { | ||||
|      VDDK_ERROR (err, "VixDiskLib_Flush"); | ||||
|      return -1; | ||||
| @@ -976,17 +964,17 @@ vddk_can_extents (void *handle)
 | ||||
| @@ -983,17 +971,17 @@ vddk_can_extents (void *handle)
 | ||||
|     */ | ||||
|    VDDK_CALL_START (VixDiskLib_QueryAllocatedBlocks, | ||||
|                     "handle, 0, %d sectors, %d sectors", | ||||
| @ -280,7 +280,7 @@ index b623c25c..85b0c722 100644 | ||||
|    } | ||||
|    if (err != VIX_OK) { | ||||
|      char *errmsg = VixDiskLib_GetErrorText (err, NULL); | ||||
| @@ -1066,12 +1054,12 @@ vddk_extents (void *handle, uint32_t count, uint64_t offset, uint32_t flags,
 | ||||
| @@ -1073,12 +1061,12 @@ vddk_extents (void *handle, uint32_t count, uint64_t offset, uint32_t flags,
 | ||||
|      VDDK_CALL_START (VixDiskLib_QueryAllocatedBlocks, | ||||
|                       "handle, %" PRIu64 " sectors, %" PRIu64 " sectors, " | ||||
|                       "%d sectors", | ||||
| @ -295,7 +295,7 @@ index b623c25c..85b0c722 100644 | ||||
|      if (err != VIX_OK) { | ||||
|        VDDK_ERROR (err, "VixDiskLib_QueryAllocatedBlocks"); | ||||
|        return -1; | ||||
| @@ -1090,15 +1078,15 @@ vddk_extents (void *handle, uint32_t count, uint64_t offset, uint32_t flags,
 | ||||
| @@ -1097,15 +1085,15 @@ vddk_extents (void *handle, uint32_t count, uint64_t offset, uint32_t flags,
 | ||||
|             add_extent (extents, &position, blk_offset, true) == -1) || | ||||
|            (add_extent (extents, | ||||
|                         &position, blk_offset + blk_length, false) == -1)) { | ||||
| @ -1,4 +1,4 @@ | ||||
| From 5bd343fff4a8bb7a115e4b39555a727b33ba52dd Mon Sep 17 00:00:00 2001 | ||||
| From e5fc041defb7cb0e275ed5949bbf7406af70043c Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Fri, 22 Oct 2021 18:00:27 +0100 | ||||
| Subject: [PATCH] vddk: Document troubleshooting performance problems | ||||
| @ -12,7 +12,7 @@ with VDDK. | ||||
|  1 file changed, 57 insertions(+) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| index 88df0ddb..6c50877e 100644
 | ||||
| index e53d3286..5a426135 100644
 | ||||
| --- a/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| +++ b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| @@ -475,6 +475,63 @@ and restarting the C<hostd> service:
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From 7777f1a86f692a9e9bc720e29272321f124208b8 Mon Sep 17 00:00:00 2001 | ||||
| From ab07f475e3bc3980322902aa112c726beada2955 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 23 Oct 2021 16:16:39 +0100 | ||||
| Subject: [PATCH] vddk: Include VDDK major library version in --dump-plugin | ||||
| @ -16,7 +16,7 @@ VDDK major version.  Currently this can be 5, 6 or 7. | ||||
|  3 files changed, 25 insertions(+), 10 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| index 6c50877e..5c356cc4 100644
 | ||||
| index 5a426135..bc3c3c94 100644
 | ||||
| --- a/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| +++ b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| @@ -422,6 +422,10 @@ at runtime.
 | ||||
| @ -31,7 +31,7 @@ index 6c50877e..5c356cc4 100644 | ||||
|   | ||||
|  Prints the full path to the VDDK shared library.  Since this requires | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 85b0c722..14e7ada9 100644
 | ||||
| index 993f2d76..d74a484d 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -81,6 +81,7 @@ NBDKIT_DLL_PUBLIC int vddk_debug_stats;
 | ||||
| @ -120,10 +120,10 @@ index 85b0c722..14e7ada9 100644 | ||||
|  #if defined(HAVE_DLADDR) | ||||
|    /* It would be nice to print the version of VDDK from the shared | ||||
| diff --git a/tests/test-vddk-real-dump-plugin.sh b/tests/test-vddk-real-dump-plugin.sh
 | ||||
| index 1479e416..59c79693 100755
 | ||||
| index 2cb7724e..0a079c6c 100755
 | ||||
| --- a/tests/test-vddk-real-dump-plugin.sh
 | ||||
| +++ b/tests/test-vddk-real-dump-plugin.sh
 | ||||
| @@ -51,10 +51,12 @@ rm -f $files
 | ||||
| @@ -58,10 +58,12 @@ rm -f $files
 | ||||
|  cleanup_fn rm -f $files | ||||
|   | ||||
|  nbdkit -f -v vddk libdir="$vddkdir" --dump-plugin > $out | ||||
| @ -1,4 +1,4 @@ | ||||
| From b4a6854a45eed920ed6631c8c38e979b95a52470 Mon Sep 17 00:00:00 2001 | ||||
| From 3288201c18294bd526f646acded4b2b8333a0a82 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 23 Oct 2021 16:24:27 +0100 | ||||
| Subject: [PATCH] vddk: Add logical and physical sector size to -D | ||||
| @ -17,10 +17,10 @@ before. | ||||
|  2 files changed, 8 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 14e7ada9..290a99a8 100644
 | ||||
| index d74a484d..50bdde26 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -823,6 +823,12 @@ vddk_get_size (void *handle)
 | ||||
| @@ -822,6 +822,12 @@ vddk_get_size (void *handle)
 | ||||
|                    info->parentFileNameHint ? : "NULL"); | ||||
|      nbdkit_debug ("disk info: uuid: %s", | ||||
|                    info->uuid ? : "NULL"); | ||||
| @ -34,10 +34,10 @@ index 14e7ada9..290a99a8 100644 | ||||
|   | ||||
|    VDDK_CALL_START (VixDiskLib_FreeInfo, "info") | ||||
| diff --git a/tests/test-vddk-real.sh b/tests/test-vddk-real.sh
 | ||||
| index 08f6f8d8..b5f85067 100755
 | ||||
| index a6aceac9..ae965245 100755
 | ||||
| --- a/tests/test-vddk-real.sh
 | ||||
| +++ b/tests/test-vddk-real.sh
 | ||||
| @@ -82,7 +82,8 @@ if grep 'cannot open shared object file' test-vddk-real.log; then
 | ||||
| @@ -89,7 +89,8 @@ if grep 'cannot open shared object file' $log; then
 | ||||
|  fi | ||||
|   | ||||
|  # Now run nbdkit for the test. | ||||
| @ -1,4 +1,4 @@ | ||||
| From a11757f193bc86f74cb67b52b727bd9b762bf573 Mon Sep 17 00:00:00 2001 | ||||
| From 39a97a678ec1a900681c93743f37b930ea002cc9 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 23 Oct 2021 19:41:07 +0100 | ||||
| Subject: [PATCH] vddk: Fix typo in debug message | ||||
| @ -10,10 +10,10 @@ Fixes: commit 5bb8f0586e1faabcbf4f43d722a3b3cb5b352e33 | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 290a99a8..e206a47f 100644
 | ||||
| index 50bdde26..65399a91 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -824,7 +824,7 @@ vddk_get_size (void *handle)
 | ||||
| @@ -823,7 +823,7 @@ vddk_get_size (void *handle)
 | ||||
|      nbdkit_debug ("disk info: uuid: %s", | ||||
|                    info->uuid ? : "NULL"); | ||||
|      if (library_version >= 7) { | ||||
| @ -1,4 +1,4 @@ | ||||
| From 574d356f6c55b8f0873586a20b07f7a898e955b0 Mon Sep 17 00:00:00 2001 | ||||
| From 99d0b4cc090efe3af47b14fdb089929af1ed09bf Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 23 Oct 2021 19:50:52 +0100 | ||||
| Subject: [PATCH] vddk: Only print vddk_library_version when we managed to load | ||||
| @ -19,7 +19,7 @@ Fixes: commit 8700649d147948897f3b97810a1dff37924bdd6e | ||||
|  2 files changed, 9 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| index 5c356cc4..a5534f2e 100644
 | ||||
| index bc3c3c94..49e3d75d 100644
 | ||||
| --- a/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| +++ b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| @@ -425,6 +425,7 @@ by this build.
 | ||||
| @ -31,7 +31,7 @@ index 5c356cc4..a5534f2e 100644 | ||||
|  =item C<vddk_dll=...> | ||||
|   | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index e206a47f..e54eb9a8 100644
 | ||||
| index 65399a91..39a7d261 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -591,7 +591,14 @@ vddk_dump_plugin (void)
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From bb1c6bc5db8169498e05adce22b01ac51eaaae47 Mon Sep 17 00:00:00 2001 | ||||
| From 157ccfc0445eaa8cae99555d8ad31ba3cdf8c4bf Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Mon, 25 Oct 2021 08:36:53 +0100 | ||||
| Subject: [PATCH] vddk: Print one line in --dump-plugin output for each VDDK | ||||
| @ -15,7 +15,7 @@ as flush and extents. | ||||
|  3 files changed, 20 insertions(+) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| index a5534f2e..fd8950c2 100644
 | ||||
| index 49e3d75d..0702aa75 100644
 | ||||
| --- a/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| +++ b/plugins/vddk/nbdkit-vddk-plugin.pod
 | ||||
| @@ -432,6 +432,15 @@ If this is omitted it means the library could not be loaded.
 | ||||
| @ -35,7 +35,7 @@ index a5534f2e..fd8950c2 100644 | ||||
|   | ||||
|  =head1 NOTES | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index e54eb9a8..8955bc51 100644
 | ||||
| index 39a7d261..096b04bf 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -616,6 +616,16 @@ vddk_dump_plugin (void)
 | ||||
| @ -56,10 +56,10 @@ index e54eb9a8..8955bc51 100644 | ||||
|   | ||||
|  /* The rules on threads and VDDK are here: | ||||
| diff --git a/tests/test-vddk-real-dump-plugin.sh b/tests/test-vddk-real-dump-plugin.sh
 | ||||
| index 59c79693..92e1f3d2 100755
 | ||||
| index 0a079c6c..e37c8b54 100755
 | ||||
| --- a/tests/test-vddk-real-dump-plugin.sh
 | ||||
| +++ b/tests/test-vddk-real-dump-plugin.sh
 | ||||
| @@ -58,6 +58,7 @@ grep ^vddk_default_libdir= $out
 | ||||
| @@ -65,6 +65,7 @@ grep ^vddk_default_libdir= $out
 | ||||
|  grep ^vddk_has_nfchostport= $out | ||||
|  grep ^vddk_library_version= $out | ||||
|  grep ^vddk_dll= $out | ||||
| @ -1,4 +1,4 @@ | ||||
| From a50111258e315abe3f8f2bf89cb72a1d6711f454 Mon Sep 17 00:00:00 2001 | ||||
| From cf4a8fe83b9f232a16631c157edb1b560ee893a1 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Tue, 26 Oct 2021 19:46:32 +0100 | ||||
| Subject: [PATCH] vddk: Move minimum version to VDDK 6.5 | ||||
| @ -63,7 +63,7 @@ index 5e70238d..a94df9cd 100644 | ||||
|   | ||||
|  STUB (VixDiskLib_InitEx, | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index c506b5a1..bf12c3c9 100644
 | ||||
| index 096b04bf..babffc28 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -75,13 +75,13 @@ NBDKIT_DLL_PUBLIC int vddk_debug_stats;
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From cf60f0e3a2f6fb8efe79ec41ca284050990b4d79 Mon Sep 17 00:00:00 2001 | ||||
| From 96d09a3a3d5306891300eb4b07af7bb605d4515c Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Wed, 27 Oct 2021 11:57:35 +0100 | ||||
| Subject: [PATCH] vddk: Add read, write and wait asynchronous functions | ||||
| @ -1,4 +1,4 @@ | ||||
| From da7c163452d2a1f073a6d5c6d4d6fda824aa9a6f Mon Sep 17 00:00:00 2001 | ||||
| From 11b89043e0f1875b3ce912fe85d79fe61f3e6386 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Wed, 27 Oct 2021 12:20:31 +0100 | ||||
| Subject: [PATCH] vddk: Start to split VDDK over several files | ||||
| @ -15,7 +15,7 @@ Acked-by: Laszlo Ersek <lersek@redhat.com> | ||||
|  2 files changed, 112 insertions(+), 68 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index bf12c3c9..0167aa2f 100644
 | ||||
| index babffc28..041bff1a 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -50,14 +50,12 @@
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From 837407bebdf1d746e047d3664156d2ad09784e31 Mon Sep 17 00:00:00 2001 | ||||
| From 10a6d7b4a1552862d6a68dd4a0d8a55f6938c8b5 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Wed, 27 Oct 2021 12:30:41 +0100 | ||||
| Subject: [PATCH] vddk: Refactor -D vddk.stats=1 into a new file | ||||
| @ -150,7 +150,7 @@ index 00000000..18a42714 | ||||
| +  statlist_reset (&stats);
 | ||||
| +}
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 0167aa2f..c05dbfcc 100644
 | ||||
| index 041bff1a..67ac775c 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -61,7 +61,6 @@
 | ||||
| @ -1,4 +1,4 @@ | ||||
| From 43e4f0cba34e2b96579339c2c0293c085a591877 Mon Sep 17 00:00:00 2001 | ||||
| From bec712790d982f4e33a2e68157eef47372435f38 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Wed, 27 Oct 2021 10:17:22 +0100 | ||||
| Subject: [PATCH] vddk: Implement parallel thread model | ||||
| @ -83,7 +83,7 @@ index 1c16d096..ce82a734 100644 | ||||
|  =item B<-D vddk.stats=1> | ||||
|   | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index c05dbfcc..cd3c3134 100644
 | ||||
| index 67ac775c..9f223db0 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -50,9 +50,6 @@
 | ||||
							
								
								
									
										57
									
								
								0023-vddk-Assume-that-VixDiskLib_Flush-is-available.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								0023-vddk-Assume-that-VixDiskLib_Flush-is-available.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,57 @@ | ||||
| From 1baf75aa963bf3193ba62f9c8865cd0feeca1c82 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Fri, 29 Oct 2021 20:56:55 +0100 | ||||
| Subject: [PATCH] vddk: Assume that VixDiskLib_Flush is available | ||||
| 
 | ||||
| Since we now require and check that VDDK >= 6.5, we can assume that | ||||
| VixDiskLib_Flush is always available. | ||||
| 
 | ||||
| (cherry picked from commit e3685e6f0d0b71ab24b96fe85430a3b75da58736) | ||||
| ---
 | ||||
|  plugins/vddk/vddk.c | 15 +++++++++++---- | ||||
|  1 file changed, 11 insertions(+), 4 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 9f223db0..f967e2d9 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -378,6 +378,12 @@ load_library (bool load_error_is_fatal)
 | ||||
|                    "See nbdkit-vddk-plugin(1) man page section \"SUPPORTED VERSIONS OF VDDK\"."); | ||||
|      exit (EXIT_FAILURE); | ||||
|    } | ||||
| +
 | ||||
| +  /* Added in VDDK 6.0 so it must always be present.  Since we are
 | ||||
| +   * going to call this function unconditionally, fail early and hard
 | ||||
| +   * if for some reason it's not present.
 | ||||
| +   */
 | ||||
| +  assert (VixDiskLib_Flush != NULL);
 | ||||
|  } | ||||
|   | ||||
|  static int | ||||
| @@ -725,18 +731,19 @@ vddk_get_size (void *handle)
 | ||||
|    return (int64_t) size; | ||||
|  } | ||||
|   | ||||
| +/* The Flush call was added in VDDK 6.0, since we support minimum 6.5
 | ||||
| + * we are always able to do FUA / flush.
 | ||||
| + */
 | ||||
|  static int | ||||
|  vddk_can_fua (void *handle) | ||||
|  { | ||||
| -  /* The Flush call was not available in VDDK < 6.0. */
 | ||||
| -  return VixDiskLib_Flush != NULL ? NBDKIT_FUA_NATIVE : NBDKIT_FUA_NONE;
 | ||||
| +  return NBDKIT_FUA_NATIVE;
 | ||||
|  } | ||||
|   | ||||
|  static int | ||||
|  vddk_can_flush (void *handle) | ||||
|  { | ||||
| -  /* The Flush call was not available in VDDK < 6.0. */
 | ||||
| -  return VixDiskLib_Flush != NULL;
 | ||||
| +  return 1;
 | ||||
|  } | ||||
|   | ||||
|  /* Read data from the file. | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
							
								
								
									
										186
									
								
								0024-vddk-Simplify-detection-of-VDDK-symbols-and-baseline.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										186
									
								
								0024-vddk-Simplify-detection-of-VDDK-symbols-and-baseline.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,186 @@ | ||||
| From 85f208d1641be515c21f8a3cded609cb1e5f8765 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Fri, 29 Oct 2021 21:02:54 +0100 | ||||
| Subject: [PATCH] vddk: Simplify detection of VDDK symbols and baseline 6.5 | ||||
| 
 | ||||
| Make all symbols from VDDK 6.5 into required symbols and use a single | ||||
| error message function if one of these is missing.  The new error is: | ||||
| 
 | ||||
|   nbdkit: error: required VDDK symbol "VixDiskLib_Wait" is | ||||
|   missing. VDDK version must be >= 6.5. See nbdkit-vddk-plugin(1) man | ||||
|   page section "SUPPORTED VERSIONS OF VDDK". Original dlopen error: | ||||
|   vmware-vix-disklib-distrib/lib64/libvixDiskLib.so.6: undefined | ||||
|   symbol: VixDiskLib_Wait | ||||
| 
 | ||||
| Remove the extra check and assert. | ||||
| 
 | ||||
| Be more consistent about #define OPTIONAL_STUB(fn,ret,args) STUB(fn,ret,args) | ||||
| when we want the optional and required stubs to do the same thing. | ||||
| 
 | ||||
| (cherry picked from commit ec0d22e61881efa39a69d02ccb9e4ede8bf95e75) | ||||
| ---
 | ||||
|  plugins/vddk/stats.c      |  2 +- | ||||
|  plugins/vddk/vddk-stubs.h | 45 ++++++++++++++++++--------------------- | ||||
|  plugins/vddk/vddk.c       | 36 ++++++++++++------------------- | ||||
|  plugins/vddk/vddk.h       |  2 +- | ||||
|  4 files changed, 37 insertions(+), 48 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/stats.c b/plugins/vddk/stats.c
 | ||||
| index 18a42714..76e0c244 100644
 | ||||
| --- a/plugins/vddk/stats.c
 | ||||
| +++ b/plugins/vddk/stats.c
 | ||||
| @@ -89,7 +89,7 @@ display_stats (void)
 | ||||
|    if (!vddk_debug_stats) return; | ||||
|   | ||||
|  #define STUB(fn,ret,args) statlist_append (&stats, stats_##fn) | ||||
| -#define OPTIONAL_STUB(fn,ret,args) statlist_append (&stats, stats_##fn)
 | ||||
| +#define OPTIONAL_STUB(fn,ret,args) STUB(fn,ret,args)
 | ||||
|  #include "vddk-stubs.h" | ||||
|  #undef STUB | ||||
|  #undef OPTIONAL_STUB | ||||
| diff --git a/plugins/vddk/vddk-stubs.h b/plugins/vddk/vddk-stubs.h
 | ||||
| index 66353691..7d8644c3 100644
 | ||||
| --- a/plugins/vddk/vddk-stubs.h
 | ||||
| +++ b/plugins/vddk/vddk-stubs.h
 | ||||
| @@ -39,10 +39,7 @@
 | ||||
|   * function name, return value, arguments. | ||||
|   */ | ||||
|   | ||||
| -/* Required stubs, present in all versions of VDDK that we support.  I
 | ||||
| - * have checked that all these exist in at least VDDK 5.5.5 (2015).
 | ||||
| - */
 | ||||
| -
 | ||||
| +/* Required stubs, present in all versions of VDDK since 6.5 (Nov 2016). */
 | ||||
|  STUB (VixDiskLib_InitEx, | ||||
|        VixError, | ||||
|        (uint32_t major, uint32_t minor, | ||||
| @@ -103,27 +100,27 @@ STUB (VixDiskLib_Write,
 | ||||
|         uint64_t start_sector, uint64_t nr_sectors, | ||||
|         const unsigned char *buf)); | ||||
|   | ||||
| -/* Added in VDDK 6.0, these will be NULL in earlier versions. */
 | ||||
| -OPTIONAL_STUB (VixDiskLib_Flush,
 | ||||
| -               VixError,
 | ||||
| -               (VixDiskLibHandle handle));
 | ||||
| -OPTIONAL_STUB (VixDiskLib_ReadAsync,
 | ||||
| -               VixError,
 | ||||
| -               (VixDiskLibHandle handle,
 | ||||
| -                uint64_t start_sector, uint64_t nr_sectors,
 | ||||
| -                unsigned char *buf,
 | ||||
| -                VixDiskLibCompletionCB callback, void *data));
 | ||||
| -OPTIONAL_STUB (VixDiskLib_WriteAsync,
 | ||||
| -               VixError,
 | ||||
| -               (VixDiskLibHandle handle,
 | ||||
| -                uint64_t start_sector, uint64_t nr_sectors,
 | ||||
| -                const unsigned char *buf,
 | ||||
| -                VixDiskLibCompletionCB callback, void *data));
 | ||||
| +/* Added in VDDK 6.0. */
 | ||||
| +STUB (VixDiskLib_Flush,
 | ||||
| +      VixError,
 | ||||
| +      (VixDiskLibHandle handle));
 | ||||
| +STUB (VixDiskLib_ReadAsync,
 | ||||
| +      VixError,
 | ||||
| +      (VixDiskLibHandle handle,
 | ||||
| +       uint64_t start_sector, uint64_t nr_sectors,
 | ||||
| +       unsigned char *buf,
 | ||||
| +       VixDiskLibCompletionCB callback, void *data));
 | ||||
| +STUB (VixDiskLib_WriteAsync,
 | ||||
| +      VixError,
 | ||||
| +      (VixDiskLibHandle handle,
 | ||||
| +       uint64_t start_sector, uint64_t nr_sectors,
 | ||||
| +       const unsigned char *buf,
 | ||||
| +       VixDiskLibCompletionCB callback, void *data));
 | ||||
|   | ||||
| -/* Added in VDDK 6.5, this will be NULL in earlier versions. */
 | ||||
| -OPTIONAL_STUB (VixDiskLib_Wait,
 | ||||
| -               VixError,
 | ||||
| -               (VixDiskLibHandle handle));
 | ||||
| +/* Added in VDDK 6.5. */
 | ||||
| +STUB (VixDiskLib_Wait,
 | ||||
| +      VixError,
 | ||||
| +      (VixDiskLibHandle handle));
 | ||||
|   | ||||
|  /* Added in VDDK 6.7, these will be NULL for earlier versions: */ | ||||
|  OPTIONAL_STUB (VixDiskLib_QueryAllocatedBlocks, | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index f967e2d9..271b5ee0 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -63,7 +63,7 @@ NBDKIT_DLL_PUBLIC int vddk_debug_datapath = 1;
 | ||||
|   * initialized when the plugin is loaded (by vddk_get_ready). | ||||
|   */ | ||||
|  #define STUB(fn,ret,args) ret (*fn) args | ||||
| -#define OPTIONAL_STUB(fn,ret,args) ret (*fn) args
 | ||||
| +#define OPTIONAL_STUB(fn,ret,args) STUB(fn,ret,args)
 | ||||
|  #include "vddk-stubs.h" | ||||
|  #undef STUB | ||||
|  #undef OPTIONAL_STUB | ||||
| @@ -282,6 +282,17 @@ vddk_config (const char *key, const char *value)
 | ||||
|    return 0; | ||||
|  } | ||||
|   | ||||
| +static void
 | ||||
| +missing_required_symbol (const char *fn)
 | ||||
| +{
 | ||||
| +  nbdkit_error ("required VDDK symbol \"%s\" is missing. "
 | ||||
| +                "VDDK version must be >= 6.5. "
 | ||||
| +                "See nbdkit-vddk-plugin(1) man page section \"SUPPORTED VERSIONS OF VDDK\". "
 | ||||
| +                "Original dlopen error: %s\n",
 | ||||
| +                fn, dlerror ());
 | ||||
| +  exit (EXIT_FAILURE);
 | ||||
| +}
 | ||||
| +
 | ||||
|  /* Load the VDDK library. */ | ||||
|  static void | ||||
|  load_library (bool load_error_is_fatal) | ||||
| @@ -358,32 +369,13 @@ load_library (bool load_error_is_fatal)
 | ||||
|  #define STUB(fn,ret,args)                                         \ | ||||
|    do {                                                            \ | ||||
|      fn = dlsym (dl, #fn);                                         \ | ||||
| -    if (fn == NULL) {                                             \
 | ||||
| -      nbdkit_error ("required VDDK symbol \"%s\" is missing: %s", \
 | ||||
| -                    #fn, dlerror ());                             \
 | ||||
| -      exit (EXIT_FAILURE);                                        \
 | ||||
| -    }                                                             \
 | ||||
| +    if (fn == NULL)                                               \
 | ||||
| +      missing_required_symbol (#fn);                              \
 | ||||
|    } while (0) | ||||
|  #define OPTIONAL_STUB(fn,ret,args) fn = dlsym (dl, #fn) | ||||
|  #include "vddk-stubs.h" | ||||
|  #undef STUB | ||||
|  #undef OPTIONAL_STUB | ||||
| -
 | ||||
| -  /* Additionally, VDDK version must be >= 6.5.  This was the first
 | ||||
| -   * version which introduced VixDiskLib_Wait symbol so we can check
 | ||||
| -   * for that.
 | ||||
| -   */
 | ||||
| -  if (VixDiskLib_Wait == NULL) {
 | ||||
| -    nbdkit_error ("VDDK version must be >= 6.5. "
 | ||||
| -                  "See nbdkit-vddk-plugin(1) man page section \"SUPPORTED VERSIONS OF VDDK\".");
 | ||||
| -    exit (EXIT_FAILURE);
 | ||||
| -  }
 | ||||
| -
 | ||||
| -  /* Added in VDDK 6.0 so it must always be present.  Since we are
 | ||||
| -   * going to call this function unconditionally, fail early and hard
 | ||||
| -   * if for some reason it's not present.
 | ||||
| -   */
 | ||||
| -  assert (VixDiskLib_Flush != NULL);
 | ||||
|  } | ||||
|   | ||||
|  static int | ||||
| diff --git a/plugins/vddk/vddk.h b/plugins/vddk/vddk.h
 | ||||
| index be0b3492..0e3dd79e 100644
 | ||||
| --- a/plugins/vddk/vddk.h
 | ||||
| +++ b/plugins/vddk/vddk.h
 | ||||
| @@ -76,7 +76,7 @@ extern int vddk_debug_datapath;
 | ||||
|  extern int vddk_debug_stats; | ||||
|   | ||||
|  #define STUB(fn,ret,args) extern ret (*fn) args | ||||
| -#define OPTIONAL_STUB(fn,ret,args) extern ret (*fn) args
 | ||||
| +#define OPTIONAL_STUB(fn,ret,args) STUB(fn,ret,args)
 | ||||
|  #include "vddk-stubs.h" | ||||
|  #undef STUB | ||||
|  #undef OPTIONAL_STUB | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
| @ -0,0 +1,40 @@ | ||||
| From be040472beb5a4d2aeac088ec8c9c4e654c37b0f Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 30 Oct 2021 08:34:28 +0100 | ||||
| Subject: [PATCH] vddk: Remove some whitespace from a couple of functions | ||||
| 
 | ||||
| (cherry picked from commit 974dce2c2ef84fc096ee319f340054234a29df91) | ||||
| ---
 | ||||
|  plugins/vddk/vddk.c | 9 ++------- | ||||
|  1 file changed, 2 insertions(+), 7 deletions(-) | ||||
| 
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 271b5ee0..184f1a9c 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -792,9 +792,7 @@ static int
 | ||||
|  vddk_flush (void *handle, uint32_t flags) | ||||
|  { | ||||
|    struct vddk_handle *h = handle; | ||||
| -  struct command flush_cmd = {
 | ||||
| -    .type = FLUSH,
 | ||||
| -  };
 | ||||
| +  struct command flush_cmd = { .type = FLUSH };
 | ||||
|   | ||||
|    return send_command_and_wait (h, &flush_cmd); | ||||
|  } | ||||
| @@ -804,10 +802,7 @@ vddk_can_extents (void *handle)
 | ||||
|  { | ||||
|    struct vddk_handle *h = handle; | ||||
|    int ret; | ||||
| -  struct command can_extents_cmd = {
 | ||||
| -    .type = CAN_EXTENTS,
 | ||||
| -    .ptr = &ret,
 | ||||
| -  };
 | ||||
| +  struct command can_extents_cmd = { .type = CAN_EXTENTS, .ptr = &ret };
 | ||||
|   | ||||
|    if (send_command_and_wait (h, &can_extents_cmd) == -1) | ||||
|      return -1; | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
							
								
								
									
										338
									
								
								0026-vddk-Move-config-debug-error-and-utility-functions-a.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										338
									
								
								0026-vddk-Move-config-debug-error-and-utility-functions-a.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,338 @@ | ||||
| From 71d2609243de560f1e49e6e5d3ad1f638e198108 Mon Sep 17 00:00:00 2001 | ||||
| From: "Richard W.M. Jones" <rjones@redhat.com> | ||||
| Date: Sat, 30 Oct 2021 08:27:39 +0100 | ||||
| Subject: [PATCH] vddk: Move config, debug/error and utility functions around | ||||
| 
 | ||||
| Move the functions so they are nearer to where they are used. | ||||
| Introduce a utils.c file for utility functions. | ||||
| 
 | ||||
| This is just code rearrangement with no other effects. | ||||
| 
 | ||||
| (cherry picked from commit c59be086210a06688b9195e0b91f8603a668654a) | ||||
| ---
 | ||||
|  plugins/vddk/Makefile.am |   1 + | ||||
|  plugins/vddk/utils.c     |  51 ++++++++++ | ||||
|  plugins/vddk/vddk.c      | 201 +++++++++++++++++++-------------------- | ||||
|  plugins/vddk/vddk.h      |   3 + | ||||
|  4 files changed, 151 insertions(+), 105 deletions(-) | ||||
|  create mode 100644 plugins/vddk/utils.c | ||||
| 
 | ||||
| diff --git a/plugins/vddk/Makefile.am b/plugins/vddk/Makefile.am
 | ||||
| index f8382fc9..02113da0 100644
 | ||||
| --- a/plugins/vddk/Makefile.am
 | ||||
| +++ b/plugins/vddk/Makefile.am
 | ||||
| @@ -47,6 +47,7 @@ nbdkit_vddk_plugin_la_SOURCES = \
 | ||||
|  	vddk.h \ | ||||
|  	reexec.c \ | ||||
|  	stats.c \ | ||||
| +	utils.c \
 | ||||
|  	vddk-structs.h \ | ||||
|  	vddk-stubs.h \ | ||||
|  	worker.c \ | ||||
| diff --git a/plugins/vddk/utils.c b/plugins/vddk/utils.c
 | ||||
| new file mode 100644 | ||||
| index 00000000..f0c19950
 | ||||
| --- /dev/null
 | ||||
| +++ b/plugins/vddk/utils.c
 | ||||
| @@ -0,0 +1,51 @@
 | ||||
| +/* nbdkit
 | ||||
| + * 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.
 | ||||
| + */
 | ||||
| +
 | ||||
| +#include <config.h>
 | ||||
| +
 | ||||
| +#include <stdio.h>
 | ||||
| +#include <stdlib.h>
 | ||||
| +#include <string.h>
 | ||||
| +
 | ||||
| +#define NBDKIT_API_VERSION 2
 | ||||
| +#include <nbdkit-plugin.h>
 | ||||
| +
 | ||||
| +#include "vddk.h"
 | ||||
| +
 | ||||
| +void
 | ||||
| +trim (char *str)
 | ||||
| +{
 | ||||
| +  size_t len = strlen (str);
 | ||||
| +
 | ||||
| +  if (len > 0 && str[len-1] == '\n')
 | ||||
| +    str[len-1] = '\0';
 | ||||
| +}
 | ||||
| diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
 | ||||
| index 184f1a9c..31e5e23b 100644
 | ||||
| --- a/plugins/vddk/vddk.c
 | ||||
| +++ b/plugins/vddk/vddk.c
 | ||||
| @@ -114,61 +114,6 @@ vddk_unload (void)
 | ||||
|    free (password); | ||||
|  } | ||||
|   | ||||
| -static void
 | ||||
| -trim (char *str)
 | ||||
| -{
 | ||||
| -  size_t len = strlen (str);
 | ||||
| -
 | ||||
| -  if (len > 0 && str[len-1] == '\n')
 | ||||
| -    str[len-1] = '\0';
 | ||||
| -}
 | ||||
| -
 | ||||
| -/* Turn log messages from the library into nbdkit_debug. */
 | ||||
| -static void
 | ||||
| -debug_function (const char *fs, va_list args)
 | ||||
| -{
 | ||||
| -  CLEANUP_FREE char *str = NULL;
 | ||||
| -
 | ||||
| -  if (vasprintf (&str, fs, args) == -1) {
 | ||||
| -    nbdkit_debug ("lost debug message: %s", fs);
 | ||||
| -    return;
 | ||||
| -  }
 | ||||
| -
 | ||||
| -  trim (str);
 | ||||
| -
 | ||||
| -  nbdkit_debug ("%s", str);
 | ||||
| -}
 | ||||
| -
 | ||||
| -/* Turn error messages from the library into nbdkit_error. */
 | ||||
| -static void
 | ||||
| -error_function (const char *fs, va_list args)
 | ||||
| -{
 | ||||
| -  CLEANUP_FREE char *str = NULL;
 | ||||
| -
 | ||||
| -  /* If the thread-local error_suppression flag is non-zero then we
 | ||||
| -   * will suppress error messages from VDDK in this thread.
 | ||||
| -   */
 | ||||
| -  if (error_suppression) return;
 | ||||
| -
 | ||||
| -  if (vasprintf (&str, fs, args) == -1) {
 | ||||
| -    nbdkit_error ("lost error message: %s", fs);
 | ||||
| -    return;
 | ||||
| -  }
 | ||||
| -
 | ||||
| -  trim (str);
 | ||||
| -
 | ||||
| -  /* VDDK 7 added a useless error message about their "phone home"
 | ||||
| -   * system called CEIP which only panics users.  Demote it to a debug
 | ||||
| -   * statement.  https://bugzilla.redhat.com/show_bug.cgi?id=1834267
 | ||||
| -   */
 | ||||
| -  if (strstr (str, "Get CEIP status failed") != NULL) {
 | ||||
| -    nbdkit_debug ("%s", str);
 | ||||
| -    return;
 | ||||
| -  }
 | ||||
| -
 | ||||
| -  nbdkit_error ("%s", str);
 | ||||
| -}
 | ||||
| -
 | ||||
|  /* Configuration. */ | ||||
|  static int | ||||
|  vddk_config (const char *key, const char *value) | ||||
| @@ -282,6 +227,56 @@ vddk_config (const char *key, const char *value)
 | ||||
|    return 0; | ||||
|  } | ||||
|   | ||||
| +static int
 | ||||
| +vddk_config_complete (void)
 | ||||
| +{
 | ||||
| +  if (filename == NULL) {
 | ||||
| +    nbdkit_error ("you must supply the file=<FILENAME> parameter "
 | ||||
| +                  "after the plugin name on the command line");
 | ||||
| +    return -1;
 | ||||
| +  }
 | ||||
| +
 | ||||
| +  /* For remote connections, check all the parameters have been
 | ||||
| +   * passed.  Note that VDDK will segfault if parameters that it
 | ||||
| +   * expects are NULL (and there's no real way to tell what parameters
 | ||||
| +   * it is expecting).  This implements the same test that the VDDK
 | ||||
| +   * sample program does.
 | ||||
| +   */
 | ||||
| +  is_remote =
 | ||||
| +    vmx_spec ||
 | ||||
| +    server_name ||
 | ||||
| +    username ||
 | ||||
| +    password ||
 | ||||
| +    cookie ||
 | ||||
| +    thumb_print ||
 | ||||
| +    port ||
 | ||||
| +    nfc_host_port;
 | ||||
| +
 | ||||
| +  if (is_remote) {
 | ||||
| +#define missing(test, param)                                            \
 | ||||
| +    if (test) {                                                         \
 | ||||
| +      nbdkit_error ("remote connection requested, missing parameter: %s", \
 | ||||
| +                    param);                                             \
 | ||||
| +      return -1;                                                        \
 | ||||
| +    }
 | ||||
| +    missing (!server_name, "server");
 | ||||
| +    missing (!username, "user");
 | ||||
| +    missing (!password, "password");
 | ||||
| +    missing (!vmx_spec, "vm");
 | ||||
| +#undef missing
 | ||||
| +  }
 | ||||
| +
 | ||||
| +  /* Restore original LD_LIBRARY_PATH after reexec. */
 | ||||
| +  if (restore_ld_library_path () == -1)
 | ||||
| +    return -1;
 | ||||
| +
 | ||||
| +  return 0;
 | ||||
| +}
 | ||||
| +
 | ||||
| +#define vddk_config_help \
 | ||||
| +  "[file=]<FILENAME>   (required) The filename (eg. VMDK file) to serve.\n" \
 | ||||
| +  "Many optional parameters are supported, see nbdkit-vddk-plugin(1)."
 | ||||
| +
 | ||||
|  static void | ||||
|  missing_required_symbol (const char *fn) | ||||
|  { | ||||
| @@ -378,56 +373,6 @@ load_library (bool load_error_is_fatal)
 | ||||
|  #undef OPTIONAL_STUB | ||||
|  } | ||||
|   | ||||
| -static int
 | ||||
| -vddk_config_complete (void)
 | ||||
| -{
 | ||||
| -  if (filename == NULL) {
 | ||||
| -    nbdkit_error ("you must supply the file=<FILENAME> parameter "
 | ||||
| -                  "after the plugin name on the command line");
 | ||||
| -    return -1;
 | ||||
| -  }
 | ||||
| -
 | ||||
| -  /* For remote connections, check all the parameters have been
 | ||||
| -   * passed.  Note that VDDK will segfault if parameters that it
 | ||||
| -   * expects are NULL (and there's no real way to tell what parameters
 | ||||
| -   * it is expecting).  This implements the same test that the VDDK
 | ||||
| -   * sample program does.
 | ||||
| -   */
 | ||||
| -  is_remote =
 | ||||
| -    vmx_spec ||
 | ||||
| -    server_name ||
 | ||||
| -    username ||
 | ||||
| -    password ||
 | ||||
| -    cookie ||
 | ||||
| -    thumb_print ||
 | ||||
| -    port ||
 | ||||
| -    nfc_host_port;
 | ||||
| -
 | ||||
| -  if (is_remote) {
 | ||||
| -#define missing(test, param)                                            \
 | ||||
| -    if (test) {                                                         \
 | ||||
| -      nbdkit_error ("remote connection requested, missing parameter: %s", \
 | ||||
| -                    param);                                             \
 | ||||
| -      return -1;                                                        \
 | ||||
| -    }
 | ||||
| -    missing (!server_name, "server");
 | ||||
| -    missing (!username, "user");
 | ||||
| -    missing (!password, "password");
 | ||||
| -    missing (!vmx_spec, "vm");
 | ||||
| -#undef missing
 | ||||
| -  }
 | ||||
| -
 | ||||
| -  /* Restore original LD_LIBRARY_PATH after reexec. */
 | ||||
| -  if (restore_ld_library_path () == -1)
 | ||||
| -    return -1;
 | ||||
| -
 | ||||
| -  return 0;
 | ||||
| -}
 | ||||
| -
 | ||||
| -#define vddk_config_help \
 | ||||
| -  "[file=]<FILENAME>   (required) The filename (eg. VMDK file) to serve.\n" \
 | ||||
| -  "Many optional parameters are supported, see nbdkit-vddk-plugin(1)."
 | ||||
| -
 | ||||
|  static int | ||||
|  vddk_get_ready (void) | ||||
|  { | ||||
| @@ -435,6 +380,52 @@ vddk_get_ready (void)
 | ||||
|    return 0; | ||||
|  } | ||||
|   | ||||
| +/* Turn log messages from the library into nbdkit_debug. */
 | ||||
| +static void
 | ||||
| +debug_function (const char *fs, va_list args)
 | ||||
| +{
 | ||||
| +  CLEANUP_FREE char *str = NULL;
 | ||||
| +
 | ||||
| +  if (vasprintf (&str, fs, args) == -1) {
 | ||||
| +    nbdkit_debug ("lost debug message: %s", fs);
 | ||||
| +    return;
 | ||||
| +  }
 | ||||
| +
 | ||||
| +  trim (str);
 | ||||
| +
 | ||||
| +  nbdkit_debug ("%s", str);
 | ||||
| +}
 | ||||
| +
 | ||||
| +/* Turn error messages from the library into nbdkit_error. */
 | ||||
| +static void
 | ||||
| +error_function (const char *fs, va_list args)
 | ||||
| +{
 | ||||
| +  CLEANUP_FREE char *str = NULL;
 | ||||
| +
 | ||||
| +  /* If the thread-local error_suppression flag is non-zero then we
 | ||||
| +   * will suppress error messages from VDDK in this thread.
 | ||||
| +   */
 | ||||
| +  if (error_suppression) return;
 | ||||
| +
 | ||||
| +  if (vasprintf (&str, fs, args) == -1) {
 | ||||
| +    nbdkit_error ("lost error message: %s", fs);
 | ||||
| +    return;
 | ||||
| +  }
 | ||||
| +
 | ||||
| +  trim (str);
 | ||||
| +
 | ||||
| +  /* VDDK 7 added a useless error message about their "phone home"
 | ||||
| +   * system called CEIP which only panics users.  Demote it to a debug
 | ||||
| +   * statement.  https://bugzilla.redhat.com/show_bug.cgi?id=1834267
 | ||||
| +   */
 | ||||
| +  if (strstr (str, "Get CEIP status failed") != NULL) {
 | ||||
| +    nbdkit_debug ("%s", str);
 | ||||
| +    return;
 | ||||
| +  }
 | ||||
| +
 | ||||
| +  nbdkit_error ("%s", str);
 | ||||
| +}
 | ||||
| +
 | ||||
|  /* Defer VDDK initialization until after fork because it is known to | ||||
|   * create background threads from VixDiskLib_InitEx.  Unfortunately | ||||
|   * error reporting from this callback is difficult, but we have | ||||
| diff --git a/plugins/vddk/vddk.h b/plugins/vddk/vddk.h
 | ||||
| index 0e3dd79e..d99b6f4b 100644
 | ||||
| --- a/plugins/vddk/vddk.h
 | ||||
| +++ b/plugins/vddk/vddk.h
 | ||||
| @@ -183,6 +183,9 @@ extern pthread_mutex_t stats_lock;
 | ||||
|  #undef OPTIONAL_STUB | ||||
|  extern void display_stats (void); | ||||
|   | ||||
| +/* utils.c */
 | ||||
| +extern void trim (char *str);
 | ||||
| +
 | ||||
|  /* worker.c */ | ||||
|  extern const char *command_type_string (enum command_type type); | ||||
|  extern int send_command_and_wait (struct vddk_handle *h, struct command *cmd); | ||||
| -- 
 | ||||
| 2.31.1 | ||||
| 
 | ||||
							
								
								
									
										53
									
								
								nbdkit.spec
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								nbdkit.spec
									
									
									
									
									
								
							| @ -51,7 +51,7 @@ ExclusiveArch:  x86_64 | ||||
| 
 | ||||
| Name:           nbdkit | ||||
| Version:        1.28.1 | ||||
| Release:        1%{?dist} | ||||
| Release:        2%{?dist} | ||||
| Summary:        NBD server | ||||
| 
 | ||||
| License:        BSD | ||||
| @ -76,23 +76,32 @@ Source3:        copy-patches.sh | ||||
| # https://gitlab.com/nbdkit/nbdkit/-/commits/rhel-9.0/ | ||||
| 
 | ||||
| # Patches. | ||||
| Patch0001:     0001-vddk-Refactor-how-D-vddk.stats-1-is-collected.patch | ||||
| Patch0002:     0002-vddk-Extend-D-vddk.stats-1-to-show-number-of-calls-a.patch | ||||
| Patch0003:     0003-vddk-Simplify-and-consolidate-VDDK_CALL_START-END-ma.patch | ||||
| Patch0004:     0004-vddk-Document-troubleshooting-performance-problems.patch | ||||
| Patch0005:     0005-vddk-Include-VDDK-major-library-version-in-dump-plug.patch | ||||
| Patch0006:     0006-vddk-Add-logical-and-physical-sector-size-to-D-vddk..patch | ||||
| Patch0007:     0007-vddk-Fix-typo-in-debug-message.patch | ||||
| Patch0008:     0008-vddk-Only-print-vddk_library_version-when-we-managed.patch | ||||
| Patch0009:     0009-vddk-Print-one-line-in-dump-plugin-output-for-each-V.patch | ||||
| Patch0010:     0010-vddk-Update-comment-about-VixDiskLib_PrepareForAcces.patch | ||||
| Patch0011:     0011-vddk-Document-what-I-found-about-VixDiskLib_Flush.patch | ||||
| Patch0012:     0012-vddk-Note-that-we-have-tested-VDDK-7.0.3.patch | ||||
| Patch0013:     0013-vddk-Move-minimum-version-to-VDDK-6.5.patch | ||||
| Patch0014:     0014-vddk-Add-read-write-and-wait-asynchronous-functions.patch | ||||
| Patch0015:     0015-vddk-Start-to-split-VDDK-over-several-files.patch | ||||
| Patch0016:     0016-vddk-Refactor-D-vddk.stats-1-into-a-new-file.patch | ||||
| Patch0017:     0017-vddk-Implement-parallel-thread-model.patch | ||||
| Patch0001:     0001-Skip-vsock-related-checks-if-AF_VSOCK-is-not-support.patch | ||||
| Patch0002:     0002-vddk-Update-comment-about-VixDiskLib_PrepareForAcces.patch | ||||
| Patch0003:     0003-vddk-Document-what-I-found-about-VixDiskLib_Flush.patch | ||||
| Patch0004:     0004-vddk-Note-that-we-have-tested-VDDK-7.0.3.patch | ||||
| Patch0005:     0005-tests-vddk-Cannot-test-real-VDDK-under-valgrind.patch | ||||
| Patch0006:     0006-tests-test-vddk-real.sh-Don-t-hide-log-messages-on-f.patch | ||||
| Patch0007:     0007-vddk-Small-copyedits-to-README.VDDK.patch | ||||
| Patch0008:     0008-vddk-Fix-man-page-section-in-help-output.patch | ||||
| Patch0009:     0009-vddk-Refactor-how-D-vddk.stats-1-is-collected.patch | ||||
| Patch0010:     0010-vddk-Extend-D-vddk.stats-1-to-show-number-of-calls-a.patch | ||||
| Patch0011:     0011-vddk-Simplify-and-consolidate-VDDK_CALL_START-END-ma.patch | ||||
| Patch0012:     0012-vddk-Document-troubleshooting-performance-problems.patch | ||||
| Patch0013:     0013-vddk-Include-VDDK-major-library-version-in-dump-plug.patch | ||||
| Patch0014:     0014-vddk-Add-logical-and-physical-sector-size-to-D-vddk..patch | ||||
| Patch0015:     0015-vddk-Fix-typo-in-debug-message.patch | ||||
| Patch0016:     0016-vddk-Only-print-vddk_library_version-when-we-managed.patch | ||||
| Patch0017:     0017-vddk-Print-one-line-in-dump-plugin-output-for-each-V.patch | ||||
| Patch0018:     0018-vddk-Move-minimum-version-to-VDDK-6.5.patch | ||||
| Patch0019:     0019-vddk-Add-read-write-and-wait-asynchronous-functions.patch | ||||
| Patch0020:     0020-vddk-Start-to-split-VDDK-over-several-files.patch | ||||
| Patch0021:     0021-vddk-Refactor-D-vddk.stats-1-into-a-new-file.patch | ||||
| Patch0022:     0022-vddk-Implement-parallel-thread-model.patch | ||||
| Patch0023:     0023-vddk-Assume-that-VixDiskLib_Flush-is-available.patch | ||||
| Patch0024:     0024-vddk-Simplify-detection-of-VDDK-symbols-and-baseline.patch | ||||
| Patch0025:     0025-vddk-Remove-some-whitespace-from-a-couple-of-functio.patch | ||||
| Patch0026:     0026-vddk-Move-config-debug-error-and-utility-functions-a.patch | ||||
| 
 | ||||
| BuildRequires: make | ||||
| %if 0%{patches_touch_autotools} | ||||
| @ -1116,7 +1125,7 @@ export LIBGUESTFS_TRACE=1 | ||||
| 
 | ||||
| %ifarch x86_64 | ||||
| %files vddk-plugin | ||||
| %doc README | ||||
| %doc README plugins/vddk/README.VDDK | ||||
| %license LICENSE | ||||
| %{_libdir}/%{name}/plugins/nbdkit-vddk-plugin.so | ||||
| %{_mandir}/man1/nbdkit-vddk-plugin.1* | ||||
| @ -1263,11 +1272,9 @@ export LIBGUESTFS_TRACE=1 | ||||
| 
 | ||||
| 
 | ||||
| %changelog | ||||
| * Fri Oct 29 2021 Richard W.M. Jones <rjones@redhat.com> - 1.28.1-1 | ||||
| * Sat Oct 30 2021 Richard W.M. Jones <rjones@redhat.com> - 1.28.1-2 | ||||
| - Add asynchronous support in nbdkit-vddk-plugin | ||||
|   resolves: rhbz#2018463, rhbz#2011709 | ||||
| 
 | ||||
| * Fri Oct 08 2021 Richard W.M. Jones <rjones@redhat.com> - 1.28.0-1 | ||||
|   resolves: rhbz#2018463 | ||||
| - Rebase to new stable branch version 1.28.0 | ||||
|   resolves: rhbz#2011709 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user