From c9f4cdb07daf6194ee1e650a69f439f1e0bed9b9 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Mon, 24 Feb 2025 13:00:20 +0000 Subject: [PATCH] Rebase to nbdkit 1.42.0 Synch the spec file with Fedora Rawhide. nbdkit-ondemand-plugin moves into a new subpackage. New nbdkit-time-limit-filter. resolves: RHEL-78830 --- ...ease-notes-1.42.pod-Add-release-date.patch | 25 +++ 0001-vddk-Include-stdbool.h.patch | 28 --- ...nused-command-line-argument-on-FreeB.patch | 67 ++++++ ...dk-Cache-the-disk-size-in-the-handle.patch | 59 ----- ...ew-location-for-Wine-AF_UNIX-patches.patch | 31 +++ ...ents-Mark-some-local-variables-const.patch | 34 --- ...Exit-the-function-if-we-hit-req_one-.patch | 31 --- ...Avoid-reading-partial-chunk-beyond-t.patch | 202 ------------------ copy-patches.sh | 2 +- nbdkit.spec | 66 ++++-- sources | 4 +- 11 files changed, 174 insertions(+), 375 deletions(-) create mode 100644 0001-docs-nbdkit-release-notes-1.42.pod-Add-release-date.patch delete mode 100644 0001-vddk-Include-stdbool.h.patch create mode 100644 0002-build-Disable-Wunused-command-line-argument-on-FreeB.patch delete mode 100644 0002-vddk-Cache-the-disk-size-in-the-handle.patch create mode 100644 0003-README-New-location-for-Wine-AF_UNIX-patches.patch delete mode 100644 0003-vddk-do_extents-Mark-some-local-variables-const.patch delete mode 100644 0004-vddk-do_extents-Exit-the-function-if-we-hit-req_one-.patch delete mode 100644 0005-vddk-do_extents-Avoid-reading-partial-chunk-beyond-t.patch diff --git a/0001-docs-nbdkit-release-notes-1.42.pod-Add-release-date.patch b/0001-docs-nbdkit-release-notes-1.42.pod-Add-release-date.patch new file mode 100644 index 0000000..4d40151 --- /dev/null +++ b/0001-docs-nbdkit-release-notes-1.42.pod-Add-release-date.patch @@ -0,0 +1,25 @@ +From 6cdc9d4a858cb9a80ad87961a6647452f9498d83 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Tue, 11 Feb 2025 13:59:45 +0000 +Subject: [PATCH] docs/nbdkit-release-notes-1.42.pod: Add release date + +--- + docs/nbdkit-release-notes-1.42.pod | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/docs/nbdkit-release-notes-1.42.pod b/docs/nbdkit-release-notes-1.42.pod +index 712c6027..dc4f05bc 100644 +--- a/docs/nbdkit-release-notes-1.42.pod ++++ b/docs/nbdkit-release-notes-1.42.pod +@@ -7,7 +7,7 @@ nbdkit-release-notes-1.42 - release notes for nbdkit 1.42 + These are the release notes for nbdkit stable release 1.42. + This describes the major changes since 1.40. + +-nbdkit 1.42.0 was released on B. ++nbdkit 1.42.0 was released on B<11 February 2025>. + + =head2 Security + +-- +2.47.1 + diff --git a/0001-vddk-Include-stdbool.h.patch b/0001-vddk-Include-stdbool.h.patch deleted file mode 100644 index 816facf..0000000 --- a/0001-vddk-Include-stdbool.h.patch +++ /dev/null @@ -1,28 +0,0 @@ -From 9f86b51b4d8110ee82f2c67c3939c85ce0ec1ea9 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 6 Jan 2025 15:22:05 +0000 -Subject: [PATCH] vddk: Include - -Since this file uses booleans. - -Acked-by: Eric Blake -(cherry picked from commit fe855addae44e45e2344a33bd3857c561587f12e) ---- - plugins/vddk/worker.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/plugins/vddk/worker.c b/plugins/vddk/worker.c -index 467d00ca..5982fcea 100644 ---- a/plugins/vddk/worker.c -+++ b/plugins/vddk/worker.c -@@ -34,6 +34,7 @@ - - #include - #include -+#include - #include - #include - --- -2.43.0 - diff --git a/0002-build-Disable-Wunused-command-line-argument-on-FreeB.patch b/0002-build-Disable-Wunused-command-line-argument-on-FreeB.patch new file mode 100644 index 0000000..de657cf --- /dev/null +++ b/0002-build-Disable-Wunused-command-line-argument-on-FreeB.patch @@ -0,0 +1,67 @@ +From 55bee3cc5797274d2e1ea925acc6e27572c7b5c8 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Fri, 7 Feb 2025 09:09:04 +0000 +Subject: [PATCH] build: Disable -Wunused-command-line-argument on FreeBSD +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +When compiling filters/stats, FreeBSD clang++ (only) complains about: + +c++: error: argument unused during compilation: '-pthread' [-Werror,-Wunused-command-line-argument] + +This is because clang will ignore the -pthread argument on FreeBSD +if code is being linked with -nostdlib. This is the case when building +modules with libtool. + +The warning flag must be preceeded by "-Xcompiler", otherwise libtool +will discard the warning flag. + +Derived-from: 433a77d06e57fd5894ada102cd21689e61f47f57 +Signed-off-by: Daniel P. Berrangé +--- + configure.ac | 14 ++++++++++++++ + filters/stats/Makefile.am | 2 +- + 2 files changed, 15 insertions(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index 407b28db..fe917df3 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -238,6 +238,20 @@ AC_ARG_ENABLE([gcc-warnings], + if test "x$gcc_warnings" = "xyes"; then + WARNINGS_CFLAGS="-Wall -Wshadow -Wvla -Werror" + AC_SUBST([WARNINGS_CFLAGS]) ++ ++ dnl Hack (temporary?) for FreeBSD which complains about: ++ dnl c++: error: argument unused during compilation: '-pthread' [-Werror,-Wunused-command-line-argument] ++ WARNINGS_MODULE_CXXFLAGS="$WARNINGS_CFLAGS" ++ AC_MSG_CHECKING([if we should disable unused-command-line-argument warning]) ++ AS_CASE([$host_os], ++ [freebsd*], [ ++ WARNINGS_MODULE_CXXFLAGS="$WARNINGS_MODULE_CXXFLAGS -Xcompiler -Wno-unused-command-line-argument" ++ AC_MSG_RESULT([yes]) ++ ], ++ [AC_MSG_RESULT([no])] ++ ) ++ AC_SUBST([WARNINGS_MODULE_CXXFLAGS]) ++ + fi + + dnl Check if the compiler supports -std=c90 flag. This is only used +diff --git a/filters/stats/Makefile.am b/filters/stats/Makefile.am +index 840805fb..c992566e 100644 +--- a/filters/stats/Makefile.am ++++ b/filters/stats/Makefile.am +@@ -48,7 +48,7 @@ nbdkit_stats_filter_la_CPPFLAGS = \ + -I$(top_srcdir)/common/include \ + -I$(top_srcdir)/common/utils \ + $(NULL) +-nbdkit_stats_filter_la_CXXFLAGS = $(WARNINGS_CFLAGS) -std=c++11 ++nbdkit_stats_filter_la_CXXFLAGS = $(WARNINGS_MODULE_CXXFLAGS) -std=c++11 + nbdkit_stats_filter_la_LDFLAGS = \ + -module -avoid-version -shared $(NO_UNDEFINED_ON_WINDOWS) \ + $(NULL) +-- +2.47.1 + diff --git a/0002-vddk-Cache-the-disk-size-in-the-handle.patch b/0002-vddk-Cache-the-disk-size-in-the-handle.patch deleted file mode 100644 index 4a31dcc..0000000 --- a/0002-vddk-Cache-the-disk-size-in-the-handle.patch +++ /dev/null @@ -1,59 +0,0 @@ -From bfac699727ccf20757dcb5dc4ce1aff885025c9d Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 6 Jan 2025 16:47:55 +0000 -Subject: [PATCH] vddk: Cache the disk size in the handle - -No functional change here, we're just making sure we have the disk -size (in bytes) available in the handle. - -Acked-by: Eric Blake -(cherry picked from commit 2ba76db4a048471e997e508715081a70356f94f3) ---- - plugins/vddk/vddk.c | 6 +++--- - plugins/vddk/vddk.h | 3 +++ - 2 files changed, 6 insertions(+), 3 deletions(-) - -diff --git a/plugins/vddk/vddk.c b/plugins/vddk/vddk.c -index 6d242515..7a830cf9 100644 ---- a/plugins/vddk/vddk.c -+++ b/plugins/vddk/vddk.c -@@ -873,19 +873,19 @@ vddk_get_size (void *handle) - { - struct vddk_handle *h = handle; - VixDiskLibInfo *info; -- int64_t size; - struct command info_cmd = { .type = INFO, .ptr = &info }; - - if (send_command_and_wait (h, &info_cmd) == -1) - return -1; - -- size = info->capacity * (int64_t)VIXDISKLIB_SECTOR_SIZE; -+ /* Compute the size and cache it into the handle. */ -+ h->size = info->capacity * VIXDISKLIB_SECTOR_SIZE; - - VDDK_CALL_START (VixDiskLib_FreeInfo, "info") - VixDiskLib_FreeInfo (info); - VDDK_CALL_END (VixDiskLib_FreeInfo, 0); - -- return size; -+ return h->size; - } - - /* Advertise most efficient block sizes. */ -diff --git a/plugins/vddk/vddk.h b/plugins/vddk/vddk.h -index fb0c79a8..1d1069cc 100644 ---- a/plugins/vddk/vddk.h -+++ b/plugins/vddk/vddk.h -@@ -165,6 +165,9 @@ struct vddk_handle { - command_queue commands; /* command queue */ - pthread_cond_t commands_cond; /* condition (queue size 0 -> 1) */ - uint64_t id; /* next command ID */ -+ -+ /* Cached disk size in bytes (set in get_size()). */ -+ uint64_t size; - }; - - /* reexec.c */ --- -2.43.0 - diff --git a/0003-README-New-location-for-Wine-AF_UNIX-patches.patch b/0003-README-New-location-for-Wine-AF_UNIX-patches.patch new file mode 100644 index 0000000..a79e1f4 --- /dev/null +++ b/0003-README-New-location-for-Wine-AF_UNIX-patches.patch @@ -0,0 +1,31 @@ +From b55904b5e7d84358cef2ad9eb7637ee569eb52f6 Mon Sep 17 00:00:00 2001 +From: "Richard W.M. Jones" +Date: Fri, 14 Feb 2025 09:35:38 +0000 +Subject: [PATCH] README: New location for Wine AF_UNIX patches + +--- + README.md | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/README.md b/README.md +index fb4d7d28..5d61e786 100644 +--- a/README.md ++++ b/README.md +@@ -412,10 +412,10 @@ using Linux and mingw-w64. At a minimum you will need: + * mingw-w64 gnutls (optional, but highly recommended) + * wine (if you want to run it on Linux) + +-You may want to patch Wine with this patch which adds support for +-AF_UNIX sockets. It is needed to get most of the test suite to work, +-but if you don't care about the -U option then it is not needed. +-https://www.winehq.org/pipermail/wine-devel/2021-May/187049.html ++You may want to patch Wine with support for `AF_UNIX` sockets. It is ++needed to get most of the test suite to work, but if you don't care ++about the -U option then it is not needed. ++https://bugs.winehq.org/show_bug.cgi?id=52568 + + Other mingw-w64 libraries may be installed which will add + functionality (see full list of requirements above), but you may end +-- +2.47.1 + diff --git a/0003-vddk-do_extents-Mark-some-local-variables-const.patch b/0003-vddk-do_extents-Mark-some-local-variables-const.patch deleted file mode 100644 index f775fd2..0000000 --- a/0003-vddk-do_extents-Mark-some-local-variables-const.patch +++ /dev/null @@ -1,34 +0,0 @@ -From dff3fc3b97aab79f6ee168a9b9dd2dff05425439 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 6 Jan 2025 15:37:54 +0000 -Subject: [PATCH] vddk: do_extents: Mark some local variables const - -These are never changed in the code (they are fields copied out from -the *cmd struct), so mark them as const. - -Acked-by: Eric Blake -(cherry picked from commit 24fd7df460ae31fe3f72b5100ca3dbe138bbadbe) ---- - plugins/vddk/worker.c | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/plugins/vddk/worker.c b/plugins/vddk/worker.c -index 5982fcea..bc015d16 100644 ---- a/plugins/vddk/worker.c -+++ b/plugins/vddk/worker.c -@@ -388,9 +388,9 @@ add_extent (struct nbdkit_extents *extents, - static int - do_extents (struct command *cmd, struct vddk_handle *h) - { -- uint32_t count = cmd->count; -- uint64_t offset = cmd->offset; -- bool req_one = cmd->req_one; -+ const uint32_t count = cmd->count; -+ const uint64_t offset = cmd->offset; -+ const bool req_one = cmd->req_one; - struct nbdkit_extents *extents = cmd->ptr; - uint64_t position, end, start_sector; - --- -2.43.0 - diff --git a/0004-vddk-do_extents-Exit-the-function-if-we-hit-req_one-.patch b/0004-vddk-do_extents-Exit-the-function-if-we-hit-req_one-.patch deleted file mode 100644 index 5a64404..0000000 --- a/0004-vddk-do_extents-Exit-the-function-if-we-hit-req_one-.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 5f7e5399aa4b208cb6aa0c51dbea59f73fd4d5f3 Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 6 Jan 2025 16:39:51 +0000 -Subject: [PATCH] vddk: do_extents: Exit the function if we hit req_one - condition - -No change to the functionality, since the code previously called -'return 0' immediately following the loop. - -Acked-by: Eric Blake -(cherry picked from commit 2f4d71f8f704d89d69cd635791c3239d2f44d631) ---- - plugins/vddk/worker.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/plugins/vddk/worker.c b/plugins/vddk/worker.c -index bc015d16..112111e3 100644 ---- a/plugins/vddk/worker.c -+++ b/plugins/vddk/worker.c -@@ -471,7 +471,7 @@ do_extents (struct command *cmd, struct vddk_handle *h) - * overlapping the original offset we're done. - */ - if (req_one && position > offset) -- break; -+ return 0; - } - - return 0; --- -2.43.0 - diff --git a/0005-vddk-do_extents-Avoid-reading-partial-chunk-beyond-t.patch b/0005-vddk-do_extents-Avoid-reading-partial-chunk-beyond-t.patch deleted file mode 100644 index 8d293f5..0000000 --- a/0005-vddk-do_extents-Avoid-reading-partial-chunk-beyond-t.patch +++ /dev/null @@ -1,202 +0,0 @@ -From fe65a789da92e53bfd3f3814f1c93566f69591db Mon Sep 17 00:00:00 2001 -From: "Richard W.M. Jones" -Date: Mon, 6 Jan 2025 15:45:35 +0000 -Subject: [PATCH] vddk: do_extents: Avoid reading partial chunk beyond the end - of the disk - -The QueryAllocatedBlocks API has (another) frustrating feature. It -can only query whole "chunks" (128 sectors). If the disk size is not -aligned to the chunk size (say the size was 129 sectors) then there's -a bit at the end which cannot be queried. Furthermore, the API gives -an error in this case instead of being helpful: - - VixDiskLib_QueryAllocatedBlocks: One of the parameters was invalid - -Fixes: https://issues.redhat.com/browse/RHEL-71694 -Reported-by: Ming Xie -Acked-by: Eric Blake -(cherry picked from commit fd918f3d1a185fd996999766c75acb9d6e22395d) ---- - plugins/vddk/worker.c | 29 ++++++++- - tests/Makefile.am | 5 +- - tests/test-vddk-real-unaligned-chunk.sh | 82 +++++++++++++++++++++++++ - 3 files changed, 113 insertions(+), 3 deletions(-) - create mode 100755 tests/test-vddk-real-unaligned-chunk.sh - -diff --git a/plugins/vddk/worker.c b/plugins/vddk/worker.c -index 112111e3..8a91250a 100644 ---- a/plugins/vddk/worker.c -+++ b/plugins/vddk/worker.c -@@ -392,10 +392,9 @@ do_extents (struct command *cmd, struct vddk_handle *h) - const uint64_t offset = cmd->offset; - const bool req_one = cmd->req_one; - struct nbdkit_extents *extents = cmd->ptr; -- uint64_t position, end, start_sector; -+ uint64_t position, start_sector, size_sectors, last_queryable_sector, end; - - position = offset; -- end = offset + count; - - /* We can only query whole chunks. Therefore start with the - * first chunk before offset. -@@ -403,6 +402,21 @@ do_extents (struct command *cmd, struct vddk_handle *h) - start_sector = - ROUND_DOWN (offset, VIXDISKLIB_MIN_CHUNK_SIZE * VIXDISKLIB_SECTOR_SIZE) - / VIXDISKLIB_SECTOR_SIZE; -+ -+ /* Calculate the end byte + 1 that we're going to query, normally -+ * this is offset + count. -+ * -+ * However since chunks are larger than sectors, for a disk which -+ * has size which is not aligned to the chunk size there is a part -+ * of the disk at the end that we can never query. Reduce 'end' to -+ * the maximum possible queryable part of the disk, and we'll deal -+ * with the unaligned bit after the loop (RHEL-71694). -+ */ -+ end = offset + count; -+ size_sectors = h->size / VIXDISKLIB_SECTOR_SIZE; -+ last_queryable_sector = ROUND_DOWN (size_sectors, VIXDISKLIB_MIN_CHUNK_SIZE); -+ end = MIN (end, last_queryable_sector * VIXDISKLIB_SECTOR_SIZE); -+ - while (start_sector * VIXDISKLIB_SECTOR_SIZE < end) { - VixError err; - uint32_t i; -@@ -474,6 +488,17 @@ do_extents (struct command *cmd, struct vddk_handle *h) - return 0; - } - -+ /* If 'end' spanned beyond the last chunk of the disk, then we -+ * reduced it above to avoid reading a chunk that extends beyond the -+ * end of the underlying disk. We have to synthesize an allocated -+ * block here, which is what VDDK's example code does -+ * (doc/samples/diskLib/vixDiskLibSample.cpp: DoGetAllocatedBlocks). -+ */ -+ if (end < offset + count) { -+ if (add_extent (extents, &position, offset + count, false) == -1) -+ return -1; -+ } -+ - return 0; - } - -diff --git a/tests/Makefile.am b/tests/Makefile.am -index c0d1bdcc..94d4a219 100644 ---- a/tests/Makefile.am -+++ b/tests/Makefile.am -@@ -188,7 +188,8 @@ if HAVE_VDDK - check-vddk: - $(MAKE) check TESTS="test-vddk-real.sh \ - test-vddk-real-dump-plugin.sh \ -- test-vddk-real-create.sh" -+ test-vddk-real-create.sh \ -+ test-vddk-real-unaligned-chunk.sh" - endif HAVE_VDDK - - #---------------------------------------------------------------------- -@@ -1172,6 +1173,7 @@ TESTS += \ - test-vddk-password-interactive.sh \ - test-vddk-real-create.sh \ - test-vddk-real-dump-plugin.sh \ -+ test-vddk-real-unaligned-chunk.sh \ - test-vddk-real.sh \ - test-vddk-reexec.sh \ - test-vddk-run.sh \ -@@ -1204,6 +1206,7 @@ EXTRA_DIST += \ - test-vddk-password-interactive.sh \ - test-vddk-real-create.sh \ - test-vddk-real-dump-plugin.sh \ -+ test-vddk-real-unaligned-chunk.sh \ - test-vddk-real.sh \ - test-vddk-reexec.sh \ - test-vddk-run.sh \ -diff --git a/tests/test-vddk-real-unaligned-chunk.sh b/tests/test-vddk-real-unaligned-chunk.sh -new file mode 100755 -index 00000000..28fccd6c ---- /dev/null -+++ b/tests/test-vddk-real-unaligned-chunk.sh -@@ -0,0 +1,82 @@ -+#!/usr/bin/env bash -+# nbdkit -+# Copyright Red Hat -+# -+# 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. -+ -+# Regression test for https://issues.redhat.com/browse/RHEL-71694 -+ -+source ./functions.sh -+set -e -+set -x -+ -+requires_run -+requires test "x$vddkdir" != "x" -+requires test -d "$vddkdir" -+requires test -f "$vddkdir/lib64/libvixDiskLib.so" -+requires qemu-img --version -+requires_nbdinfo -+requires $TRUNCATE --version -+requires dd --version -+requires test -r /dev/urandom -+skip_if_valgrind "because setting LD_LIBRARY_PATH breaks valgrind" -+ -+# VDDK > 5.1.1 only supports x86_64. -+if [ `uname -m` != "x86_64" ]; then -+ echo "$0: unsupported architecture" -+ exit 77 -+fi -+ -+d=vddk-real-unaligned-chunk.d -+cleanup_fn rm -rf $d -+rm -rf $d -+mkdir $d -+ -+# Create a vmdk disk which is partially sparse and the size is NOT -+# aligned to 128 sectors (chunk size). -+dd if=/dev/urandom of=$d/test.raw bs=512 count=$(( 3*128 )) -+$TRUNCATE -s $(( (4*128 + 3) * 512)) $d/test.raw -+qemu-img convert -f raw $d/test.raw -O vmdk $d/test.vmdk -+ -+# Read the map using VDDK. -+export d -+nbdkit -rfv vddk libdir="$vddkdir" \ -+ $PWD/$d/test.vmdk \ -+ --run 'nbdinfo --map "$uri" > $d/map' -+cat $d/map -+ -+# Note a few features of the expected map. The first 3 chunks (3*128 -+# sectors) are allocated, followed by a single hole chunk. Then the -+# last 3 unaligned sectors appear allocated (even though they are not) -+# because we could not read them using the QueryAllocatedBlocks API so -+# we had to assume allocated. -+test "$(cat $d/map)" = "\ -+ 0 196608 0 data -+ 196608 65536 3 hole,zero -+ 262144 1536 0 data" --- -2.43.0 - diff --git a/copy-patches.sh b/copy-patches.sh index cfa8a5b..5dc5564 100755 --- a/copy-patches.sh +++ b/copy-patches.sh @@ -6,7 +6,7 @@ set -e # directory. Use it like this: # ./copy-patches.sh -rhel_version=10.0 +rhel_version=10.1 # Check we're in the right directory. if [ ! -f nbdkit.spec ]; then diff --git a/nbdkit.spec b/nbdkit.spec index 38671b0..d476169 100644 --- a/nbdkit.spec +++ b/nbdkit.spec @@ -51,11 +51,11 @@ %global verify_tarball_signature 1 # The source directory. -%global source_directory 1.40-stable +%global source_directory 1.42-stable Name: nbdkit -Version: 1.40.4 -Release: 3%{?dist} +Version: 1.42.0 +Release: 1%{?dist} Summary: NBD server License: BSD-3-Clause @@ -77,14 +77,12 @@ Source2: libguestfs.keyring Source3: copy-patches.sh # Patches come from the upstream repository: -# https://gitlab.com/nbdkit/nbdkit/-/commits/rhel-10.0/ +# https://gitlab.com/nbdkit/nbdkit/-/commits/rhel-10.1/ # Patches. -Patch0001: 0001-vddk-Include-stdbool.h.patch -Patch0002: 0002-vddk-Cache-the-disk-size-in-the-handle.patch -Patch0003: 0003-vddk-do_extents-Mark-some-local-variables-const.patch -Patch0004: 0004-vddk-do_extents-Exit-the-function-if-we-hit-req_one-.patch -Patch0005: 0005-vddk-do_extents-Avoid-reading-partial-chunk-beyond-t.patch +Patch0001: 0001-docs-nbdkit-release-notes-1.42.pod-Add-release-date.patch +Patch0002: 0002-build-Disable-Wunused-command-line-argument-on-FreeB.patch +Patch0003: 0003-README-New-location-for-Wine-AF_UNIX-patches.patch # For automatic RPM Provides generation. # See: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html @@ -103,6 +101,7 @@ BuildRequires: git BuildRequires: autoconf, automake, libtool BuildRequires: make +BuildRequires: libxcrypt-devel BuildRequires: gcc, gcc-c++ BuildRequires: %{_bindir}/pod2man BuildRequires: pkgconfig(gnutls) @@ -168,6 +167,9 @@ BuildRequires: glibc-utils BuildRequires: /usr/bin/hexdump BuildRequires: /usr/sbin/ip BuildRequires: jq +%if !0%{?rhel} +BuildRequires: /usr/bin/lzip +%endif BuildRequires: /usr/bin/nbdcopy BuildRequires: /usr/bin/nbdinfo BuildRequires: /usr/bin/nbdsh @@ -286,8 +288,6 @@ nbdkit-info-plugin Serve client and server information. nbdkit-memory-plugin A virtual memory plugin. -nbdkit-ondemand-plugin Create filesystems on demand. - nbdkit-ones-plugin Fill disk with repeated 0xff or other bytes. nbdkit-pattern-plugin Fixed test pattern. @@ -465,6 +465,21 @@ This package lets you write OCaml plugins for %{name}. %endif +%package ondemand-plugin +Summary: Create filesystems on demand for %{name} +Requires: %{name}-server%{?_isa} = %{version}-%{release} +# For mkfs and mke2fs (defaults). +Requires: util-linux, e2fsprogs +# For other filesystems. +Suggests: xfsprogs +%if !0%{?rhel} +Suggests: ntfsprogs, dosfstools +%endif + +%description ondemand-plugin +This package is a plugin to create filesystems on demand for %{name}. + + %if !0%{?rhel} %package perl-plugin Summary: Perl plugin for %{name} @@ -648,6 +663,8 @@ nbdkit-spinning-filter Add seek delays to simulate a spinning hard disk. nbdkit-swab-filter Filter for swapping byte order. +nbdkit-time-limit-filter Set an overall time limit for each connection. + nbdkit-tls-fallback-filter TLS protection filter. nbdkit-truncate-filter Truncate, expand, round up or round down size. @@ -690,11 +707,11 @@ This package is a tar archive filter for %{name}. %package xz-filter -Summary: XZ filter for %{name} +Summary: XZ and lzip filters for %{name} Requires: %{name}-server%{?_isa} = %{version}-%{release} %description xz-filter -This package is the xz filter for %{name}. +This package contains the xz and lzip filters for %{name}. %package devel @@ -884,10 +901,7 @@ bzip2 -9 %{modulename}.pp popd %if 0%{?have_mingw} -# MC=no is a temporary hack until this bug is fixed in binutils: -# https://sourceware.org/bugzilla/show_bug.cgi?id=31283 %mingw_configure \ - MC=no \ --disable-static \ --enable-shared \ --with-extra='%{name}-%{version}-%{release}' \ @@ -1089,7 +1103,6 @@ fi %{_libdir}/%{name}/plugins/nbdkit-full-plugin.so %{_libdir}/%{name}/plugins/nbdkit-info-plugin.so %{_libdir}/%{name}/plugins/nbdkit-memory-plugin.so -%{_libdir}/%{name}/plugins/nbdkit-ondemand-plugin.so %{_libdir}/%{name}/plugins/nbdkit-ones-plugin.so %{_libdir}/%{name}/plugins/nbdkit-partitioning-plugin.so %{_libdir}/%{name}/plugins/nbdkit-pattern-plugin.so @@ -1105,7 +1118,6 @@ fi %{_mandir}/man1/nbdkit-full-plugin.1* %{_mandir}/man1/nbdkit-info-plugin.1* %{_mandir}/man1/nbdkit-memory-plugin.1* -%{_mandir}/man1/nbdkit-ondemand-plugin.1* %{_mandir}/man1/nbdkit-ones-plugin.1* %{_mandir}/man1/nbdkit-partitioning-plugin.1* %{_mandir}/man1/nbdkit-pattern-plugin.1* @@ -1233,6 +1245,13 @@ fi %endif +%files ondemand-plugin +%doc README.md +%license LICENSE +%{_libdir}/%{name}/plugins/nbdkit-ondemand-plugin.so +%{_mandir}/man1/nbdkit-ondemand-plugin.1* + + %if !0%{?rhel} %files perl-plugin %doc README.md @@ -1344,6 +1363,7 @@ fi %{_libdir}/%{name}/filters/nbdkit-scan-filter.so %{_libdir}/%{name}/filters/nbdkit-spinning-filter.so %{_libdir}/%{name}/filters/nbdkit-swab-filter.so +%{_libdir}/%{name}/filters/nbdkit-time-limit-filter.so %{_libdir}/%{name}/filters/nbdkit-tls-fallback-filter.so %{_libdir}/%{name}/filters/nbdkit-truncate-filter.so %{_mandir}/man1/nbdkit-blocksize-filter.1* @@ -1388,6 +1408,7 @@ fi %{_mandir}/man1/nbdkit-scan-filter.1* %{_mandir}/man1/nbdkit-spinning-filter.1* %{_mandir}/man1/nbdkit-swab-filter.1* +%{_mandir}/man1/nbdkit-time-limit-filter.1* %{_mandir}/man1/nbdkit-tls-fallback-filter.1* %{_mandir}/man1/nbdkit-truncate-filter.1* @@ -1425,7 +1446,9 @@ fi %files xz-filter %doc README.md %license LICENSE +%{_libdir}/%{name}/filters/nbdkit-lzip-filter.so %{_libdir}/%{name}/filters/nbdkit-xz-filter.so +%{_mandir}/man1/nbdkit-lzip-filter.1* %{_mandir}/man1/nbdkit-xz-filter.1* @@ -1502,6 +1525,13 @@ fi %changelog +* Mon Feb 24 2025 Richard W.M. Jones - 1.42.0-1 +- Rebase to nbdkit 1.42.0 +- Synch the spec file with Fedora Rawhide. +- nbdkit-ondemand-plugin moves into a new subpackage. +- New nbdkit-time-limit-filter. +- resolves: RHEL-78830 + * Mon Jan 06 2025 Richard W.M. Jones - 1.40.4-3 - vddk: Avoid reading partial chunk beyond the end of the disk resolves: RHEL-71697 diff --git a/sources b/sources index 4612e95..77b7677 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (nbdkit-1.40.4.tar.gz) = 043de0b6b686425d28b1410ac6ea75667eb189173648e78047174a45a76ce11137ca336d05af128314f5234b47e334d32dd6d196bdeb2b91da4688ee2c6bc273 -SHA512 (nbdkit-1.40.4.tar.gz.sig) = 9ae8e4cbdd9c6495ccbef6d71869e76951e2e72803fbbff4e9c2b66cd630874dd8fe5577be44c296c7b98936ddbe77c83fba3c92e8037e82d98a0503d378c49e +SHA512 (nbdkit-1.42.0.tar.gz) = c8360fc2d9e6806ab241dcd61da82f52a881dd394d2e6c8c5372d4920f0751fe20dfe9bf45ff35c34cd1e12fd35d2b7dcf17374387805ff6cdec599c543c6bdc +SHA512 (nbdkit-1.42.0.tar.gz.sig) = df2e05eb46c78c2ecdc16b6b1ba37cbcbf001cfd5f7c3b9206da7100e4499ddb7f35ed75786d109767f2e9bf4a2baf02994ce5684910fd9cfc8bfccc9dd6dce7