Hello community, here is the log from the commit of package nbd for openSUSE:Factory checked in at 2019-06-12 13:04:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nbd (Old) and /work/SRC/openSUSE:Factory/.nbd.new.4811 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nbd" Wed Jun 12 13:04:23 2019 rev:50 rq:706327 version:3.19 Changes: -------- --- /work/SRC/openSUSE:Factory/nbd/nbd.changes 2019-02-04 21:18:52.931703227 +0100 +++ /work/SRC/openSUSE:Factory/.nbd.new.4811/nbd.changes 2019-06-12 13:04:36.689226130 +0200 @@ -1,0 +2,12 @@ +Wed May 29 13:43:41 UTC 2019 - Martin Pluskal <mplus...@suse.com> + +- Update to version 3.19.0: + * Better error messages in case of unexpected disconnects + * Better compatibility with non-bash sh implementations + (for configure.sh) + * Fix for a segfault in NBD_OPT_INFO handling + * The ability to specify whether to listen on both TCP and Unix + domain sockets, rather than to always do so + * Various minor editorial and spelling fixes in the documentation. + +------------------------------------------------------------------- Old: ---- nbd-3.18.tar.xz New: ---- nbd-3.19.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nbd.spec ++++++ --- /var/tmp/diff_new_pack.o450db/_old 2019-06-12 13:04:37.337225858 +0200 +++ /var/tmp/diff_new_pack.o450db/_new 2019-06-12 13:04:37.341225857 +0200 @@ -25,7 +25,7 @@ %define use_firewalld 0 %endif Name: nbd -Version: 3.18 +Version: 3.19 Release: 0 Summary: Network Block Device Server and Client Utilities License: GPL-2.0-or-later @@ -44,6 +44,7 @@ BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(glib-2.0) >= 2.26.0 BuildRequires: pkgconfig(gnutls) +BuildRequires: pkgconfig(libnl-3.0) Requires(pre): %fillup_prereq Requires(pre): coreutils %systemd_requires ++++++ 0001_fix_setgroup.patch ++++++ --- /var/tmp/diff_new_pack.o450db/_old 2019-06-12 13:04:37.365225847 +0200 +++ /var/tmp/diff_new_pack.o450db/_new 2019-06-12 13:04:37.365225847 +0200 @@ -16,11 +16,11 @@ nbd-server.c | 1 + 1 file changed, 1 insertion(+) -Index: nbd-3.18/nbd-server.c +Index: nbd-3.19/nbd-server.c =================================================================== ---- nbd-3.18.orig/nbd-server.c -+++ nbd-3.18/nbd-server.c -@@ -3471,6 +3471,7 @@ void dousers(const gchar *const username +--- nbd-3.19.orig/nbd-server.c ++++ nbd-3.19/nbd-server.c +@@ -3476,6 +3476,7 @@ void dousers(const gchar *const username err(str); } setgroups(0, NULL); ++++++ nbd-3.18.tar.xz -> nbd-3.19.tar.xz ++++++ ++++ 1779 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/README.md new/nbd-3.19/README.md --- old/nbd-3.18/README.md 2018-03-16 19:22:16.000000000 +0100 +++ new/nbd-3.19/README.md 2018-11-23 12:27:50.000000000 +0100 @@ -19,7 +19,7 @@ If you want to send a patch, please do not open a pull request; instead, send it to the -[mailinglist](https://lists.sourceforge.net/lists/listinfo/nbd-general) +[mailinglist](https://lists.debian.org/nbd) Using NBD --------- @@ -108,7 +108,7 @@ If you're packaging NBD for a different operating system that isn't in the above list, I'd like to know about it. -For questions, please use the `nbd-gene...@lists.sourceforge.net` mailinglist. +For questions, please use the [n...@other.debian.org](mailto:n...@other.debian.org) mailinglist. Badges ====== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/autogen.sh new/nbd-3.19/autogen.sh --- old/nbd-3.18/autogen.sh 2017-06-05 16:18:09.000000000 +0200 +++ new/nbd-3.19/autogen.sh 2019-01-30 16:25:41.000000000 +0100 @@ -1,5 +1,5 @@ #!/bin/sh set -ex -make -C man -f Makefile.am nbd-server.1.sh.in nbd-server.5.sh.in nbd-client.8.sh.in nbd-trdump.1.sh.in nbdtab.5.sh.in +make -C man -f mans.mk nbd-server.1.sh.in nbd-server.5.sh.in nbd-client.8.sh.in nbd-trdump.1.sh.in nbdtab.5.sh.in make -C systemd -f Makefile.am n...@.service.sh.in exec autoreconf -f -i diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/cliserv.c new/nbd-3.19/cliserv.c --- old/nbd-3.18/cliserv.c 2018-03-16 19:22:16.000000000 +0100 +++ new/nbd-3.19/cliserv.c 2018-11-23 12:27:50.000000000 +0100 @@ -124,6 +124,7 @@ return -1; } } else { + errno = ECONNRESET; return -1; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/configure.ac new/nbd-3.19/configure.ac --- old/nbd-3.18/configure.ac 2018-08-18 16:29:57.000000000 +0200 +++ new/nbd-3.19/configure.ac 2019-01-30 16:24:10.000000000 +0100 @@ -319,8 +319,8 @@ PKG_CHECK_MODULES(LIBNL3, libnl-genl-3.0 >= 3.1, [HAVE_NETLINK=1 AC_DEFINE(HAVE_NETLINK, 1, [Define to 1 if we have netlink support]) - CFLAGS+=" $LIBNL3_CFLAGS" - LIBS+=" $LIBNL3_LIBS"], + CFLAGS="$CFLAGS $LIBNL3_CFLAGS" + LIBS="$LIBS $LIBNL3_LIBS"], [if test "x$with_libnl" = "xyes"; then AC_MSG_ERROR([--with-libnl given but cannot find libnl]) else @@ -333,6 +333,19 @@ AC_DEFINE(HAVE_NETLINK, 0, [Define to 1 if we have netlink support]) fi +AC_ARG_ENABLE([manpages], + AS_HELP_STRING([--disable-manpages], [Do not install man pages])) +AM_CONDITIONAL(MANPAGES, test "x$enablemanpages" != "xno") +AS_IF([test "x$enable_manpages" != "xno"], [ + AC_SUBST([MAN_CONFIG_FILES],["\ + man/nbd-client.8.sh \ + man/nbd-server.5.sh \ + man/nbd-server.1.sh \ + man/nbd-trdump.1.sh \ + man/nbdtab.5.sh \ + "]) + ]) + AC_HEADER_SYS_WAIT AC_TYPE_OFF_T AC_TYPE_PID_T @@ -351,11 +364,11 @@ tests/Makefile tests/code/Makefile tests/run/Makefile - man/nbd-client.8.sh - man/nbd-server.5.sh - man/nbd-server.1.sh - man/nbd-trdump.1.sh - man/nbdtab.5.sh + man/nbd-client.8.sh + man/nbd-server.5.sh + man/nbd-server.1.sh + man/nbd-trdump.1.sh + man/nbdtab.5.sh systemd/Makefile systemd/n...@.service.sh ]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/doc/proto.md new/nbd-3.19/doc/proto.md --- old/nbd-3.18/doc/proto.md 2018-08-18 16:29:57.000000000 +0200 +++ new/nbd-3.19/doc/proto.md 2018-11-23 12:27:50.000000000 +0100 @@ -1049,7 +1049,7 @@ connections to the given device. In particular, if this flag is present, then the effects of `NBD_CMD_FLUSH` and `NBD_CMD_FLAG_FUA` MUST be visible across all connections when the server sends its reply - to that command to the client. In the absense of this flag, clients + to that command to the client. In the absence of this flag, clients SHOULD NOT multiplex their commands over more than one connection to the export. - bit 9, `NBD_FLAG_SEND_RESIZE`: defined by the experimental `RESIZE` @@ -2157,12 +2157,12 @@ * The `RESIZE` [extension](https://github.com/NetworkBlockDevice/nbd/blob/extension-resize/doc/proto.md). Implementors of these extensions are strongly suggested to contact the -[mailinglist](mailto:nbd-gene...@lists.sourceforge.net) in order to help +[mailinglist](mailto:n...@other.debian.org) in order to help fine-tune the specifications before committing to a particular implementation. Those proposing further extensions should also contact the -[mailinglist](mailto:nbd-gene...@lists.sourceforge.net). It is +[mailinglist](mailto:n...@other.debian.org). It is possible to reserve command codes etc. within this document for such proposed extensions. Aside from that, extensions are written as branches which can be merged into master if and diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/man/Makefile.am new/nbd-3.19/man/Makefile.am --- old/nbd-3.18/man/Makefile.am 2017-06-05 16:18:09.000000000 +0200 +++ new/nbd-3.19/man/Makefile.am 2019-01-30 16:25:29.000000000 +0100 @@ -1,46 +1,9 @@ +if MANPAGES man_MANS = nbd-server.1 nbd-server.5 nbd-client.8 nbd-trdump.1 nbdtab.5 CLEANFILES = manpage.links manpage.refs DISTCLEANFILES = nbd-server.1 nbd-client.8 nbd-server.5 nbd-trdump.1 nbdtab.5 MAINTAINERCLEANFILES = nbd-server.1.sh.in nbd-client.8.sh.in nbd-server.5.sh.in nbd-trdump.1.sh.in nbdtab.5.sh.in EXTRA_DIST = nbd-server.1.in.sgml nbd-client.8.in.sgml nbd-server.5.in.sgml nbd-trdump.1.in.sgml nbdtab.5.in.sgml nbd-server.1.sh.in nbd-server.5.sh.in nbd-client.8.sh.in nbd-trdump.1.sh.in nbdtab.5.sh.in sh.tmpl -nbd-server.1: nbd-server.1.sh - sh nbd-server.1.sh > nbd-server.1 -nbd-server.5: nbd-server.5.sh - sh nbd-server.5.sh > nbd-server.5 -nbd-client.8: nbd-client.8.sh - sh nbd-client.8.sh > nbd-client.8 -nbd-trdump.1: nbd-trdump.1.sh - sh nbd-trdump.1.sh > nbd-trdump.1 -nbdtab.5: nbdtab.5.sh - sh nbdtab.5.sh > nbdtab.5 -nbd-server.1.sh.in: nbd-server.1.in.sgml sh.tmpl - LC_ALL=C docbook2man nbd-server.1.in.sgml - cat sh.tmpl > nbd-server.1.sh.in - cat NBD-SERVER.1 >> nbd-server.1.sh.in - echo "EOF" >> nbd-server.1.sh.in - rm NBD-SERVER.1 -nbd-client.8.sh.in: nbd-client.8.in.sgml sh.tmpl - LC_ALL=C docbook2man nbd-client.8.in.sgml - cat sh.tmpl > nbd-client.8.sh.in - cat NBD-CLIENT.8 >> nbd-client.8.sh.in - echo "EOF" >> nbd-client.8.sh.in - rm NBD-CLIENT.8 -nbd-server.5.sh.in: nbd-server.5.in.sgml sh.tmpl - LC_ALL=C docbook2man nbd-server.5.in.sgml - cat sh.tmpl > nbd-server.5.sh.in - cat NBD-SERVER.5 >> nbd-server.5.sh.in - echo "EOF" >> nbd-server.5.sh.in - rm NBD-SERVER.5 -nbd-trdump.1.sh.in: nbd-trdump.1.in.sgml sh.tmpl - LC_ALL=C docbook2man nbd-trdump.1.in.sgml - cat sh.tmpl > nbd-trdump.1.sh.in - cat NBD-TRDUMP.1 >> nbd-trdump.1.sh.in - echo "EOF" >> nbd-trdump.1.sh.in - rm NBD-TRDUMP.1 -nbdtab.5.sh.in: nbdtab.5.in.sgml sh.tmpl - LC_ALL=C docbook2man nbdtab.5.in.sgml - cat sh.tmpl > nbdtab.5.sh.in - cat NBDTAB.5 >> nbdtab.5.sh.in - echo "EOF" >> nbdtab.5.sh.in - rm NBDTAB.5 +include $(srcdir)/mans.mk +endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/man/mans.mk new/nbd-3.19/man/mans.mk --- old/nbd-3.18/man/mans.mk 1970-01-01 01:00:00.000000000 +0100 +++ new/nbd-3.19/man/mans.mk 2019-01-30 16:25:29.000000000 +0100 @@ -0,0 +1,40 @@ +nbd-server.1: nbd-server.1.sh + sh nbd-server.1.sh > nbd-server.1 +nbd-server.5: nbd-server.5.sh + sh nbd-server.5.sh > nbd-server.5 +nbd-client.8: nbd-client.8.sh + sh nbd-client.8.sh > nbd-client.8 +nbd-trdump.1: nbd-trdump.1.sh + sh nbd-trdump.1.sh > nbd-trdump.1 +nbdtab.5: nbdtab.5.sh + sh nbdtab.5.sh > nbdtab.5 +nbd-server.1.sh.in: nbd-server.1.in.sgml sh.tmpl + LC_ALL=C docbook2man nbd-server.1.in.sgml + cat sh.tmpl > nbd-server.1.sh.in + cat NBD-SERVER.1 >> nbd-server.1.sh.in + echo "EOF" >> nbd-server.1.sh.in + rm NBD-SERVER.1 +nbd-client.8.sh.in: nbd-client.8.in.sgml sh.tmpl + LC_ALL=C docbook2man nbd-client.8.in.sgml + cat sh.tmpl > nbd-client.8.sh.in + cat NBD-CLIENT.8 >> nbd-client.8.sh.in + echo "EOF" >> nbd-client.8.sh.in + rm NBD-CLIENT.8 +nbd-server.5.sh.in: nbd-server.5.in.sgml sh.tmpl + LC_ALL=C docbook2man nbd-server.5.in.sgml + cat sh.tmpl > nbd-server.5.sh.in + cat NBD-SERVER.5 >> nbd-server.5.sh.in + echo "EOF" >> nbd-server.5.sh.in + rm NBD-SERVER.5 +nbd-trdump.1.sh.in: nbd-trdump.1.in.sgml sh.tmpl + LC_ALL=C docbook2man nbd-trdump.1.in.sgml + cat sh.tmpl > nbd-trdump.1.sh.in + cat NBD-TRDUMP.1 >> nbd-trdump.1.sh.in + echo "EOF" >> nbd-trdump.1.sh.in + rm NBD-TRDUMP.1 +nbdtab.5.sh.in: nbdtab.5.in.sgml sh.tmpl + LC_ALL=C docbook2man nbdtab.5.in.sgml + cat sh.tmpl > nbdtab.5.sh.in + cat NBDTAB.5 >> nbdtab.5.sh.in + echo "EOF" >> nbdtab.5.sh.in + rm NBDTAB.5 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/man/nbd-client.8.in.sgml new/nbd-3.19/man/nbd-client.8.in.sgml --- old/nbd-3.18/man/nbd-client.8.in.sgml 2018-08-18 16:29:57.000000000 +0200 +++ new/nbd-3.19/man/nbd-client.8.in.sgml 2018-11-23 16:41:56.000000000 +0100 @@ -358,21 +358,6 @@ </listitem> </varlistentry> <varlistentry> - <term><option>-netlink</option></term> - <term><option>-L</option></term> - <listitem> - <para> - Use the netlink interface to setup a new device. If no device is - specified then an empty one will be selected or a new one will be - created if there are no existing empty devices available. This - option does not leave the client waiting for the device to exit. - </para> - <para> - If this is used with disconnect then you must specify a device. - </para> - </listitem> - </varlistentry> - <varlistentry> <term><option>-unix</option></term> <term><option>-u</option></term> <listitem> @@ -384,47 +369,6 @@ </para> </listitem> </varlistentry> - </variablelist> - <refsect2> - <title>TLS support</title> - <para>Enabling any of the TLS-related options causes the client to - use the NBD_OPT_STARTTLS command to upgrade the connection to - TLS. Since negotiating TLS support from userspace for a kernel - socket would be very involved (if passing keys to kernel space - were even possible, which it isn't), the way this is implemented - is that the nbd-client process creates a socketpair, one side of - which it hands to the kernel, and the other side of which is - handed to an encrypting/decrypting proxy. This has the effect - that all communication will be encrypted before being sent over - the wire; however, doing so is not safe in combination with - swapping over an NBD device:</para> - <para> - In order to free memory by swapping, the kernel needs to be sure - that the write to the nbd device has finalized. For this, it - needs to be able to receive an NBD_CMD_WRITE reply which informs - it that the write has completed successfully and that the memory - may be released. Receiving data over the network, however, - requires that the kernel <emphasis>allocate</emphasis> memory - first, which is impossible if we're low on memory (a likely - situation when trying to swap). This is likely to cause a - deadlock when we're low on memory and there are high amounts of - network traffic.</para> - <para>To remedy this situation, the kernel sets the PF_MEMALLOC - option on the nbd socket; when low on memory, it will throw away - all packets except for those destined to a socket with that - option set, relying on the normal TCP retransmit system to - ensure that data is not lost. This avoids the deadlock described - above.</para> - <para>However, the PF_MEMALLOC option is set on the socket that is - connected to the nbd device, not the encrypted socket connected - to the encrypting/decrypting proxy. As such, when using TLS, the - PF_MEMALLOC option is not set on the socket that actually - receives data from the network, which means that the deadlock - reappears.</para> - <para>For this reason, if the <option>-swap</option> option is - used when TLS is in use, &dhpackage; will issue an appropriate - warning.</para> - <variablelist> <varlistentry> <term><option>-certfile <replaceable>file</replaceable></option></term> <term><option>-F</option></term> @@ -466,6 +410,45 @@ </listitem> </varlistentry> </variablelist> + <refsect2> + <title>TLS support</title> + <para>Enabling any of the TLS-related options causes the client to + use the NBD_OPT_STARTTLS command to upgrade the connection to + TLS. Since negotiating TLS support from userspace for a kernel + socket would be very involved (if passing keys to kernel space + were even possible, which it isn't), the way this is implemented + is that the nbd-client process creates a socketpair, one side of + which it hands to the kernel, and the other side of which is + handed to an encrypting/decrypting proxy. This has the effect + that all communication will be encrypted before being sent over + the wire; however, doing so is not safe in combination with + swapping over an NBD device:</para> + <para> + In order to free memory by swapping, the kernel needs to be sure + that the write to the nbd device has finalized. For this, it + needs to be able to receive an NBD_CMD_WRITE reply which informs + it that the write has completed successfully and that the memory + may be released. Receiving data over the network, however, + requires that the kernel <emphasis>allocate</emphasis> memory + first, which is impossible if we're low on memory (a likely + situation when trying to swap). This is likely to cause a + deadlock when we're low on memory and there are high amounts of + network traffic.</para> + <para>To remedy this situation, the kernel sets the PF_MEMALLOC + option on the nbd socket; when low on memory, it will throw away + all packets except for those destined to a socket with that + option set, relying on the normal TCP retransmit system to + ensure that data is not lost. This avoids the deadlock described + above.</para> + <para>However, the PF_MEMALLOC option is set on the socket that is + connected to the nbd device, not the encrypted socket connected + to the encrypting/decrypting proxy. As such, when using TLS, the + PF_MEMALLOC option is not set on the socket that actually + receives data from the network, which means that the deadlock + reappears.</para> + <para>For this reason, if the <option>-swap</option> option is + used when TLS is in use, &dhpackage; will issue an appropriate + warning.</para> </refsect2> </refsect1> <refsect1> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/man/nbd-client.8.sh.in new/nbd-3.19/man/nbd-client.8.sh.in --- old/nbd-3.18/man/nbd-client.8.sh.in 2018-08-18 16:37:39.000000000 +0200 +++ new/nbd-3.19/man/nbd-client.8.sh.in 2018-11-29 09:58:17.000000000 +0100 @@ -242,16 +242,6 @@ specified, nbd-client will ask for a "default" export, if one exists on the server. .TP -\fB-netlink\fR -.TP -\fB-L\fR -Use the netlink interface to setup a new device. If no device is -specified then an empty one will be selected or a new one will be -created if there are no existing empty devices available. This -option does not leave the client waiting for the device to exit. - -If this is used with disconnect then you must specify a device. -.TP \fB-unix\fR .TP \fB-u\fR @@ -259,6 +249,31 @@ \fIpath\fR, rather than to a server over a TCP socket. The server must be listening on the given socket. +.TP +\fB-certfile \fIfile\fB\fR +.TP +\fB-F\fR +Use the specified file as the client certificate for TLS +authentication to the server. +.TP +\fB-keyfile \fIfile\fB\fR +.TP +\fB-K\fR +Use the specified file as the private key for the client +cerificate. +.TP +\fB-cacertfile \fIfile\fB\fR +.TP +\fB-A\fR +Use the specified file as the CA certificate for TLS +authentication to the server. +.TP +\fB-tlshostname \fIhostname\fB\fR +.TP +\fB-H\fR +Use the specified hostname for the TLS context. If not +specified, the hostname used to connect to the server will +be used. .SS "TLS SUPPORT" .PP Enabling any of the TLS-related options causes the client to @@ -301,31 +316,6 @@ For this reason, if the \fB-swap\fR option is used when TLS is in use, nbd-client will issue an appropriate warning. -.TP -\fB-certfile \fIfile\fB\fR -.TP -\fB-F\fR -Use the specified file as the client certificate for TLS -authentication to the server. -.TP -\fB-keyfile \fIfile\fB\fR -.TP -\fB-K\fR -Use the specified file as the private key for the client -cerificate. -.TP -\fB-cacertfile \fIfile\fB\fR -.TP -\fB-A\fR -Use the specified file as the CA certificate for TLS -authentication to the server. -.TP -\fB-tlshostname \fIhostname\fB\fR -.TP -\fB-H\fR -Use the specified hostname for the TLS context. If not -specified, the hostname used to connect to the server will -be used. .SH "EXAMPLES" .PP Some examples of nbd-client usage: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/man/nbd-server.5.in.sgml new/nbd-3.19/man/nbd-server.5.in.sgml --- old/nbd-3.18/man/nbd-server.5.in.sgml 2018-03-16 19:22:16.000000000 +0100 +++ new/nbd-3.19/man/nbd-server.5.in.sgml 2019-01-30 16:31:20.000000000 +0100 @@ -350,7 +350,21 @@ <para> If specified, the server will listen on a UNIX domain socket with the specified name. Only newstyle negotiation is - supported on UNIX domain sockets. + supported on UNIX domain sockets. If a UNIX domain socket is, + then the server will not listen for TCP connections. + </para> + </listitem> + </varlistentry> + <varlistentry> + <term><option>duallisten</option></term> + <listitem> + <para> + Optional; boolean + </para> + <para> + If true, and <option>unixsock</option> is specified, the the + server will listen on both the configured UNIX domain socket + and any configured TCP or SDP socket. Defaults to false. </para> </listitem> </varlistentry> @@ -966,7 +980,7 @@ TLS is optional, unless <option>tlsonly</option> is set in the generic section. In order for TLS to work at all, the <option>keyfile</option> option must be specified in - the generic section.</para> + the generic section. </para> </listitem> </varlistentry> @@ -989,8 +1003,8 @@ outstanding writes into it. Once this operation finishes, the diff file will be removed, and the server will allow normal use of the export.</para> - </para>This allows the out-of-band live migration of an export - from one server to another. + <para>This allows the out-of-band live migration of an export + from one server to another.</para> <para>Note that this option cannot be combined with the copy-on-write option itself.</para> </listitem> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/man/nbd-server.5.sh.in new/nbd-3.19/man/nbd-server.5.sh.in --- old/nbd-3.18/man/nbd-server.5.sh.in 2018-04-04 12:46:23.000000000 +0200 +++ new/nbd-3.19/man/nbd-server.5.sh.in 2019-01-30 16:31:23.000000000 +0100 @@ -224,7 +224,15 @@ If specified, the server will listen on a UNIX domain socket with the specified name. Only newstyle negotiation is -supported on UNIX domain sockets. +supported on UNIX domain sockets. If a UNIX domain socket is, +then the server will not listen for TCP connections. +.TP +\fBduallisten\fR +Optional; boolean + +If true, and \fBunixsock\fR is specified, the the +server will listen on both the configured UNIX domain socket +and any configured TCP or SDP socket. Defaults to false. .TP \fBtlsprio\fR Optional; string; default NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2:%SERVER_PRECEDENCE @@ -718,6 +726,7 @@ outstanding writes into it. Once this operation finishes, the diff file will be removed, and the server will allow normal use of the export. + This allows the out-of-band live migration of an export from one server to another. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/man/nbdtab.5.in.sgml new/nbd-3.19/man/nbdtab.5.in.sgml --- old/nbd-3.18/man/nbdtab.5.in.sgml 2018-08-18 16:29:57.000000000 +0200 +++ new/nbd-3.19/man/nbdtab.5.in.sgml 2019-01-30 16:27:34.000000000 +0100 @@ -206,7 +206,7 @@ </varlistentry> <varlistentry> <term><option>tlshostname=<replaceable>TLS - hostname</replaceable></term> + hostname</replaceable></option></term> <listitem> <para>The hostname for TLS purposes; <option>-H</option></para> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/nbd-client.c new/nbd-3.19/nbd-client.c --- old/nbd-3.18/nbd-client.c 2018-08-18 16:29:57.000000000 +0200 +++ new/nbd-3.19/nbd-client.c 2019-01-30 16:24:10.000000000 +0100 @@ -910,7 +910,7 @@ #if HAVE_GNUTLS && !defined(NOTLS) fprintf(stderr, "All commands that connect to a host also take:\n\t[-F|-certfile certfile] [-K|-keyfile keyfile]\n\t[-A|-cacertfile cacertfile] [-H|-tlshostname hostname] [-x|-enable-tls]\n"); #endif - fprintf(stderr, "Default value for blocksize is 1024 (recommended for ethernet)\n"); + fprintf(stderr, "Default value for blocksize is 512\n"); fprintf(stderr, "Allowed values for blocksize are 512,1024,2048,4096\n"); /* will be checked in kernel :) */ fprintf(stderr, "Note, that kernel 2.4.2 and older ones do not work correctly with\n"); fprintf(stderr, "blocksizes other than 1024 without patches\n"); @@ -941,7 +941,7 @@ int main(int argc, char *argv[]) { char* port=NBD_DEFAULT_PORT; int sock, nbd; - int blocksize=1024; + int blocksize=512; char *hostname=NULL; char *nbddev=NULL; int swap=0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/nbd-server.c new/nbd-3.19/nbd-server.c --- old/nbd-3.18/nbd-server.c 2018-08-18 16:29:57.000000000 +0200 +++ new/nbd-3.19/nbd-server.c 2018-11-27 17:29:21.000000000 +0100 @@ -172,6 +172,7 @@ #define F_OLDSTYLE 1 /**< Allow oldstyle (port-based) exports */ #define F_LIST 2 /**< Allow clients to list the exports on a server */ #define F_NO_ZEROES 4 /**< Do not send zeros to client */ +#define F_DUAL_LISTEN 8 /**< Listen on both TCP and unix socket */ // also accepts F_FORCEDTLS (which is 16384) GHashTable *children; char pidfname[256]; /**< name of our PID file */ @@ -816,6 +817,7 @@ { "includedir", FALSE, PARAM_STRING, &cfdir, 0 }, { "allowlist", FALSE, PARAM_BOOL, &(genconftmp.flags), F_LIST }, { "unixsock", FALSE, PARAM_STRING, &(genconftmp.unixsock), 0 }, + { "duallisten", FALSE, PARAM_BOOL, &(genconftmp.flags), F_DUAL_LISTEN }, // Used to listen on both TCP and unix socket { "max_threads", FALSE, PARAM_INT, &(genconftmp.threads), 0 }, { "force_tls", FALSE, PARAM_BOOL, &(genconftmp.flags), F_FORCEDTLS }, { "certfile", FALSE, PARAM_STRING, &(genconftmp.certfile), 0 }, @@ -1942,22 +1944,22 @@ return true; } -void send_export_info(CLIENT* client, bool maybe_zeroes) { +void send_export_info(CLIENT* client, SERVER* server, bool maybe_zeroes) { uint64_t size_host = htonll((u64)(client->exportsize)); uint16_t flags = NBD_FLAG_HAS_FLAGS | NBD_FLAG_SEND_WRITE_ZEROES; socket_write(client, &size_host, 8); - if (client->server->flags & F_READONLY) + if (server->flags & F_READONLY) flags |= NBD_FLAG_READ_ONLY; - if (client->server->flags & F_FLUSH) + if (server->flags & F_FLUSH) flags |= NBD_FLAG_SEND_FLUSH; - if (client->server->flags & F_FUA) + if (server->flags & F_FUA) flags |= NBD_FLAG_SEND_FUA; - if (client->server->flags & F_ROTATIONAL) + if (server->flags & F_ROTATIONAL) flags |= NBD_FLAG_ROTATIONAL; - if (client->server->flags & F_TRIM) + if (server->flags & F_TRIM) flags |= NBD_FLAG_SEND_TRIM; - if (!(client->server->flags & F_COPYONWRITE)) + if (!(server->flags & F_COPYONWRITE)) flags |= NBD_FLAG_CAN_MULTI_CONN; flags = htons(flags); socket_write(client, &flags, sizeof(flags)); @@ -2097,7 +2099,7 @@ if(!commit_client(client, serve)) { return NULL; } - send_export_info(client, true); + send_export_info(client, serve, true); return client; } } @@ -2302,7 +2304,7 @@ case NBD_INFO_EXPORT: send_reply(client, opt, NBD_REP_INFO, 12, NULL); socket_write(client, &request, 2); - send_export_info(client, false); + send_export_info(client, server, false); sent_export = true; break; default: @@ -2314,7 +2316,7 @@ request = htons(NBD_INFO_EXPORT); send_reply(client, opt, NBD_REP_INFO, 12, NULL); socket_write(client, &request, 2); - send_export_info(client, false); + send_export_info(client, server, false); } send_reply(client, opt, NBD_REP_ACK, 0, NULL); @@ -2595,7 +2597,7 @@ if (!pkg->data) { if (expsplice(pkg->pipefd[0], req->from, req->len, client, SPLICE_OUT, fua)) { - DEBUG("Splice failed: %M"); + DEBUG("Splice failed: %m"); rep.error = nbd_errno(errno); } } else @@ -3364,16 +3366,10 @@ * Connect our servers. **/ void setup_servers(GArray *const servers, const gchar *const modernaddr, - const gchar *const modernport, const gchar* unixsock) { + const gchar *const modernport, const gchar* unixsock, + const gint flags ) { struct sigaction sa; - GError *gerror = NULL; - if (open_modern(modernaddr, modernport, &gerror) == -1) { - msg(LOG_ERR, "failed to setup servers: %s", - gerror->message); - g_clear_error(&gerror); - exit(EXIT_FAILURE); - } if(unixsock != NULL) { GError* gerror = NULL; if(open_unix(unixsock, &gerror) == -1) { @@ -3383,6 +3379,15 @@ exit(EXIT_FAILURE); } } + if (((flags & F_DUAL_LISTEN) != 0) || (unixsock == NULL)) { + GError *gerror = NULL; + if (open_modern(modernaddr, modernport, &gerror) == -1) { + msg(LOG_ERR, "failed to setup servers: %s", + gerror->message); + g_clear_error(&gerror); + exit(EXIT_FAILURE); + } + } children=g_hash_table_new_full(g_int_hash, g_int_equal, NULL, destroy_pid_t); sa.sa_handler = sigchld_handler; @@ -3567,7 +3572,7 @@ tpool = g_thread_pool_new(handle_request, NULL, genconf.threads, FALSE, NULL); setup_servers(servers, genconf.modernaddr, genconf.modernport, - genconf.unixsock); + genconf.unixsock, genconf.flags); dousers(genconf.user, genconf.group); #if HAVE_GNUTLS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/nbd-3.18/support/libtool.m4 new/nbd-3.19/support/libtool.m4 --- old/nbd-3.18/support/libtool.m4 2018-08-18 16:39:44.000000000 +0200 +++ new/nbd-3.19/support/libtool.m4 2019-01-30 16:34:38.000000000 +0100 @@ -4063,7 +4063,8 @@ if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + $ECHO "$as_me:$LINENO: $NM conftest.$ac_objext | $lt_cv_sys_global_symbol_pipe > $nlist" >&AS_MESSAGE_LOG_FD + if eval "$NM" conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist 2>&AS_MESSAGE_LOG_FD && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" @@ -6438,7 +6439,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else GXX=no @@ -6813,7 +6814,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -6878,7 +6879,7 @@ # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP " \-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then @@ -7217,7 +7218,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # FIXME: insert proper C++ library support @@ -7301,7 +7302,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. @@ -7312,7 +7313,7 @@ # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP " \-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir'