752d86cd28
related: rhbz#2011709
148 lines
5.2 KiB
Diff
148 lines
5.2 KiB
Diff
From 498b4210c1f1a4b4d6cdc09ae354b86522e1d536 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
|
|
|
|
Drop support for VDDK 5.5.5 (released in 2015) and 6.0 (released the
|
|
same year). Move minimum supported version to 6.5 (released Nov
|
|
2016). This is so we can use asynchronous operations.
|
|
|
|
Acked-by: Laszlo Ersek <lersek@redhat.com>
|
|
(cherry picked from commit 5ed23616762a72e039531a9a7cd81353cd4f436e)
|
|
---
|
|
plugins/vddk/nbdkit-vddk-plugin.pod | 10 +++-------
|
|
plugins/vddk/vddk-stubs.h | 3 +--
|
|
plugins/vddk/vddk.c | 24 ++++++++++++++++--------
|
|
tests/dummy-vddk.c | 6 ++++++
|
|
4 files changed, 26 insertions(+), 17 deletions(-)
|
|
|
|
diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod
|
|
index 0702aa75..1c16d096 100644
|
|
--- a/plugins/vddk/nbdkit-vddk-plugin.pod
|
|
+++ b/plugins/vddk/nbdkit-vddk-plugin.pod
|
|
@@ -424,7 +424,7 @@ by this build.
|
|
|
|
=item C<vddk_library_version=...>
|
|
|
|
-The VDDK major library version: 5, 6, 7, ...
|
|
+The VDDK major library version: 6, 7, ...
|
|
If this is omitted it means the library could not be loaded.
|
|
|
|
=item C<vddk_dll=...>
|
|
@@ -548,16 +548,12 @@ server, which can also be very slow.
|
|
|
|
=head1 SUPPORTED VERSIONS OF VDDK
|
|
|
|
-This plugin requires VDDK E<ge> 5.5.5, which in turn means that it
|
|
-is only supported on x64-64 platforms.
|
|
+This plugin requires VDDK E<ge> 6.5 (released Nov 2016). It is only
|
|
+supported on the x64-64 archtecture.
|
|
|
|
It has been tested with all versions up to 7.0.3 (but should work with
|
|
future versions).
|
|
|
|
-VDDK E<ge> 6.0 should be used if possible. This is the first version
|
|
-which added Flush support which is crucial for data integrity when
|
|
-writing.
|
|
-
|
|
VDDK 6.7 was the first version that supported the
|
|
C<VixDiskLib_QueryAllocatedBlocks> API, required to provide extent
|
|
information over NBD.
|
|
diff --git a/plugins/vddk/vddk-stubs.h b/plugins/vddk/vddk-stubs.h
|
|
index 5e70238d..a94df9cd 100644
|
|
--- a/plugins/vddk/vddk-stubs.h
|
|
+++ b/plugins/vddk/vddk-stubs.h
|
|
@@ -40,8 +40,7 @@
|
|
*/
|
|
|
|
/* 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)
|
|
- * which is the earliest version of VDDK that we support.
|
|
+ * have checked that all these exist in at least VDDK 5.5.5 (2015).
|
|
*/
|
|
|
|
STUB (VixDiskLib_InitEx,
|
|
diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c
|
|
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;
|
|
#undef OPTIONAL_STUB
|
|
|
|
/* Parameters passed to InitEx. */
|
|
-#define VDDK_MAJOR 5
|
|
+#define VDDK_MAJOR 6
|
|
#define VDDK_MINOR 5
|
|
|
|
static void *dl; /* dlopen handle */
|
|
static bool init_called; /* was InitEx called */
|
|
static __thread int error_suppression; /* threadlocal error suppression */
|
|
-static int library_version; /* VDDK major: 5, 6, 7, ... */
|
|
+static int library_version; /* VDDK major: 6, 7, ... */
|
|
|
|
static enum { NONE = 0, ZLIB, FASTLZ, SKIPZ } compression; /* compression */
|
|
static char *config; /* config */
|
|
@@ -413,16 +413,14 @@ load_library (bool load_error_is_fatal)
|
|
/* Prefer the newest library in case multiple exist. Check two
|
|
* possible directories: the usual VDDK installation puts .so
|
|
* files in an arch-specific subdirectory of $libdir (our minimum
|
|
- * supported version is VDDK 5.5.5, which only supports x64-64);
|
|
- * but our testsuite is easier to write if we point libdir
|
|
- * directly to a stub .so.
|
|
+ * supported version is VDDK 6.5, which only supports x64-64); but
|
|
+ * our testsuite is easier to write if we point libdir directly to
|
|
+ * a stub .so.
|
|
*/
|
|
{ "lib64/libvixDiskLib.so.7", 7 },
|
|
{ "libvixDiskLib.so.7", 7 },
|
|
{ "lib64/libvixDiskLib.so.6", 6 },
|
|
{ "libvixDiskLib.so.6", 6 },
|
|
- { "lib64/libvixDiskLib.so.5", 5 },
|
|
- { "libvixDiskLib.so.5", 5 },
|
|
{ NULL }
|
|
};
|
|
size_t i;
|
|
@@ -474,7 +472,7 @@ load_library (bool load_error_is_fatal)
|
|
exit (EXIT_FAILURE);
|
|
}
|
|
|
|
- assert (library_version >= 5);
|
|
+ assert (library_version >= 6);
|
|
|
|
/* Load symbols. */
|
|
#define STUB(fn,ret,args) \
|
|
@@ -490,6 +488,16 @@ load_library (bool load_error_is_fatal)
|
|
#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);
|
|
+ }
|
|
}
|
|
|
|
static int
|
|
diff --git a/tests/dummy-vddk.c b/tests/dummy-vddk.c
|
|
index 9b5ae0a2..cb88380c 100644
|
|
--- a/tests/dummy-vddk.c
|
|
+++ b/tests/dummy-vddk.c
|
|
@@ -198,3 +198,9 @@ VixDiskLib_Write (VixDiskLibHandle handle,
|
|
memcpy (disk + offset, buf, nr_sectors * VIXDISKLIB_SECTOR_SIZE);
|
|
return VIX_OK;
|
|
}
|
|
+
|
|
+NBDKIT_DLL_PUBLIC VixError
|
|
+VixDiskLib_Wait (VixDiskLibHandle handle)
|
|
+{
|
|
+ return VIX_OK;
|
|
+}
|
|
--
|
|
2.31.1
|
|
|