Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package nbdkit for openSUSE:Factory checked 
in at 2026-09-23 14:36:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nbdkit (Old)
 and      /work/SRC/openSUSE:Factory/.nbdkit.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "nbdkit"

Wed Sep 23 14:36:04 2026 rev:31 rq:1379905 version:1.48.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/nbdkit/nbdkit.changes    2026-08-14 
22:08:39.040618604 +0200
+++ /work/SRC/openSUSE:Factory/.nbdkit.new.383539/nbdkit.changes        
2026-09-23 14:37:33.198820882 +0200
@@ -1,0 +2,13 @@
+Wed Sep 16 06:27:32 UTC 2026 - Charles Arnold <[email protected]>
+
+- Update to version 1.48.1:
+  * Version 1.48.1.
+  * golang: Ignore Flush called from pwrite + FUA
+  * golang: Fix read/write mutex usage
+  * docs/nbdkit-protocol.pod: Update export safe list
+  * map: Fix comments
+  * make: force dist file comparison to use C sort ordering
+  * indexed-gzip: Fix restart at non-byte-aligned access points
+  * tests/test-sparse-random-blocksize.sh: Reduce maximum block size
+
+-------------------------------------------------------------------

Old:
----
  nbdkit-1.48.0.tar.xz

New:
----
  nbdkit-1.48.1.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ nbdkit.spec ++++++
--- /var/tmp/diff_new_pack.5S9zR5/_old  2026-09-23 14:37:34.384870476 +0200
+++ /var/tmp/diff_new_pack.5S9zR5/_new  2026-09-23 14:37:34.392870811 +0200
@@ -27,7 +27,7 @@
 %global broken_test_arches %{arm} aarch64 %{ix86}
 
 Name:           nbdkit
-Version:        1.48.0
+Version:        1.48.1
 Release:        0
 Summary:        Network Block Device server
 License:        BSD-3-Clause

++++++ _service ++++++
--- /var/tmp/diff_new_pack.5S9zR5/_old  2026-09-23 14:37:34.482874574 +0200
+++ /var/tmp/diff_new_pack.5S9zR5/_new  2026-09-23 14:37:34.496875159 +0200
@@ -1,7 +1,7 @@
 <services>
   <service name="tar_scm" mode="manual">
     <param name="filename">nbdkit</param>
-    <param name="revision">v1.48.0</param>
+    <param name="revision">v1.48.1</param>
     <param name="scm">git</param>
     <param name="submodules">disable</param>
     <param name="url">https://gitlab.com/nbdkit/nbdkit.git</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.5S9zR5/_old  2026-09-23 14:37:34.554877585 +0200
+++ /var/tmp/diff_new_pack.5S9zR5/_new  2026-09-23 14:37:34.561877878 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://gitlab.com/nbdkit/nbdkit.git</param>
-              <param 
name="changesrevision">111be961359500291bd3792317b042d72bef5efd</param></service></servicedata>
+              <param 
name="changesrevision">fb1624d38bdc5e9e2376ac00e39b2d6a6bc62b56</param></service></servicedata>
 (No newline at EOF)
 

++++++ nbdkit-1.48.0.tar.xz -> nbdkit-1.48.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbdkit-1.48.0/Makefile.am 
new/nbdkit-1.48.1/Makefile.am
--- old/nbdkit-1.48.0/Makefile.am       2026-07-14 12:48:58.000000000 +0200
+++ new/nbdkit-1.48.1/Makefile.am       2026-08-29 10:37:40.000000000 +0200
@@ -121,14 +121,14 @@
 # generated files have been included in the tarball.  (Note you must
 # have done 'make dist')
 maintainer-check-extra-dist:
-       @tar ztf $(PACKAGE_NAME)-$(VERSION).tar.gz | sort | \
+       @tar ztf $(PACKAGE_NAME)-$(VERSION).tar.gz | LANG=C sort | \
            sed 's,^$(PACKAGE_NAME)-$(VERSION)/,,' > tarfiles
        @git ls-files | \
       grep -v \
            -e '^\.gitlab-ci.yml' \
            -e '^ci/' | \
-           sort > gitfiles
-       @comm -13 tarfiles gitfiles > comm-out
+           LANG=C sort > gitfiles
+       @LANG=C comm -13 tarfiles gitfiles > comm-out
        @echo Checking for differences between EXTRA_DIST and git ...
        @cat comm-out
        @[ ! -s comm-out ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbdkit-1.48.0/configure.ac 
new/nbdkit-1.48.1/configure.ac
--- old/nbdkit-1.48.0/configure.ac      2026-07-14 12:48:58.000000000 +0200
+++ new/nbdkit-1.48.1/configure.ac      2026-08-29 10:37:40.000000000 +0200
@@ -31,7 +31,7 @@
 
 m4_define([NBDKIT_VERSION_MAJOR], [1])
 m4_define([NBDKIT_VERSION_MINOR], [48])
-m4_define([NBDKIT_VERSION_MICRO], [0])
+m4_define([NBDKIT_VERSION_MICRO], [1])
 AC_INIT([nbdkit],
         NBDKIT_VERSION_MAJOR.NBDKIT_VERSION_MINOR.NBDKIT_VERSION_MICRO)
 AC_CONFIG_MACRO_DIR([m4])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbdkit-1.48.0/docs/nbdkit-protocol.pod 
new/nbdkit-1.48.1/docs/nbdkit-protocol.pod
--- old/nbdkit-1.48.0/docs/nbdkit-protocol.pod  2026-07-14 12:48:58.000000000 
+0200
+++ new/nbdkit-1.48.1/docs/nbdkit-protocol.pod  2026-08-29 10:37:40.000000000 
+0200
@@ -278,10 +278,11 @@
    checkwrite              Yes
    count                   Yes
    cow                     Yes, since 1.44
+   ddrescue                No
    delay                   Yes
    error                   Yes
-   evil                    Yes
 
+   evil                    Yes
    exitlast                Yes
    exitwhen                Yes
    exportname              Yes
@@ -289,21 +290,23 @@
    extentlist              Not useful with exports
    fua                     Yes
    gzip                    No
+   indexed-gzip            No
    ip                      Yes
+
    limit                   Yes
    log                     Yes
-
    luks                    No
    lzip                    No
+   map                     No
    multi-conn              Yes
    nocache                 Yes
    noextents               Yes
    nofilter                Yes
    noparallel              Yes
+
    nozero                  Yes
    offset                  Yes, but unlikely to be useful
    openonce                Yes
-
    partition               No
    pause                   Yes
    protect                 Yes, but unlikely to be useful
@@ -311,10 +314,10 @@
    rate                    Yes
    readahead               Yes, since 1.32
    readonly                Yes
+
    retry                   Yes
    retry-request           Yes
    rotational              Yes
-
    scan                    Yes
    spinning                Yes
    stats                   Yes
@@ -322,6 +325,7 @@
    tar                     No
    time-limit              Yes
    tls-fallback            Yes
+
    truncate                Yes, but unlikely to be useful
    xor                     Yes
    xz                      No
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbdkit-1.48.0/filters/indexed-gzip/ig_zran.c 
new/nbdkit-1.48.1/filters/indexed-gzip/ig_zran.c
--- old/nbdkit-1.48.0/filters/indexed-gzip/ig_zran.c    2026-07-14 
12:48:58.000000000 +0200
+++ new/nbdkit-1.48.1/filters/indexed-gzip/ig_zran.c    2026-08-29 
10:37:40.000000000 +0200
@@ -242,23 +242,63 @@
                  "point->bits=%d",
                  lo, (intmax_t) point->in, (intmax_t) point->out, point->bits);
 
-    // Initialize the input file and prime the inflate engine to start there.
+    // Initialize the compressed input and prime inflate at the access point.
+    //
+    // For a non-byte-aligned access point, point->in identifies the first
+    // complete byte following the partial byte. Read that preceding byte,
+    // use its high-order unused bits to prime zlib, and then continue normal
+    // compressed input at point->in.
     off_t start_byte = point->in - (point->bits ? 1 : 0);
-    int ch = 0;
+    unsigned char ch = 0;
+
     index->strm.avail_in = 0;
+
     int ret = inflateReset2(&index->strm, RAW);
-    index->strm.total_in = start_byte;
-    nbdkit_debug("ig_deflate_index_extract: "
-                 "inflateReset2 returned %d, start_byte=%jd",
-                 ret, (intmax_t) start_byte);
-    if (ret != Z_OK)
+    if (ret != Z_OK) {
+        nbdkit_debug("ig_deflate_index_extract: inflateReset2 returned %d",
+                     ret);
         return ret;
+    }
+
     if (point->bits) {
-        nbdkit_debug("ig_deflate_index_extract: calling INFLATEPRIME with 
bits=%d", point->bits);
-        INFLATEPRIME(&index->strm, point->bits, ch >> (8 - point->bits));
+        if (next->pread(next, &ch, 1, start_byte, 0, err) == -1) {
+            nbdkit_debug("ig_deflate_index_extract: "
+                         "failed to read priming byte at offset %jd",
+                         (intmax_t) start_byte);
+            return Z_NBDKIT_ERROR;
+        }
+
+        nbdkit_debug("ig_deflate_index_extract: "
+                     "calling INFLATEPRIME with bits=%d, byte=0x%02x",
+                     point->bits, ch);
+
+        ret = INFLATEPRIME(&index->strm, point->bits,
+                           ch >> (8 - point->bits));
+        if (ret != Z_OK) {
+            nbdkit_debug("ig_deflate_index_extract: "
+                         "INFLATEPRIME returned %d",
+                         ret);
+            return ret;
+        }
     }
-    inflateSetDictionary(&index->strm, point->window, point->dict);
-    nbdkit_debug("ig_deflate_index_extract: dictionary set, dict size=%d", 
point->dict);
+
+    // The priming byte, when present, has already been consumed above.
+    index->strm.total_in = point->in;
+
+    ret = inflateSetDictionary(&index->strm, point->window, point->dict);
+    if (ret != Z_OK) {
+        nbdkit_debug("ig_deflate_index_extract: "
+                     "inflateSetDictionary returned %d",
+                     ret);
+        return ret;
+    }
+
+    nbdkit_debug("ig_deflate_index_extract: "
+                 "restart prepared, start_byte=%jd, next_input=%jd, "
+                 "dict size=%d",
+                 (intmax_t) start_byte,
+                 (intmax_t) index->strm.total_in,
+                 point->dict);
 
     // Skip uncompressed bytes until offset reached, then satisfy request.
     unsigned char input[CHUNK];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbdkit-1.48.0/filters/map/map.c 
new/nbdkit-1.48.1/filters/map/map.c
--- old/nbdkit-1.48.0/filters/map/map.c 2026-07-14 12:48:58.000000000 +0200
+++ new/nbdkit-1.48.1/filters/map/map.c 2026-08-29 10:37:40.000000000 +0200
@@ -54,7 +54,7 @@
  * A single struct range stores a range from start-end (inclusive).
  * end can be INT64_MAX to indicate the end of the file.
  *
- * 'range_list' stores the list of protected ranges, unsorted.
+ * 'range_list' stores the list of ranges, unsorted.
  */
 struct range {
   uint64_t start, end;
@@ -65,8 +65,8 @@
 DEFINE_VECTOR_TYPE (ranges, struct range);
 static ranges range_list;
 
-/* region_list covers the whole address space with protected and
- * unprotected ranges.
+/* region_list covers the whole address space with ranges, with no
+ * overlaps or gaps.
  */
 static regions region_list;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/nbdkit-1.48.0/plugins/golang/src/libguestfs.org/nbdkit/nbdkit.go 
new/nbdkit-1.48.1/plugins/golang/src/libguestfs.org/nbdkit/nbdkit.go
--- old/nbdkit-1.48.0/plugins/golang/src/libguestfs.org/nbdkit/nbdkit.go        
2026-07-14 12:48:58.000000000 +0200
+++ new/nbdkit-1.48.1/plugins/golang/src/libguestfs.org/nbdkit/nbdkit.go        
2026-08-29 10:37:40.000000000 +0200
@@ -218,7 +218,20 @@
 }
 
 func (c *Connection) Flush(flags uint32) error {
-       panic("plugin CanFlush returns true, but no Flush() function")
+       // nbdkit can in fact call Flush even if CanFlush exists and
+       // returns false.  This is hinted in nbdkit-plugin(3) but not
+       // very clearly.  If the C callback .can_fua does not exist
+       // but .flush exists then nbdkit assumes NBDKIT_FUA_EMULATE
+       // mode, and PWrite + FUA calls Flush anyway.  In golang
+       // plugins we don't implement .can_fua yet and the .flush
+       // callback always exists (to nbdkit).
+       //
+       // The best we can do is ignore the "unexpected" Flush.
+       //
+       // We don't return an error because that would cause PWrite +
+       // FUA to fail, and we assume if the plugin didn't implement
+       // Flush then it's not needed.
+       return nil
 }
 
 func (c *Connection) Trim(count uint32, offset uint64, flags uint32) error {
@@ -329,9 +342,9 @@
 
 func getConn(handle unsafe.Pointer) ConnectionInterface {
        id := uintptr(handle)
-       connectionMutex.Lock()
+       connectionMutex.RLock()
        h, ok := connectionMap[id]
-       connectionMutex.Unlock()
+       connectionMutex.RUnlock()
        if !ok {
                panic(fmt.Sprintf("connection %d was not open", id))
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/nbdkit-1.48.0/tests/test-sparse-random-blocksize.sh 
new/nbdkit-1.48.1/tests/test-sparse-random-blocksize.sh
--- old/nbdkit-1.48.0/tests/test-sparse-random-blocksize.sh     2026-07-14 
12:48:58.000000000 +0200
+++ new/nbdkit-1.48.1/tests/test-sparse-random-blocksize.sh     2026-08-29 
10:37:40.000000000 +0200
@@ -55,7 +55,7 @@
 # but if this picks a 32M block size, then this could consume up to
 # 4 * 16 * 32 == 2048 MB of RAM.  This is a problem on smaller systems
 # (and especially 32 bit), so choose a lesser maximum.
-blocksize_r="$(( 10 + (RANDOM % 17) ))"   ;# 10..26
+blocksize_r="$(( 10 + (RANDOM % 16) ))"   ;# 10..25
 blocksize="$(( 1 << blocksize_r ))"
 
 export out

Reply via email to