Rebase to nbdkit 1.45.12
resolves: RHEL-111242 Synchronize spec file with Fedora.
This commit is contained in:
parent
112e900e09
commit
1bd2da2418
@ -0,0 +1,59 @@
|
||||
From cad6894ec6dc18b318d0948fadf5833ecd75cb0f Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sun, 26 Oct 2025 22:25:10 +0000
|
||||
Subject: [PATCH] vram: Skip listing devices when no platforms are found
|
||||
|
||||
In a chroot-type test environment, tests/test-dump-plugin.sh failed
|
||||
with:
|
||||
|
||||
+ nbdkit vram --dump-plugin
|
||||
nbdkit: error: clGetPlatformIDs: error -1001 (unknown OpenCL error)
|
||||
|
||||
-1001 is the extended error CL_PLATFORM_NOT_FOUND_KHR
|
||||
---
|
||||
plugins/vram/opencl-errors.h | 3 +++
|
||||
plugins/vram/vram.c | 7 +++++++
|
||||
2 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/plugins/vram/opencl-errors.h b/plugins/vram/opencl-errors.h
|
||||
index b5d185fc..dd6fba92 100644
|
||||
--- a/plugins/vram/opencl-errors.h
|
||||
+++ b/plugins/vram/opencl-errors.h
|
||||
@@ -101,6 +101,9 @@ opencl_errstr (cl_int err)
|
||||
case_return_string(CL_INVALID_COMPILER_OPTIONS );
|
||||
case_return_string(CL_INVALID_LINKER_OPTIONS );
|
||||
case_return_string(CL_INVALID_DEVICE_PARTITION_COUNT );
|
||||
+
|
||||
+ /* Extended. */
|
||||
+ case_return_string(CL_PLATFORM_NOT_FOUND_KHR );
|
||||
default: return "unknown OpenCL error";
|
||||
}
|
||||
}
|
||||
diff --git a/plugins/vram/vram.c b/plugins/vram/vram.c
|
||||
index 4b391e22..9819f0db 100644
|
||||
--- a/plugins/vram/vram.c
|
||||
+++ b/plugins/vram/vram.c
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
#define CL_TARGET_OPENCL_VERSION 200 /* OpenCL >= 2.0 */
|
||||
#include <CL/cl.h>
|
||||
+#include <CL/cl_ext.h>
|
||||
|
||||
#define NBDKIT_API_VERSION 2
|
||||
#include <nbdkit-plugin.h>
|
||||
@@ -126,6 +127,12 @@ get_all_devices (void)
|
||||
/* Build the list of all devices from all platforms as a flat list. */
|
||||
what = "clGetPlatformIDs";
|
||||
r = clGetPlatformIDs (0, NULL, &num_platforms);
|
||||
+ if (r == CL_PLATFORM_NOT_FOUND_KHR) {
|
||||
+ /* OpenCL seems to return this when no platform is detected at
|
||||
+ * all, so just return the empty list in this case.
|
||||
+ */
|
||||
+ return;
|
||||
+ }
|
||||
if (r != CL_SUCCESS) goto err;
|
||||
platform_ids = calloc (num_platforms, sizeof platform_ids[0]);
|
||||
if (!platform_ids) {
|
||||
--
|
||||
2.47.3
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
From 01b8e557ce129b2f4677061ba04bbb5ff2a703eb Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Mon, 27 Oct 2025 09:15:47 +0000
|
||||
Subject: [PATCH] linuxdisk: Fix parsing of last line of 'du' command output
|
||||
|
||||
A recent change to glibc breaks this code. Previously we could read
|
||||
the lines of output from the 'du' command until getline(3) returned
|
||||
EOF, and the 'line' buffer would contain the last line read. However
|
||||
after this change, glibc now sets line[0] = '\0' in the EOF case,
|
||||
breaking the last line of output that we wanted to parse.
|
||||
|
||||
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=33eff78c8b28adc4963987880e10d96761f2a167
|
||||
|
||||
We also previously didn't handle the unlikely case where 'du' produces
|
||||
no output at all. Fix both problems here.
|
||||
---
|
||||
plugins/linuxdisk/filesystem.c | 23 ++++++++++++++++++-----
|
||||
1 file changed, 18 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/plugins/linuxdisk/filesystem.c b/plugins/linuxdisk/filesystem.c
|
||||
index 3e4e2f3a..283af61a 100644
|
||||
--- a/plugins/linuxdisk/filesystem.c
|
||||
+++ b/plugins/linuxdisk/filesystem.c
|
||||
@@ -148,7 +148,7 @@ create_filesystem (struct virtual_disk *disk)
|
||||
static int64_t
|
||||
estimate_size (void)
|
||||
{
|
||||
- CLEANUP_FREE char *command = NULL, *line = NULL;
|
||||
+ CLEANUP_FREE char *command = NULL, *line = NULL, *lastline = NULL;
|
||||
size_t len = 0;
|
||||
FILE *fp;
|
||||
int64_t ret;
|
||||
@@ -177,8 +177,16 @@ estimate_size (void)
|
||||
|
||||
/* Ignore everything up to the last line. */
|
||||
len = 0;
|
||||
- while (getline (&line, &len, fp) != -1)
|
||||
- /* empty */;
|
||||
+ while (getline (&line, &len, fp) != -1) {
|
||||
+ nbdkit_debug ("du: %s", line);
|
||||
+ free (lastline);
|
||||
+ lastline = strndup (line, len);
|
||||
+ if (lastline == NULL) {
|
||||
+ nbdkit_error ("strndup: %m");
|
||||
+ pclose (fp);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
if (ferror (fp)) {
|
||||
nbdkit_error ("getline failed: %m");
|
||||
pclose (fp);
|
||||
@@ -193,9 +201,14 @@ estimate_size (void)
|
||||
if (exit_status_to_nbd_error (r, "pclose: du") == -1)
|
||||
return -1;
|
||||
|
||||
+ if (lastline == NULL) {
|
||||
+ nbdkit_error ("no output from du command");
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
/* Parse the last line. */
|
||||
- if (sscanf (line, "%" SCNi64, &ret) != 1 || ret < 0) {
|
||||
- nbdkit_error ("could not parse last line of output: %s", line);
|
||||
+ if (sscanf (lastline, "%" SCNi64, &ret) != 1 || ret < 0) {
|
||||
+ nbdkit_error ("could not parse last line from du command: %s", lastline);
|
||||
return -1;
|
||||
}
|
||||
|
||||
--
|
||||
2.47.3
|
||||
|
||||
@ -0,0 +1,42 @@
|
||||
From df5e7d1b6f2cbc3e3adbb85312490b148ad0b2fc Mon Sep 17 00:00:00 2001
|
||||
From: Eric Blake <eblake@redhat.com>
|
||||
Date: Sun, 26 Oct 2025 22:25:10 +0000
|
||||
Subject: [PATCH] vram: Skip listing devices when no devices found in platform
|
||||
|
||||
On my laptop, right after installing clinfo and building vram,
|
||||
clGetDeviceIDs found an AMD device, but was unable to connect to it
|
||||
(probably further drivers needed), resulting in:
|
||||
|
||||
+ nbdkit vram --dump-plugin
|
||||
...
|
||||
nbdkit: error: clGetDeviceIDs: error -1 (CL_DEVICE_NOT_FOUND)
|
||||
|
||||
Similar to the previous fix when a platform is not available, it is
|
||||
easy to gracefully handle no devices found in a platform.
|
||||
|
||||
Signed-off-by: Eric Blake <eblake@redhat.com>
|
||||
---
|
||||
plugins/vram/vram.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/plugins/vram/vram.c b/plugins/vram/vram.c
|
||||
index 9819f0db..64cfe0fa 100644
|
||||
--- a/plugins/vram/vram.c
|
||||
+++ b/plugins/vram/vram.c
|
||||
@@ -147,6 +147,13 @@ get_all_devices (void)
|
||||
what = "clGetDeviceIDs";
|
||||
r = clGetDeviceIDs (platform_ids[pl_i], CL_DEVICE_TYPE_ALL, 0, NULL,
|
||||
&num_devices);
|
||||
+ if (r == CL_DEVICE_NOT_FOUND) {
|
||||
+ /* OpenCL seems to return this when the platform is found but
|
||||
+ * the vendor's library is not configured to access devices
|
||||
+ * within the platform; skip over this platform.
|
||||
+ */
|
||||
+ continue;
|
||||
+ }
|
||||
if (r != CL_SUCCESS) goto err;
|
||||
free (device_ids);
|
||||
device_ids = calloc (num_devices, sizeof device_ids[0]);
|
||||
--
|
||||
2.47.3
|
||||
|
||||
41
0004-Fix-mke2fs-command-line.patch
Normal file
41
0004-Fix-mke2fs-command-line.patch
Normal file
@ -0,0 +1,41 @@
|
||||
From ae9a7cf9167bc35aa7278f55af1049ea4aa871e6 Mon Sep 17 00:00:00 2001
|
||||
From: Mykola Ivanets <stenavin@gmail.com>
|
||||
Date: Wed, 29 Oct 2025 23:53:03 +0200
|
||||
Subject: [PATCH] Fix mke2fs command line
|
||||
|
||||
Man page says:
|
||||
|
||||
The file system size is specified by fs-size. If fs-size does not have
|
||||
a suffix, it is interpreted as power-of-two kilobytes, unless the -b
|
||||
blocksize option is specified, in which case fs-size is interpreted as
|
||||
the number of blocksize blocks. If the fs-size is suffixed by 'k', 'm',
|
||||
'g', 't' (either upper-case or lower-case), then it is interpreted in
|
||||
power-of-two kilobytes, megabytes, gigabytes, terabytes, etc. If
|
||||
fs-size is omitted, mke2fs will create the file system based on the
|
||||
device size.
|
||||
|
||||
We could add '-b 1' parameter and specify fs-size, or just remove
|
||||
fs-size parameter, in this case mke2fs will create the file system based
|
||||
on device size. I prefer later option just because it will avoid
|
||||
duplicating fs-size specification twice (in the previous 'truncate'
|
||||
command and in 'mke2fs').
|
||||
---
|
||||
tests/Makefile.am | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tests/Makefile.am b/tests/Makefile.am
|
||||
index 53cc00d1..2a7e9623 100644
|
||||
--- a/tests/Makefile.am
|
||||
+++ b/tests/Makefile.am
|
||||
@@ -1895,7 +1895,7 @@ ext2.img: disk test-ext2-exportname.sh
|
||||
cp $< ext2.img.d/disks/disk.img
|
||||
echo /disks/disk.img > ext2.img.d/manifest
|
||||
$(TRUNCATE) -s 2147483648 $@-t
|
||||
- mke2fs -q -F -t ext4 -d ext2.img.d $@-t 2147483648
|
||||
+ mke2fs -q -F -t ext4 -d ext2.img.d $@-t
|
||||
rm -r ext2.img.d
|
||||
mv $@-t $@
|
||||
|
||||
--
|
||||
2.47.3
|
||||
|
||||
31
0005-vram-Fix-trim-command.patch
Normal file
31
0005-vram-Fix-trim-command.patch
Normal file
@ -0,0 +1,31 @@
|
||||
From 258822bde3eb4923b309431c6e4d71932e83932d Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 1 Nov 2025 09:33:37 +0000
|
||||
Subject: [PATCH] vram: Fix trim command
|
||||
|
||||
Fix missing updates in the loop, which caused trim operations to spin
|
||||
forever.
|
||||
|
||||
Fixes: commit e35fb68748ecd1ebab63308db3c9a6ccca12ebcb
|
||||
---
|
||||
plugins/vram/vram.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/plugins/vram/vram.c b/plugins/vram/vram.c
|
||||
index 64cfe0fa..63e7d5c7 100644
|
||||
--- a/plugins/vram/vram.c
|
||||
+++ b/plugins/vram/vram.c
|
||||
@@ -811,6 +811,10 @@ vram_trim (void *handle, uint32_t count, uint64_t offset, uint32_t flags)
|
||||
/* Aligned body */
|
||||
while (count >= BUFFER_SIZE) {
|
||||
free_buffer (bufnum);
|
||||
+
|
||||
+ count -= BUFFER_SIZE;
|
||||
+ offset += BUFFER_SIZE;
|
||||
+ bufnum++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
--
|
||||
2.47.3
|
||||
|
||||
26
0006-vram-Link-to-radeontop-1.patch
Normal file
26
0006-vram-Link-to-radeontop-1.patch
Normal file
@ -0,0 +1,26 @@
|
||||
From 1c501d5c7162ac41e6e49767cdcb8632d5e6535d Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 1 Nov 2025 09:34:47 +0000
|
||||
Subject: [PATCH] vram: Link to radeontop(1)
|
||||
|
||||
This tool is a top-like tool for AMD Radeon cards, very useful when
|
||||
observing GPU and Video RAM usage in real time.
|
||||
---
|
||||
plugins/vram/nbdkit-vram-plugin.pod | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/plugins/vram/nbdkit-vram-plugin.pod b/plugins/vram/nbdkit-vram-plugin.pod
|
||||
index b99eb67f..5363a4ca 100644
|
||||
--- a/plugins/vram/nbdkit-vram-plugin.pod
|
||||
+++ b/plugins/vram/nbdkit-vram-plugin.pod
|
||||
@@ -158,6 +158,7 @@ L<nbdkit(1)>,
|
||||
L<nbdkit-plugin(3)>,
|
||||
L<nbdkit-memory-plugin(1)>,
|
||||
L<clinfo(1)>,
|
||||
+L<radeontop(1)>,
|
||||
L<fstrim(8)>.
|
||||
|
||||
=head1 AUTHORS
|
||||
--
|
||||
2.47.3
|
||||
|
||||
29
0007-vram-Obey-trim-FUA-flag-by-calling-vram_flush.patch
Normal file
29
0007-vram-Obey-trim-FUA-flag-by-calling-vram_flush.patch
Normal file
@ -0,0 +1,29 @@
|
||||
From af18957aa91b61f627c2a56724b717c2dbdbf001 Mon Sep 17 00:00:00 2001
|
||||
From: "Richard W.M. Jones" <rjones@redhat.com>
|
||||
Date: Sat, 1 Nov 2025 19:05:01 +0000
|
||||
Subject: [PATCH] vram: Obey trim FUA flag by calling vram_flush
|
||||
|
||||
Further fix to the vram trim operation, so now we (kind of) obey the
|
||||
FUA flag by calling vram_flush. Since vram_flush does nothing right
|
||||
now, this actually makes no difference.
|
||||
---
|
||||
plugins/vram/vram.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/plugins/vram/vram.c b/plugins/vram/vram.c
|
||||
index 63e7d5c7..fe8bf60e 100644
|
||||
--- a/plugins/vram/vram.c
|
||||
+++ b/plugins/vram/vram.c
|
||||
@@ -817,6 +817,9 @@ vram_trim (void *handle, uint32_t count, uint64_t offset, uint32_t flags)
|
||||
bufnum++;
|
||||
}
|
||||
|
||||
+ if (flags & NBDKIT_FLAG_FUA && vram_flush (handle, 0) == -1)
|
||||
+ return -1;
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
--
|
||||
2.47.3
|
||||
|
||||
47
nbdkit.spec
47
nbdkit.spec
@ -54,7 +54,7 @@
|
||||
%global source_directory 1.45-development
|
||||
|
||||
Name: nbdkit
|
||||
Version: 1.45.11
|
||||
Version: 1.45.12
|
||||
Release: 1%{?dist}
|
||||
Summary: NBD server
|
||||
|
||||
@ -80,7 +80,13 @@ Source3: copy-patches.sh
|
||||
# https://gitlab.com/nbdkit/nbdkit/-/commits/rhel-10.2/
|
||||
|
||||
# Patches.
|
||||
#(nothing)
|
||||
Patch0001: 0001-vram-Skip-listing-devices-when-no-platforms-are-foun.patch
|
||||
Patch0002: 0002-linuxdisk-Fix-parsing-of-last-line-of-du-command-out.patch
|
||||
Patch0003: 0003-vram-Skip-listing-devices-when-no-devices-found-in-p.patch
|
||||
Patch0004: 0004-Fix-mke2fs-command-line.patch
|
||||
Patch0005: 0005-vram-Fix-trim-command.patch
|
||||
Patch0006: 0006-vram-Link-to-radeontop-1.patch
|
||||
Patch0007: 0007-vram-Obey-trim-FUA-flag-by-calling-vram_flush.patch
|
||||
|
||||
# For automatic RPM Provides generation.
|
||||
# See: https://rpm-software-management.github.io/rpm/manual/dependency_generators.html
|
||||
@ -132,8 +138,11 @@ BuildRequires: pkgconfig(libtorrent-rasterbar)
|
||||
%if 0%{?have_blkio}
|
||||
BuildRequires: pkgconfig(blkio)
|
||||
%endif
|
||||
BuildRequires: bash-completion
|
||||
%if !0%{?rhel}
|
||||
BuildRequires: pkgconfig(OpenCL)
|
||||
%endif
|
||||
BuildRequires: bash-completion
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 11
|
||||
BuildRequires: bash-completion-devel
|
||||
%endif
|
||||
BuildRequires: perl-devel
|
||||
@ -173,9 +182,11 @@ BuildRequires: /usr/bin/lzip
|
||||
BuildRequires: /usr/bin/nbdcopy
|
||||
BuildRequires: /usr/bin/nbdinfo
|
||||
BuildRequires: /usr/bin/nbdsh
|
||||
%ifnarch %{ix86}
|
||||
BuildRequires: /usr/bin/qemu-img
|
||||
BuildRequires: /usr/bin/qemu-io
|
||||
BuildRequires: /usr/bin/qemu-nbd
|
||||
%endif
|
||||
BuildRequires: /usr/sbin/sfdisk
|
||||
%if !0%{?rhel}
|
||||
BuildRequires: /usr/bin/socat
|
||||
@ -580,6 +591,17 @@ VMware VDDK for accessing VMware disks and servers.
|
||||
%endif
|
||||
|
||||
|
||||
%if !0%{?rhel}
|
||||
%package vram-plugin
|
||||
Summary: use GPU Video RAM as a network block device
|
||||
Requires: %{name}-server%{?_isa} = %{version}-%{release}
|
||||
Recommends: %{_bindir}/clinfo
|
||||
|
||||
%description vram-plugin
|
||||
This package contains GPU Video RAM support for %{name}.
|
||||
%endif
|
||||
|
||||
|
||||
%package basic-filters
|
||||
Summary: Basic filters for %{name}
|
||||
Requires: %{name}-server%{?_isa} = %{version}-%{release}
|
||||
@ -860,6 +882,7 @@ export PYTHON=%{__python3}
|
||||
--enable-perl \
|
||||
--enable-tcl \
|
||||
--enable-torrent \
|
||||
--enable-vram \
|
||||
--with-ext2 \
|
||||
--with-iso \
|
||||
--with-libvirt \
|
||||
@ -868,6 +891,7 @@ export PYTHON=%{__python3}
|
||||
--disable-perl \
|
||||
--disable-tcl \
|
||||
--disable-torrent \
|
||||
--disable-vram \
|
||||
--without-ext2 \
|
||||
--without-iso \
|
||||
--without-libvirt \
|
||||
@ -932,6 +956,7 @@ popd
|
||||
--disable-torrent \
|
||||
--disable-valgrind \
|
||||
--disable-vddk \
|
||||
--disable-vram \
|
||||
--without-bash-completions \
|
||||
--without-curl \
|
||||
--without-ext2 \
|
||||
@ -1341,6 +1366,15 @@ fi
|
||||
%endif
|
||||
|
||||
|
||||
%if !0%{?rhel}
|
||||
%files vram-plugin
|
||||
%doc README.md
|
||||
%license LICENSE
|
||||
%{_libdir}/%{name}/plugins/nbdkit-vram-plugin.so
|
||||
%{_mandir}/man1/nbdkit-vram-plugin.1*
|
||||
%endif
|
||||
|
||||
|
||||
%files basic-filters
|
||||
%doc README.md
|
||||
%license LICENSE
|
||||
@ -1522,7 +1556,7 @@ fi
|
||||
|
||||
%files bash-completion
|
||||
%license LICENSE
|
||||
%if !0%{?rhel}
|
||||
%if 0%{?fedora} || 0%{?rhel} >= 11
|
||||
%dir %{bash_completions_dir}
|
||||
%{bash_completions_dir}/nbdkit
|
||||
%else
|
||||
@ -1560,9 +1594,10 @@ fi
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Oct 20 2025 Richard W.M. Jones <rjones@redhat.com> - 1.45.11-1
|
||||
- Rebase to nbdkit 1.45.11
|
||||
* Wed Nov 05 2025 Richard W.M. Jones <rjones@redhat.com> - 1.45.12-1
|
||||
- Rebase to nbdkit 1.45.12
|
||||
resolves: RHEL-111242
|
||||
- Synchronize spec file with Fedora.
|
||||
- vddk: Don't use FNM_PATHNAME when matching export parameter
|
||||
resolves: RHEL-122755
|
||||
|
||||
|
||||
4
sources
4
sources
@ -1,2 +1,2 @@
|
||||
SHA512 (nbdkit-1.45.11.tar.gz) = b9ba91cfa7e71c415bbc2cb47dd569ce327d8dd9ec28aca03788984872f0a0fd63296f963436740b504950896082c14768bd823f5605d23b63ea149f87f939f5
|
||||
SHA512 (nbdkit-1.45.11.tar.gz.sig) = b964604598d50c319c6f04e8cab487f215f6347588b507fdaf752ac8b0929c2e2975d793fbe1f65bf51107b5e087f5c8836589c01b81753e2dce70f9d2e73ae2
|
||||
SHA512 (nbdkit-1.45.12.tar.gz) = a28da3e24c333da5b4b22961078095b1d73bb6c219e7cfae783c301b68d8e755ce839fa15bff6354b44ff7227a91eae6a8e264f3e26b5caff8d27c68905ff01b
|
||||
SHA512 (nbdkit-1.45.12.tar.gz.sig) = 93c497160f196b1a6144819742cee04b1fad663a148dbc4fd82efe73c9a1aabdcb9c01baa9ec84db17a392ae6cde468736750a878bba3e3c130507890f96a8e5
|
||||
|
||||
Loading…
Reference in New Issue
Block a user