[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#985592: marked as done (unblock: libnbd/1.6.2-1)



Your message dated Tue, 13 Apr 2021 15:41:48 +0200
with message-id <20210413134146.GA14909@debian.org>
and subject line Re: Bug#985592: unblock: libnbd/1.6.2-1
has caused the Debian Bug report #985592,
regarding unblock: libnbd/1.6.2-1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
985592: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=985592
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian.org@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: carnil@debian.org,bengen@debian.org

Hi Release team

[Disclaimer, not the maintainer requesting the unblock, but I'm CC'ing
Hilko to confirm].

Please unblock package libnbd

[ Reason ]
The new upstream version uploaded libnbd/1.6.2-1 contains as fix for
CVE-2021-20286. I was announced as
https://listman.redhat.com/archives/libguestfs/2021-March/msg00092.html
. An isolated fix was
https://gitlab.com/nbdkit/libnbd/-/commit/2216190ecbbd853648df6a3280c17b345b0907a0
. The request is done to have bullseye without this CVE open.

[ Impact ]
Denial of service.

[ Tests ]
I have not performed tests specific to the version update 1.6.1 to
1.6.2.

[ Risks ]
Arguably there is a new upstream version, but the attached debdiff
collects all the changes additionally done.

Again, Hilko is CC'ed to confirm if this is safe for bullseye.

[ Checklist ]
  [ ] all changes are documented in the d/changelog
  [ ] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

[ Other info ]
It should propably have an explicit acknowledgment for the unblock
from Hilko.

unblock libnbd/1.6.2-1

Regards,
Salvatore
diff -Nru libnbd-1.6.1/Makefile.in libnbd-1.6.2/Makefile.in
--- libnbd-1.6.1/Makefile.in	2021-01-20 14:12:55.000000000 +0100
+++ libnbd-1.6.2/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -204,7 +204,8 @@
 	$(srcdir)/podwrapper.pl.in $(srcdir)/run.in \
 	$(top_srcdir)/common-rules.mk \
 	$(top_srcdir)/lib/local/libnbd.pc.in COPYING.LIB README TODO \
-	compile config.guess config.sub install-sh ltmain.sh missing
+	compile config.guess config.sub depcomp install-sh ltmain.sh \
+	missing
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -412,6 +413,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/bash/Makefile.in libnbd-1.6.2/bash/Makefile.in
--- libnbd-1.6.1/bash/Makefile.in	2021-01-20 14:12:55.000000000 +0100
+++ libnbd-1.6.2/bash/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -380,6 +380,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/common/include/Makefile.in libnbd-1.6.2/common/include/Makefile.in
--- libnbd-1.6.1/common/include/Makefile.in	2021-01-20 14:12:55.000000000 +0100
+++ libnbd-1.6.2/common/include/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -346,6 +346,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/common/utils/Makefile.in libnbd-1.6.2/common/utils/Makefile.in
--- libnbd-1.6.1/common/utils/Makefile.in	2021-01-20 14:12:55.000000000 +0100
+++ libnbd-1.6.2/common/utils/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -397,6 +397,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/configure libnbd-1.6.2/configure
--- libnbd-1.6.1/configure	2021-01-20 14:12:55.000000000 +0100
+++ libnbd-1.6.2/configure	2021-03-02 22:35:29.000000000 +0100
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for libnbd 1.6.1.
+# Generated by GNU Autoconf 2.69 for libnbd 1.6.2.
 #
 #
 # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
@@ -587,8 +587,8 @@
 # Identity of this package.
 PACKAGE_NAME='libnbd'
 PACKAGE_TARNAME='libnbd'
-PACKAGE_VERSION='1.6.1'
-PACKAGE_STRING='libnbd 1.6.1'
+PACKAGE_VERSION='1.6.2'
+PACKAGE_STRING='libnbd 1.6.2'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -821,6 +821,7 @@
 docdir
 oldincludedir
 includedir
+runstatedir
 localstatedir
 sharedstatedir
 sysconfdir
@@ -934,6 +935,7 @@
 sysconfdir='${prefix}/etc'
 sharedstatedir='${prefix}/com'
 localstatedir='${prefix}/var'
+runstatedir='${localstatedir}/run'
 includedir='${prefix}/include'
 oldincludedir='/usr/include'
 docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@@ -1186,6 +1188,15 @@
   | -silent | --silent | --silen | --sile | --sil)
     silent=yes ;;
 
+  -runstatedir | --runstatedir | --runstatedi | --runstated \
+  | --runstate | --runstat | --runsta | --runst | --runs \
+  | --run | --ru | --r)
+    ac_prev=runstatedir ;;
+  -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
+  | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
+  | --run=* | --ru=* | --r=*)
+    runstatedir=$ac_optarg ;;
+
   -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
     ac_prev=sbindir ;;
   -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@@ -1323,7 +1334,7 @@
 for ac_var in	exec_prefix prefix bindir sbindir libexecdir datarootdir \
 		datadir sysconfdir sharedstatedir localstatedir includedir \
 		oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
-		libdir localedir mandir
+		libdir localedir mandir runstatedir
 do
   eval ac_val=\$$ac_var
   # Remove trailing slashes.
@@ -1436,7 +1447,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures libnbd 1.6.1 to adapt to many kinds of systems.
+\`configure' configures libnbd 1.6.2 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1476,6 +1487,7 @@
   --sysconfdir=DIR        read-only single-machine data [PREFIX/etc]
   --sharedstatedir=DIR    modifiable architecture-independent data [PREFIX/com]
   --localstatedir=DIR     modifiable single-machine data [PREFIX/var]
+  --runstatedir=DIR       modifiable per-process data [LOCALSTATEDIR/run]
   --libdir=DIR            object code libraries [EPREFIX/lib]
   --includedir=DIR        C header files [PREFIX/include]
   --oldincludedir=DIR     C header files for non-gcc [/usr/include]
@@ -1506,7 +1518,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of libnbd 1.6.1:";;
+     short | recursive ) echo "Configuration of libnbd 1.6.2:";;
    esac
   cat <<\_ACEOF
 
@@ -1657,7 +1669,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-libnbd configure 1.6.1
+libnbd configure 1.6.2
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2189,7 +2201,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by libnbd $as_me 1.6.1, which was
+It was created by libnbd $as_me 1.6.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -4626,7 +4638,7 @@
 
 # Define the identity of the package.
  PACKAGE='libnbd'
- VERSION='1.6.1'
+ VERSION='1.6.2'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -20813,7 +20825,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by libnbd $as_me 1.6.1, which was
+This file was extended by libnbd $as_me 1.6.2, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -20879,7 +20891,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-libnbd config.status 1.6.1
+libnbd config.status 1.6.2
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff -Nru libnbd-1.6.1/configure.ac libnbd-1.6.2/configure.ac
--- libnbd-1.6.1/configure.ac	2021-01-20 14:12:43.000000000 +0100
+++ libnbd-1.6.2/configure.ac	2021-03-02 22:35:15.000000000 +0100
@@ -15,7 +15,7 @@
 # License along with this library; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 
-AC_INIT([libnbd],[1.6.1])
+AC_INIT([libnbd],[1.6.2])
 
 AC_CONFIG_MACRO_DIR([m4])
 m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],[],
diff -Nru libnbd-1.6.1/copy/Makefile.in libnbd-1.6.2/copy/Makefile.in
--- libnbd-1.6.1/copy/Makefile.in	2021-01-20 14:12:55.000000000 +0100
+++ libnbd-1.6.2/copy/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -663,6 +663,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/copy/main.c libnbd-1.6.2/copy/main.c
--- libnbd-1.6.1/copy/main.c	2020-12-05 17:32:32.000000000 +0100
+++ libnbd-1.6.2/copy/main.c	2021-03-02 22:32:34.000000000 +0100
@@ -392,12 +392,18 @@
       !nbd_can_meta_context (src.u.nbd.handles.ptr[0], "base:allocation"))
     extents = false;
 
+  /* Always set the progress bar to 0% at the start of the copy. */
+  progress_bar (0, 1);
+
   /* Start copying. */
   if (synchronous)
     synch_copying ();
   else
     multi_thread_copying ();
 
+  /* Always set the progress bar to 100% at the end of the copy. */
+  progress_bar (1, 1);
+
   /* Shut down the source side. */
   src.ops->close (&src);
 
diff -Nru libnbd-1.6.1/copy/multi-thread-copying.c libnbd-1.6.2/copy/multi-thread-copying.c
--- libnbd-1.6.1/copy/multi-thread-copying.c	2021-01-20 14:12:05.000000000 +0100
+++ libnbd-1.6.2/copy/multi-thread-copying.c	2021-03-02 22:33:05.000000000 +0100
@@ -122,9 +122,6 @@
     }
   }
 
-  /* Set the progress bar to 100/100 to indicate we're done. */
-  progress_bar (1, 1);
-
   free (workers);
 }
 
diff -Nru libnbd-1.6.1/copy/nbd-ops.c libnbd-1.6.2/copy/nbd-ops.c
--- libnbd-1.6.1/copy/nbd-ops.c	2020-12-05 17:32:32.000000000 +0100
+++ libnbd-1.6.2/copy/nbd-ops.c	2021-03-02 22:33:31.000000000 +0100
@@ -268,6 +268,7 @@
   ret->size = 0;
 
   while (count > 0) {
+    const uint64_t old_offset = offset;
     size_t i;
 
     exts.size = 0;
@@ -283,28 +284,11 @@
       exit (EXIT_FAILURE);
     }
 
-    /* The server should always make progress. */
-    if (exts.size == 0) {
-      fprintf (stderr, "%s: NBD server is broken: it is not returning extent information.\nTry nbdcopy --no-extents as a workaround.\n",
-               rw->name);
-      exit (EXIT_FAILURE);
-    }
-
-    /* Copy the extents returned into the final list (ret).  This is
-     * complicated because the extents returned by the server may
-     * begin earlier and begin or end later than the requested size.
-     */
+    /* Copy the extents returned into the final list (ret). */
     for (i = 0; i < exts.size; ++i) {
       uint64_t d;
 
-      if (exts.ptr[i].offset + exts.ptr[i].length <= offset)
-        continue;
-      if (exts.ptr[i].offset < offset) {
-        d = offset - exts.ptr[i].offset;
-        exts.ptr[i].offset += d;
-        exts.ptr[i].length -= d;
-        assert (exts.ptr[i].offset == offset);
-      }
+      assert (exts.ptr[i].offset == offset);
       if (exts.ptr[i].offset + exts.ptr[i].length > offset + count) {
         d = exts.ptr[i].offset + exts.ptr[i].length - offset - count;
         exts.ptr[i].length -= d;
@@ -320,6 +304,13 @@
       offset += exts.ptr[i].length;
       count -= exts.ptr[i].length;
     }
+
+    /* The server should always make progress. */
+    if (offset == old_offset) {
+      fprintf (stderr, "%s: NBD server is broken: it is not returning extent information.\nTry nbdcopy --no-extents as a workaround.\n",
+               rw->name);
+      exit (EXIT_FAILURE);
+    }
   }
 
   free (exts.ptr);
diff -Nru libnbd-1.6.1/copy/nbdcopy.pod libnbd-1.6.2/copy/nbdcopy.pod
--- libnbd-1.6.1/copy/nbdcopy.pod	2021-01-20 14:12:18.000000000 +0100
+++ libnbd-1.6.2/copy/nbdcopy.pod	2021-03-02 22:33:24.000000000 +0100
@@ -83,7 +83,7 @@
 
 Normally nbdcopy tries to create sparse output (with holes) if the
 destination supports that.  It does this in two ways: either using
-extent informtation from the source to copy holes (see
+extent information from the source to copy holes (see
 I<--no-extents>), or by detecting runs of zeroes (see I<-S>).  If you
 use I<--allocated> then nbdcopy creates a fully allocated, non-sparse
 output on the destination.
diff -Nru libnbd-1.6.1/copy/progress.c libnbd-1.6.2/copy/progress.c
--- libnbd-1.6.1/copy/progress.c	2020-12-05 16:26:34.000000000 +0100
+++ libnbd-1.6.2/copy/progress.c	2021-03-02 22:30:57.000000000 +0100
@@ -35,8 +35,15 @@
 static void
 do_progress_bar (off_t pos, int64_t size)
 {
-  static const char *spinner[] = { "◐", "◓", "◑", "◒" };
   static int tty = -1;
+
+  /* Note the spinner is covered with the cursor which usually makes
+   * it appear inverse video.
+   */
+  static const char *spinner[] = { "▝", "▐", "▗", "▃", "▖", "▍", "▘", "▀" };
+  static const char *spinner_100 = "█";
+  static int spinpos = 0;
+
   double frac = (double) pos / size;
   char msg[80];
   size_t n, i;
@@ -50,14 +57,18 @@
   if (frac < 0) frac = 0; else if (frac > 1) frac = 1;
 
   if (frac == 1) {
-    snprintf (msg, sizeof msg, "● 100%% [****************************************]\n");
+    snprintf (msg, sizeof msg,
+              "%s 100%% [****************************************]\n",
+              spinner_100);
     progress = false; /* Don't print any more progress bar messages. */
   } else {
-    snprintf (msg, sizeof msg, "%s %3d%% [----------------------------------------]\r",
-              spinner[(int)(4*frac)], (int)(100*frac));
+    snprintf (msg, sizeof msg,
+              "%s %3d%% [----------------------------------------]\r",
+              spinner[spinpos], (int)(100*frac));
     n = strcspn (msg, "-");
     for (i = 0; i < 40*frac; ++i)
       msg[n+i] = '*';
+    spinpos = (spinpos+1) % (sizeof spinner / sizeof spinner[0]);
   }
 
 #pragma GCC diagnostic push
diff -Nru libnbd-1.6.1/copy/synch-copying.c libnbd-1.6.2/copy/synch-copying.c
--- libnbd-1.6.1/copy/synch-copying.c	2020-12-05 16:26:34.000000000 +0100
+++ libnbd-1.6.2/copy/synch-copying.c	2021-03-02 22:33:05.000000000 +0100
@@ -99,7 +99,4 @@
       free (exts.ptr);
     } /* while */
   }
-
-  /* Always set the progress bar to 100% at the end of the copy. */
-  progress_bar (1, 1);
 }
diff -Nru libnbd-1.6.1/debian/changelog libnbd-1.6.2/debian/changelog
--- libnbd-1.6.1/debian/changelog	2021-02-10 00:20:57.000000000 +0100
+++ libnbd-1.6.2/debian/changelog	2021-03-03 09:36:41.000000000 +0100
@@ -1,3 +1,9 @@
+libnbd (1.6.2-1) unstable; urgency=medium
+
+  * New upstream version 1.6.2
+
+ -- Hilko Bengen <bengen@debian.org>  Wed, 03 Mar 2021 09:36:41 +0100
+
 libnbd (1.6.1-1) unstable; urgency=medium
 
   * New upstream version 1.6.1
diff -Nru libnbd-1.6.1/docs/Makefile.in libnbd-1.6.2/docs/Makefile.in
--- libnbd-1.6.1/docs/Makefile.in	2021-01-20 14:12:55.000000000 +0100
+++ libnbd-1.6.2/docs/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -388,6 +388,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/docs/libnbd.pod libnbd-1.6.2/docs/libnbd.pod
--- libnbd-1.6.1/docs/libnbd.pod	2020-12-12 23:21:56.000000000 +0100
+++ libnbd-1.6.2/docs/libnbd.pod	2021-03-02 22:31:24.000000000 +0100
@@ -402,8 +402,7 @@
 
 libnbd supports the
 L<NBD URI specification|https://github.com/NetworkBlockDevice/nbd/blob/master/doc/uri.md>.
-The URIs that libnbd currently supports is documented in
-L<nbd_connect_uri(3)>.
+The format of URIs is documented in L<nbd_connect_uri(3)>.
 
 You can connect to a URI as in these examples (using the high level
 API):
@@ -869,6 +868,11 @@
 
  cc prog.c -o prog `pkg-config libnbd --cflags --libs`
 
+To compile an external project against a built copy of the libnbd
+source tree which hasn't been installed, see the F<./run> script.
+
+=head2 Autoconf projects
+
 External projects which use autoconf and need to check if libnbd is
 installed should use the C<PKG_CHECK_MODULES> macro in F<configure.ac>
 like this:
@@ -878,6 +882,8 @@
 This will define C<@LIBNBD_CFLAGS@> and C<@LIBNBD_LIBS@> which you
 will need to add to your F<Makefile.am>.
 
+=head2 CMake projects
+
 For CMake projects use:
 
  find_package(PkgConfig REQUIRED)
@@ -886,8 +892,12 @@
  target_include_directories(prog PUBLIC ${LIBNBD_INCLUDE_DIRS})
  target_compile_options(prog PUBLIC ${LIBNBD_CFLAGS_OTHER})
 
-To compile an external project against a built copy of the libnbd
-source tree which hasn't been installed, see the F<./run> script.
+=head2 Meson projects
+
+For meson projects use:
+
+ nbd_dep = dependency('libnbd')
+ executable('prog', 'prog.c', dependencies : [nbd_dep])
 
 =head1 ENVIRONMENT VARIABLES
 
diff -Nru libnbd-1.6.1/examples/Makefile.in libnbd-1.6.2/examples/Makefile.in
--- libnbd-1.6.1/examples/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/examples/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -555,6 +555,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/fuse/Makefile.in libnbd-1.6.2/fuse/Makefile.in
--- libnbd-1.6.1/fuse/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/fuse/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -629,6 +629,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/fuzzing/Makefile.in libnbd-1.6.2/fuzzing/Makefile.in
--- libnbd-1.6.1/fuzzing/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/fuzzing/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -416,6 +416,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/generator/Makefile.in libnbd-1.6.2/generator/Makefile.in
--- libnbd-1.6.1/generator/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/generator/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -346,6 +346,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/generator/states-connect.c libnbd-1.6.2/generator/states-connect.c
--- libnbd-1.6.1/generator/states-connect.c	2020-11-28 21:25:58.000000000 +0100
+++ libnbd-1.6.2/generator/states-connect.c	2021-03-02 22:31:33.000000000 +0100
@@ -47,11 +47,12 @@
 
 STATE_MACHINE {
  CONNECT.START:
-  int fd;
+  sa_family_t family;
+  int fd, r;
 
   assert (!h->sock);
-  fd = socket (h->connaddr.ss_family,
-               SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
+  family = h->connaddr.ss_family;
+  fd = socket (family, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
   if (fd == -1) {
     SET_NEXT_STATE (%.DEAD);
     set_error (errno, "socket");
@@ -65,14 +66,28 @@
 
   disable_nagle (fd);
 
-  if (connect (fd, (struct sockaddr *) &h->connaddr,
-               h->connaddrlen) == -1) {
-    if (errno != EINPROGRESS) {
-      SET_NEXT_STATE (%.DEAD);
-      set_error (errno, "connect");
-      return 0;
-    }
+  r = connect (fd, (struct sockaddr *) &h->connaddr, h->connaddrlen);
+  if (r == 0 || (r == -1 && errno == EINPROGRESS))
+    return 0;
+  assert (r == -1);
+#ifdef __linux__
+  if (errno == EAGAIN && family == AF_UNIX) {
+    /* This can happen on Linux when connecting to a Unix domain
+     * socket, if the server's backlog is full.  Unfortunately there
+     * is nothing good we can do on the client side when this happens
+     * since any solution would involve sleeping or busy-waiting.  The
+     * only solution is on the server side, increasing the backlog.
+     * But at least improve the error message.
+     * https://bugzilla.redhat.com/1925045
+     */
+    SET_NEXT_STATE (%.DEAD);
+    set_error (errno, "connect: server backlog overflowed, "
+               "see https://bugzilla.redhat.com/1925045";);
+    return 0;
   }
+#endif
+  SET_NEXT_STATE (%.DEAD);
+  set_error (errno, "connect");
   return 0;
 
  CONNECT.CONNECTING:
diff -Nru libnbd-1.6.1/golang/Makefile.in libnbd-1.6.2/golang/Makefile.in
--- libnbd-1.6.1/golang/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/golang/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -558,6 +558,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/golang/examples/Makefile.in libnbd-1.6.2/golang/examples/Makefile.in
--- libnbd-1.6.1/golang/examples/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/golang/examples/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -348,6 +348,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/include/Makefile.in libnbd-1.6.2/include/Makefile.in
--- libnbd-1.6.1/include/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/include/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -395,6 +395,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/info/Makefile.in libnbd-1.6.2/info/Makefile.in
--- libnbd-1.6.1/info/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/info/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -633,6 +633,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/info/nbdinfo.c libnbd-1.6.2/info/nbdinfo.c
--- libnbd-1.6.1/info/nbdinfo.c	2020-11-28 21:25:58.000000000 +0100
+++ libnbd-1.6.2/info/nbdinfo.c	2021-03-02 22:34:33.000000000 +0100
@@ -1,5 +1,5 @@
 /* NBD client library in userspace
- * Copyright (C) 2020 Red Hat Inc.
+ * Copyright (C) 2020-2021 Red Hat Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -416,13 +416,16 @@
 
   /* Collect the metadata we are going to display. If opt_info works,
    * great; if not (such as for legacy newstyle), we have to go all
-   * the way with opt_go.
+   * the way with opt_go.  If we fail to connect (such as a server
+   * advertising something it later refuses to serve), return rather
+   * than exit, to allow output on the rest of the list.
    */
   if (nbd_aio_is_negotiating (nbd) &&
       nbd_opt_info (nbd) == -1 &&
       nbd_opt_go (nbd) == -1) {
-    fprintf (stderr, "%s: %s\n", progname, nbd_get_error ());
-    exit (EXIT_FAILURE);
+    fprintf (stderr, "%s: %s: %s\n", progname, nbd_get_export_name (nbd),
+             nbd_get_error ());
+    return;
   }
   size = nbd_get_size (nbd);
   if (size == -1) {
diff -Nru libnbd-1.6.1/interop/Makefile.in libnbd-1.6.2/interop/Makefile.in
--- libnbd-1.6.1/interop/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/interop/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -928,6 +928,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/lib/Makefile.in libnbd-1.6.2/lib/Makefile.in
--- libnbd-1.6.1/lib/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/lib/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -456,6 +456,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/lib/opt.c libnbd-1.6.2/lib/opt.c
--- libnbd-1.6.1/lib/opt.c	2020-11-28 21:25:58.000000000 +0100
+++ libnbd-1.6.2/lib/opt.c	2021-03-02 22:34:45.000000000 +0100
@@ -1,5 +1,5 @@
 /* NBD client library in userspace
- * Copyright (C) 2020 Red Hat Inc.
+ * Copyright (C) 2020-2021 Red Hat Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -83,7 +83,8 @@
 
   r = wait_for_option (h);
   if (r == 0 && err) {
-    assert (nbd_internal_is_state_negotiating (get_next_state (h)));
+    assert (nbd_internal_is_state_negotiating (get_next_state (h)) ||
+            nbd_internal_is_state_dead (get_next_state (h)));
     set_error (err, "server replied with error to opt_go request");
     return -1;
   }
@@ -105,7 +106,8 @@
 
   r = wait_for_option (h);
   if (r == 0 && err) {
-    assert (nbd_internal_is_state_negotiating (get_next_state (h)));
+    assert (nbd_internal_is_state_negotiating (get_next_state (h)) ||
+            nbd_internal_is_state_dead (get_next_state (h)));
     set_error (err, "server replied with error to opt_info request");
     return -1;
   }
diff -Nru libnbd-1.6.1/lib/states.c libnbd-1.6.2/lib/states.c
--- libnbd-1.6.1/lib/states.c	2021-01-20 14:13:27.000000000 +0100
+++ libnbd-1.6.2/lib/states.c	2021-03-02 22:36:05.000000000 +0100
@@ -799,11 +799,12 @@
 {
 #line 49 "generator/states-connect.c"
 
-  int fd;
+  sa_family_t family;
+  int fd, r;
 
   assert (!h->sock);
-  fd = socket (h->connaddr.ss_family,
-               SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
+  family = h->connaddr.ss_family;
+  fd = socket (family, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0);
   if (fd == -1) {
     SET_NEXT_STATE (STATE_DEAD);
     set_error (errno, "socket");
@@ -817,14 +818,28 @@
 
   disable_nagle (fd);
 
-  if (connect (fd, (struct sockaddr *) &h->connaddr,
-               h->connaddrlen) == -1) {
-    if (errno != EINPROGRESS) {
-      SET_NEXT_STATE (STATE_DEAD);
-      set_error (errno, "connect");
-      return 0;
-    }
+  r = connect (fd, (struct sockaddr *) &h->connaddr, h->connaddrlen);
+  if (r == 0 || (r == -1 && errno == EINPROGRESS))
+    return 0;
+  assert (r == -1);
+#ifdef __linux__
+  if (errno == EAGAIN && family == AF_UNIX) {
+    /* This can happen on Linux when connecting to a Unix domain
+     * socket, if the server's backlog is full.  Unfortunately there
+     * is nothing good we can do on the client side when this happens
+     * since any solution would involve sleeping or busy-waiting.  The
+     * only solution is on the server side, increasing the backlog.
+     * But at least improve the error message.
+     * https://bugzilla.redhat.com/1925045
+     */
+    SET_NEXT_STATE (STATE_DEAD);
+    set_error (errno, "connect: server backlog overflowed, "
+               "see https://bugzilla.redhat.com/1925045";);
+    return 0;
   }
+#endif
+  SET_NEXT_STATE (STATE_DEAD);
+  set_error (errno, "connect");
   return 0;
 
 }
@@ -851,7 +866,7 @@
              enum state *next_state,
              bool *blocked)
 {
-#line 78 "generator/states-connect.c"
+#line 93 "generator/states-connect.c"
 
   int status;
   socklen_t len = sizeof status;
@@ -897,7 +912,7 @@
              enum state *next_state,
              bool *blocked)
 {
-#line 99 "generator/states-connect.c"
+#line 114 "generator/states-connect.c"
 
   int r;
 
@@ -957,7 +972,7 @@
              enum state *next_state,
              bool *blocked)
 {
-#line 134 "generator/states-connect.c"
+#line 149 "generator/states-connect.c"
 
   int fd;
 
@@ -1025,7 +1040,7 @@
              enum state *next_state,
              bool *blocked)
 {
-#line 177 "generator/states-connect.c"
+#line 192 "generator/states-connect.c"
 
   int status;
   socklen_t len = sizeof status;
@@ -1070,7 +1085,7 @@
              enum state *next_state,
              bool *blocked)
 {
-#line 197 "generator/states-connect.c"
+#line 212 "generator/states-connect.c"
 
   if (h->sock) {
     h->sock->ops->close (h->sock);
@@ -1105,7 +1120,7 @@
              enum state *next_state,
              bool *blocked)
 {
-#line 207 "generator/states-connect.c"
+#line 222 "generator/states-connect.c"
 
   int sv[2];
   pid_t pid;
diff -Nru libnbd-1.6.1/ocaml/Makefile.in libnbd-1.6.2/ocaml/Makefile.in
--- libnbd-1.6.1/ocaml/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/ocaml/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -469,6 +469,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/ocaml/examples/Makefile.in libnbd-1.6.2/ocaml/examples/Makefile.in
--- libnbd-1.6.1/ocaml/examples/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/ocaml/examples/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -349,6 +349,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/ocaml/tests/Makefile.in libnbd-1.6.2/ocaml/tests/Makefile.in
--- libnbd-1.6.1/ocaml/tests/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/ocaml/tests/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -598,6 +598,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/python/Makefile.in libnbd-1.6.2/python/Makefile.in
--- libnbd-1.6.1/python/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/python/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -622,6 +622,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/sh/Makefile.in libnbd-1.6.2/sh/Makefile.in
--- libnbd-1.6.1/sh/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/sh/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -571,6 +571,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/tests/Makefile.in libnbd-1.6.2/tests/Makefile.in
--- libnbd-1.6.1/tests/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/tests/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -1474,6 +1474,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@
diff -Nru libnbd-1.6.1/valgrind/Makefile.in libnbd-1.6.2/valgrind/Makefile.in
--- libnbd-1.6.1/valgrind/Makefile.in	2021-01-20 14:12:56.000000000 +0100
+++ libnbd-1.6.2/valgrind/Makefile.in	2021-03-02 22:35:29.000000000 +0100
@@ -348,6 +348,7 @@
 prefix = @prefix@
 program_transform_name = @program_transform_name@
 psdir = @psdir@
+runstatedir = @runstatedir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 srcdir = @srcdir@

--- End Message ---
--- Begin Message ---
Hi,

On Mon, Apr 05, 2021 at 02:04:01PM +0200, Salvatore Bonaccorso wrote:
> > > > [ Other info ]
> > > > It should propably have an explicit acknowledgment for the unblock
> > > > from Hilko.
> > > 
> > > Please remove the moreinfo tag once ACKed by Hilko.
> > 
> > Any input on this? Or was the version not aimed for bullseye?
> 
> Friendly ping. Di you got my email?
> 
> Now there was a new upstream version uploaded to unstable, so this is
> going to be a bigger diff.

As the maintainer didn't reply to this bug and uploaded the new upstream, I
don't see any option other than to close this bug.

Ivo

--- End Message ---

Reply to: