Bug#858943: unblock: systemd/232-22

Michael Biebl biebl at debian.org
Tue Mar 28 23:08:34 BST 2017


Am 28.03.2017 um 22:52 schrieb Michael Biebl:
> A complete debdiff is attached.

Hm, somehow that got lost. Attaching it now.

Regards,
Michael
-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?
-------------- next part --------------
diff --git a/debian/changelog b/debian/changelog
index 0774f4d..4af7f8a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,79 @@
+systemd (232-22) unstable; urgency=medium
+
+  [ Martin Pitt ]
+  * resolved: Disable DNSSEC by default on stretch and zesty.
+    Both Debian stretch and Ubuntu zesty are close to releasing, switch to
+    DNSSEC=off by default for those. Users can still turn it back on with
+    DNSSEC=allow-downgrade (or even "yes").
+
+  [ Michael Biebl ]
+  * Add Conflicts against hal.
+    Since v183, udev no longer supports RUN+="socket:". This feature is
+    still used by hal, but now generates vast amounts of errors in the
+    journal. Thus force the removal of hal by adding a Conflicts to the udev
+    package. This is safe, as hal is long dead and no package depends on it
+    anymore.
+
+  [ Dimitri John Ledkov ]
+  * Adjust pkgconfig files to point at rootlibdir.
+    The .so symlinks got moved to rootlibdir in v232 so the .pc files for
+    libudev and libsystemd need to be adjusted accordingly. Otherwise we
+    break cross compilation. (LP: #1674201)
+
+ -- Michael Biebl <biebl at debian.org>  Tue, 28 Mar 2017 21:23:30 +0200
+
+systemd (232-21) unstable; urgency=medium
+
+  * resolved: Downgrade "processing query..." message to debug.
+    It doesn't really add much value in normal operation and just spams the
+    log. (Closes: #858197)
+  * Do not throw a warning in emergency and rescue mode if plymouth is not
+    installed.
+    Ideally, plymouth should only be referenced via dependencies, not
+    ExecStartPre. This at least avoids the confusing error message on
+    minimal installations that do not carry plymouth.
+  * rules: Allow SPARC vdisk devices when identifying CD drives
+    (Closes: #858014)
+
+ -- Michael Biebl <biebl at debian.org>  Tue, 21 Mar 2017 19:52:17 +0100
+
+systemd (232-20) unstable; urgency=medium
+
+  [ Martin Pitt ]
+  * debian/gbp.conf: Switch to "stretch" branch
+  * udev: Fix /dev/disk/by-path aliases for virtio disks. (Closes: #856558)
+  * udev: Create persistent net names for virtio CCW devices.
+    This only affects s390x as only this has CCW devices. This provides
+    stable network interface names for those and avoids changing the names
+    on updating Stretch to Buster. (Closes: #856559)
+  * Move systemd.link(5) to udev package.
+    .link files are being handled by udev, so it should ship the
+    corresponding manpage. Bump Breaks/Replaces accordingly. (Closes: #857270)
+
+  [ Michael Biebl ]
+  * Avoid strict DM API versioning.
+    Compiling against the dm-ioctl.h header as provided by the Linux kernel
+    will embed the DM interface version number. Running an older kernel can
+    lead to errors on shutdown when trying to detach DM devices.
+    As a workaround, build against a local copy of dm-ioctl.h based on 3.13,
+    which is the minimum required version to support DM_DEFERRED_REMOVE.
+    (Closes: #856337)
+  * cryptsetup-generator: Run cryptsetup service before swap unit.
+    Otherwise if the cryptsetup service unit and swap unit for a swap
+    device are not strictly ordered, it might happen that the swap unit
+    activates/mounts the swap device before its cryptsetup service unit has
+    a chance to run the 'mkswap' command. (Closes: #787028)
+  * Override package-name-doesnt-match-sonames lintian warning for libnss-*
+  * networkd: Fix size of MTUBytes so that it does not overwrite ARP
+
+  [ Felipe Sateler ]
+  * git-cherry-pick: Actually use cherry-pick for picking.
+    Use git cherry-pick for picking instead of rebase.
+    This allows using -x flag and thus record the upstream commit that is
+    being picked.
+
+ -- Michael Biebl <biebl at debian.org>  Thu, 16 Mar 2017 17:38:24 +0100
+
 systemd (232-19) unstable; urgency=medium
 
   [ Martin Pitt ]
diff --git a/debian/control b/debian/control
index 65365e9..b48a50a 100644
--- a/debian/control
+++ b/debian/control
@@ -328,17 +328,18 @@ Depends: ${shlibs:Depends},
          util-linux (>= 2.27.1),
          s390-tools (>> 1.6.2) [s390],
          procps
+Conflicts: hal
 Breaks: consolekit (<< 0.4.6-1),
         kmod (<< 14),
         plymouth (<< 0.9.0-7),
         bash-completion (<< 1:2.1),
-        systemd (<< 232-11),
+        systemd (<< 232-20),
         ifupdown (<< 0.8.5~),
         ifplugd (<< 0.28-19.1~),
         joystick (<< 1:1.4.9-1~),
         ${Breaks:usb-modeswitch},
 Replaces: bash-completion (<< 1:2.1),
-          systemd (<< 224-2)
+          systemd (<< 232-20)
 Description: /dev/ and hotplug management daemon
  udev is a daemon which dynamically creates and removes device nodes from
  /dev/, handles hotplug events and loads drivers at boot time.
diff --git a/debian/gbp.conf b/debian/gbp.conf
index 6dc3643..ab50bd4 100644
--- a/debian/gbp.conf
+++ b/debian/gbp.conf
@@ -1,7 +1,7 @@
 [DEFAULT]
 pristine-tar = True
 patch-numbers = False
-debian-branch = master
+debian-branch = stretch
 
 [dch]
 full = True
diff --git a/debian/git-cherry-pick b/debian/git-cherry-pick
index 9d0197c..bb39ce8 100755
--- a/debian/git-cherry-pick
+++ b/debian/git-cherry-pick
@@ -43,7 +43,7 @@ gbp pq import --force
 echo "Cherry-picking the following commits:"
 echo "$commits"
 
-picks=$(echo "$commits" | sed -e 's/^/pick /' -e 's/$/\\n/' | tr --delete '\n' )
+picks=$(echo "$commits" | xargs echo exec git cherry-pick -x --no-edit --commit)
 
 # find the first debian commit
 firstdebian=$(git log -i --grep "topic.*debian" --pretty=%h --reverse $debbranch..$pqbranch | head -1)
diff --git a/debian/libnss-myhostname.lintian-overrides b/debian/libnss-myhostname.lintian-overrides
new file mode 100644
index 0000000..ff4d266
--- /dev/null
+++ b/debian/libnss-myhostname.lintian-overrides
@@ -0,0 +1,2 @@
+# package is a NSS module, not a system library
+libnss-myhostname: package-name-doesnt-match-sonames
diff --git a/debian/libnss-mymachines.lintian-overrides b/debian/libnss-mymachines.lintian-overrides
new file mode 100644
index 0000000..c9661e8
--- /dev/null
+++ b/debian/libnss-mymachines.lintian-overrides
@@ -0,0 +1,2 @@
+# package is a NSS module, not a system library
+libnss-mymachines: package-name-doesnt-match-sonames
diff --git a/debian/libnss-resolve.lintian-overrides b/debian/libnss-resolve.lintian-overrides
new file mode 100644
index 0000000..dfd9ec4
--- /dev/null
+++ b/debian/libnss-resolve.lintian-overrides
@@ -0,0 +1,2 @@
+# package is a NSS module, not a system library
+libnss-resolve: package-name-doesnt-match-sonames
diff --git a/debian/libnss-systemd.lintian-overrides b/debian/libnss-systemd.lintian-overrides
new file mode 100644
index 0000000..8e9c4cb
--- /dev/null
+++ b/debian/libnss-systemd.lintian-overrides
@@ -0,0 +1,2 @@
+# package is a NSS module, not a system library
+libnss-systemd: package-name-doesnt-match-sonames
diff --git a/debian/patches/Adjust-pkgconfig-files-to-point-at-rootlibdir-4584.patch b/debian/patches/Adjust-pkgconfig-files-to-point-at-rootlibdir-4584.patch
new file mode 100644
index 0000000..6e62a4c
--- /dev/null
+++ b/debian/patches/Adjust-pkgconfig-files-to-point-at-rootlibdir-4584.patch
@@ -0,0 +1,50 @@
+From: Mike Gilbert <floppymaster at gmail.com>
+Date: Tue, 8 Nov 2016 03:36:41 -0500
+Subject: Adjust pkgconfig files to point at rootlibdir (#4584)
+
+The .so symlinks got moved to rootlibdir in 082210c7.
+(cherry picked from commit d07903848f7b3b96487e0968f25d88167cc65ded)
+---
+ Makefile.am                     | 1 +
+ src/libsystemd/libsystemd.pc.in | 2 +-
+ src/libudev/libudev.pc.in       | 2 +-
+ 3 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 41c7cfc..ecd8bc1 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -6056,6 +6056,7 @@ EXTRA_DIST += \
+ 
+ # ------------------------------------------------------------------------------
+ substitutions = \
++       '|rootlibdir=$(rootlibdir)|' \
+        '|rootlibexecdir=$(rootlibexecdir)|' \
+        '|rootbindir=$(rootbindir)|' \
+        '|bindir=$(bindir)|' \
+diff --git a/src/libsystemd/libsystemd.pc.in b/src/libsystemd/libsystemd.pc.in
+index e8f7950..7e6d499 100644
+--- a/src/libsystemd/libsystemd.pc.in
++++ b/src/libsystemd/libsystemd.pc.in
+@@ -7,7 +7,7 @@
+ 
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
++libdir=@rootlibdir@
+ includedir=@includedir@
+ 
+ Name: systemd
+diff --git a/src/libudev/libudev.pc.in b/src/libudev/libudev.pc.in
+index a0f3f52..770c922 100644
+--- a/src/libudev/libudev.pc.in
++++ b/src/libudev/libudev.pc.in
+@@ -7,7 +7,7 @@
+ 
+ prefix=@prefix@
+ exec_prefix=@exec_prefix@
+-libdir=@libdir@
++libdir=@rootlibdir@
+ includedir=@includedir@
+ 
+ Name: libudev
diff --git a/debian/patches/Avoid-strict-DM-interface-version-dependencies-5519.patch b/debian/patches/Avoid-strict-DM-interface-version-dependencies-5519.patch
new file mode 100644
index 0000000..df78452
--- /dev/null
+++ b/debian/patches/Avoid-strict-DM-interface-version-dependencies-5519.patch
@@ -0,0 +1,432 @@
+From: Michael Biebl <mbiebl at gmail.com>
+Date: Thu, 2 Mar 2017 19:11:37 +0100
+Subject: Avoid strict DM interface version dependencies (#5519)
+
+Compiling against the dm-ioctl.h header as provided by the Linux kernel
+will embed the DM interface version number. Running an older kernel can
+result in an error like this on shutdown:
+
+Could not detach DM dm-11: ioctl mismatch, kernel(4.34.4), user(4.35.4)
+
+Work around this by shipping a local copy of dm-ioctl.h. We need at
+least the version from 3.13 for DM_DEFERRED_REMOVE [1], so bump the
+requirements in README accordingly.
+
+[1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=2c140a246dc0bc085b98eddde978060fcec1080c
+
+Fixes: #5492
+(cherry picked from commit dcce98a4bdc302a5efeb3a5c35b6cbf6d16a3efc)
+---
+ Makefile.am                      |   1 +
+ README                           |   2 +-
+ src/core/umount.c                |   2 +-
+ src/shared/linux-3.13/dm-ioctl.h | 355 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 358 insertions(+), 2 deletions(-)
+ create mode 100644 src/shared/linux-3.13/dm-ioctl.h
+
+diff --git a/Makefile.am b/Makefile.am
+index 67d41dc..41c7cfc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -966,6 +966,7 @@ libshared_la_SOURCES = \
+ 	src/shared/gpt.h \
+ 	src/shared/udev-util.h \
+ 	src/shared/linux/auto_dev-ioctl.h \
++	src/shared/linux-3.13/dm-ioctl.h \
+ 	src/shared/initreq.h \
+ 	src/shared/dns-domain.c \
+ 	src/shared/dns-domain.h \
+diff --git a/README b/README
+index 9f5bc93..838a9e8 100644
+--- a/README
++++ b/README
+@@ -35,7 +35,7 @@ LICENSE:
+         - except src/udev/* which is (currently still) GPLv2, GPLv2+
+ 
+ REQUIREMENTS:
+-        Linux kernel >= 3.12
++        Linux kernel >= 3.13
+         Linux kernel >= 4.2 for unified cgroup hierarchy support
+ 
+         Kernel Config Options:
+diff --git a/src/core/umount.c b/src/core/umount.c
+index 1e5459e..f3823d7 100644
+--- a/src/core/umount.c
++++ b/src/core/umount.c
+@@ -19,7 +19,6 @@
+ 
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <linux/dm-ioctl.h>
+ #include <linux/loop.h>
+ #include <string.h>
+ #include <sys/mount.h>
+@@ -31,6 +30,7 @@
+ #include "escape.h"
+ #include "fd-util.h"
+ #include "fstab-util.h"
++#include "linux-3.13/dm-ioctl.h"
+ #include "list.h"
+ #include "mount-setup.h"
+ #include "path-util.h"
+diff --git a/src/shared/linux-3.13/dm-ioctl.h b/src/shared/linux-3.13/dm-ioctl.h
+new file mode 100644
+index 0000000..c8a4302
+--- /dev/null
++++ b/src/shared/linux-3.13/dm-ioctl.h
+@@ -0,0 +1,355 @@
++/*
++ * Copyright (C) 2001 - 2003 Sistina Software (UK) Limited.
++ * Copyright (C) 2004 - 2009 Red Hat, Inc. All rights reserved.
++ *
++ * This file is released under the LGPL.
++ */
++
++#ifndef _LINUX_DM_IOCTL_V4_H
++#define _LINUX_DM_IOCTL_V4_H
++
++#include <linux/types.h>
++
++#define DM_DIR "mapper"		/* Slashes not supported */
++#define DM_CONTROL_NODE "control"
++#define DM_MAX_TYPE_NAME 16
++#define DM_NAME_LEN 128
++#define DM_UUID_LEN 129
++
++/*
++ * A traditional ioctl interface for the device mapper.
++ *
++ * Each device can have two tables associated with it, an
++ * 'active' table which is the one currently used by io passing
++ * through the device, and an 'inactive' one which is a table
++ * that is being prepared as a replacement for the 'active' one.
++ *
++ * DM_VERSION:
++ * Just get the version information for the ioctl interface.
++ *
++ * DM_REMOVE_ALL:
++ * Remove all dm devices, destroy all tables.  Only really used
++ * for debug.
++ *
++ * DM_LIST_DEVICES:
++ * Get a list of all the dm device names.
++ *
++ * DM_DEV_CREATE:
++ * Create a new device, neither the 'active' or 'inactive' table
++ * slots will be filled.  The device will be in suspended state
++ * after creation, however any io to the device will get errored
++ * since it will be out-of-bounds.
++ *
++ * DM_DEV_REMOVE:
++ * Remove a device, destroy any tables.
++ *
++ * DM_DEV_RENAME:
++ * Rename a device or set its uuid if none was previously supplied.
++ *
++ * DM_SUSPEND:
++ * This performs both suspend and resume, depending which flag is
++ * passed in.
++ * Suspend: This command will not return until all pending io to
++ * the device has completed.  Further io will be deferred until
++ * the device is resumed.
++ * Resume: It is no longer an error to issue this command on an
++ * unsuspended device.  If a table is present in the 'inactive'
++ * slot, it will be moved to the active slot, then the old table
++ * from the active slot will be _destroyed_.  Finally the device
++ * is resumed.
++ *
++ * DM_DEV_STATUS:
++ * Retrieves the status for the table in the 'active' slot.
++ *
++ * DM_DEV_WAIT:
++ * Wait for a significant event to occur to the device.  This
++ * could either be caused by an event triggered by one of the
++ * targets of the table in the 'active' slot, or a table change.
++ *
++ * DM_TABLE_LOAD:
++ * Load a table into the 'inactive' slot for the device.  The
++ * device does _not_ need to be suspended prior to this command.
++ *
++ * DM_TABLE_CLEAR:
++ * Destroy any table in the 'inactive' slot (ie. abort).
++ *
++ * DM_TABLE_DEPS:
++ * Return a set of device dependencies for the 'active' table.
++ *
++ * DM_TABLE_STATUS:
++ * Return the targets status for the 'active' table.
++ *
++ * DM_TARGET_MSG:
++ * Pass a message string to the target at a specific offset of a device.
++ *
++ * DM_DEV_SET_GEOMETRY:
++ * Set the geometry of a device by passing in a string in this format:
++ *
++ * "cylinders heads sectors_per_track start_sector"
++ *
++ * Beware that CHS geometry is nearly obsolete and only provided
++ * for compatibility with dm devices that can be booted by a PC
++ * BIOS.  See struct hd_geometry for range limits.  Also note that
++ * the geometry is erased if the device size changes.
++ */
++
++/*
++ * All ioctl arguments consist of a single chunk of memory, with
++ * this structure at the start.  If a uuid is specified any
++ * lookup (eg. for a DM_INFO) will be done on that, *not* the
++ * name.
++ */
++struct dm_ioctl {
++	/*
++	 * The version number is made up of three parts:
++	 * major - no backward or forward compatibility,
++	 * minor - only backwards compatible,
++	 * patch - both backwards and forwards compatible.
++	 *
++	 * All clients of the ioctl interface should fill in the
++	 * version number of the interface that they were
++	 * compiled with.
++	 *
++	 * All recognised ioctl commands (ie. those that don't
++	 * return -ENOTTY) fill out this field, even if the
++	 * command failed.
++	 */
++	__u32 version[3];	/* in/out */
++	__u32 data_size;	/* total size of data passed in
++				 * including this struct */
++
++	__u32 data_start;	/* offset to start of data
++				 * relative to start of this struct */
++
++	__u32 target_count;	/* in/out */
++	__s32 open_count;	/* out */
++	__u32 flags;		/* in/out */
++
++	/*
++	 * event_nr holds either the event number (input and output) or the
++	 * udev cookie value (input only).
++	 * The DM_DEV_WAIT ioctl takes an event number as input.
++	 * The DM_SUSPEND, DM_DEV_REMOVE and DM_DEV_RENAME ioctls
++	 * use the field as a cookie to return in the DM_COOKIE
++	 * variable with the uevents they issue.
++	 * For output, the ioctls return the event number, not the cookie.
++	 */
++	__u32 event_nr;      	/* in/out */
++	__u32 padding;
++
++	__u64 dev;		/* in/out */
++
++	char name[DM_NAME_LEN];	/* device name */
++	char uuid[DM_UUID_LEN];	/* unique identifier for
++				 * the block device */
++	char data[7];		/* padding or data */
++};
++
++/*
++ * Used to specify tables.  These structures appear after the
++ * dm_ioctl.
++ */
++struct dm_target_spec {
++	__u64 sector_start;
++	__u64 length;
++	__s32 status;		/* used when reading from kernel only */
++
++	/*
++	 * Location of the next dm_target_spec.
++	 * - When specifying targets on a DM_TABLE_LOAD command, this value is
++	 *   the number of bytes from the start of the "current" dm_target_spec
++	 *   to the start of the "next" dm_target_spec.
++	 * - When retrieving targets on a DM_TABLE_STATUS command, this value
++	 *   is the number of bytes from the start of the first dm_target_spec
++	 *   (that follows the dm_ioctl struct) to the start of the "next"
++	 *   dm_target_spec.
++	 */
++	__u32 next;
++
++	char target_type[DM_MAX_TYPE_NAME];
++
++	/*
++	 * Parameter string starts immediately after this object.
++	 * Be careful to add padding after string to ensure correct
++	 * alignment of subsequent dm_target_spec.
++	 */
++};
++
++/*
++ * Used to retrieve the target dependencies.
++ */
++struct dm_target_deps {
++	__u32 count;	/* Array size */
++	__u32 padding;	/* unused */
++	__u64 dev[0];	/* out */
++};
++
++/*
++ * Used to get a list of all dm devices.
++ */
++struct dm_name_list {
++	__u64 dev;
++	__u32 next;		/* offset to the next record from
++				   the _start_ of this */
++	char name[0];
++};
++
++/*
++ * Used to retrieve the target versions
++ */
++struct dm_target_versions {
++        __u32 next;
++        __u32 version[3];
++
++        char name[0];
++};
++
++/*
++ * Used to pass message to a target
++ */
++struct dm_target_msg {
++	__u64 sector;	/* Device sector */
++
++	char message[0];
++};
++
++/*
++ * If you change this make sure you make the corresponding change
++ * to dm-ioctl.c:lookup_ioctl()
++ */
++enum {
++	/* Top level cmds */
++	DM_VERSION_CMD = 0,
++	DM_REMOVE_ALL_CMD,
++	DM_LIST_DEVICES_CMD,
++
++	/* device level cmds */
++	DM_DEV_CREATE_CMD,
++	DM_DEV_REMOVE_CMD,
++	DM_DEV_RENAME_CMD,
++	DM_DEV_SUSPEND_CMD,
++	DM_DEV_STATUS_CMD,
++	DM_DEV_WAIT_CMD,
++
++	/* Table level cmds */
++	DM_TABLE_LOAD_CMD,
++	DM_TABLE_CLEAR_CMD,
++	DM_TABLE_DEPS_CMD,
++	DM_TABLE_STATUS_CMD,
++
++	/* Added later */
++	DM_LIST_VERSIONS_CMD,
++	DM_TARGET_MSG_CMD,
++	DM_DEV_SET_GEOMETRY_CMD
++};
++
++#define DM_IOCTL 0xfd
++
++#define DM_VERSION       _IOWR(DM_IOCTL, DM_VERSION_CMD, struct dm_ioctl)
++#define DM_REMOVE_ALL    _IOWR(DM_IOCTL, DM_REMOVE_ALL_CMD, struct dm_ioctl)
++#define DM_LIST_DEVICES  _IOWR(DM_IOCTL, DM_LIST_DEVICES_CMD, struct dm_ioctl)
++
++#define DM_DEV_CREATE    _IOWR(DM_IOCTL, DM_DEV_CREATE_CMD, struct dm_ioctl)
++#define DM_DEV_REMOVE    _IOWR(DM_IOCTL, DM_DEV_REMOVE_CMD, struct dm_ioctl)
++#define DM_DEV_RENAME    _IOWR(DM_IOCTL, DM_DEV_RENAME_CMD, struct dm_ioctl)
++#define DM_DEV_SUSPEND   _IOWR(DM_IOCTL, DM_DEV_SUSPEND_CMD, struct dm_ioctl)
++#define DM_DEV_STATUS    _IOWR(DM_IOCTL, DM_DEV_STATUS_CMD, struct dm_ioctl)
++#define DM_DEV_WAIT      _IOWR(DM_IOCTL, DM_DEV_WAIT_CMD, struct dm_ioctl)
++
++#define DM_TABLE_LOAD    _IOWR(DM_IOCTL, DM_TABLE_LOAD_CMD, struct dm_ioctl)
++#define DM_TABLE_CLEAR   _IOWR(DM_IOCTL, DM_TABLE_CLEAR_CMD, struct dm_ioctl)
++#define DM_TABLE_DEPS    _IOWR(DM_IOCTL, DM_TABLE_DEPS_CMD, struct dm_ioctl)
++#define DM_TABLE_STATUS  _IOWR(DM_IOCTL, DM_TABLE_STATUS_CMD, struct dm_ioctl)
++
++#define DM_LIST_VERSIONS _IOWR(DM_IOCTL, DM_LIST_VERSIONS_CMD, struct dm_ioctl)
++
++#define DM_TARGET_MSG	 _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
++#define DM_DEV_SET_GEOMETRY	_IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
++
++#define DM_VERSION_MAJOR	4
++#define DM_VERSION_MINOR	27
++#define DM_VERSION_PATCHLEVEL	0
++#define DM_VERSION_EXTRA	"-ioctl (2013-10-30)"
++
++/* Status bits */
++#define DM_READONLY_FLAG	(1 << 0) /* In/Out */
++#define DM_SUSPEND_FLAG		(1 << 1) /* In/Out */
++#define DM_PERSISTENT_DEV_FLAG	(1 << 3) /* In */
++
++/*
++ * Flag passed into ioctl STATUS command to get table information
++ * rather than current status.
++ */
++#define DM_STATUS_TABLE_FLAG	(1 << 4) /* In */
++
++/*
++ * Flags that indicate whether a table is present in either of
++ * the two table slots that a device has.
++ */
++#define DM_ACTIVE_PRESENT_FLAG   (1 << 5) /* Out */
++#define DM_INACTIVE_PRESENT_FLAG (1 << 6) /* Out */
++
++/*
++ * Indicates that the buffer passed in wasn't big enough for the
++ * results.
++ */
++#define DM_BUFFER_FULL_FLAG	(1 << 8) /* Out */
++
++/*
++ * This flag is now ignored.
++ */
++#define DM_SKIP_BDGET_FLAG	(1 << 9) /* In */
++
++/*
++ * Set this to avoid attempting to freeze any filesystem when suspending.
++ */
++#define DM_SKIP_LOCKFS_FLAG	(1 << 10) /* In */
++
++/*
++ * Set this to suspend without flushing queued ios.
++ * Also disables flushing uncommitted changes in the thin target before
++ * generating statistics for DM_TABLE_STATUS and DM_DEV_WAIT.
++ */
++#define DM_NOFLUSH_FLAG		(1 << 11) /* In */
++
++/*
++ * If set, any table information returned will relate to the inactive
++ * table instead of the live one.  Always check DM_INACTIVE_PRESENT_FLAG
++ * is set before using the data returned.
++ */
++#define DM_QUERY_INACTIVE_TABLE_FLAG	(1 << 12) /* In */
++
++/*
++ * If set, a uevent was generated for which the caller may need to wait.
++ */
++#define DM_UEVENT_GENERATED_FLAG	(1 << 13) /* Out */
++
++/*
++ * If set, rename changes the uuid not the name.  Only permitted
++ * if no uuid was previously supplied: an existing uuid cannot be changed.
++ */
++#define DM_UUID_FLAG			(1 << 14) /* In */
++
++/*
++ * If set, all buffers are wiped after use. Use when sending
++ * or requesting sensitive data such as an encryption key.
++ */
++#define DM_SECURE_DATA_FLAG		(1 << 15) /* In */
++
++/*
++ * If set, a message generated output data.
++ */
++#define DM_DATA_OUT_FLAG		(1 << 16) /* Out */
++
++/*
++ * If set with DM_DEV_REMOVE or DM_REMOVE_ALL this indicates that if
++ * the device cannot be removed immediately because it is still in use
++ * it should instead be scheduled for removal when it gets closed.
++ *
++ * On return from DM_DEV_REMOVE, DM_DEV_STATUS or other ioctls, this
++ * flag indicates that the device is scheduled to be removed when it
++ * gets closed.
++ */
++#define DM_DEFERRED_REMOVE		(1 << 17) /* In/Out */
++
++#endif				/* _LINUX_DM_IOCTL_H */
diff --git a/debian/patches/cryptsetup-generator-run-cryptsetup-service-before-swap-u.patch b/debian/patches/cryptsetup-generator-run-cryptsetup-service-before-swap-u.patch
new file mode 100644
index 0000000..ce3bfd3
--- /dev/null
+++ b/debian/patches/cryptsetup-generator-run-cryptsetup-service-before-swap-u.patch
@@ -0,0 +1,75 @@
+From: Mauricio Faria de Oliveira <mauricio.foliveira at gmail.com>
+Date: Tue, 28 Feb 2017 17:30:22 -0300
+Subject: cryptsetup-generator: run cryptsetup service before swap unit (#5480)
+
+If the cryptsetup service unit and swap unit for a swap device
+are not strictly ordered, it might happen that the swap unit
+activates/mounts the swap device before its cryptsetup service unit
+has a chance to run the 'mkswap' command (that it is programmed to).
+
+This leads to the following error:
+
+             Starting Cryptography Setup for sda3_crypt...
+    [  OK  ] Found device /dev/mapper/sda3_crypt.
+             Activating swap /dev/mapper/sda3_crypt...
+    [  OK  ] Activated swap /dev/mapper/sda3_crypt.
+    [  OK  ] Reached target Swap.
+    [FAILED] Failed to start Cryptography Setup for sda3_crypt.
+    See 'systemctl status systemd-cryptsetup at sda3_crypt.service' for
+    details.
+    [DEPEND] Dependency failed for Encrypted Volumes.
+
+Which happens because the swap device is already mounted:
+
+    # systemctl status systemd-cryptsetup at sda3_crypt.service
+    <...>
+       Active: failed (Result: exit-code) since Mon 2017-02-27 14:21:43 CST;
+    54s ago
+    <...>
+
+    <...> systemd[1]: Starting Cryptography Setup for sda3_crypt...
+    <...> mkswap[2420]: mkswap: error: /dev/mapper/sda3_crypt is mounted;
+    will not make swapspace
+    <...>
+
+So, modify cryptsetup-generator to include a 'Before=' option for the
+respective 'dev-mapper-%i.swap' device in the cryptsetup service unit.
+
+Now, correct ordering is ensured, and the error no longer occurs:
+
+             Starting Cryptography Setup for sda3_crypt...
+    [  OK  ] Found device /dev/mapper/sda3_crypt.
+    [  OK  ] Started Cryptography Setup for sda3_crypt.
+             Activating swap /dev/mapper/sda3_crypt...
+    [  OK  ] Reached target Encrypted Volumes.
+    [  OK  ] Activated swap /dev/mapper/sda3_crypt.
+    [  OK  ] Reached target Swap.
+(cherry picked from commit a6f8786a56c0acba5997e2c58d0df6c80ffde7f1)
+---
+ src/cryptsetup/cryptsetup-generator.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
+index 6802986..2d00bcf 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -145,13 +145,17 @@ static int create_disk(
+                 }
+         }
+ 
+-        if (is_device_path(u))
++        if (is_device_path(u)) {
+                 fprintf(f,
+                         "BindsTo=%s\n"
+                         "After=%s\n"
+                         "Before=umount.target\n",
+                         d, d);
+-        else
++
++                if (swap)
++                        fputs("Before=dev-mapper-%i.swap\n",
++                              f);
++        } else
+                 fprintf(f,
+                         "RequiresMountsFor=%s\n",
+                         u);
diff --git a/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch b/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch
index 74bb1db..022e1ed 100644
--- a/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch
+++ b/debian/patches/debian/fsckd-daemon-for-inter-fsckd-communication.patch
@@ -109,7 +109,7 @@ index 013e0d7..a20cb25 100644
  	man/systemd-getty-generator.xml \
  	man/systemd-gpt-auto-generator.xml \
 diff --git a/Makefile.am b/Makefile.am
-index 67d41dc..10d5799 100644
+index ecd8bc1..882f8b2 100644
 --- a/Makefile.am
 +++ b/Makefile.am
 @@ -394,6 +394,7 @@ rootlibexec_PROGRAMS = \
@@ -144,7 +144,7 @@ index 67d41dc..10d5799 100644
  	units/systemd-machine-id-commit.service.in \
  	units/user at .service.m4.in \
  	units/debug-shell.service.in \
-@@ -2686,6 +2690,14 @@ systemd_fsck_LDADD = \
+@@ -2687,6 +2691,14 @@ systemd_fsck_LDADD = \
  	libsystemd-shared.la
  
  # ------------------------------------------------------------------------------
diff --git a/debian/patches/networkd-fix-size-of-MTUBytes-so-that-it-does-not-overwri.patch b/debian/patches/networkd-fix-size-of-MTUBytes-so-that-it-does-not-overwri.patch
new file mode 100644
index 0000000..b961367
--- /dev/null
+++ b/debian/patches/networkd-fix-size-of-MTUBytes-so-that-it-does-not-overwri.patch
@@ -0,0 +1,27 @@
+From: Susant Sahani <ssahani at users.noreply.github.com>
+Date: Wed, 23 Nov 2016 21:03:01 +0530
+Subject: networkd: fix size of MTUBytes so that it does not overwrites ARP
+ (#4707)
+
+config_parse_iec_size overwrites the next varible that is ARP.
+Now the mtu is unsigned . Make it size_t .
+
+Fixes #4644
+(cherry picked from commit b8b40317d0355bc70bb23a6240a36f3630c4952b)
+---
+ src/network/networkd-network.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/network/networkd-network.h b/src/network/networkd-network.h
+index 42fc82d..11ff34b 100644
+--- a/src/network/networkd-network.h
++++ b/src/network/networkd-network.h
+@@ -173,7 +173,7 @@ struct Network {
+         IPv6PrivacyExtensions ipv6_privacy_extensions;
+ 
+         struct ether_addr *mac;
+-        unsigned mtu;
++        size_t mtu;
+         int arp;
+         uint32_t iaid;
+         DUID duid;
diff --git a/debian/patches/resolved-downgrade-processing-query.-message-to-debug-523.patch b/debian/patches/resolved-downgrade-processing-query.-message-to-debug-523.patch
new file mode 100644
index 0000000..54edbc5
--- /dev/null
+++ b/debian/patches/resolved-downgrade-processing-query.-message-to-debug-523.patch
@@ -0,0 +1,23 @@
+From: Felipe Sateler <fsateler at users.noreply.github.com>
+Date: Sun, 5 Feb 2017 19:17:50 -0300
+Subject: resolved: downgrade "processing query..." message to debug (#5233)
+
+It doesn't really add much value in normal operation and just spams the log.
+(cherry picked from commit 52e634271fe96ec23a22705ffb87df59a09d1618)
+---
+ src/resolve/resolved-dns-stub.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/resolve/resolved-dns-stub.c b/src/resolve/resolved-dns-stub.c
+index 29c8d2b..77ee7e9 100644
+--- a/src/resolve/resolved-dns-stub.c
++++ b/src/resolve/resolved-dns-stub.c
+@@ -360,7 +360,7 @@ static void dns_stub_process_query(Manager *m, DnsStream *s, DnsPacket *p) {
+                 goto fail;
+         }
+ 
+-        log_info("Processing query...");
++        log_debug("Processing query...");
+         return;
+ 
+ fail:
diff --git a/debian/patches/rules-allow-SPARC-vdisk-devices-when-identifying-CD-drive.patch b/debian/patches/rules-allow-SPARC-vdisk-devices-when-identifying-CD-drive.patch
new file mode 100644
index 0000000..d0b5fd9
--- /dev/null
+++ b/debian/patches/rules-allow-SPARC-vdisk-devices-when-identifying-CD-drive.patch
@@ -0,0 +1,22 @@
+From: John Paul Adrian Glaubitz <glaubitz at physik.fu-berlin.de>
+Date: Mon, 20 Mar 2017 11:22:54 +0100
+Subject: rules: allow SPARC vdisk devices when identifying CD drives (#5599)
+
+(cherry picked from commit 7c1ebe99b68ef232bc50e99f2350ebf5f4e846e7)
+---
+ rules/60-cdrom_id.rules | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/rules/60-cdrom_id.rules b/rules/60-cdrom_id.rules
+index 5c3b52e..56fe7c9 100644
+--- a/rules/60-cdrom_id.rules
++++ b/rules/60-cdrom_id.rules
+@@ -2,7 +2,7 @@
+ 
+ ACTION=="remove", GOTO="cdrom_end"
+ SUBSYSTEM!="block", GOTO="cdrom_end"
+-KERNEL!="sr[0-9]*|xvd*", GOTO="cdrom_end"
++KERNEL!="sr[0-9]*|vdisk*|xvd*", GOTO="cdrom_end"
+ ENV{DEVTYPE}!="disk", GOTO="cdrom_end"
+ 
+ # unconditionally tag device as CDROM
diff --git a/debian/patches/series b/debian/patches/series
index 76c744f..7c301cd 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -50,6 +50,15 @@ resolved-fix-NSEC-proofs-for-missing-TLDs.patch
 automount-if-an-automount-unit-is-masked-don-t-react-to-a.patch
 resolved-add-the-new-KSK-to-the-built-in-resolved-trust-a.patch
 zsh-completion-_journalctl-fixes-5165.patch
+udev-Use-parent-bus-id-for-virtio-disk-builtin-path-id-55.patch
+udev-fix-id_net_name_path-for-virtio-ccw-interfaces-5357.patch
+Avoid-strict-DM-interface-version-dependencies-5519.patch
+networkd-fix-size-of-MTUBytes-so-that-it-does-not-overwri.patch
+resolved-downgrade-processing-query.-message-to-debug-523.patch
+units-do-not-throw-a-warning-in-emergency-mode-if-plymout.patch
+units-apply-plymouth-warning-fix-to-in-rescue-mode-as-wel.patch
+rules-allow-SPARC-vdisk-devices-when-identifying-CD-drive.patch
+Adjust-pkgconfig-files-to-point-at-rootlibdir-4584.patch
 debian/Use-Debian-specific-config-files.patch
 debian/don-t-try-to-start-autovt-units-when-not-running-wit.patch
 debian/Make-logind-hostnamed-localed-timedated-D-Bus-activa.patch
@@ -73,3 +82,4 @@ debian/Revert-core-set-RLIMIT_CORE-to-unlimited-by-default.patch
 debian/Revert-core-enable-TasksMax-for-all-services-by-default-a.patch
 debian/Let-graphical-session-pre.target-be-manually-started.patch
 debian/Add-env-variable-for-machine-ID-path.patch
+cryptsetup-generator-run-cryptsetup-service-before-swap-u.patch
diff --git a/debian/patches/udev-Use-parent-bus-id-for-virtio-disk-builtin-path-id-55.patch b/debian/patches/udev-Use-parent-bus-id-for-virtio-disk-builtin-path-id-55.patch
new file mode 100644
index 0000000..bc608d5
--- /dev/null
+++ b/debian/patches/udev-Use-parent-bus-id-for-virtio-disk-builtin-path-id-55.patch
@@ -0,0 +1,62 @@
+From: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
+Date: Wed, 1 Mar 2017 21:30:17 +0100
+Subject: udev: Use parent bus id for virtio disk builtin path-id (#5500)
+
+The builtin path id for virtio block devices has been changed
+to use the bus id without a prefix "virtio-pci" to be
+compatible with all virtio transport types.
+
+In order to not break existing setups, the by-path symlinks for
+virtio block devices on the PCI bus are reintroduced by udev rules.
+The virtio-pci symlinks are considered to be deprecated and
+should be replaced by the native PCI symlinks.
+
+Example output for a virtio disk in PCI slot 7:
+ $ ls  /dev/disk/by-path
+ pci-0000:00:07.0
+ pci-0000:00:07.0-part1
+ virtio-pci-0000:00:07.0
+ virtio-pci-0000:00:07.0-part1
+
+See also
+[1] https://lists.freedesktop.org/archives/systemd-devel/2017-February/038326.html
+[2] https://lists.freedesktop.org/archives/systemd-devel/2017-March/038397.html
+
+This reverts f073b1b but keeps the same symlinks for compatibility.
+---
+ rules/60-persistent-storage.rules | 4 ++++
+ src/udev/udev-builtin-path_id.c   | 5 +----
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
+index a93a342..baf341d 100644
+--- a/rules/60-persistent-storage.rules
++++ b/rules/60-persistent-storage.rules
+@@ -66,6 +66,10 @@ ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id"
+ ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}"
+ ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
+ 
++# legacy virtio-pci by-path links (deprecated)
++KERNEL=="vd*[!0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}"
++KERNEL=="vd*[0-9]", ENV{ID_PATH}=="pci-*", SYMLINK+="disk/by-path/virtio-$env{ID_PATH}-part%n"
++
+ # probe filesystem metadata of optical drives which have a media inserted
+ KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="?*", \
+   IMPORT{builtin}="blkid --offset=$env{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}"
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index 1825ee7..e55b468 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -664,11 +664,8 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
+                         parent = skip_subsystem(parent, "xen");
+                         supported_parent = true;
+                 } else if (streq(subsys, "virtio")) {
+-                        while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent)))
+-                                parent = udev_device_get_parent(parent);
+-                        path_prepend(&path, "virtio-pci-%s", udev_device_get_sysname(parent));
++                        parent = skip_subsystem(parent, "virtio");
+                         supported_transport = true;
+-                        supported_parent = true;
+                 } else if (streq(subsys, "scm")) {
+                         path_prepend(&path, "scm-%s", udev_device_get_sysname(parent));
+                         parent = skip_subsystem(parent, "scm");
diff --git a/debian/patches/udev-fix-id_net_name_path-for-virtio-ccw-interfaces-5357.patch b/debian/patches/udev-fix-id_net_name_path-for-virtio-ccw-interfaces-5357.patch
new file mode 100644
index 0000000..225774b
--- /dev/null
+++ b/debian/patches/udev-fix-id_net_name_path-for-virtio-ccw-interfaces-5357.patch
@@ -0,0 +1,165 @@
+From: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
+Date: Fri, 17 Feb 2017 16:18:01 +0100
+Subject: udev: fix id_net_name_path for virtio-ccw interfaces (#5357)
+
+The CCW id_net_name_path detection didn't account for virtio
+interfaces on the CCW bus. As a result the default interface
+names for virtio-ccw interfaces would use the old eth<x>
+format instead of enc<busid>.
+
+Since virtio-pci interface naming follows the naming rules
+of the parent bus, the names_ccw() logic was changed to apply
+the CCW interface naming rules to virtio interfaces as well,
+e.g. enc2000 for an interface with a CCW bus id 0.0.2000.
+As virtio interfaces are apt to get the otherwise unusual
+CCW bus id 0.0.0000, the last '0' is now preserved in this
+case.
+
+The virtio subsystem skipping loop has been moved from
+names_pci() into a function skip_virtio() that can be reused
+for all bus types with virtio network devices.
+
+Since virtio-ccw interfaces use single CCW addresses the ccwgroup
+requirement was relaxed and the C definitions were changed
+accordingly.
+---
+ src/udev/udev-builtin-net_id.c | 58 ++++++++++++++++++++++++++++--------------
+ 1 file changed, 39 insertions(+), 19 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index fe9d6f4..9d6c6aa 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -34,7 +34,8 @@
+  *
+  * Type of names:
+  *   b<number>                             — BCMA bus core number
+- *   c<bus_id>                             — CCW bus group name, without leading zeros [s390]
++ *   c<bus_id>                             — bus id of a grouped CCW or CCW device,
++ *                                           with all leading zeros stripped [s390]
+  *   o<index>[n<phys_port_name>|d<dev_port>]
+  *                                         — on-board device index number
+  *   s<slot>[f<function>][n<phys_port_name>|d<dev_port>]
+@@ -87,6 +88,11 @@
+  *   /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/net/enp0s29u1u2
+  *   ID_NET_NAME_MAC=enxd626b3450fb5
+  *   ID_NET_NAME_PATH=enp0s29u1u2
++ *
++ * s390 grouped CCW interface:
++ *  /sys/devices/css0/0.0.0007/0.0.f5f0/group_device/net/encf5f0
++ *  ID_NET_NAME_MAC=enx026d3c00000a
++ *  ID_NET_NAME_PATH=encf5f0
+  */
+ 
+ #include <errno.h>
+@@ -114,7 +120,7 @@ enum netname_type{
+         NET_USB,
+         NET_BCMA,
+         NET_VIRTIO,
+-        NET_CCWGROUP,
++        NET_CCW,
+ };
+ 
+ struct netnames {
+@@ -131,9 +137,21 @@ struct netnames {
+ 
+         char usb_ports[IFNAMSIZ];
+         char bcma_core[IFNAMSIZ];
+-        char ccw_group[IFNAMSIZ];
++        char ccw_busid[IFNAMSIZ];
+ };
+ 
++/* skip intermediate virtio devices */
++static struct udev_device *skip_virtio(struct udev_device *dev) {
++        struct udev_device *parent = dev;
++
++        /* there can only ever be one virtio bus per parent device, so we can
++           safely ignore any virtio buses. see
++           <http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html> */
++        while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent)))
++                parent = udev_device_get_parent(parent);
++        return parent;
++}
++
+ /* retrieve on-board index number and label from firmware */
+ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
+         unsigned dev_port = 0;
+@@ -307,12 +325,8 @@ static int names_pci(struct udev_device *dev, struct netnames *names) {
+         assert(names);
+ 
+         parent = udev_device_get_parent(dev);
+-
+-        /* there can only ever be one virtio bus per parent device, so we can
+-           safely ignore any virtio buses. see
+-           <http://lists.linuxfoundation.org/pipermail/virtualization/2015-August/030331.html> */
+-        while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent)))
+-                parent = udev_device_get_parent(parent);
++        /* skip virtio subsystem if present */
++        parent = skip_virtio(parent);
+ 
+         if (!parent)
+                 return -ENOENT;
+@@ -413,21 +427,26 @@ static int names_ccw(struct  udev_device *dev, struct netnames *names) {
+         struct udev_device *cdev;
+         const char *bus_id;
+         size_t bus_id_len;
++        size_t bus_id_start;
+         int rc;
++        char *subsys;
+ 
+         assert(dev);
+         assert(names);
+ 
+         /* Retrieve the associated CCW device */
+         cdev = udev_device_get_parent(dev);
++        /* skip virtio subsystem if present */
++        cdev = skip_virtio(cdev);
+         if (!cdev)
+                 return -ENOENT;
+ 
+-        /* Network devices are always grouped CCW devices */
+-        if (!streq_ptr("ccwgroup", udev_device_get_subsystem(cdev)))
++        /* Network devices are either single or grouped CCW devices */
++        subsys = udev_device_get_subsystem(cdev);
++        if (!STRPTR_IN_SET(subsys, "ccwgroup", "ccw"))
+                 return -ENOENT;
+ 
+-        /* Retrieve bus-ID of the grouped CCW device.  The bus-ID uniquely
++        /* Retrieve bus-ID of the CCW device.  The bus-ID uniquely
+          * identifies the network device on the Linux on System z channel
+          * subsystem.  Note that the bus-ID contains lowercase characters.
+          */
+@@ -446,14 +465,15 @@ static int names_ccw(struct  udev_device *dev, struct netnames *names) {
+         /* Strip leading zeros from the bus id for aesthetic purposes. This
+          * keeps the ccw names stable, yet much shorter in general case of
+          * bus_id 0.0.0600 -> 600. This is similar to e.g. how PCI domain is
+-         * not prepended when it is zero.
++         * not prepended when it is zero. Preserve the last 0 for 0.0.0000.
+          */
+-        bus_id += strspn(bus_id, ".0");
++        bus_id_start = strspn(bus_id, ".0");
++        bus_id += bus_id_start < bus_id_len ? bus_id_start : bus_id_len - 1;
+ 
+         /* Store the CCW bus-ID for use as network device name */
+-        rc = snprintf(names->ccw_group, sizeof(names->ccw_group), "c%s", bus_id);
+-        if (rc >= 0 && rc < (int)sizeof(names->ccw_group))
+-                names->type = NET_CCWGROUP;
++        rc = snprintf(names->ccw_busid, sizeof(names->ccw_busid), "c%s", bus_id);
++        if (rc >= 0 && rc < (int)sizeof(names->ccw_busid))
++                names->type = NET_CCW;
+         return 0;
+ }
+ 
+@@ -563,10 +583,10 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
+ 
+         /* get path names for Linux on System z network devices */
+         err = names_ccw(dev, &names);
+-        if (err >= 0 && names.type == NET_CCWGROUP) {
++        if (err >= 0 && names.type == NET_CCW) {
+                 char str[IFNAMSIZ];
+ 
+-                if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_group) < (int)sizeof(str))
++                if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_busid) < (int)sizeof(str))
+                         udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str);
+                 goto out;
+         }
diff --git a/debian/patches/units-apply-plymouth-warning-fix-to-in-rescue-mode-as-wel.patch b/debian/patches/units-apply-plymouth-warning-fix-to-in-rescue-mode-as-wel.patch
new file mode 100644
index 0000000..c20ee90
--- /dev/null
+++ b/debian/patches/units-apply-plymouth-warning-fix-to-in-rescue-mode-as-wel.patch
@@ -0,0 +1,23 @@
+From: Daniel Molkentin <daniel at molkentin.de>
+Date: Tue, 21 Mar 2017 03:26:05 +0100
+Subject: units: apply plymouth warning fix to in rescue mode as well (#5615)
+
+Follow up for #5528.
+(cherry picked from commit 03bf096ba283bfcba0725375f152a823e998cdbc)
+---
+ units/rescue.service.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/units/rescue.service.in b/units/rescue.service.in
+index 5feff69..dc6d14b 100644
+--- a/units/rescue.service.in
++++ b/units/rescue.service.in
+@@ -16,7 +16,7 @@ Before=shutdown.target
+ [Service]
+ Environment=HOME=/root
+ WorkingDirectory=-/root
+-ExecStartPre=-/bin/plymouth --wait quit
++ExecStartPre=-/bin/sh -c "[ -x /bin/plymouth ] && /bin/plymouth --wait quit"
+ ExecStartPre=-/bin/echo -e 'You are in rescue mode. After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\nboot into default mode.'
+ ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default"
+ Type=idle
diff --git a/debian/patches/units-do-not-throw-a-warning-in-emergency-mode-if-plymout.patch b/debian/patches/units-do-not-throw-a-warning-in-emergency-mode-if-plymout.patch
new file mode 100644
index 0000000..7cffac5
--- /dev/null
+++ b/debian/patches/units-do-not-throw-a-warning-in-emergency-mode-if-plymout.patch
@@ -0,0 +1,26 @@
+From: Daniel Molkentin <daniel at molkentin.de>
+Date: Fri, 17 Mar 2017 12:13:19 +0100
+Subject: units: do not throw a warning in emergency mode if plymouth is not
+ installed (#5528)
+
+Ideally, plymouth should only be referenced via dependencies,
+not ExecStartPre's. This at least avoids the confusing error message
+on minimal installations that do not carry plymouth.
+(cherry picked from commit 7e3ba389191dbc241e05f4d134460bbb832ed60c)
+---
+ units/emergency.service.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/units/emergency.service.in b/units/emergency.service.in
+index da68eb8..9f60931 100644
+--- a/units/emergency.service.in
++++ b/units/emergency.service.in
+@@ -17,7 +17,7 @@ Before=shutdown.target
+ [Service]
+ Environment=HOME=/root
+ WorkingDirectory=-/root
+-ExecStartPre=-/bin/plymouth --wait quit
++ExecStartPre=-/bin/sh -c "[ -x /bin/plymouth ] && /bin/plymouth --wait quit"
+ ExecStartPre=-/bin/echo -e 'You are in emergency mode. After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" or ^D to\\ntry again to boot into default mode.'
+ ExecStart=-/bin/sh -c "@SULOGIN@; @SYSTEMCTL@ --job-mode=fail --no-block default"
+ Type=idle
diff --git a/debian/rules b/debian/rules
index 21108ae..f49f71e 100755
--- a/debian/rules
+++ b/debian/rules
@@ -128,9 +128,9 @@ CONFFLAGS = \
 	--with-system-uid-max=999 \
 	--with-system-gid-max=999
 
-# resolved's DNSSEC support is still not mature enough, disable for stable
-# Debian/Ubuntu releases
-CONFFLAGS += $(shell grep -q yakkety /etc/os-release && echo --with-default-dnssec=no)
+# resolved's DNSSEC support is still not mature enough, don't enable it by
+# default on stable Debian/Ubuntu releases
+CONFFLAGS += $(shell grep -qE 'stretch|yakkety|zesty' /etc/os-release && echo --with-default-dnssec=no)
 
 CONFFLAGS_deb = \
 	--enable-selinux \
diff --git a/debian/udev.install b/debian/udev.install
index e859b97..b0ab649 100644
--- a/debian/udev.install
+++ b/debian/udev.install
@@ -9,6 +9,7 @@ lib/systemd/systemd-udevd
 bin/udevadm
 bin/systemd-hwdb
 usr/share/man/man5/udev.conf.5
+usr/share/man/man5/systemd.link.5
 usr/share/man/man7/hwdb.7
 usr/share/man/man7/udev.7
 usr/share/man/man8/systemd-hwdb*
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20170329/2367de31/attachment-0002.sig>


More information about the Pkg-systemd-maintainers mailing list