From ef3e04e30b29706e22f390521940c28272b03601 Mon Sep 17 00:00:00 2001 From: Andrew Lukoshko Date: Thu, 7 Aug 2025 10:59:02 +0000 Subject: [PATCH] import OL nbdkit-1.38.5-5.el9_6 --- .../0018-server-Fix-.zero-fallback-path.patch | 40 +++++++++++++++ ...19-vddk-Add-support-for-VDDK-9.0.0.0.patch | 50 +++++++++++++++++++ SPECS/nbdkit.spec | 12 ++++- 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 SOURCES/0018-server-Fix-.zero-fallback-path.patch create mode 100644 SOURCES/0019-vddk-Add-support-for-VDDK-9.0.0.0.patch diff --git a/SOURCES/0018-server-Fix-.zero-fallback-path.patch b/SOURCES/0018-server-Fix-.zero-fallback-path.patch new file mode 100644 index 0000000..cd7f5c6 --- /dev/null +++ b/SOURCES/0018-server-Fix-.zero-fallback-path.patch @@ -0,0 +1,40 @@ +From 37c234f30706958a63d45aeea0ffa8ffa8ba10d9 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Wed, 2 Jul 2025 16:18:19 +0100 +Subject: [PATCH] server: Fix .zero fallback path + +When no efficient zero method is supported, we fall back to writing a +buffer of actual zeroes. However because of an omitted update to +'offset' we would only zero out (up to) the first 64M of each range. +nbdcopy defaults to working on blocks of 128M, leaving the second 64M +unzeroed. + +This affects only backing filesystems which do not support fallocate +FALLOC_FL_PUNCH_HOLE or FALLOC_FL_ZERO_RANGE, which turns out to be +rare, but it does include some NFS-mounted filesystems which is where +I saw this problem. + +Fixes: commit 19184d3eb6356ae3b14da0fbaa9c9bdc7743a448 +Thanks: Alex Kalenyuk +(cherry picked from commit 20b23fc9838faeddfd42664a7f497a9b29dc5921) +(cherry picked from commit 3c8d0812e7a7b6a1f9e5cceab7bee6e25b9cd7cd) +(cherry picked from commit e947a2a55cb018711b7f4ede5b5cec291ed5cf24) +--- + server/plugins.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/server/plugins.c b/server/plugins.c +index 3c7df0d2..db36ce42 100644 +--- a/server/plugins.c ++++ b/server/plugins.c +@@ -807,6 +807,7 @@ plugin_zero (struct context *c, + if (r == -1) + break; + count -= limit; ++ offset += limit; + } + + done: +-- +2.47.1 + diff --git a/SOURCES/0019-vddk-Add-support-for-VDDK-9.0.0.0.patch b/SOURCES/0019-vddk-Add-support-for-VDDK-9.0.0.0.patch new file mode 100644 index 0000000..d792abd --- /dev/null +++ b/SOURCES/0019-vddk-Add-support-for-VDDK-9.0.0.0.patch @@ -0,0 +1,50 @@ +From 4e36ca88232609a0b15c3533328c93c0d41beab0 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Mon, 23 Jun 2025 13:05:51 +0100 +Subject: [PATCH] vddk: Add support for VDDK 9.0.0.0 + +(cherry picked from commit c966fe7d05ed7e992e1bf725d4625434c74eaf8d) +(cherry picked from commit c33178791b9f66cb49082a496b5e65c6027f5ebd) +--- + plugins/vddk/nbdkit-vddk-plugin.pod | 2 +- + plugins/vddk/vddk.c | 4 +++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/plugins/vddk/nbdkit-vddk-plugin.pod b/plugins/vddk/nbdkit-vddk-plugin.pod +index 19f25423..dc71431c 100644 +--- a/plugins/vddk/nbdkit-vddk-plugin.pod ++++ b/plugins/vddk/nbdkit-vddk-plugin.pod +@@ -407,7 +407,7 @@ This is the first version that supported the + C API. This is required to provide + sparseness (extent) information over NBD. + +-=item VDDK 8.0.2.1 (released Feb 2024) ++=item VDDK 9.0.0.0 (released Jun 2025) + + This is the latest version of VDDK that we have tested at the time of + writing, but the plugin should work with future versions. +diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c +index 2a787453..367366c0 100644 +--- a/plugins/vddk/vddk.c ++++ b/plugins/vddk/vddk.c +@@ -78,7 +78,7 @@ NBDKIT_DLL_PUBLIC int vddk_debug_datapath = 1; + void *dl; /* dlopen handle */ + bool init_called; /* was InitEx called */ + __thread int error_suppression; /* threadlocal error suppression */ +-int library_version; /* VDDK major: 6, 7, 8, ... */ ++int library_version; /* VDDK major: 6, 7, 8, 9 */ + bool is_remote; /* true if remote connection */ + + enum compression_type compression; /* compression */ +@@ -407,6 +407,8 @@ load_library (bool load_error_is_fatal) + * our testsuite is easier to write if we point libdir directly to + * a stub .so. + */ ++ { "lib64/libvixDiskLib.so.9", 9 }, ++ { "libvixDiskLib.so.9", 9 }, + { "lib64/libvixDiskLib.so.8", 8 }, + { "libvixDiskLib.so.8", 8 }, + { "lib64/libvixDiskLib.so.7", 7 }, +-- +2.47.1 + diff --git a/SPECS/nbdkit.spec b/SPECS/nbdkit.spec index f788586..e777485 100644 --- a/SPECS/nbdkit.spec +++ b/SPECS/nbdkit.spec @@ -56,7 +56,7 @@ Name: nbdkit Version: 1.38.5 -Release: 3%{?dist} +Release: 5%{?dist} Summary: NBD server License: BSD-3-Clause @@ -98,6 +98,8 @@ Patch0014: 0014-file-Fix-do_fallocate-debugging-on-Alpine.patch Patch0015: 0015-file-Rename-h-can_zeroout-to-h-can_blkzeroout-to-ref.patch Patch0016: 0016-file-zero-Document-implicit-order-that-we-will-try-z.patch Patch0017: 0017-file-zero-Use-BLKDISCARD-method-if-may_trim-is-set.patch +Patch0018: 0018-server-Fix-.zero-fallback-path.patch +Patch0019: 0019-vddk-Add-support-for-VDDK-9.0.0.0.patch # For automatic RPM Provides generation. # See: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html @@ -1516,6 +1518,14 @@ fi %changelog +* Mon Jul 14 2025 Richard W.M. Jones - 1.38.5-5 +- Support VDDK 9 + resolves: RHEL-103420 + +* Sat Jul 05 2025 Richard W.M. Jones - 1.38.5-4 +- server: Fix .zero fallback path + resolves: RHEL-101702 + * Tue May 13 2025 Richard W.M. Jones - 1.38.5-3 - file: zero: Use BLKDISCARD method if may_trim is set resolves: RHEL-91094