diff --git a/.gitignore b/.gitignore
index 5434520..c7cdfa3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-SOURCES/systemd-208.tar.xz
+SOURCES/systemd-219.tar.xz
diff --git a/.systemd.metadata b/.systemd.metadata
index ddc02ad..188314b 100644
--- a/.systemd.metadata
+++ b/.systemd.metadata
@@ -1 +1 @@
-e1a4e213d5d1e3498bca851347f2f07fdb9b4e1f SOURCES/systemd-208.tar.xz
+307d1c3e48b3bca1039cb66df2d7def074efe2ef SOURCES/systemd-219.tar.xz
diff --git a/SOURCES/0001-kernel-install-add-fedora-specific-callouts-to-new-k.patch b/SOURCES/0001-kernel-install-add-fedora-specific-callouts-to-new-k.patch
new file mode 100644
index 0000000..8c46c98
--- /dev/null
+++ b/SOURCES/0001-kernel-install-add-fedora-specific-callouts-to-new-k.patch
@@ -0,0 +1,60 @@
+From 139d2c57d86203e421b17a4b6ec168c49fcb9893 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Tue, 14 Jan 2014 17:48:08 -0500
+Subject: [PATCH] kernel-install: add fedora specific callouts to
+ new-kernel-pkg
+
+---
+ src/kernel-install/kernel-install | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+ mode change 100644 => 100755 src/kernel-install/kernel-install
+
+diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
+old mode 100644
+new mode 100755
+index 3ae1d77..f1c74de
+--- a/src/kernel-install/kernel-install
++++ b/src/kernel-install/kernel-install
+@@ -71,6 +71,42 @@ fi
+ KERNEL_VERSION="$1"
+ KERNEL_IMAGE="$2"
+ 
++if [[ -x /sbin/new-kernel-pkg ]]; then
++    KERNEL_DIR="${KERNEL_IMAGE%/*}"
++    if [[ "${KERNEL_DIR}" != "/boot" ]]; then
++        for i in \
++            "$KERNEL_IMAGE" \
++            "$KERNEL_DIR/.${KERNEL_IMAGE##*/}.hmac" \
++            "$KERNEL_DIR"/System.map \
++            "$KERNEL_DIR"/config \
++            "$KERNEL_DIR"/zImage.stub \
++            "$KERNEL_DIR"/dtb \
++            ; do
++            [[ -e "$i" ]] || continue
++            cp -a "$i" "/boot/${i##*/}-${KERNEL_VERSION}"
++        done
++    fi
++
++    [[ "$KERNEL_VERSION" == *\+* ]] && flavor=-"${KERNEL_VERSION##*+}"
++    case "$COMMAND" in
++        add)
++            /sbin/new-kernel-pkg --package "kernel${flavor}" --install "$KERNEL_VERSION" || exit $?
++            /sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$KERNEL_VERSION" || exit $?
++            /sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$KERNEL_VERSION" || exit $?
++            ;;
++        remove)
++            /sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$KERNEL_VERSION" || exit $?
++            ;;
++        *)
++            ;;
++    esac
++
++    # exit, if we can't find a boot loader spec conforming setup
++    if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then
++        exit 0
++    fi
++fi
++
+ if [[ -f /etc/machine-id ]]; then
+     read MACHINE_ID < /etc/machine-id
+ fi
diff --git a/SOURCES/0001-units-add-Install-section-to-tmp.mount.patch b/SOURCES/0001-units-add-Install-section-to-tmp.mount.patch
deleted file mode 100644
index 3bf21ee..0000000
--- a/SOURCES/0001-units-add-Install-section-to-tmp.mount.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From b4aeab33ff172b608930daf77a6f7af47bf2fdc9 Mon Sep 17 00:00:00 2001
-From: Michal Schmidt <mschmidt@redhat.com>
-Date: Fri, 15 Feb 2013 09:07:57 +0100
-Subject: [PATCH] units: add [Install] section to tmp.mount
-
-Change-Id: I2e6d129de00a9afaf7558006c886866f64394c29
-Related: #908253
----
- units/tmp.mount | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/units/tmp.mount b/units/tmp.mount
-index 99a3ba3..9e4803a 100644
---- a/units/tmp.mount
-+++ b/units/tmp.mount
-@@ -18,3 +18,7 @@ What=tmpfs
- Where=/tmp
- Type=tmpfs
- Options=mode=1777,strictatime
-+
-+# Make 'systemctl enable tmp.mount' work:
-+[Install]
-+WantedBy=local-fs.target
diff --git a/SOURCES/0002-Revert-fsck-re-enable-fsck-l.patch b/SOURCES/0002-Revert-fsck-re-enable-fsck-l.patch
new file mode 100644
index 0000000..75da631
--- /dev/null
+++ b/SOURCES/0002-Revert-fsck-re-enable-fsck-l.patch
@@ -0,0 +1,55 @@
+From 42026958cced6fe111bbaccad04d24d8ca3d6c55 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 14 Nov 2014 17:07:57 +0100
+Subject: [PATCH] Revert "fsck: re-enable fsck -l"
+
+This reverts commit 48d3e8d07f2978f001cc85b2dddb7f8ec9d07006.
+
+(We have older util-linux in rhel7))
+
+Conflicts:
+	README
+---
+ README          |  3 ++-
+ src/fsck/fsck.c | 13 +++++++++----
+ 2 files changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/README b/README
+index c722092..5f5783a 100644
+--- a/README
++++ b/README
+@@ -135,7 +135,8 @@ REQUIREMENTS:
+         During runtime, you need the following additional
+         dependencies:
+ 
+-        util-linux >= v2.25 required
++        util-linux >= v2.19 (requires fsck -l, agetty -s),
++                      v2.21 required for tests in test/
+         dbus >= 1.4.0 (strictly speaking optional, but recommended)
+         dracut (optional)
+         PolicyKit (optional)
+diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
+index 78ceeb6..d897680 100644
+--- a/src/fsck/fsck.c
++++ b/src/fsck/fsck.c
+@@ -323,11 +323,16 @@ int main(int argc, char *argv[]) {
+         cmdline[i++] = "-T";
+ 
+         /*
+-         * Since util-linux v2.25 fsck uses /run/fsck/<diskname>.lock files.
+-         * The previous versions use flock for the device and conflict with
+-         * udevd, see https://bugs.freedesktop.org/show_bug.cgi?id=79576#c5
++         * Disable locking which conflict with udev's event
++         * ownershipi, until util-linux moves the flock
++         * synchronization file which prevents multiple fsck running
++         * on the same rotationg media, from the disk device
++         * node to a privately owned regular file.
++         *
++         * https://bugs.freedesktop.org/show_bug.cgi?id=79576#c5
++         *
++         * cmdline[i++] = "-l";
+          */
+-        cmdline[i++] = "-l";
+ 
+         if (!root_directory)
+                 cmdline[i++] = "-M";
diff --git a/SOURCES/0002-man-explain-NAME-in-systemctl-man-page.patch b/SOURCES/0002-man-explain-NAME-in-systemctl-man-page.patch
deleted file mode 100644
index 04990de..0000000
--- a/SOURCES/0002-man-explain-NAME-in-systemctl-man-page.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From bc7d6c8e11a22d29b14b6070117f261961eadb23 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= <vpavlin@redhat.com>
-Date: Thu, 31 Oct 2013 14:36:41 +0100
-Subject: [PATCH] man: explain NAME in systemctl man page
-
----
- man/systemctl.xml | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index e789d4b..166282c 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -63,6 +63,19 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
-     introspect and control the state of the
-     <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-     system and service manager.</para>
-+
-+    <para>For Unit Commands the <replaceable>NAME</replaceable> represents full name of unit.
-+    <programlisting>
-+systemctl start foo.service
-+    </programlisting>
-+    For Unit File Commands the <replaceable>NAME</replaceable> represents full name of the unit file, or absolute path to the unit file.
-+    <programlisting>
-+systemctl start /path/to/foo.service
-+    </programlisting>
-+    While working with services/service files, <command>systemctl</command> is able to append .service suffix when it is missing.
-+    <programlisting>
-+systemctl start foo
-+    </programlisting></para>
-   </refsect1>
- 
-   <refsect1>
diff --git a/SOURCES/0003-fix-lingering-references-to-var-lib-backlight-random.patch b/SOURCES/0003-fix-lingering-references-to-var-lib-backlight-random.patch
deleted file mode 100644
index 2705795..0000000
--- a/SOURCES/0003-fix-lingering-references-to-var-lib-backlight-random.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 635ba7207a9afa3fa1b0c4e804c6823d71c04d1c Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Wed, 2 Oct 2013 07:46:24 -0400
-Subject: [PATCH] fix lingering references to /var/lib/{backlight,random-seed}
-
-This should have been part of ef5bfcf668e6029faa78534dfe.
----
- man/systemd-backlight@.service.xml  | 2 +-
- man/systemd-random-seed.service.xml | 2 +-
- units/systemd-backlight@.service.in | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/man/systemd-backlight@.service.xml b/man/systemd-backlight@.service.xml
-index 2b73625..4318964 100644
---- a/man/systemd-backlight@.service.xml
-+++ b/man/systemd-backlight@.service.xml
-@@ -58,7 +58,7 @@
-                 is a service that restores the display backlight
-                 brightness at early-boot and saves it at shutdown. On
-                 disk, the backlight brightness is stored in
--                <filename>/var/lib/backlight/</filename>. Note that by
-+                <filename>/var/lib/systemd/backlight/</filename>. Note that by
-                 default, only firmware backlight devices are
-                 saved/restored.</para>
-         </refsect1>
-diff --git a/man/systemd-random-seed.service.xml b/man/systemd-random-seed.service.xml
-index 8cd14b7..e5cd037 100644
---- a/man/systemd-random-seed.service.xml
-+++ b/man/systemd-random-seed.service.xml
-@@ -61,7 +61,7 @@
-                 for details. Saving/restoring the random seed across
-                 boots increases the amount of available entropy early
-                 at boot. On disk the random seed is stored in
--                <filename>/var/lib/random-seed</filename>.</para>
-+                <filename>/var/lib/systemd/random-seed</filename>.</para>
-         </refsect1>
- 
-         <refsect1>
-diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in
-index b0e75db..5caa5d5 100644
---- a/units/systemd-backlight@.service.in
-+++ b/units/systemd-backlight@.service.in
-@@ -9,7 +9,7 @@
- Description=Load/Save Screen Backlight Brightness of %I
- Documentation=man:systemd-backlight@.service(8)
- DefaultDependencies=no
--RequiresMountsFor=/var/lib/backlight
-+RequiresMountsFor=/var/lib/systemd/backlight
- Conflicts=shutdown.target
- After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
- Before=sysinit.target shutdown.target
diff --git a/SOURCES/0003-sysctl-bring-back-etc-sysctl.conf.patch b/SOURCES/0003-sysctl-bring-back-etc-sysctl.conf.patch
new file mode 100644
index 0000000..ba1d738
--- /dev/null
+++ b/SOURCES/0003-sysctl-bring-back-etc-sysctl.conf.patch
@@ -0,0 +1,25 @@
+From d2deeea1d5aa1d13139b9e9f70c6655abb589530 Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 11 Nov 2013 11:17:57 +0100
+Subject: [PATCH] sysctl: bring back /etc/sysctl.conf
+
+Read /etc/sysctl.conf as the last file, overwriting everything.
+---
+ src/sysctl/sysctl.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
+index 275a5b7..d007c93 100644
+--- a/src/sysctl/sysctl.c
++++ b/src/sysctl/sysctl.c
+@@ -320,6 +320,10 @@ int main(int argc, char *argv[]) {
+                         if (k < 0 && r == 0)
+                                 r = k;
+                 }
++
++                k = parse_file(sysctl_options, "/etc/sysctl.conf", true);
++                if (k < 0 && r == 0)
++                        r = k;
+         }
+ 
+         k = apply_all(sysctl_options);
diff --git a/SOURCES/0004-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch b/SOURCES/0004-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch
deleted file mode 100644
index 828744c..0000000
--- a/SOURCES/0004-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From cfb20c251cb79820ddf7507f9f4a54cc3f18b121 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:36:28 +0200
-Subject: [PATCH] cryptsetup: fix OOM handling when parsing mount options
-
----
- src/cryptsetup/cryptsetup.c | 11 ++++++-----
- 1 file changed, 6 insertions(+), 5 deletions(-)
-
-diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
-index 22b5eea..769c3e4 100644
---- a/src/cryptsetup/cryptsetup.c
-+++ b/src/cryptsetup/cryptsetup.c
-@@ -74,7 +74,7 @@ static int parse_one_option(const char *option) {
- 
-                 t = strdup(option+7);
-                 if (!t)
--                        return -ENOMEM;
-+                        return log_oom();
- 
-                 free(opt_cipher);
-                 opt_cipher = t;
-@@ -89,9 +89,10 @@ static int parse_one_option(const char *option) {
-         } else if (startswith(option, "tcrypt-keyfile=")) {
- 
-                 opt_type = CRYPT_TCRYPT;
--                if (path_is_absolute(option+15))
--                        opt_tcrypt_keyfiles = strv_append(opt_tcrypt_keyfiles, strdup(option+15));
--                else
-+                if (path_is_absolute(option+15)) {
-+                        if (strv_extend(&opt_tcrypt_keyfiles, option + 15) < 0)
-+                                return log_oom();
-+                } else
-                         log_error("Key file path '%s' is not absolute. Ignoring.", option+15);
- 
-         } else if (startswith(option, "keyfile-size=")) {
-@@ -113,7 +114,7 @@ static int parse_one_option(const char *option) {
- 
-                 t = strdup(option+5);
-                 if (!t)
--                        return -ENOMEM;
-+                        return log_oom();
- 
-                 free(opt_hash);
-                 opt_hash = t;
diff --git a/SOURCES/0004-remove-user-.service.patch b/SOURCES/0004-remove-user-.service.patch
new file mode 100644
index 0000000..747c0da
--- /dev/null
+++ b/SOURCES/0004-remove-user-.service.patch
@@ -0,0 +1,88 @@
+From cd37b8d217cc240074f8ff77f1986551f6c8834a Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 14 Nov 2014 17:32:10 +0100
+Subject: [PATCH] remove user@.service
+
+Conflicts:
+	Makefile.am
+---
+ Makefile.am             |  2 --
+ src/login/logind-user.c | 38 --------------------------------------
+ 2 files changed, 40 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index bf04d31..75459f7 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -535,7 +535,6 @@ nodist_systemunit_DATA = \
+ 	units/systemd-sysctl.service \
+ 	units/emergency.service \
+ 	units/rescue.service \
+-	units/user@.service \
+ 	units/systemd-suspend.service \
+ 	units/systemd-halt.service \
+ 	units/systemd-poweroff.service \
+@@ -597,7 +596,6 @@ EXTRA_DIST += \
+ 	units/systemd-fsck@.service.in \
+ 	units/systemd-fsck-root.service.in \
+ 	units/systemd-machine-id-commit.service.in \
+-	units/user@.service.m4.in \
+ 	units/debug-shell.service.in \
+ 	units/systemd-suspend.service.in \
+ 	units/quotaon.service.in \
+diff --git a/src/login/logind-user.c b/src/login/logind-user.c
+index f4c4490..97eb4fe 100644
+--- a/src/login/logind-user.c
++++ b/src/login/logind-user.c
+@@ -399,39 +399,6 @@ static int user_start_slice(User *u) {
+         return 0;
+ }
+ 
+-static int user_start_service(User *u) {
+-        _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
+-        char *job;
+-        int r;
+-
+-        assert(u);
+-
+-        if (!u->service) {
+-                char lu[DECIMAL_STR_MAX(uid_t) + 1], *service;
+-                sprintf(lu, UID_FMT, u->uid);
+-
+-                service = unit_name_build("user", lu, ".service");
+-                if (!service)
+-                        return log_oom();
+-
+-                r = manager_start_unit(u->manager, service, &error, &job);
+-                if (r < 0) {
+-                        log_error("Failed to start user service: %s", bus_error_message(&error, r));
+-                        free(service);
+-                } else {
+-                        u->service = service;
+-
+-                        free(u->service_job);
+-                        u->service_job = job;
+-                }
+-        }
+-
+-        if (u->service)
+-                hashmap_put(u->manager->user_units, u->service, u);
+-
+-        return 0;
+-}
+-
+ int user_start(User *u) {
+         int r;
+ 
+@@ -452,11 +419,6 @@ int user_start(User *u) {
+         if (r < 0)
+                 return r;
+ 
+-        /* Spawn user systemd */
+-        r = user_start_service(u);
+-        if (r < 0)
+-                return r;
+-
+         if (!dual_timestamp_is_set(&u->timestamp))
+                 dual_timestamp_get(&u->timestamp);
+ 
diff --git a/SOURCES/0005-journald-add-missing-error-check.patch b/SOURCES/0005-journald-add-missing-error-check.patch
deleted file mode 100644
index 8d7c1d6..0000000
--- a/SOURCES/0005-journald-add-missing-error-check.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From dc74e25f66f2aa56b6c6fa2fd51fd1ee02a4b770 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:36:43 +0200
-Subject: [PATCH] journald: add missing error check
-
----
- src/journal/journal-file.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 1236403..81c344f 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -907,6 +907,8 @@ static int journal_file_append_field(
- 
-         osize = offsetof(Object, field.payload) + size;
-         r = journal_file_append_object(f, OBJECT_FIELD, osize, &o, &p);
-+        if (r < 0)
-+                return r;
- 
-         o->field.hash = htole64(hash);
-         memcpy(o->field.payload, field, size);
diff --git a/SOURCES/0005-logind-session-save-stopping-flag.patch b/SOURCES/0005-logind-session-save-stopping-flag.patch
new file mode 100644
index 0000000..8932e2b
--- /dev/null
+++ b/SOURCES/0005-logind-session-save-stopping-flag.patch
@@ -0,0 +1,63 @@
+From 932ae09a155ef463d99d4b4e7cf04aafbcd78a19 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 2 Apr 2014 14:41:26 +0200
+Subject: [PATCH] logind-session: save stopping flag
+
+Conflicts:
+	src/login/logind-session.c
+---
+ src/login/logind-session.c | 17 +++++++++++++----
+ 1 file changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/src/login/logind-session.c b/src/login/logind-session.c
+index a02a537..d2e7b40 100644
+--- a/src/login/logind-session.c
++++ b/src/login/logind-session.c
+@@ -181,12 +181,14 @@ int session_save(Session *s) {
+                 "USER=%s\n"
+                 "ACTIVE=%i\n"
+                 "STATE=%s\n"
+-                "REMOTE=%i\n",
+-                s->user->uid,
++                "REMOTE=%i\n"
++                "STOPPING=%i\n",
++                (unsigned long) s->user->uid,
+                 s->user->name,
+                 session_is_active(s),
+                 session_state_to_string(session_get_state(s)),
+-                s->remote);
++                s->remote,
++                s->stopping);
+ 
+         if (s->type >= 0)
+                 fprintf(f, "TYPE=%s\n", session_type_to_string(s->type));
+@@ -309,7 +311,8 @@ int session_load(Session *s) {
+                 *uid = NULL,
+                 *realtime = NULL,
+                 *monotonic = NULL,
+-                *controller = NULL;
++                *controller = NULL,
++                *stopping = NULL;
+ 
+         int k, r;
+ 
+@@ -337,6 +340,7 @@ int session_load(Session *s) {
+                            "REALTIME",       &realtime,
+                            "MONOTONIC",      &monotonic,
+                            "CONTROLLER",     &controller,
++                           "STOPPING",       &stopping,
+                            NULL);
+ 
+         if (r < 0)
+@@ -453,6 +457,11 @@ int session_load(Session *s) {
+                         session_restore_vt(s);
+         }
+ 
++        if (stopping) {
++                k = parse_boolean(stopping);
++                if (k >= 0)
++                        s->stopping = k;
++        }
+         return r;
+ }
+ 
diff --git a/SOURCES/0006-bus-fix-potentially-uninitialized-memory-access.patch b/SOURCES/0006-bus-fix-potentially-uninitialized-memory-access.patch
deleted file mode 100644
index c7ac468..0000000
--- a/SOURCES/0006-bus-fix-potentially-uninitialized-memory-access.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4b3825ff691103634adc77a4d3ffc7128923fae7 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:37:11 +0200
-Subject: [PATCH] bus: fix potentially uninitialized memory access
-
----
- src/libsystemd-bus/bus-internal.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c
-index 0e66f3d..cac948e 100644
---- a/src/libsystemd-bus/bus-internal.c
-+++ b/src/libsystemd-bus/bus-internal.c
-@@ -63,7 +63,7 @@ bool object_path_is_valid(const char *p) {
- 
- bool interface_name_is_valid(const char *p) {
-         const char *q;
--        bool dot, found_dot;
-+        bool dot, found_dot = false;
- 
-         if (isempty(p))
-                 return false;
-@@ -103,7 +103,7 @@ bool interface_name_is_valid(const char *p) {
- 
- bool service_name_is_valid(const char *p) {
-         const char *q;
--        bool dot, found_dot, unique;
-+        bool dot, found_dot = false, unique;
- 
-         if (isempty(p))
-                 return false;
diff --git a/SOURCES/0006-man-mention-System-Administrator-s-Guide-in-systemct.patch b/SOURCES/0006-man-mention-System-Administrator-s-Guide-in-systemct.patch
new file mode 100644
index 0000000..22b18a8
--- /dev/null
+++ b/SOURCES/0006-man-mention-System-Administrator-s-Guide-in-systemct.patch
@@ -0,0 +1,33 @@
+From d4582346f47064de24470b5f92e418966004925f Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 28 Aug 2014 15:12:10 +0200
+Subject: [PATCH] man: mention System Administrator's Guide in systemctl
+ manpage
+
+Resolves: #978948
+---
+ man/systemctl.xml | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 338c1d3..6f30474 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -1714,6 +1714,17 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+   </refsect1>
+ 
+   <refsect1>
++    <title>Examples</title>
++    <para>
++            For examples how to use systemctl in comparsion
++            with old service and chkconfig command please see:
++            <ulink url="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Services.html">
++                    Managing System Services
++            </ulink>
++    </para>
++  </refsect1>
++
++  <refsect1>
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
diff --git a/SOURCES/0007-dbus-fix-return-value-of-dispatch_rqueue.patch b/SOURCES/0007-dbus-fix-return-value-of-dispatch_rqueue.patch
deleted file mode 100644
index a1d278c..0000000
--- a/SOURCES/0007-dbus-fix-return-value-of-dispatch_rqueue.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From b8e064bd25ccd701a8249a9c9b59049f8c055b93 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:37:30 +0200
-Subject: [PATCH] dbus: fix return value of dispatch_rqueue()
-
----
- src/libsystemd-bus/sd-bus.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c
-index 3f766fb..db0880f 100644
---- a/src/libsystemd-bus/sd-bus.c
-+++ b/src/libsystemd-bus/sd-bus.c
-@@ -1215,11 +1215,11 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) {
-                 if (r == 0)
-                         return ret;
- 
--                r = 1;
-+                ret = 1;
-         } while (!z);
- 
-         *m = z;
--        return 1;
-+        return ret;
- }
- 
- int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) {
diff --git a/SOURCES/0007-rules-automatically-online-hot-added-CPUs.patch b/SOURCES/0007-rules-automatically-online-hot-added-CPUs.patch
new file mode 100644
index 0000000..260bb40
--- /dev/null
+++ b/SOURCES/0007-rules-automatically-online-hot-added-CPUs.patch
@@ -0,0 +1,40 @@
+From cb0c7e5445624b7bc67fc4c10a91d5cf3dd6ce6f Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 22 Sep 2014 07:41:06 +0200
+Subject: [PATCH] rules: automatically online hot-added CPUs
+
+RHEL-only patch
+
+Resolves: #968811
+
+Conflicts:
+	Makefile.am
+---
+ Makefile.am           | 3 ++-
+ rules/40-redhat.rules | 3 +++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+ create mode 100644 rules/40-redhat.rules
+
+diff --git a/Makefile.am b/Makefile.am
+index 75459f7..a734e9c 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3564,7 +3564,8 @@ dist_udevrules_DATA += \
+ 	rules/75-tty-description.rules \
+ 	rules/78-sound-card.rules \
+ 	rules/80-net-setup-link.rules \
+-	rules/95-udev-late.rules
++	rules/95-udev-late.rules \
++	rules/40-redhat.rules
+ 
+ nodist_udevrules_DATA += \
+ 	rules/99-systemd.rules
+diff --git a/rules/40-redhat.rules b/rules/40-redhat.rules
+new file mode 100644
+index 0000000..2b494e5
+--- /dev/null
++++ b/rules/40-redhat.rules
+@@ -0,0 +1,3 @@
++# do not edit this file, it will be overwritten on update
++
++SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1"
diff --git a/SOURCES/0008-Revert-remove-references-of-readahead.patch b/SOURCES/0008-Revert-remove-references-of-readahead.patch
new file mode 100644
index 0000000..65eee62
--- /dev/null
+++ b/SOURCES/0008-Revert-remove-references-of-readahead.patch
@@ -0,0 +1,54 @@
+From 1b83fbe90a241c6d5c4ab0dc8a3f97215fb277bf Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 19 Nov 2014 12:14:00 +0100
+Subject: [PATCH] Revert "remove references of readahead"
+
+This reverts commit 3b71c18d3e3906f8606c66bea98b327684394e61.
+---
+ .gitignore | 1 +
+ README     | 1 +
+ TODO       | 7 +++++++
+ 3 files changed, 9 insertions(+)
+
+diff --git a/.gitignore b/.gitignore
+index e8a4085..0360f7c 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -107,6 +107,7 @@
+ /systemd-quotacheck
+ /systemd-random-seed
+ /systemd-rc-local-generator
++/systemd-readahead
+ /systemd-remount-api-vfs
+ /systemd-remount-fs
+ /systemd-reply-password
+diff --git a/README b/README
+index 5f5783a..287d05c 100644
+--- a/README
++++ b/README
+@@ -30,6 +30,7 @@ AUTHOR:
+ 
+ LICENSE:
+         LGPLv2.1+ for all code
++        - except sd-readahead.[ch] which is MIT
+         - except src/shared/MurmurHash2.c which is Public Domain
+         - except src/shared/siphash24.c which is CC0 Public Domain
+         - except src/journal/lookup3.c which is Public Domain
+diff --git a/TODO b/TODO
+index 255a4f2..90b2c4b 100644
+--- a/TODO
++++ b/TODO
+@@ -786,6 +786,13 @@ Features:
+ 
+ * and a dbus call to generate target from current state
+ 
++* readahead:
++  - drop /.readahead on bigger upgrades with yum
++  - move readahead files into /var (look for them with .path units?)
++  - readahead: use BTRFS_IOC_DEFRAG_RANGE instead of BTRFS_IOC_DEFRAG ioctl, with START_IO
++  - readahead: when bumping /sys readahead variable save mtime and compare later to detect changes
++  - readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/
++
+ * GC unreferenced jobs (such as .device jobs)
+ 
+ * write blog stories about:
diff --git a/SOURCES/0008-modules-load-fix-error-handling.patch b/SOURCES/0008-modules-load-fix-error-handling.patch
deleted file mode 100644
index f5347c3..0000000
--- a/SOURCES/0008-modules-load-fix-error-handling.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 15010ca4aa6627c7bcfe8106fa45c4408443d5f2 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:37:44 +0200
-Subject: [PATCH] modules-load: fix error handling
-
----
- src/modules-load/modules-load.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
-index 7b19ee0..49ee420 100644
---- a/src/modules-load/modules-load.c
-+++ b/src/modules-load/modules-load.c
-@@ -302,8 +302,8 @@ int main(int argc, char *argv[]) {
- 
-                 STRV_FOREACH(i, arg_proc_cmdline_modules) {
-                         k = load_module(ctx, *i);
--                        if (k < 0)
--                                r = EXIT_FAILURE;
-+                        if (k < 0 && r == 0)
-+                                r = k;
-                 }
- 
-                 r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
diff --git a/SOURCES/0009-Revert-missing-remove-fanotify.patch b/SOURCES/0009-Revert-missing-remove-fanotify.patch
new file mode 100644
index 0000000..30901ad
--- /dev/null
+++ b/SOURCES/0009-Revert-missing-remove-fanotify.patch
@@ -0,0 +1,220 @@
+From 66d06bd0a577ddb2461e8d1e5c8c2fbf6845227d Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 19 Nov 2014 12:14:13 +0100
+Subject: [PATCH] Revert "missing: remove fanotify"
+
+This reverts commit c7e4a7bece7a5c4484d229dd5e8ff01a5d49c62e.
+
+Conflicts:
+	src/shared/missing.h
+---
+ Makefile.am                 |  1 +
+ configure.ac                |  1 +
+ src/shared/linux/fanotify.h | 98 +++++++++++++++++++++++++++++++++++++++++++++
+ src/shared/missing.h        | 64 +++++++++++++++++++++++++++++
+ 4 files changed, 164 insertions(+)
+ create mode 100644 src/shared/linux/fanotify.h
+
+diff --git a/Makefile.am b/Makefile.am
+index a734e9c..70e4fbc 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -749,6 +749,7 @@ libsystemd_shared_la_SOURCES = \
+ 	src/shared/capability.c \
+ 	src/shared/capability.h \
+ 	src/shared/linux/auto_dev-ioctl.h \
++	src/shared/linux/fanotify.h \
+ 	src/shared/ioprio.h \
+ 	src/shared/missing.h \
+ 	src/shared/initreq.h \
+diff --git a/configure.ac b/configure.ac
+index 97a29d6..3f50887 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -310,6 +310,7 @@ RT_LIBS="$LIBS"
+ AC_SUBST(RT_LIBS)
+ LIBS="$save_LIBS"
+ 
++AC_CHECK_FUNCS([fanotify_init fanotify_mark])
+ AC_CHECK_FUNCS([memfd_create])
+ AC_CHECK_FUNCS([__secure_getenv secure_getenv])
+ AC_CHECK_DECLS([gettid, pivot_root, name_to_handle_at, setns, getrandom, renameat2, kcmp, LO_FLAGS_PARTSCAN],
+diff --git a/src/shared/linux/fanotify.h b/src/shared/linux/fanotify.h
+new file mode 100644
+index 0000000..5cc1a7e
+--- /dev/null
++++ b/src/shared/linux/fanotify.h
+@@ -0,0 +1,98 @@
++#ifndef _LINUX_FANOTIFY_H
++#define _LINUX_FANOTIFY_H
++
++#include <linux/types.h>
++
++/* the following events that user-space can register for */
++#define FAN_ACCESS      0x00000001  /* File was accessed */
++#define FAN_MODIFY      0x00000002  /* File was modified */
++#define FAN_CLOSE_WRITE     0x00000008  /* Unwrittable file closed */
++#define FAN_CLOSE_NOWRITE   0x00000010  /* Writtable file closed */
++#define FAN_OPEN        0x00000020  /* File was opened */
++
++#define FAN_EVENT_ON_CHILD  0x08000000  /* interested in child events */
++
++/* FIXME currently Q's have no limit.... */
++#define FAN_Q_OVERFLOW      0x00004000  /* Event queued overflowed */
++
++#define FAN_OPEN_PERM       0x00010000  /* File open in perm check */
++#define FAN_ACCESS_PERM     0x00020000  /* File accessed in perm check */
++
++/* helper events */
++#define FAN_CLOSE       (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE) /* close */
++
++/* flags used for fanotify_init() */
++#define FAN_CLOEXEC     0x00000001
++#define FAN_NONBLOCK        0x00000002
++
++#define FAN_ALL_INIT_FLAGS  (FAN_CLOEXEC | FAN_NONBLOCK)
++
++/* flags used for fanotify_modify_mark() */
++#define FAN_MARK_ADD        0x00000001
++#define FAN_MARK_REMOVE     0x00000002
++#define FAN_MARK_DONT_FOLLOW    0x00000004
++#define FAN_MARK_ONLYDIR    0x00000008
++#define FAN_MARK_MOUNT      0x00000010
++#define FAN_MARK_IGNORED_MASK   0x00000020
++#define FAN_MARK_IGNORED_SURV_MODIFY    0x00000040
++#define FAN_MARK_FLUSH      0x00000080
++
++#define FAN_ALL_MARK_FLAGS  (FAN_MARK_ADD |\
++                 FAN_MARK_REMOVE |\
++                 FAN_MARK_DONT_FOLLOW |\
++                 FAN_MARK_ONLYDIR |\
++                 FAN_MARK_MOUNT |\
++                 FAN_MARK_IGNORED_MASK |\
++                 FAN_MARK_IGNORED_SURV_MODIFY)
++
++/*
++ * All of the events - we build the list by hand so that we can add flags in
++ * the future and not break backward compatibility.  Apps will get only the
++ * events that they originally wanted.  Be sure to add new events here!
++ */
++#define FAN_ALL_EVENTS (FAN_ACCESS |\
++            FAN_MODIFY |\
++            FAN_CLOSE |\
++            FAN_OPEN)
++
++/*
++ * All events which require a permission response from userspace
++ */
++#define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM |\
++                 FAN_ACCESS_PERM)
++
++#define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS |\
++                 FAN_ALL_PERM_EVENTS |\
++                 FAN_Q_OVERFLOW)
++
++#define FANOTIFY_METADATA_VERSION   2
++
++struct fanotify_event_metadata {
++    __u32 event_len;
++    __u32 vers;
++    __u64 mask;
++    __s32 fd;
++    __s32 pid;
++} __attribute__ ((packed));
++
++struct fanotify_response {
++    __s32 fd;
++    __u32 response;
++} __attribute__ ((packed));
++
++/* Legit userspace responses to a _PERM event */
++#define FAN_ALLOW   0x01
++#define FAN_DENY    0x02
++
++/* Helper functions to deal with fanotify_event_metadata buffers */
++#define FAN_EVENT_METADATA_LEN (sizeof(struct fanotify_event_metadata))
++
++#define FAN_EVENT_NEXT(meta, len) ((len) -= (meta)->event_len, \
++                   (struct fanotify_event_metadata*)(((char *)(meta)) + \
++                   (meta)->event_len))
++
++#define FAN_EVENT_OK(meta, len) ((long)(len) >= (long)FAN_EVENT_METADATA_LEN && \
++                (long)(meta)->event_len >= (long)FAN_EVENT_METADATA_LEN && \
++                (long)(meta)->event_len <= (long)(len))
++
++#endif /* _LINUX_FANOTIFY_H */
+diff --git a/src/shared/missing.h b/src/shared/missing.h
+index b33a70c..06a5576 100644
+--- a/src/shared/missing.h
++++ b/src/shared/missing.h
+@@ -156,6 +156,70 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
+ #  endif
+ #endif
+ 
++#ifdef __x86_64__
++#  ifndef __NR_fanotify_init
++#    define __NR_fanotify_init 300
++#  endif
++#  ifndef __NR_fanotify_mark
++#    define __NR_fanotify_mark 301
++#  endif
++#elif defined _MIPS_SIM
++#  if _MIPS_SIM == _MIPS_SIM_ABI32
++#    ifndef __NR_fanotify_init
++#      define __NR_fanotify_init 4336
++#    endif
++#    ifndef __NR_fanotify_mark
++#      define __NR_fanotify_mark 4337
++#    endif
++#  elif _MIPS_SIM == _MIPS_SIM_NABI32
++#    ifndef __NR_fanotify_init
++#      define __NR_fanotify_init 6300
++#    endif
++#    ifndef __NR_fanotify_mark
++#      define __NR_fanotify_mark 6301
++#    endif
++#  elif _MIPS_SIM == _MIPS_SIM_ABI64
++#    ifndef __NR_fanotify_init
++#      define __NR_fanotify_init 5295
++#    endif
++#    ifndef __NR_fanotify_mark
++#      define __NR_fanotify_mark 5296
++#    endif
++#  endif
++#else
++#  ifndef __NR_fanotify_init
++#    define __NR_fanotify_init 338
++#  endif
++#  ifndef __NR_fanotify_mark
++#    define __NR_fanotify_mark 339
++#  endif
++#endif
++
++#ifndef HAVE_FANOTIFY_INIT
++static inline int fanotify_init(unsigned int flags, unsigned int event_f_flags) {
++        return syscall(__NR_fanotify_init, flags, event_f_flags);
++}
++#endif
++
++#ifndef HAVE_FANOTIFY_MARK
++static inline int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask,
++                                int dfd, const char *pathname) {
++#if defined _MIPS_SIM && _MIPS_SIM == _MIPS_SIM_ABI32 || defined __powerpc__ && !defined __powerpc64__ \
++    || defined __arm__ && !defined __aarch64__
++        union {
++                uint64_t _64;
++                uint32_t _32[2];
++        } _mask;
++        _mask._64 = mask;
++
++        return syscall(__NR_fanotify_mark, fanotify_fd, flags,
++                       _mask._32[0], _mask._32[1], dfd, pathname);
++#else
++        return syscall(__NR_fanotify_mark, fanotify_fd, flags, mask, dfd, pathname);
++#endif
++}
++#endif
++
+ #ifndef HAVE_MEMFD_CREATE
+ static inline int memfd_create(const char *name, unsigned int flags) {
+         return syscall(__NR_memfd_create, name, flags);
diff --git a/SOURCES/0009-efi-never-call-qsort-on-potentially-NULL-arrays.patch b/SOURCES/0009-efi-never-call-qsort-on-potentially-NULL-arrays.patch
deleted file mode 100644
index 8cfb22b..0000000
--- a/SOURCES/0009-efi-never-call-qsort-on-potentially-NULL-arrays.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 650948f16d92ce6b55e01ff2c24ea00766d38474 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:38:09 +0200
-Subject: [PATCH] efi: never call qsort on potentially NULL arrays
-
----
- src/shared/efivars.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/efivars.c b/src/shared/efivars.c
-index 1d5b6f9..c015b16 100644
---- a/src/shared/efivars.c
-+++ b/src/shared/efivars.c
-@@ -384,7 +384,8 @@ int efi_get_boot_options(uint16_t **options) {
-                 list[count ++] = id;
-         }
- 
--        qsort(list, count, sizeof(uint16_t), cmp_uint16);
-+        if (list)
-+                qsort(list, count, sizeof(uint16_t), cmp_uint16);
- 
-         *options = list;
-         return count;
diff --git a/SOURCES/0010-Revert-readahead-wipe-out-readahead.patch b/SOURCES/0010-Revert-readahead-wipe-out-readahead.patch
new file mode 100644
index 0000000..fdf30a8
--- /dev/null
+++ b/SOURCES/0010-Revert-readahead-wipe-out-readahead.patch
@@ -0,0 +1,3376 @@
+From fff80c5a2aba519d1c58a1bfc7c0fa96b1e4c30c Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 19 Nov 2014 12:17:19 +0100
+Subject: [PATCH] Revert "readahead: wipe out readahead"
+
+This reverts commit d6bc8348d5be8576a475ac8ced2b0146e60fb71f.
+
+Conflicts:
+	units/systemd-firstboot.service.in
+
+Conflicts:
+	man/sd-daemon.xml
+	man/sd-login.xml
+	man/systemd-notify.xml
+	src/notify/notify.c
+---
+ Makefile-man.am                                 |  31 ++
+ Makefile.am                                     |  54 +-
+ configure.ac                                    |   9 +
+ man/sd-daemon.xml                               |   1 +
+ man/sd-login.xml                                |   1 +
+ man/sd-readahead.xml                            | 117 +++++
+ man/sd_readahead.xml                            | 178 +++++++
+ man/systemd-notify.xml                          |  11 +
+ man/systemd-readahead-replay.service.xml        | 203 ++++++++
+ po/POTFILES.skip                                |   1 +
+ shell-completion/zsh/_systemd                   |   3 +-
+ src/cryptsetup/cryptsetup-generator.c           |   2 +-
+ src/gpt-auto-generator/gpt-auto-generator.c     |   1 +
+ src/notify/notify.c                             |  20 +-
+ src/readahead/Makefile                          |   1 +
+ src/readahead/readahead-analyze.c               | 146 ++++++
+ src/readahead/readahead-collect.c               | 650 ++++++++++++++++++++++++
+ src/readahead/readahead-common.c                | 398 +++++++++++++++
+ src/readahead/readahead-common.h                |  61 +++
+ src/readahead/readahead-replay.c                | 281 ++++++++++
+ src/readahead/readahead.c                       | 163 ++++++
+ src/readahead/sd-readahead.c                    |  89 ++++
+ src/readahead/test-ssd.c                        |  41 ++
+ src/systemd/sd-readahead.h                      |  73 +++
+ system-preset/90-systemd.preset                 |   1 +
+ units/.gitignore                                |   3 +
+ units/ldconfig.service                          |   2 +-
+ units/quotaon.service.in                        |   2 +-
+ units/system-update.target                      |   2 +-
+ units/systemd-backlight@.service.in             |   2 +-
+ units/systemd-binfmt.service.in                 |   2 +-
+ units/systemd-firstboot.service.in              |   2 +-
+ units/systemd-fsck-root.service.in              |   1 +
+ units/systemd-fsck@.service.in                  |   2 +-
+ units/systemd-hwdb-update.service.in            |   2 +-
+ units/systemd-journal-catalog-update.service.in |   2 +-
+ units/systemd-modules-load.service.in           |   1 +
+ units/systemd-quotacheck.service.in             |   2 +-
+ units/systemd-random-seed.service.in            |   2 +-
+ units/systemd-readahead-collect.service.in      |  28 +
+ units/systemd-readahead-done.service.in         |  22 +
+ units/systemd-readahead-done.timer              |  22 +
+ units/systemd-readahead-drop.service            |  19 +
+ units/systemd-readahead-replay.service.in       |  26 +
+ units/systemd-remount-fs.service.in             |   2 +-
+ units/systemd-rfkill@.service.in                |   2 +-
+ units/systemd-sysctl.service.in                 |   1 +
+ units/systemd-sysusers.service.in               |   2 +-
+ units/systemd-tmpfiles-clean.service.in         |   2 +-
+ units/systemd-tmpfiles-setup-dev.service.in     |   2 +-
+ units/systemd-tmpfiles-setup.service.in         |   2 +-
+ units/systemd-update-done.service.in            |   2 +-
+ units/systemd-update-utmp.service.in            |   2 +-
+ units/systemd-vconsole-setup.service.in         |   1 +
+ 54 files changed, 2675 insertions(+), 23 deletions(-)
+ create mode 100644 man/sd-readahead.xml
+ create mode 100644 man/sd_readahead.xml
+ create mode 100644 man/systemd-readahead-replay.service.xml
+ create mode 120000 src/readahead/Makefile
+ create mode 100644 src/readahead/readahead-analyze.c
+ create mode 100644 src/readahead/readahead-collect.c
+ create mode 100644 src/readahead/readahead-common.c
+ create mode 100644 src/readahead/readahead-common.h
+ create mode 100644 src/readahead/readahead-replay.c
+ create mode 100644 src/readahead/readahead.c
+ create mode 100644 src/readahead/sd-readahead.c
+ create mode 100644 src/readahead/test-ssd.c
+ create mode 100644 src/systemd/sd-readahead.h
+ create mode 100644 units/systemd-readahead-collect.service.in
+ create mode 100644 units/systemd-readahead-done.service.in
+ create mode 100644 units/systemd-readahead-done.timer
+ create mode 100644 units/systemd-readahead-drop.service
+ create mode 100644 units/systemd-readahead-replay.service.in
+
+diff --git a/Makefile-man.am b/Makefile-man.am
+index d0fb9aa..ac6f69a 100644
+--- a/Makefile-man.am
++++ b/Makefile-man.am
+@@ -1234,6 +1234,34 @@ man/systemd-random-seed.html: man/systemd-random-seed.service.html
+ 
+ endif
+ 
++if ENABLE_READAHEAD
++MANPAGES += \
++	man/sd-readahead.3 \
++	man/sd_readahead.3 \
++	man/systemd-readahead-replay.service.8
++MANPAGES_ALIAS += \
++	man/systemd-readahead-collect.service.8 \
++	man/systemd-readahead-done.service.8 \
++	man/systemd-readahead-done.timer.8 \
++	man/systemd-readahead.8
++man/systemd-readahead-collect.service.8: man/systemd-readahead-replay.service.8
++man/systemd-readahead-done.service.8: man/systemd-readahead-replay.service.8
++man/systemd-readahead-done.timer.8: man/systemd-readahead-replay.service.8
++man/systemd-readahead.8: man/systemd-readahead-replay.service.8
++man/systemd-readahead-collect.service.html: man/systemd-readahead-replay.service.html
++	$(html-alias)
++
++man/systemd-readahead-done.service.html: man/systemd-readahead-replay.service.html
++	$(html-alias)
++
++man/systemd-readahead-done.timer.html: man/systemd-readahead-replay.service.html
++	$(html-alias)
++
++man/systemd-readahead.html: man/systemd-readahead-replay.service.html
++	$(html-alias)
++
++endif
++
+ if ENABLE_RESOLVED
+ MANPAGES += \
+ 	man/resolved.conf.5 \
+@@ -1660,6 +1688,7 @@ EXTRA_DIST += \
+ 	man/sd-id128.xml \
+ 	man/sd-journal.xml \
+ 	man/sd-login.xml \
++	man/sd-readahead.xml \
+ 	man/sd_booted.xml \
+ 	man/sd_bus_creds_get_pid.xml \
+ 	man/sd_bus_creds_new_from_pid.xml \
+@@ -1707,6 +1736,7 @@ EXTRA_DIST += \
+ 	man/sd_machine_get_class.xml \
+ 	man/sd_notify.xml \
+ 	man/sd_pid_get_session.xml \
++	man/sd_readahead.xml \
+ 	man/sd_seat_get_active.xml \
+ 	man/sd_session_is_active.xml \
+ 	man/sd_uid_get_state.xml \
+@@ -1766,6 +1796,7 @@ EXTRA_DIST += \
+ 	man/systemd-path.xml \
+ 	man/systemd-quotacheck.service.xml \
+ 	man/systemd-random-seed.service.xml \
++	man/systemd-readahead-replay.service.xml \
+ 	man/systemd-remount-fs.service.xml \
+ 	man/systemd-resolved.service.xml \
+ 	man/systemd-rfkill@.service.xml \
+diff --git a/Makefile.am b/Makefile.am
+index 70e4fbc..b0e4b5a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2603,7 +2603,8 @@ systemctl_LDADD = \
+ 
+ # ------------------------------------------------------------------------------
+ systemd_notify_SOURCES = \
+-	src/notify/notify.c
++	src/notify/notify.c \
++	src/readahead/sd-readahead.c
+ 
+ systemd_notify_LDADD = \
+ 	libsystemd-internal.la \
+@@ -4736,6 +4737,57 @@ EXTRA_DIST += \
+ 	units/systemd-vconsole-setup.service.in
+ 
+ # ------------------------------------------------------------------------------
++if ENABLE_READAHEAD
++systemd_readahead_SOURCES = \
++	src/readahead/readahead.c \
++	src/readahead/readahead-collect.c \
++	src/readahead/readahead-replay.c \
++	src/readahead/readahead-analyze.c \
++	src/readahead/readahead-common.c \
++	src/readahead/readahead-common.h
++
++systemd_readahead_LDADD = \
++	libsystemd-internal.la \
++	libudev-internal.la \
++	libsystemd-shared.la
++
++dist_doc_DATA += \
++	src/readahead/sd-readahead.c \
++	src/systemd/sd-readahead.h
++
++rootlibexec_PROGRAMS += \
++	systemd-readahead
++
++dist_systemunit_DATA += \
++	units/systemd-readahead-drop.service \
++	units/systemd-readahead-done.timer
++
++nodist_systemunit_DATA += \
++	units/systemd-readahead-collect.service \
++	units/systemd-readahead-replay.service \
++	units/systemd-readahead-done.service
++
++manual_tests += \
++	test-ssd
++
++test_ssd_SOURCES = \
++	src/readahead/test-ssd.c \
++	src/readahead/readahead-common.c \
++	src/readahead/readahead-common.h
++
++test_ssd_LDADD = \
++	libsystemd-internal.la \
++	libudev-internal.la \
++	libsystemd-shared.la
++
++endif
++
++EXTRA_DIST += \
++	units/systemd-readahead-collect.service.in \
++	units/systemd-readahead-replay.service.in \
++	units/systemd-readahead-done.service.in
++
++# ------------------------------------------------------------------------------
+ if ENABLE_BOOTCHART
+ systemd_bootchart_SOURCES = \
+ 	src/bootchart/bootchart.c \
+diff --git a/configure.ac b/configure.ac
+index 3f50887..f701bcf 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -931,6 +931,14 @@ fi
+ AM_CONDITIONAL(ENABLE_VCONSOLE, [test "$have_vconsole" = "yes"])
+ 
+ # ------------------------------------------------------------------------------
++have_readahead=no
++AC_ARG_ENABLE(readahead, AS_HELP_STRING([--disable-readahead], [disable readahead tools]))
++if test "x$enable_readahead" != "xno"; then
++        have_readahead=yes
++fi
++AM_CONDITIONAL(ENABLE_READAHEAD, [test "$have_readahead" = "yes"])
++
++# ------------------------------------------------------------------------------
+ have_bootchart=no
+ AC_ARG_ENABLE(bootchart, AS_HELP_STRING([--disable-bootchart], [disable bootchart tool]))
+ if test "x$enable_bootchart" != "xno"; then
+@@ -1474,6 +1482,7 @@ AC_MSG_RESULT([
+         ELFUTILS:                ${have_elfutils}
+         binfmt:                  ${have_binfmt}
+         vconsole:                ${have_vconsole}
++        readahead:               ${have_readahead}
+         bootchart:               ${have_bootchart}
+         quotacheck:              ${have_quotacheck}
+         tmpfiles:                ${have_tmpfiles}
+diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml
+index b7ba363..b12abe2 100644
+--- a/man/sd-daemon.xml
++++ b/man/sd-daemon.xml
+@@ -137,6 +137,7 @@
+       <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>fprintf</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++      <citerefentry><refentrytitle>sd-readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+diff --git a/man/sd-login.xml b/man/sd-login.xml
+index 328f711..abcdb99 100644
+--- a/man/sd-login.xml
++++ b/man/sd-login.xml
+@@ -128,6 +128,7 @@
+       <citerefentry><refentrytitle>sd_get_seats</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_login_monitor_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++      <citerefentry><refentrytitle>sd-readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry project='die-net'><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml
+new file mode 100644
+index 0000000..bcc46b2
+--- /dev/null
++++ b/man/sd-readahead.xml
+@@ -0,0 +1,117 @@
++<?xml version='1.0'?> <!--*-nxml-*-->
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
++
++<!--
++  This file is part of systemd.
++
++  Copyright 2010 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++-->
++
++<refentry id="sd-readahead" conditional='ENABLE_READAHEAD'>
++
++        <refentryinfo>
++                <title>sd-readahead</title>
++                <productname>systemd</productname>
++
++                <authorgroup>
++                        <author>
++                                <contrib>Developer</contrib>
++                                <firstname>Lennart</firstname>
++                                <surname>Poettering</surname>
++                                <email>lennart@poettering.net</email>
++                        </author>
++                </authorgroup>
++        </refentryinfo>
++
++        <refmeta>
++                <refentrytitle>sd-readahead</refentrytitle>
++                <manvolnum>3</manvolnum>
++        </refmeta>
++
++        <refnamediv>
++                <refname>sd-readahead</refname>
++                <refpurpose>Reference implementation of APIs for
++                controlling boot-time read-ahead</refpurpose>
++        </refnamediv>
++
++        <refsynopsisdiv>
++                <funcsynopsis>
++                        <funcsynopsisinfo>#include "sd-readahead.h"</funcsynopsisinfo>
++                </funcsynopsis>
++        </refsynopsisdiv>
++
++        <refsect1>
++                <title>Description</title>
++
++                <para><filename>sd-readahead.c</filename> and
++                <filename>sd-readahead.h</filename> provide a
++                reference implementation for APIs for controlling boot-time
++                read-ahead, as implemented by the read-ahead subsystem
++                of the
++                <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++                init system.</para>
++
++                <para>See
++                <citerefentry><refentrytitle>sd_readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++                for more information about the function
++                implemented.</para>
++        </refsect1>
++
++        <refsect1>
++                <title>Notes</title>
++
++                <para>This interface is provided by the reference
++                implementation of APIs for controlling boot-time
++                read-ahead and distributed with the systemd
++                package. The algorithms it implements are simple, and
++                can easily be reimplemented in daemons if it is
++                important to support this interface without using the
++                reference implementation. See the respective function
++                man pages for details.</para>
++
++                <para>In addition, for details about the algorithms,
++                check the liberally licensed reference implementation
++                sources:
++                <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/readahead/sd-readahead.c"/>
++                and <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-readahead.h"/></para>
++
++                <para>These APIs are implemented in the reference
++                implementation's drop-in
++                <filename>sd-readahead.c</filename> and
++                <filename>sd-readahead.h</filename> files. It is
++                recommended that applications consuming these APIs copy
++                the implementation into their source tree, either
++                verbatim or in excerpts. These interfaces are
++                currently not available in a dynamic library.</para>
++
++                <para>The functions provided by this interface become
++                NOPs when -DDISABLE_SYSTEMD is set during
++                compilation. In addition, if
++                <filename>sd-readhead.c</filename> is compiled on
++                non-Linux systems it becomes NOPs.</para>
++        </refsect1>
++
++        <refsect1>
++                <title>See Also</title>
++                <para>
++                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++                        <citerefentry><refentrytitle>sd_readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++                        <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++                </para>
++        </refsect1>
++
++</refentry>
+diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml
+new file mode 100644
+index 0000000..9827299
+--- /dev/null
++++ b/man/sd_readahead.xml
+@@ -0,0 +1,178 @@
++<?xml version='1.0'?> <!--*-nxml-*-->
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
++
++<!--
++  This file is part of systemd.
++
++  Copyright 2010 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++-->
++
++<refentry id="sd_readahead" conditional='ENABLE_READAHEAD'>
++
++        <refentryinfo>
++                <title>sd_readahead</title>
++                <productname>systemd</productname>
++
++                <authorgroup>
++                        <author>
++                                <contrib>Developer</contrib>
++                                <firstname>Lennart</firstname>
++                                <surname>Poettering</surname>
++                                <email>lennart@poettering.net</email>
++                        </author>
++                </authorgroup>
++        </refentryinfo>
++
++        <refmeta>
++                <refentrytitle>sd_readahead</refentrytitle>
++                <manvolnum>3</manvolnum>
++        </refmeta>
++
++        <refnamediv>
++                <refname>sd_readahead</refname>
++                <refpurpose>Control ongoing disk boot-time read-ahead operations</refpurpose>
++        </refnamediv>
++
++        <refsynopsisdiv>
++                <funcsynopsis>
++                        <funcsynopsisinfo>#include "sd-readahead.h"</funcsynopsisinfo>
++
++                        <funcprototype>
++                                <funcdef>int <function>sd_readahead</function></funcdef>
++                                <paramdef>const char *<parameter>action</parameter></paramdef>
++                        </funcprototype>
++                </funcsynopsis>
++        </refsynopsisdiv>
++
++        <refsect1>
++                <title>Description</title>
++                <para><function>sd_readahead()</function> may be
++                called by programs involved with early boot-up to
++                control ongoing boot-time disk read-ahead operations. It may be
++                used to terminate read-ahead operations in case an
++                uncommon disk access pattern is to be expected and
++                hence read-ahead replay or collection is unlikely to
++                have the desired speed-up effect on the current or
++                future boot-ups.</para>
++
++                <para>The <parameter>action</parameter> should be one
++                of the following strings:</para>
++
++                <variablelist>
++                        <varlistentry>
++                                <term>cancel</term>
++
++                                <listitem><para>Terminates read-ahead
++                                data collection, and drops all
++                                read-ahead data collected during this
++                                boot-up.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term>done</term>
++
++                                <listitem><para>Terminates read-ahead
++                                data collection, but keeps all
++                                read-ahead data collected during this
++                                boot-up around for use during
++                                subsequent boot-ups.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term>noreplay</term>
++
++                                <listitem><para>Terminates read-ahead
++                                replay.</para></listitem>
++                        </varlistentry>
++
++                </variablelist>
++
++        </refsect1>
++
++        <refsect1>
++                <title>Return Value</title>
++
++                <para>On failure, these calls return a negative
++                errno-style error code. It is generally recommended to
++                ignore the return value of this call.</para>
++        </refsect1>
++
++        <refsect1>
++                <title>Notes</title>
++
++                <para>This function is provided by the reference
++                implementation of APIs for controlling boot-time
++                read-ahead and distributed with the systemd
++                package. The algorithm it implements is simple, and
++                can easily be reimplemented in daemons if it is
++                important to support this interface without using the
++                reference implementation.</para>
++
++                <para>Internally, this function creates a file in
++                <filename>/run/systemd/readahead/</filename> which is
++                then used as flag file to notify the read-ahead
++                subsystem.</para>
++
++                <para>For details about the algorithm check the
++                liberally licensed reference implementation sources:
++                <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/readahead/sd-readahead.c"/>
++                and <ulink
++                url="http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-readahead.h"/></para>
++
++                <para><function>sd_readahead()</function> is
++                implemented in the reference implementation's drop-in
++                <filename>sd-readahead.c</filename> and
++                <filename>sd-readahead.h</filename> files. It is
++                recommended that applications consuming this API copy
++                the implementation into their source tree. For more
++                details about the reference implementation, see
++                <citerefentry><refentrytitle>sd-readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry></para>
++
++                <para>If -DDISABLE_SYSTEMD is set during compilation,
++                this function will always return 0 and otherwise
++                become a NOP.</para>
++        </refsect1>
++
++        <refsect1>
++                <title>Examples</title>
++
++                <example>
++                        <title>Cancelling all read-ahead operations</title>
++
++                        <para>During boots where SELinux has to
++                        relabel the file system hierarchy, it will
++                        create a large amount of disk accesses that
++                        are not necessary during normal boots. Hence
++                        it is a good idea to disable both read-ahead replay and read-ahead collection.
++                        </para>
++
++                        <programlisting>sd_readahead("cancel");
++sd_readahead("noreplay");</programlisting>
++                </example>
++
++        </refsect1>
++
++        <refsect1>
++                <title>See Also</title>
++                <para>
++                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++                        <citerefentry><refentrytitle>sd-readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++                        <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++                </para>
++        </refsect1>
++
++</refentry>
+diff --git a/man/systemd-notify.xml b/man/systemd-notify.xml
+index 06d5ae5..46ede1a 100644
+--- a/man/systemd-notify.xml
++++ b/man/systemd-notify.xml
+@@ -127,6 +127,17 @@
+         <citerefentry><refentrytitle>sd_booted</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para></listitem>
+       </varlistentry>
+ 
++      <varlistentry>
++        <term><option>--readahead=</option></term>
++
++        <listitem><para>Controls disk
++        read-ahead operations. The argument
++        must be a string, and either "cancel",
++        "done" or "noreplay". For details
++        about the semantics of this option see
++        <citerefentry><refentrytitle>sd_readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para></listitem>
++       </varlistentry>
++
+       <xi:include href="standard-options.xml" xpointer="help" />
+       <xi:include href="standard-options.xml" xpointer="version" />
+     </variablelist>
+diff --git a/man/systemd-readahead-replay.service.xml b/man/systemd-readahead-replay.service.xml
+new file mode 100644
+index 0000000..669fe78
+--- /dev/null
++++ b/man/systemd-readahead-replay.service.xml
+@@ -0,0 +1,203 @@
++<?xml version='1.0'?> <!--*-nxml-*-->
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
++
++<!--
++  This file is part of systemd.
++
++  Copyright 2010 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++-->
++
++<refentry id="systemd-readahead-replay.service" conditional='ENABLE_READAHEAD'
++          xmlns:xi="http://www.w3.org/2001/XInclude">
++
++        <refentryinfo>
++                <title>systemd-readahead-replay.service</title>
++                <productname>systemd</productname>
++
++                <authorgroup>
++                        <author>
++                                <contrib>Developer</contrib>
++                                <firstname>Lennart</firstname>
++                                <surname>Poettering</surname>
++                                <email>lennart@poettering.net</email>
++                        </author>
++                </authorgroup>
++        </refentryinfo>
++
++        <refmeta>
++                <refentrytitle>systemd-readahead-replay.service</refentrytitle>
++                <manvolnum>8</manvolnum>
++        </refmeta>
++
++        <refnamediv>
++                <refname>systemd-readahead-replay.service</refname>
++                <refname>systemd-readahead-collect.service</refname>
++                <refname>systemd-readahead-done.service</refname>
++                <refname>systemd-readahead-done.timer</refname>
++                <refname>systemd-readahead</refname>
++                <refpurpose>Disk read ahead logic</refpurpose>
++        </refnamediv>
++
++        <refsynopsisdiv>
++                <para><filename>systemd-readahead-replay.service</filename></para>
++                <para><filename>systemd-readahead-collect.service</filename></para>
++                <para><filename>systemd-readahead-done.service</filename></para>
++                <para><filename>systemd-readahead-done.timer</filename></para>
++                <cmdsynopsis>
++                        <command>/usr/lib/systemd/systemd-readahead/systemd-readahead</command>
++                        <arg choice="opt" rep="repeat">OPTIONS</arg>
++                        <arg choice="plain">COMMAND</arg>
++                        <arg choice="opt">DIRECTORY | FILE</arg>
++                </cmdsynopsis>
++        </refsynopsisdiv>
++
++        <refsect1>
++                <title>Description</title>
++
++                <para><filename>systemd-readahead-collect.service</filename>
++                is a service that collects disk usage patterns at boot
++                time. <filename>systemd-readahead-replay.service</filename>
++                is a service that replays this access data collected
++                at the subsequent boot. Since disks tend to be
++                magnitudes slower than RAM, this is intended to improve
++                boot speeds by pre-loading early at boot all data on
++                disk that is known to be read for the complete boot
++                process.</para>
++
++                <para><filename>systemd-readahead-done.service</filename>
++                is executed a short while after boot completed and signals
++                <filename>systemd-readahead-collect.service</filename>
++                to end data collection. On this signal, this service
++                will then sort the collected disk accesses and store
++                information about them in
++                <filename>/.readahead</filename>.</para>
++
++                <para>Normally, both
++                <filename>systemd-readahead-collect.service</filename>
++                and
++                <filename>systemd-readahead-replay.service</filename>
++                are activated at boot so that access patterns from the
++                preceding boot are replayed and new data collected
++                for the subsequent boot. However, on read-only media
++                where the collected data cannot be stored, it might
++                be a good idea to disable
++                <filename>systemd-readahead-collect.service</filename>.</para>
++
++                <para>On rotating media, when replaying disk accesses
++                at early boot,
++                <filename>systemd-readahead-replay.service</filename>
++                will order read requests by their location on disk. On
++                non-rotating media, they will be ordered by their
++                original access timestamp. If the file system supports
++                it,
++                <filename>systemd-readahead-collect.service</filename>
++                will also defragment and rearrange files on disk to
++                optimize subsequent boot times.</para>
++        </refsect1>
++
++        <refsect1>
++                <title>Options</title>
++
++                <para><filename>systemd-readahead</filename> understands
++                the following options:</para>
++
++                <variablelist>
++                        <varlistentry>
++                                <term><option>--files-max=</option></term>
++
++                                <listitem><para>Maximum number of
++                                files to read ahead. Only valid
++                                for thes <command>collect</command>
++                                command.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term><option>--file-size-max=</option></term>
++
++                                <listitem><para>Maximum size of files
++                                in bytes to read ahead. Only valid
++                                for the <command>collect</command>
++                                and <command>replay</command>
++                                commands.</para></listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term><option>--timeout=</option></term>
++
++                                <listitem><para>Maximum time in microseconds
++                                to spend collecting data. Only valid
++                                for the <command>collect</command>
++                                command.</para></listitem>
++                        </varlistentry>
++
++                        <xi:include href="standard-options.xml" xpointer="help" />
++                        <xi:include href="standard-options.xml" xpointer="version" />
++                </variablelist>
++
++        </refsect1>
++
++        <refsect1>
++                <title>Commands</title>
++
++                <para>The following commands are understood by
++                <filename>systemd-readahead</filename>:</para> <variablelist>
++                        <varlistentry>
++                                <term><command>collect
++                                [<replaceable>DIRECTORY</replaceable>]</command></term>
++                                <listitem>
++                                        <para>Collect read-ahead data on
++                                        early boot. When terminating, it will
++                                        write out a pack file to the indicated
++                                        directory containing the read-ahead
++                                        data. </para>
++                                </listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term><command>replay
++                                [<replaceable>DIRECTORY</replaceable>]</command></term>
++                                <listitem>
++                                        <para>Perform read-ahead on the
++                                        specified directory tree.</para>
++                                </listitem>
++                        </varlistentry>
++
++                        <varlistentry>
++                                <term><command>analyze
++                                [<replaceable>FILE</replaceable>]</command></term>
++                                <listitem>
++                                        <para>Dumps the content of the
++                                        read-ahead pack file to the
++                                        terminal. For each file, the
++                                        output lists approximately how
++                                        much will be read ahead by
++                                        the <command>replay</command>
++                                        command.</para>
++                                </listitem>
++                        </varlistentry>
++
++                </variablelist>
++        </refsect1>
++
++        <refsect1>
++                <title>See Also</title>
++                <para>
++                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++                </para>
++        </refsect1>
++
++</refentry>
+diff --git a/po/POTFILES.skip b/po/POTFILES.skip
+index 51254ec..b552029 100644
+--- a/po/POTFILES.skip
++++ b/po/POTFILES.skip
+@@ -17,5 +17,6 @@ src/hostname/hostnamed.c
+ src/locale/localed.c
+ src/core/org.freedesktop.systemd1.policy.in
+ src/timedate/timedated.c
++units/systemd-readahead-done.service.in
+ units/user@.service.in
+ units/debug-shell.service.in
+diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd
+index 58b1c7b..06f03bd 100644
+--- a/shell-completion/zsh/_systemd
++++ b/shell-completion/zsh/_systemd
+@@ -63,7 +63,8 @@ case "$service" in
+             '--ready[Inform the init system about service start-up completion.]' \
+             '--pid=[Inform the init system about the main PID of the daemon]' \
+             '--status=[Send a free-form status string for the daemon to the init systemd]' \
+-            '--booted[Returns 0 if the system was booted up with systemd]'
++            '--booted[Returns 0 if the system was booted up with systemd]' \
++            '--readahead=[Controls disk read-ahead operations]:arguments:(cancel done noreply)'
+     ;;
+     systemd-tty-ask-password-agent)
+         _arguments \
+diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
+index 05061c0..dfbca87 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -111,7 +111,7 @@ static int create_disk(
+                 "Conflicts=umount.target\n"
+                 "BindsTo=dev-mapper-%i.device\n"
+                 "IgnoreOnIsolate=true\n"
+-                "After=cryptsetup-pre.target\n",
++                "After=systemd-readahead-collect.service systemd-readahead-replay.service cryptsetup-pre.target\n",
+                 f);
+ 
+         if (!nofail)
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index 5c58b58..7d5a6c6 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -133,6 +133,7 @@ static int add_cryptsetup(const char *id, const char *what, bool rw, char **devi
+                 "Before=umount.target cryptsetup.target\n"
+                 "After=%s\n"
+                 "IgnoreOnIsolate=true\n"
++                "After=systemd-readahead-collect.service systemd-readahead-replay.service\n\n"
+                 "[Service]\n"
+                 "Type=oneshot\n"
+                 "RemainAfterExit=yes\n"
+diff --git a/src/notify/notify.c b/src/notify/notify.c
+index f98075d..e4a128b 100644
+--- a/src/notify/notify.c
++++ b/src/notify/notify.c
+@@ -31,6 +31,7 @@
+ #include "strv.h"
+ #include "util.h"
+ #include "log.h"
++#include "sd-readahead.h"
+ #include "build.h"
+ #include "env-util.h"
+ 
+@@ -38,6 +39,7 @@ static bool arg_ready = false;
+ static pid_t arg_pid = 0;
+ static const char *arg_status = NULL;
+ static bool arg_booted = false;
++static const char *arg_readahead = NULL;
+ 
+ static void help(void) {
+         printf("%s [OPTIONS...] [VARIABLE=VALUE...]\n\n"
+@@ -48,6 +50,7 @@ static void help(void) {
+                "     --pid[=PID]       Set main pid of daemon\n"
+                "     --status=TEXT     Set status text\n"
+                "     --booted          Check if the system was booted up with systemd\n",
++               "     --readahead=ACTION Controls read-ahead operations\n",
+                program_invocation_short_name);
+ }
+ 
+@@ -59,6 +62,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 ARG_PID,
+                 ARG_STATUS,
+                 ARG_BOOTED,
++                ARG_READAHEAD
+         };
+ 
+         static const struct option options[] = {
+@@ -68,6 +72,7 @@ static int parse_argv(int argc, char *argv[]) {
+                 { "pid",       optional_argument, NULL, ARG_PID       },
+                 { "status",    required_argument, NULL, ARG_STATUS    },
+                 { "booted",    no_argument,       NULL, ARG_BOOTED    },
++                { "readahead", required_argument, NULL, ARG_READAHEAD },
+                 {}
+         };
+ 
+@@ -113,6 +118,10 @@ static int parse_argv(int argc, char *argv[]) {
+                         arg_booted = true;
+                         break;
+ 
++                case ARG_READAHEAD:
++                        arg_readahead = optarg;
++                        break;
++
+                 case '?':
+                         return -EINVAL;
+ 
+@@ -125,7 +134,8 @@ static int parse_argv(int argc, char *argv[]) {
+             !arg_ready &&
+             !arg_status &&
+             !arg_pid &&
+-            !arg_booted) {
++            !arg_booted &&
++            !arg_readahead) {
+                 help();
+                 return -EINVAL;
+         }
+@@ -150,6 +160,14 @@ int main(int argc, char* argv[]) {
+         if (arg_booted)
+                 return sd_booted() <= 0;
+ 
++        if (arg_readahead) {
++                r = sd_readahead(arg_readahead);
++                if (r < 0) {
++                        log_error("Failed to issue read-ahead control command: %s", strerror(-r));
++                        goto finish;
++                }
++        }
++
+         if (arg_ready)
+                 our_env[i++] = (char*) "READY=1";
+ 
+diff --git a/src/readahead/Makefile b/src/readahead/Makefile
+new file mode 120000
+index 0000000..d0b0e8e
+--- /dev/null
++++ b/src/readahead/Makefile
+@@ -0,0 +1 @@
++../Makefile
+\ No newline at end of file
+diff --git a/src/readahead/readahead-analyze.c b/src/readahead/readahead-analyze.c
+new file mode 100644
+index 0000000..76db3cb
+--- /dev/null
++++ b/src/readahead/readahead-analyze.c
+@@ -0,0 +1,146 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2012 Auke Kok <auke-jan.h.kok@intel.com>
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <stdbool.h>
++#include <unistd.h>
++#include <inttypes.h>
++#include <linux/limits.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <string.h>
++
++#include "readahead-common.h"
++
++int main_analyze(const char *pack_path) {
++        char line[LINE_MAX];
++        _cleanup_fclose_ FILE *pack = NULL;
++        int a;
++        int missing = 0;
++        size_t tsize = 0;
++
++        if (!pack_path)
++                pack_path = "/.readahead";
++
++        pack = fopen(pack_path, "re");
++        if (!pack) {
++                log_error("Pack file missing.");
++                goto fail;
++        }
++
++        if (!fgets(line, sizeof(line), pack)) {
++                log_error("Pack file corrupt.");
++                goto fail;
++        }
++
++        char_array_0(line);
++
++        if (!endswith(line, READAHEAD_PACK_FILE_VERSION)) {
++                log_error("Pack file version incompatible with this parser.");
++                goto fail;
++        }
++
++        if ((a = getc(pack)) == EOF) {
++                log_error("Pack file corrupt.");
++                goto fail;
++        }
++
++        fputs("   pct  sections     size: path\n"
++              "   ===  ========     ====: ====\n", stdout);
++
++        for (;;) {
++                char path[PATH_MAX];
++                struct stat st;
++                uint64_t inode;
++                int pages = 0;
++                int sections = 0;
++
++                if (!fgets(path, sizeof(path), pack))
++                        break; /* done */
++
++                path[strlen(path)-1] = 0;
++
++                if (fread(&inode, sizeof(inode), 1, pack) != 1) {
++                        log_error("Pack file corrupt.");
++                        goto fail;
++                }
++
++                for (;;) {
++                        uint32_t b, c;
++
++                        if (fread(&b, sizeof(b), 1, pack) != 1  ||
++                            fread(&c, sizeof(c), 1, pack) != 1) {
++                                log_error("Pack file corrupt.");
++                                goto fail;
++                        }
++                        if ((b == 0) && (c == 0))
++                                break;
++
++                        /* Uncomment this to get all the chunks separately
++                           printf(" %d: %d %d\n", sections, b, c);
++                         */
++
++                        pages += (c - b);
++                        sections++;
++                }
++
++                if (stat(path, &st) == 0) {
++                        off_t size;
++
++                        if (sections == 0)
++                                size = st.st_size;
++                        else
++                                size = pages * page_size();
++
++                        tsize += size;
++
++                        printf("  %4jd%% (%2d) %12jd: %s\n",
++                               (intmax_t) (sections && st.st_size ? size * 100 / st.st_size : 100),
++                               sections ? sections : 1,
++                               (intmax_t) size,
++                               path);
++                } else {
++                        printf("  %4dp (%2d) %12s: %s (MISSING)\n",
++                                sections ? pages : -1,
++                                sections ? sections : 1,
++                                "???",
++                                path);
++                        missing++;
++                }
++
++        }
++
++        printf("\nHOST:    %s"
++               "TYPE:    %c\n"
++               "MISSING: %d\n"
++               "TOTAL:   %zu\n",
++               line,
++               a,
++               missing,
++               tsize);
++
++        return EXIT_SUCCESS;
++
++fail:
++        return EXIT_FAILURE;
++}
+diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
+new file mode 100644
+index 0000000..822a803
+--- /dev/null
++++ b/src/readahead/readahead-collect.c
+@@ -0,0 +1,650 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2010 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <errno.h>
++#include <inttypes.h>
++#include <fcntl.h>
++#include <linux/limits.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/select.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <unistd.h>
++#include <linux/fanotify.h>
++#include <sys/signalfd.h>
++#include <sys/poll.h>
++#include <sys/mman.h>
++#include <linux/fs.h>
++#include <linux/fiemap.h>
++#include <sys/ioctl.h>
++#include <sys/vfs.h>
++#include <getopt.h>
++#include <sys/inotify.h>
++#include <math.h>
++
++#ifdef HAVE_LINUX_BTRFS_H
++#include <linux/btrfs.h>
++#endif
++
++#ifdef HAVE_FANOTIFY_INIT
++#include <sys/fanotify.h>
++#endif
++
++#include "systemd/sd-daemon.h"
++
++#include "missing.h"
++#include "util.h"
++#include "set.h"
++#include "ioprio.h"
++#include "readahead-common.h"
++#include "virt.h"
++
++/* fixme:
++ *
++ * - detect ssd on btrfs/lvm...
++ * - read ahead directories
++ * - gzip?
++ * - remount rw?
++ * - handle files where nothing is in mincore
++ * - does ioprio_set work with fadvise()?
++ */
++
++static ReadaheadShared *shared = NULL;
++static usec_t starttime;
++
++/* Avoid collisions with the NULL pointer */
++#define SECTOR_TO_PTR(s) ULONG_TO_PTR((s)+1)
++#define PTR_TO_SECTOR(p) (PTR_TO_ULONG(p)-1)
++
++static int btrfs_defrag(int fd) {
++        struct btrfs_ioctl_vol_args data = { .fd = fd };
++
++        return ioctl(fd, BTRFS_IOC_DEFRAG, &data);
++}
++
++static int pack_file(FILE *pack, const char *fn, bool on_btrfs) {
++        struct stat st;
++        void *start = MAP_FAILED;
++        uint8_t *vec;
++        uint32_t b, c;
++        uint64_t inode;
++        size_t l, pages;
++        bool mapped;
++        int r = 0, fd = -1, k;
++
++        assert(pack);
++        assert(fn);
++
++        fd = open(fn, O_RDONLY|O_CLOEXEC|O_NOATIME|O_NOCTTY|O_NOFOLLOW);
++        if (fd < 0) {
++
++                if (errno == ENOENT)
++                        return 0;
++
++                if (errno == EPERM || errno == EACCES)
++                        return 0;
++
++                log_warning("open(%s) failed: %m", fn);
++                r = -errno;
++                goto finish;
++        }
++
++        k = file_verify(fd, fn, arg_file_size_max, &st);
++        if (k <= 0) {
++                r = k;
++                goto finish;
++        }
++
++        if (on_btrfs)
++                btrfs_defrag(fd);
++
++        l = PAGE_ALIGN(st.st_size);
++        start = mmap(NULL, l, PROT_READ, MAP_SHARED, fd, 0);
++        if (start == MAP_FAILED) {
++                log_warning("mmap(%s) failed: %m", fn);
++                r = -errno;
++                goto finish;
++        }
++
++        pages = l / page_size();
++        vec = alloca0(pages);
++        if (mincore(start, l, vec) < 0) {
++                log_warning("mincore(%s) failed: %m", fn);
++                r = -errno;
++                goto finish;
++        }
++
++        fputs(fn, pack);
++        fputc('\n', pack);
++
++        /* Store the inode, so that we notice when the file is deleted */
++        inode = (uint64_t) st.st_ino;
++        fwrite(&inode, sizeof(inode), 1, pack);
++
++        mapped = false;
++        for (c = 0; c < pages; c++) {
++                bool new_mapped = !!(vec[c] & 1);
++
++                if (!mapped && new_mapped)
++                        b = c;
++                else if (mapped && !new_mapped) {
++                        fwrite(&b, sizeof(b), 1, pack);
++                        fwrite(&c, sizeof(c), 1, pack);
++
++                        log_debug("%s: page %u to %u", fn, b, c);
++                }
++
++                mapped = new_mapped;
++        }
++
++        /* We don't write any range data if we should read the entire file */
++        if (mapped && b > 0) {
++                fwrite(&b, sizeof(b), 1, pack);
++                fwrite(&c, sizeof(c), 1, pack);
++
++                log_debug("%s: page %u to %u", fn, b, c);
++        }
++
++        /* End marker */
++        b = 0;
++        fwrite(&b, sizeof(b), 1, pack);
++        fwrite(&b, sizeof(b), 1, pack);
++
++finish:
++        if (start != MAP_FAILED)
++                munmap(start, l);
++
++        safe_close(fd);
++
++        return r;
++}
++
++static unsigned long fd_first_block(int fd) {
++        struct {
++                struct fiemap fiemap;
++                struct fiemap_extent extent;
++        } data = {
++                .fiemap.fm_length = ~0ULL,
++                .fiemap.fm_extent_count = 1,
++        };
++
++        if (ioctl(fd, FS_IOC_FIEMAP, &data) < 0)
++                return 0;
++
++        if (data.fiemap.fm_mapped_extents <= 0)
++                return 0;
++
++        if (data.fiemap.fm_extents[0].fe_flags & FIEMAP_EXTENT_UNKNOWN)
++                return 0;
++
++        return (unsigned long) data.fiemap.fm_extents[0].fe_physical;
++}
++
++struct item {
++        const char *path;
++        unsigned long block;
++        unsigned long bin;
++};
++
++static int qsort_compare(const void *a, const void *b) {
++        const struct item *i, *j;
++
++        i = a;
++        j = b;
++
++        /* sort by bin first */
++        if (i->bin < j->bin)
++                return -1;
++        if (i->bin > j->bin)
++                return 1;
++
++        /* then sort by sector */
++        if (i->block < j->block)
++                return -1;
++        if (i->block > j->block)
++                return 1;
++
++        return strcmp(i->path, j->path);
++}
++
++static int collect(const char *root) {
++        enum {
++                FD_FANOTIFY,  /* Get the actual fs events */
++                FD_SIGNAL,
++                FD_INOTIFY,   /* We get notifications to quit early via this fd */
++                _FD_MAX
++        };
++        struct pollfd pollfd[_FD_MAX] = {};
++        int fanotify_fd = -1, signal_fd = -1, inotify_fd = -1, r = 0;
++        pid_t my_pid;
++        Hashmap *files = NULL;
++        Iterator i;
++        char *p, *q;
++        sigset_t mask;
++        FILE *pack = NULL;
++        char *pack_fn_new = NULL, *pack_fn = NULL;
++        bool on_ssd, on_btrfs;
++        struct statfs sfs;
++        usec_t not_after;
++        uint64_t previous_block_readahead;
++        bool previous_block_readahead_set = false;
++
++        assert(root);
++
++        if (asprintf(&pack_fn, "%s/.readahead", root) < 0) {
++                r = log_oom();
++                goto finish;
++        }
++
++        starttime = now(CLOCK_MONOTONIC);
++
++        /* If there's no pack file yet we lower the kernel readahead
++         * so that mincore() is accurate. If there is a pack file
++         * already we assume it is accurate enough so that kernel
++         * readahead is never triggered. */
++        previous_block_readahead_set =
++                access(pack_fn, F_OK) < 0 &&
++                block_get_readahead(root, &previous_block_readahead) >= 0 &&
++                block_set_readahead(root, 8*1024) >= 0;
++
++        if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(), IOPRIO_PRIO_VALUE(IOPRIO_CLASS_IDLE, 0)) < 0)
++                log_warning("Failed to set IDLE IO priority class: %m");
++
++        assert_se(sigemptyset(&mask) == 0);
++        sigset_add_many(&mask, SIGINT, SIGTERM, -1);
++        assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
++
++        if ((signal_fd = signalfd(-1, &mask, SFD_NONBLOCK|SFD_CLOEXEC)) < 0) {
++                log_error("signalfd(): %m");
++                r = -errno;
++                goto finish;
++        }
++
++        files = hashmap_new(&string_hash_ops);
++        if (!files) {
++                log_error("Failed to allocate set.");
++                r = -ENOMEM;
++                goto finish;
++        }
++
++        fanotify_fd = fanotify_init(FAN_CLOEXEC|FAN_NONBLOCK, O_RDONLY|O_LARGEFILE|O_CLOEXEC|O_NOATIME);
++        if (fanotify_fd < 0)  {
++                log_error("Failed to create fanotify object: %m");
++                r = -errno;
++                goto finish;
++        }
++
++        if (fanotify_mark(fanotify_fd, FAN_MARK_ADD|FAN_MARK_MOUNT, FAN_OPEN, AT_FDCWD, root) < 0) {
++                log_error("Failed to mark %s: %m", root);
++                r = -errno;
++                goto finish;
++        }
++
++        inotify_fd = open_inotify();
++        if (inotify_fd < 0) {
++                r = inotify_fd;
++                goto finish;
++        }
++
++        not_after = now(CLOCK_MONOTONIC) + arg_timeout;
++
++        my_pid = getpid();
++
++        pollfd[FD_FANOTIFY].fd = fanotify_fd;
++        pollfd[FD_FANOTIFY].events = POLLIN;
++        pollfd[FD_SIGNAL].fd = signal_fd;
++        pollfd[FD_SIGNAL].events = POLLIN;
++        pollfd[FD_INOTIFY].fd = inotify_fd;
++        pollfd[FD_INOTIFY].events = POLLIN;
++
++        sd_notify(0,
++                  "READY=1\n"
++                  "STATUS=Collecting readahead data");
++
++        log_debug("Collecting...");
++
++        if (access("/run/systemd/readahead/cancel", F_OK) >= 0) {
++                log_debug("Collection canceled");
++                r = -ECANCELED;
++                goto finish;
++        }
++
++        if (access("/run/systemd/readahead/done", F_OK) >= 0) {
++                log_debug("Got termination request");
++                goto done;
++        }
++
++        for (;;) {
++                union {
++                        struct fanotify_event_metadata metadata;
++                        char buffer[4096];
++                } data;
++                ssize_t n;
++                struct fanotify_event_metadata *m;
++                usec_t t;
++                int h;
++
++                if (hashmap_size(files) > arg_files_max) {
++                        log_debug("Reached maximum number of read ahead files, ending collection.");
++                        break;
++                }
++
++                t = now(CLOCK_MONOTONIC);
++                if (t >= not_after) {
++                        log_debug("Reached maximum collection time, ending collection.");
++                        break;
++                }
++
++                if ((h = poll(pollfd, _FD_MAX, (int) ((not_after - t) / USEC_PER_MSEC))) < 0) {
++
++                        if (errno == EINTR)
++                                continue;
++
++                        log_error("poll(): %m");
++                        r = -errno;
++                        goto finish;
++                }
++
++                if (h == 0) {
++                        log_debug("Reached maximum collection time, ending collection.");
++                        break;
++                }
++
++                if (pollfd[FD_SIGNAL].revents) {
++                        log_debug("Got signal.");
++                        break;
++                }
++
++                if (pollfd[FD_INOTIFY].revents) {
++                        uint8_t inotify_buffer[sizeof(struct inotify_event) + FILENAME_MAX];
++                        struct inotify_event *e;
++
++                        if ((n = read(inotify_fd, &inotify_buffer, sizeof(inotify_buffer))) < 0) {
++                                if (errno == EINTR || errno == EAGAIN)
++                                        continue;
++
++                                log_error("Failed to read inotify event: %m");
++                                r = -errno;
++                                goto finish;
++                        }
++
++                        e = (struct inotify_event*) inotify_buffer;
++                        while (n > 0) {
++                                size_t step;
++
++                                if ((e->mask & IN_CREATE) && streq(e->name, "cancel")) {
++                                        log_debug("Collection canceled");
++                                        r = -ECANCELED;
++                                        goto finish;
++                                }
++
++                                if ((e->mask & IN_CREATE) && streq(e->name, "done")) {
++                                        log_debug("Got termination request");
++                                        goto done;
++                                }
++
++                                step = sizeof(struct inotify_event) + e->len;
++                                assert(step <= (size_t) n);
++
++                                e = (struct inotify_event*) ((uint8_t*) e + step);
++                                n -= step;
++                        }
++                }
++
++                n = read(fanotify_fd, &data, sizeof(data));
++                if (n < 0) {
++
++                        if (errno == EINTR || errno == EAGAIN)
++                                continue;
++
++                        /* fanotify sometimes returns EACCES on read()
++                         * where it shouldn't. For now let's just
++                         * ignore it here (which is safe), but
++                         * eventually this should be
++                         * dropped when the kernel is fixed.
++                         *
++                         * https://bugzilla.redhat.com/show_bug.cgi?id=707577 */
++                        if (errno == EACCES)
++                                continue;
++
++                        log_error("Failed to read event: %m");
++                        r = -errno;
++                        goto finish;
++                }
++
++                for (m = &data.metadata; FAN_EVENT_OK(m, n); m = FAN_EVENT_NEXT(m, n)) {
++                        char fn[sizeof("/proc/self/fd/") + DECIMAL_STR_MAX(int)];
++                        int k;
++
++                        if (m->fd < 0)
++                                goto next_iteration;
++
++                        if (m->pid == my_pid)
++                                goto next_iteration;
++
++                        __sync_synchronize();
++                        if (m->pid == shared->replay)
++                                goto next_iteration;
++
++                        snprintf(fn, sizeof(fn), "/proc/self/fd/%i", m->fd);
++                        k = readlink_malloc(fn, &p);
++                        if (k >= 0) {
++                                if (startswith(p, "/tmp") ||
++                                    endswith(p, " (deleted)") ||
++                                    hashmap_get(files, p))
++                                        /* Not interesting, or
++                                         * already read */
++                                        free(p);
++                                else {
++                                        unsigned long ul;
++                                        usec_t entrytime;
++                                        struct item *entry;
++
++                                        entry = new0(struct item, 1);
++                                        if (!entry) {
++                                                r = log_oom();
++                                                goto finish;
++                                        }
++
++                                        ul = fd_first_block(m->fd);
++
++                                        entrytime = now(CLOCK_MONOTONIC);
++
++                                        entry->block = ul;
++                                        entry->path = strdup(p);
++                                        if (!entry->path) {
++                                                free(entry);
++                                                r = log_oom();
++                                                goto finish;
++                                        }
++                                        entry->bin = (entrytime - starttime) / 2000000;
++
++                                        k = hashmap_put(files, p, entry);
++                                        if (k < 0) {
++                                                log_warning("hashmap_put() failed: %s", strerror(-k));
++                                                free(p);
++                                        }
++                                }
++
++                        } else
++                                log_warning("readlink(%s) failed: %s", fn, strerror(-k));
++
++                next_iteration:
++                        safe_close(m->fd);
++                }
++        }
++
++done:
++        fanotify_fd = safe_close(fanotify_fd);
++
++        log_debug("Writing Pack File...");
++
++        on_ssd = fs_on_ssd(root) > 0;
++        log_debug("On SSD: %s", yes_no(on_ssd));
++
++        on_btrfs = statfs(root, &sfs) >= 0 && F_TYPE_EQUAL(sfs.f_type, BTRFS_SUPER_MAGIC);
++        log_debug("On btrfs: %s", yes_no(on_btrfs));
++
++        if (asprintf(&pack_fn_new, "%s/.readahead.new", root) < 0) {
++                r = log_oom();
++                goto finish;
++        }
++
++        pack = fopen(pack_fn_new, "we");
++        if (!pack) {
++                log_error("Failed to open pack file: %m");
++                r = -errno;
++                goto finish;
++        }
++
++        fputs(CANONICAL_HOST READAHEAD_PACK_FILE_VERSION, pack);
++        putc(on_ssd ? 'S' : 'R', pack);
++
++        if (on_ssd || on_btrfs) {
++
++                /* On SSD or on btrfs, just write things out in the
++                 * order the files were accessed. */
++
++                HASHMAP_FOREACH_KEY(q, p, files, i)
++                        pack_file(pack, p, on_btrfs);
++        } else {
++                unsigned n;
++
++                /* On rotating media, order things by the block
++                 * numbers */
++
++                log_debug("Ordering...");
++
++                n = hashmap_size(files);
++                if (n) {
++                        _cleanup_free_ struct item *ordered;
++                        struct item *j;
++                        unsigned k;
++
++                        ordered = new(struct item, n);
++                        if (!ordered) {
++                                r = log_oom();
++                                goto finish;
++                        }
++
++                        j = ordered;
++                        HASHMAP_FOREACH_KEY(q, p, files, i) {
++                                memcpy(j, q, sizeof(struct item));
++                                j++;
++                        }
++
++                        assert(ordered + n == j);
++
++                        qsort(ordered, n, sizeof(struct item), qsort_compare);
++
++                        for (k = 0; k < n; k++)
++                                pack_file(pack, ordered[k].path, on_btrfs);
++                } else
++                        log_warning("No pack files");
++        }
++
++        log_debug("Finalizing...");
++
++        fflush(pack);
++
++        if (ferror(pack)) {
++                log_error("Failed to write pack file.");
++                r = -EIO;
++                goto finish;
++        }
++
++        if (rename(pack_fn_new, pack_fn) < 0) {
++                log_error("Failed to rename readahead file: %m");
++                r = -errno;
++                goto finish;
++        }
++
++        fclose(pack);
++        pack = NULL;
++
++        log_debug("Done.");
++
++finish:
++        safe_close(fanotify_fd);
++        safe_close(signal_fd);
++        safe_close(inotify_fd);
++
++        if (pack) {
++                fclose(pack);
++                unlink(pack_fn_new);
++        }
++        free(pack_fn_new);
++        free(pack_fn);
++
++        while ((p = hashmap_steal_first_key(files)))
++                free(p);
++
++        hashmap_free(files);
++
++        if (previous_block_readahead_set) {
++                uint64_t bytes;
++
++                /* Restore the original kernel readahead setting if we
++                 * changed it, and nobody has overwritten it since
++                 * yet. */
++                if (block_get_readahead(root, &bytes) >= 0 && bytes == 8*1024)
++                        block_set_readahead(root, previous_block_readahead);
++        }
++
++        return r;
++}
++
++int main_collect(const char *root) {
++
++        if (!root)
++                root = "/";
++
++        /* Skip this step on read-only media. Note that we check the
++         * underlying block device here, not he read-only flag of the
++         * file system on top, since that one is most likely mounted
++         * read-only anyway at boot, even if the underlying block
++         * device is theoretically writable. */
++        if (fs_on_read_only(root) > 0) {
++                log_info("Disabling readahead collector due to read-only media.");
++                return EXIT_SUCCESS;
++        }
++
++        if (!enough_ram()) {
++                log_info("Disabling readahead collector due to low memory.");
++                return EXIT_SUCCESS;
++        }
++
++        shared = shared_get();
++        if (!shared)
++                return EXIT_FAILURE;
++
++        shared->collect = getpid();
++        __sync_synchronize();
++
++        if (collect(root) < 0)
++                return EXIT_FAILURE;
++
++        return EXIT_SUCCESS;
++}
+diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c
+new file mode 100644
+index 0000000..3ca48a7
+--- /dev/null
++++ b/src/readahead/readahead-common.c
+@@ -0,0 +1,398 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2010 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <errno.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/sysinfo.h>
++#include <sys/inotify.h>
++#include <fcntl.h>
++#include <sys/mman.h>
++#include <unistd.h>
++
++#include "log.h"
++#include "readahead-common.h"
++#include "util.h"
++#include "missing.h"
++#include "fileio.h"
++#include "libudev.h"
++#include "udev-util.h"
++
++int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) {
++        assert(fd >= 0);
++        assert(fn);
++        assert(st);
++
++        if (fstat(fd, st) < 0) {
++                log_warning("fstat(%s) failed: %m", fn);
++                return -errno;
++        }
++
++        if (!S_ISREG(st->st_mode)) {
++                log_debug("Not preloading special file %s", fn);
++                return 0;
++        }
++
++        if (st->st_size <= 0 || st->st_size > file_size_max) {
++                assert_cc(sizeof(st->st_size) == 8);
++                log_debug("Not preloading file %s with size out of bounds %"PRIu64,
++                          fn, st->st_size);
++                return 0;
++        }
++
++        return 1;
++}
++
++int fs_on_ssd(const char *p) {
++        struct stat st;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
++        struct udev_device *look_at = NULL;
++        const char *devtype, *rotational, *model, *id;
++        int r;
++
++        assert(p);
++
++        if (stat(p, &st) < 0)
++                return -errno;
++
++        if (major(st.st_dev) == 0) {
++                _cleanup_fclose_ FILE *f = NULL;
++                int mount_id;
++                union file_handle_union h = { .handle.handle_bytes = MAX_HANDLE_SZ, };
++
++                /* Might be btrfs, which exposes "ssd" as mount flag if it is on ssd.
++                 *
++                 * We first determine the mount ID here, if we can,
++                 * and then lookup the mount ID in mountinfo to find
++                 * the mount options. */
++
++                r = name_to_handle_at(AT_FDCWD, p, &h.handle, &mount_id, AT_SYMLINK_FOLLOW);
++                if (r < 0)
++                        return false;
++
++                f = fopen("/proc/self/mountinfo", "re");
++                if (!f)
++                        return false;
++
++                for (;;) {
++                        char line[LINE_MAX], *e;
++                        _cleanup_free_ char *opts = NULL;
++                        int mid;
++
++                        if (!fgets(line, sizeof(line), f))
++                                return false;
++
++                        truncate_nl(line);
++
++                        if (sscanf(line, "%i", &mid) != 1)
++                                continue;
++
++                        if (mid != mount_id)
++                                continue;
++
++                        e = strstr(line, " - ");
++                        if (!e)
++                                continue;
++
++                        if (sscanf(e+3, "%*s %*s %ms", &opts) != 1)
++                                continue;
++
++                        if (streq(opts, "ssd") || startswith(opts, "ssd,") || endswith(opts, ",ssd") || strstr(opts, ",ssd,"))
++                                return true;
++                }
++
++                return false;
++        }
++
++        udev = udev_new();
++        if (!udev)
++                return -ENOMEM;
++
++        udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
++        if (!udev_device)
++                return false;
++
++        devtype = udev_device_get_property_value(udev_device, "DEVTYPE");
++        if (devtype && streq(devtype, "partition"))
++                look_at = udev_device_get_parent(udev_device);
++        else
++                look_at = udev_device;
++
++        if (!look_at)
++                return false;
++
++        /* First, try high-level property */
++        id = udev_device_get_property_value(look_at, "ID_SSD");
++        if (id)
++                return streq(id, "1");
++
++        /* Second, try kernel attribute */
++        rotational = udev_device_get_sysattr_value(look_at, "queue/rotational");
++        if (rotational)
++                return streq(rotational, "0");
++
++        /* Finally, fallback to heuristics */
++        look_at = udev_device_get_parent(look_at);
++        if (!look_at)
++                return false;
++
++        model = udev_device_get_sysattr_value(look_at, "model");
++        if (model)
++                return !!strstr(model, "SSD");
++
++        return false;
++}
++
++int fs_on_read_only(const char *p) {
++        struct stat st;
++        _cleanup_udev_unref_ struct udev *udev = NULL;
++        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
++        const char *read_only;
++
++        assert(p);
++
++        if (stat(p, &st) < 0)
++                return -errno;
++
++        if (major(st.st_dev) == 0)
++                return false;
++
++        udev = udev_new();
++        if (!udev)
++                return -ENOMEM;
++
++        udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
++        if (!udev_device)
++                return false;
++
++        read_only = udev_device_get_sysattr_value(udev_device, "ro");
++        if (read_only)
++                return streq(read_only, "1");
++
++        return false;
++}
++
++bool enough_ram(void) {
++        struct sysinfo si;
++
++        assert_se(sysinfo(&si) >= 0);
++
++        /* Enable readahead only with at least 128MB memory */
++        return si.totalram > 127 * 1024*1024 / si.mem_unit;
++}
++
++static void mkdirs(void) {
++        if (mkdir("/run/systemd", 0755) && errno != EEXIST)
++                log_warning("Failed to create /run/systemd: %m");
++        if (mkdir("/run/systemd/readahead", 0755) && errno != EEXIST)
++                log_warning("Failed to create /run/systemd: %m");
++}
++
++int open_inotify(void) {
++        int fd;
++
++        fd = inotify_init1(IN_CLOEXEC|IN_NONBLOCK);
++        if (fd < 0) {
++                log_error("Failed to create inotify handle: %m");
++                return -errno;
++        }
++
++        mkdirs();
++
++        if (inotify_add_watch(fd, "/run/systemd/readahead", IN_CREATE) < 0) {
++                log_error("Failed to watch /run/systemd/readahead: %m");
++                safe_close(fd);
++                return -errno;
++        }
++
++        return fd;
++}
++
++ReadaheadShared *shared_get(void) {
++        _cleanup_close_ int fd = -1;
++        ReadaheadShared *m = NULL;
++
++        mkdirs();
++
++        fd = open("/run/systemd/readahead/shared", O_CREAT|O_RDWR|O_CLOEXEC, 0644);
++        if (fd < 0) {
++                log_error("Failed to create shared memory segment: %m");
++                return NULL;
++        }
++
++        if (ftruncate(fd, sizeof(ReadaheadShared)) < 0) {
++                log_error("Failed to truncate shared memory segment: %m");
++                return NULL;
++        }
++
++        m = mmap(NULL, sizeof(ReadaheadShared), PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0);
++        if (m == MAP_FAILED) {
++                log_error("Failed to mmap shared memory segment: %m");
++                return NULL;
++        }
++
++        return m;
++}
++
++/* We use 20K instead of the more human digestable 16K here. Why?
++   Simply so that it is more unlikely that users end up picking this
++   value too so that we can recognize better whether the user changed
++   the value while we had it temporarily bumped. */
++#define BUMP_REQUEST_NR (20*1024u)
++
++int block_bump_request_nr(const char *p) {
++        struct stat st;
++        uint64_t u;
++        char *ap = NULL, *line = NULL;
++        int r;
++        dev_t d;
++
++        assert(p);
++
++        if (stat(p, &st) < 0)
++                return -errno;
++
++        if (major(st.st_dev) == 0)
++                return 0;
++
++        d = st.st_dev;
++        block_get_whole_disk(d, &d);
++
++        if (asprintf(&ap, "/sys/dev/block/%u:%u/queue/nr_requests", major(d), minor(d)) < 0) {
++                r= -ENOMEM;
++                goto finish;
++        }
++
++        r = read_one_line_file(ap, &line);
++        if (r < 0) {
++                if (r == -ENOENT)
++                        r = 0;
++                goto finish;
++        }
++
++        r = safe_atou64(line, &u);
++        if (r >= 0 && u >= BUMP_REQUEST_NR) {
++                r = 0;
++                goto finish;
++        }
++
++        free(line);
++        line = NULL;
++
++        if (asprintf(&line, "%u", BUMP_REQUEST_NR) < 0) {
++                r = -ENOMEM;
++                goto finish;
++        }
++
++        r = write_string_file(ap, line);
++        if (r < 0)
++                goto finish;
++
++        log_info("Bumped block_nr parameter of %u:%u to %u. This is a temporary hack and should be removed one day.", major(d), minor(d), BUMP_REQUEST_NR);
++        r = 1;
++
++finish:
++        free(ap);
++        free(line);
++
++        return r;
++}
++
++int block_get_readahead(const char *p, uint64_t *bytes) {
++        struct stat st;
++        char *ap = NULL, *line = NULL;
++        int r;
++        dev_t d;
++        uint64_t u;
++
++        assert(p);
++        assert(bytes);
++
++        if (stat(p, &st) < 0)
++                return -errno;
++
++        if (major(st.st_dev) == 0)
++                return 0;
++
++        d = st.st_dev;
++        block_get_whole_disk(d, &d);
++
++        if (asprintf(&ap, "/sys/dev/block/%u:%u/bdi/read_ahead_kb", major(d), minor(d)) < 0) {
++                r = -ENOMEM;
++                goto finish;
++        }
++
++        r = read_one_line_file(ap, &line);
++        if (r < 0)
++                goto finish;
++
++        r = safe_atou64(line, &u);
++        if (r < 0)
++                goto finish;
++
++        *bytes = u * 1024ULL;
++
++finish:
++        free(ap);
++        free(line);
++
++        return r;
++}
++
++int block_set_readahead(const char *p, uint64_t bytes) {
++        struct stat st;
++        char *ap = NULL, *line = NULL;
++        int r;
++        dev_t d;
++
++        assert(p);
++        assert(bytes);
++
++        if (stat(p, &st) < 0)
++                return -errno;
++
++        if (major(st.st_dev) == 0)
++                return 0;
++
++        d = st.st_dev;
++        block_get_whole_disk(d, &d);
++
++        if (asprintf(&ap, "/sys/dev/block/%u:%u/bdi/read_ahead_kb", major(d), minor(d)) < 0) {
++                r = -ENOMEM;
++                goto finish;
++        }
++
++        if (asprintf(&line, "%llu", bytes / 1024ULL) < 0) {
++                r = -ENOMEM;
++                goto finish;
++        }
++
++        r = write_string_file(ap, line);
++        if (r < 0)
++                goto finish;
++
++finish:
++        free(ap);
++        free(line);
++
++        return r;
++}
+diff --git a/src/readahead/readahead-common.h b/src/readahead/readahead-common.h
+new file mode 100644
+index 0000000..b34f3aa
+--- /dev/null
++++ b/src/readahead/readahead-common.h
+@@ -0,0 +1,61 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++#pragma once
++
++/***
++  This file is part of systemd.
++
++  Copyright 2010 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <sys/stat.h>
++#include <sys/types.h>
++
++#include "macro.h"
++#include "util.h"
++
++#define READAHEAD_FILE_SIZE_MAX (10*1024*1024)
++
++#define READAHEAD_PACK_FILE_VERSION ";VERSION=2\n"
++
++extern unsigned arg_files_max;
++extern off_t arg_file_size_max;
++extern usec_t arg_timeout;
++
++int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st);
++
++int fs_on_ssd(const char *p);
++int fs_on_read_only(const char *p);
++
++bool enough_ram(void);
++
++int open_inotify(void);
++
++typedef struct ReadaheadShared {
++        pid_t collect;
++        pid_t replay;
++} _packed_ ReadaheadShared;
++
++ReadaheadShared *shared_get(void);
++
++int block_bump_request_nr(const char *p);
++
++int block_get_readahead(const char *p, uint64_t *bytes);
++int block_set_readahead(const char *p, uint64_t bytes);
++
++int main_collect(const char *root);
++int main_replay(const char *root);
++int main_analyze(const char *pack_path);
+diff --git a/src/readahead/readahead-replay.c b/src/readahead/readahead-replay.c
+new file mode 100644
+index 0000000..f81e0fe
+--- /dev/null
++++ b/src/readahead/readahead-replay.c
+@@ -0,0 +1,281 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2010 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <errno.h>
++#include <inttypes.h>
++#include <fcntl.h>
++#include <linux/limits.h>
++#include <stdbool.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <sys/select.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <unistd.h>
++#include <getopt.h>
++#include <sys/inotify.h>
++
++#include "systemd/sd-daemon.h"
++
++#include "missing.h"
++#include "util.h"
++#include "set.h"
++#include "ioprio.h"
++#include "readahead-common.h"
++#include "virt.h"
++
++static ReadaheadShared *shared = NULL;
++
++static int unpack_file(FILE *pack) {
++        _cleanup_close_ int fd = -1;
++        char fn[PATH_MAX];
++        bool any = false;
++        struct stat st;
++        uint64_t inode;
++
++        assert(pack);
++
++        if (!fgets(fn, sizeof(fn), pack))
++                return 0;
++
++        char_array_0(fn);
++        truncate_nl(fn);
++
++        fd = open(fn, O_RDONLY|O_CLOEXEC|O_NOATIME|O_NOCTTY|O_NOFOLLOW);
++        if (fd < 0) {
++                if (errno != ENOENT && errno != EPERM && errno != EACCES && errno != ELOOP)
++                        log_warning("open(%s) failed: %m", fn);
++
++        } else if (file_verify(fd, fn, arg_file_size_max, &st) <= 0)
++                fd = safe_close(fd);
++
++        if (fread(&inode, sizeof(inode), 1, pack) != 1) {
++                log_error("Premature end of pack file.");
++                return -EIO;
++        }
++
++        if (fd >= 0) {
++                /* If the inode changed the file got deleted, so just
++                 * ignore this entry */
++                if (st.st_ino != (uint64_t) inode)
++                        fd = safe_close(fd);
++        }
++
++        for (;;) {
++                uint32_t b, c;
++
++                if (fread(&b, sizeof(b), 1, pack) != 1 ||
++                    fread(&c, sizeof(c), 1, pack) != 1) {
++                        log_error("Premature end of pack file.");
++                        return -EIO;
++                }
++
++                if (b == 0 && c == 0)
++                        break;
++
++                if (c <= b) {
++                        log_error("Invalid pack file.");
++                        return -EIO;
++                }
++
++                log_debug("%s: page %u to %u", fn, b, c);
++
++                any = true;
++
++                if (fd >= 0) {
++                        if (posix_fadvise(fd, b * page_size(), (c - b) * page_size(), POSIX_FADV_WILLNEED) < 0) {
++                                log_warning("posix_fadvise() failed: %m");
++                                return -errno;
++                        }
++                }
++        }
++
++        if (!any && fd >= 0) {
++                /* if no range is encoded in the pack file this is
++                 * intended to mean that the whole file shall be
++                 * read */
++
++                if (posix_fadvise(fd, 0, st.st_size, POSIX_FADV_WILLNEED) < 0) {
++                        log_warning("posix_fadvise() failed: %m");
++                        return -errno;
++                }
++        }
++
++        return 0;
++}
++
++static int replay(const char *root) {
++        _cleanup_close_ int inotify_fd = -1;
++        _cleanup_free_ char *pack_fn = NULL;
++        _cleanup_fclose_ FILE *pack = NULL;
++        bool on_ssd, ready = false;
++        char line[LINE_MAX];
++        int prio, c;
++
++        assert(root);
++
++        block_bump_request_nr(root);
++
++        if (asprintf(&pack_fn, "%s/.readahead", root) < 0)
++                return log_oom();
++
++        pack = fopen(pack_fn, "re");
++        if (!pack) {
++                if (errno == ENOENT) {
++                        log_debug("No pack file found.");
++                        return 0;
++                }
++
++                log_error("Failed to open pack file: %m");
++                return -errno;
++        }
++
++        posix_fadvise(fileno(pack), 0, 0, POSIX_FADV_WILLNEED);
++
++        inotify_fd = open_inotify();
++        if (inotify_fd < 0)
++                return inotify_fd;
++
++        if (!fgets(line, sizeof(line), pack)) {
++                log_error("Premature end of pack file.");
++                return -EIO;
++        }
++
++        char_array_0(line);
++
++        if (!streq(line, CANONICAL_HOST READAHEAD_PACK_FILE_VERSION)) {
++                log_debug("Pack file host or version type mismatch.");
++                goto done;
++        }
++
++        c = getc(pack);
++        if (c == EOF) {
++                log_debug("Premature end of pack file.");
++                return -EIO;
++        }
++
++        /* We do not retest SSD here, so that we can start replaying
++         * before udev is up.*/
++        on_ssd = c == 'S';
++        log_debug("On SSD: %s", yes_no(on_ssd));
++
++        if (on_ssd)
++                prio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_IDLE, 0);
++        else
++                /* We are not using RT here, since we'd starve IO that
++                we didn't record (which is for example blkid, since
++                its disk accesses go directly to the block device and
++                are thus not visible in fallocate) to death. However,
++                we do ask for an IO prio that is slightly higher than
++                the default (which is BE. 4) */
++                prio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_BE, 2);
++
++        if (ioprio_set(IOPRIO_WHO_PROCESS, getpid(), prio) < 0)
++                log_warning("Failed to set IDLE IO priority class: %m");
++
++        sd_notify(0, "STATUS=Replaying readahead data");
++
++        log_debug("Replaying...");
++
++        if (access("/run/systemd/readahead/noreplay", F_OK) >= 0) {
++                log_debug("Got termination request");
++                goto done;
++        }
++
++        while (!feof(pack) && !ferror(pack)) {
++                uint8_t inotify_buffer[sizeof(struct inotify_event) + FILENAME_MAX];
++                int k;
++                ssize_t n;
++
++                n = read(inotify_fd, &inotify_buffer, sizeof(inotify_buffer));
++                if (n < 0) {
++                        if (errno != EINTR && errno != EAGAIN) {
++                                log_error("Failed to read inotify event: %m");
++                                return -errno;
++                        }
++                } else {
++                        struct inotify_event *e = (struct inotify_event*) inotify_buffer;
++
++                        while (n > 0) {
++                                size_t step;
++
++                                if ((e->mask & IN_CREATE) && streq(e->name, "noreplay")) {
++                                        log_debug("Got termination request");
++                                        goto done;
++                                }
++
++                                step = sizeof(struct inotify_event) + e->len;
++                                assert(step <= (size_t) n);
++
++                                e = (struct inotify_event*) ((uint8_t*) e + step);
++                                n -= step;
++                        }
++                }
++
++                k = unpack_file(pack);
++                if (k < 0)
++                        return k;
++
++                if (!ready) {
++                        /* We delay the ready notification until we
++                         * queued at least one read */
++                        sd_notify(0, "READY=1");
++                        ready = true;
++                }
++        }
++
++done:
++        if (ferror(pack)) {
++                log_error("Failed to read pack file.");
++                return -EIO;
++        }
++
++        if (!ready)
++                sd_notify(0, "READY=1");
++
++        log_debug("Done.");
++        return 0;
++}
++
++int main_replay(const char *root) {
++
++        if (!root)
++                root = "/";
++
++        if (!enough_ram()) {
++                log_info("Disabling readahead replay due to low memory.");
++                return EXIT_SUCCESS;
++        }
++
++        shared = shared_get();
++        if (!shared)
++                return EXIT_FAILURE;
++
++        shared->replay = getpid();
++        __sync_synchronize();
++
++        if (replay(root) < 0)
++                return EXIT_FAILURE;
++
++        return EXIT_SUCCESS;
++}
+diff --git a/src/readahead/readahead.c b/src/readahead/readahead.c
+new file mode 100644
+index 0000000..35176e9
+--- /dev/null
++++ b/src/readahead/readahead.c
+@@ -0,0 +1,163 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2012 Lennart Poettering
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include <stdio.h>
++#include <getopt.h>
++#include <stddef.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <errno.h>
++#include <string.h>
++
++#include "util.h"
++#include "def.h"
++#include "build.h"
++#include "readahead-common.h"
++
++unsigned arg_files_max = 16*1024;
++off_t arg_file_size_max = READAHEAD_FILE_SIZE_MAX;
++usec_t arg_timeout = 2*USEC_PER_MINUTE;
++
++static void help(void) {
++        printf("%1$s [OPTIONS...] collect [DIRECTORY]\n\n"
++               "Collect read-ahead data on early boot.\n\n"
++               "  -h --help                 Show this help\n"
++               "     --version              Show package version\n"
++               "     --files-max=INT        Maximum number of files to read ahead\n"
++               "     --file-size-max=BYTES  Maximum size of files to read ahead\n"
++               "     --timeout=USEC         Maximum time to spend collecting data\n"
++               "\n\n"
++               "%1$s [OPTIONS...] replay [DIRECTORY]\n\n"
++               "Replay collected read-ahead data on early boot.\n\n"
++               "  -h --help                 Show this help\n"
++               "     --version              Show package version\n"
++               "     --file-size-max=BYTES  Maximum size of files to read ahead\n"
++               "\n\n"
++               "%1$s [OPTIONS...] analyze [PACK-FILE]\n\n"
++               "Analyze collected read-ahead data.\n\n"
++               "  -h --help                 Show this help\n"
++               "     --version              Show package version\n",
++               program_invocation_short_name);
++}
++
++static int parse_argv(int argc, char *argv[]) {
++
++        enum {
++                ARG_VERSION = 0x100,
++                ARG_FILES_MAX,
++                ARG_FILE_SIZE_MAX,
++                ARG_TIMEOUT
++        };
++
++        static const struct option options[] = {
++                { "help",          no_argument,       NULL, 'h'                },
++                { "version",       no_argument,       NULL, ARG_VERSION        },
++                { "files-max",     required_argument, NULL, ARG_FILES_MAX      },
++                { "file-size-max", required_argument, NULL, ARG_FILE_SIZE_MAX  },
++                { "timeout",       required_argument, NULL, ARG_TIMEOUT        },
++                {}
++        };
++
++        int c;
++
++        assert(argc >= 0);
++        assert(argv);
++
++        while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0)
++
++                switch (c) {
++
++                case 'h':
++                        help();
++                        return 0;
++
++                case ARG_VERSION:
++                        puts(PACKAGE_STRING);
++                        puts(SYSTEMD_FEATURES);
++                        return 0;
++
++                case ARG_FILES_MAX:
++                        if (safe_atou(optarg, &arg_files_max) < 0 || arg_files_max <= 0) {
++                                log_error("Failed to parse maximum number of files %s.", optarg);
++                                return -EINVAL;
++                        }
++                        break;
++
++                case ARG_FILE_SIZE_MAX: {
++                        unsigned long long ull;
++
++                        if (safe_atollu(optarg, &ull) < 0 || ull <= 0) {
++                                log_error("Failed to parse maximum file size %s.", optarg);
++                                return -EINVAL;
++                        }
++
++                        arg_file_size_max = (off_t) ull;
++                        break;
++                }
++
++                case ARG_TIMEOUT:
++                        if (parse_sec(optarg, &arg_timeout) < 0 || arg_timeout <= 0) {
++                                log_error("Failed to parse timeout %s.", optarg);
++                                return -EINVAL;
++                        }
++
++                        break;
++
++                case '?':
++                        return -EINVAL;
++
++                default:
++                        assert_not_reached("Unhandled option");
++                }
++
++        if (optind != argc-1 &&
++            optind != argc-2) {
++                log_error("%s: wrong number of arguments.",
++                          program_invocation_short_name);
++                return -EINVAL;
++        }
++
++        return 1;
++}
++
++int main(int argc, char *argv[]) {
++        int r;
++
++        log_set_target(LOG_TARGET_SAFE);
++        log_parse_environment();
++        log_open();
++
++        umask(0022);
++
++        r = parse_argv(argc, argv);
++        if (r <= 0)
++                return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
++
++        if (streq(argv[optind], "collect"))
++                return main_collect(argv[optind+1]);
++        else if (streq(argv[optind], "replay"))
++                return main_replay(argv[optind+1]);
++        else if (streq(argv[optind], "analyze"))
++                return main_analyze(argv[optind+1]);
++
++        log_error("Unknown verb %s.", argv[optind]);
++        return EXIT_FAILURE;
++}
+diff --git a/src/readahead/sd-readahead.c b/src/readahead/sd-readahead.c
+new file mode 100644
+index 0000000..675d82c
+--- /dev/null
++++ b/src/readahead/sd-readahead.c
+@@ -0,0 +1,89 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  Copyright 2010 Lennart Poettering
++
++  Permission is hereby granted, free of charge, to any person
++  obtaining a copy of this software and associated documentation files
++  (the "Software"), to deal in the Software without restriction,
++  including without limitation the rights to use, copy, modify, merge,
++  publish, distribute, sublicense, and/or sell copies of the Software,
++  and to permit persons to whom the Software is furnished to do so,
++  subject to the following conditions:
++
++  The above copyright notice and this permission notice shall be
++  included in all copies or substantial portions of the Software.
++
++  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
++  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++  SOFTWARE.
++***/
++
++#ifndef _GNU_SOURCE
++#  define _GNU_SOURCE
++#endif
++
++#include <unistd.h>
++#include <errno.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <fcntl.h>
++#include <string.h>
++
++#include "sd-readahead.h"
++
++#if (__GNUC__ >= 4)
++#  ifdef SD_EXPORT_SYMBOLS
++/* Export symbols */
++#    define _sd_export_ __attribute__ ((visibility("default")))
++#  else
++/* Don't export the symbols */
++#    define _sd_export_ __attribute__ ((visibility("hidden")))
++#  endif
++#else
++#  define _sd_export_
++#endif
++
++static int touch(const char *path) {
++
++#if !defined(DISABLE_SYSTEMD) && defined(__linux__)
++        int fd;
++
++        mkdir("/run/systemd", 0755);
++        mkdir("/run/systemd/readahead", 0755);
++
++        fd = open(path, O_WRONLY|O_CREAT|O_CLOEXEC|O_NOCTTY, 0666);
++        if (fd < 0)
++                return -errno;
++
++        for (;;) {
++                if (close(fd) >= 0)
++                        break;
++
++                if (errno != EINTR)
++                        return -errno;
++        }
++
++#endif
++        return 0;
++}
++
++_sd_export_ int sd_readahead(const char *action) {
++
++        if (!action)
++                return -EINVAL;
++
++        if (strcmp(action, "cancel") == 0)
++                return touch("/run/systemd/readahead/cancel");
++        else if (strcmp(action, "done") == 0)
++                return touch("/run/systemd/readahead/done");
++        else if (strcmp(action, "noreplay") == 0)
++                return touch("/run/systemd/readahead/noreplay");
++
++        return -EINVAL;
++}
+diff --git a/src/readahead/test-ssd.c b/src/readahead/test-ssd.c
+new file mode 100644
+index 0000000..808faf3
+--- /dev/null
++++ b/src/readahead/test-ssd.c
+@@ -0,0 +1,41 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++/***
++  This file is part of systemd.
++
++  Copyright 2014 Zbigniew Jędrzejewski-Szmek
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++***/
++
++#include "readahead-common.h"
++
++int main(int argc, char *argv[]) {
++        int i;
++
++        for (i = 1; i < argc; i++) {
++                char *name = argv[i];
++                int r;
++
++                r = fs_on_ssd(name);
++                if (r < 0) {
++                        log_error("%s: %s", name, strerror(-r));
++                        return EXIT_FAILURE;
++                }
++
++                log_info("%s: %s", name, r ? "SSD" : "---");
++        }
++
++        return EXIT_SUCCESS;
++}
+diff --git a/src/systemd/sd-readahead.h b/src/systemd/sd-readahead.h
+new file mode 100644
+index 0000000..bb30f9a
+--- /dev/null
++++ b/src/systemd/sd-readahead.h
+@@ -0,0 +1,73 @@
++/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
++
++#ifndef foosdreadaheadhfoo
++#define foosdreadaheadhfoo
++
++/***
++  Copyright 2010 Lennart Poettering
++
++  Permission is hereby granted, free of charge, to any person
++  obtaining a copy of this software and associated documentation files
++  (the "Software"), to deal in the Software without restriction,
++  including without limitation the rights to use, copy, modify, merge,
++  publish, distribute, sublicense, and/or sell copies of the Software,
++  and to permit persons to whom the Software is furnished to do so,
++  subject to the following conditions:
++
++  The above copyright notice and this permission notice shall be
++  included in all copies or substantial portions of the Software.
++
++  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
++  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
++  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
++  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
++  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
++  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
++  SOFTWARE.
++***/
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++/*
++  Reference implementation of a few boot read-ahead-related
++  interfaces. These interfaces are trivial to implement. To simplify
++  porting, we provide this reference implementation. Applications are
++  welcome to reimplement the algorithms described here if they do not
++  want to include these two source files.
++
++  You may compile this with -DDISABLE_SYSTEMD to disable systemd
++  support. This makes all calls NOPs.
++
++  Because this is drop-in code, we don't want any of our symbols to be
++  exported in any case. Hence, we declare hidden visibility for all of
++  them.
++
++  You may find an up-to-date version of these source files online:
++
++  http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-readahead.h
++  http://cgit.freedesktop.org/systemd/systemd/plain/src/readahead/sd-readahead.c
++
++  This should compile on non-Linux systems too, but all functions
++  will become NOPs.
++
++  See sd-readahead(3) for more information.
++*/
++
++/*
++  Controls on-going disk read-ahead operations during boot-up. The argument
++  must be one of the following strings: "cancel", "done", or "noreplay".
++
++  cancel = terminate read-ahead data collection, and drop collected information
++  done = terminate read-ahead data collection, and keep collected information
++  noreplay = terminate read-ahead replay
++*/
++int sd_readahead(const char *action);
++
++#ifdef __cplusplus
++}
++#endif
++
++#endif
+diff --git a/system-preset/90-systemd.preset b/system-preset/90-systemd.preset
+index ee1b864..24963f0 100644
+--- a/system-preset/90-systemd.preset
++++ b/system-preset/90-systemd.preset
+@@ -12,6 +12,7 @@ enable remote-fs.target
+ enable machines.target
+ 
+ enable getty@.service
++enable systemd-readahead-*
+ enable systemd-timesyncd.service
+ enable systemd-networkd.service
+ enable systemd-resolved.service
+diff --git a/units/.gitignore b/units/.gitignore
+index 6fdb629..638a7ab 100644
+--- a/units/.gitignore
++++ b/units/.gitignore
+@@ -52,6 +52,9 @@
+ /systemd-poweroff.service
+ /systemd-quotacheck.service
+ /systemd-random-seed.service
++/systemd-readahead-collect.service
++/systemd-readahead-done.service
++/systemd-readahead-replay.service
+ /systemd-reboot.service
+ /systemd-remount-fs.service
+ /systemd-resolved.service
+diff --git a/units/ldconfig.service b/units/ldconfig.service
+index f9691e2..43c145b 100644
+--- a/units/ldconfig.service
++++ b/units/ldconfig.service
+@@ -10,7 +10,7 @@ Description=Rebuild Dynamic Linker Cache
+ Documentation=man:ldconfig(8)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target systemd-update-done.service
+ ConditionNeedsUpdate=/etc
+ 
+diff --git a/units/quotaon.service.in b/units/quotaon.service.in
+index 7d59a40..49a50a7 100644
+--- a/units/quotaon.service.in
++++ b/units/quotaon.service.in
+@@ -9,7 +9,7 @@
+ Description=Enable File System Quotas
+ Documentation=man:quotaon(8)
+ DefaultDependencies=no
+-After=systemd-quotacheck.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-quotacheck.service
+ Before=local-fs.target shutdown.target
+ ConditionPathExists=@QUOTAON@
+ 
+diff --git a/units/system-update.target b/units/system-update.target
+index 48d46fc..d0f847f 100644
+--- a/units/system-update.target
++++ b/units/system-update.target
+@@ -10,7 +10,7 @@ Description=System Update
+ Documentation=http://freedesktop.org/wiki/Software/systemd/SystemUpdates
+ Documentation=man:systemd.special(7) man:systemd-system-update-generator(8)
+ Requires=sysinit.target
+-Conflicts=shutdown.target
++Conflicts=shutdown.target systemd-readahead-collect.service systemd-readahead-replay.service
+ After=sysinit.target
+ Before=shutdown.target
+ AllowIsolate=yes
+diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in
+index 5e6706c..b146e30 100644
+--- a/units/systemd-backlight@.service.in
++++ b/units/systemd-backlight@.service.in
+@@ -11,7 +11,7 @@ Documentation=man:systemd-backlight@.service(8)
+ DefaultDependencies=no
+ RequiresMountsFor=/var/lib/systemd/backlight
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target
+ 
+ [Service]
+diff --git a/units/systemd-binfmt.service.in b/units/systemd-binfmt.service.in
+index 34a5d52..02dfe77 100644
+--- a/units/systemd-binfmt.service.in
++++ b/units/systemd-binfmt.service.in
+@@ -11,7 +11,7 @@ Documentation=man:systemd-binfmt.service(8) man:binfmt.d(5)
+ Documentation=https://www.kernel.org/doc/Documentation/binfmt_misc.txt
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=proc-sys-fs-binfmt_misc.automount
++After=systemd-readahead-collect.service systemd-readahead-replay.service proc-sys-fs-binfmt_misc.automount
+ Before=sysinit.target shutdown.target
+ ConditionPathIsReadWrite=/proc/sys/
+ ConditionDirectoryNotEmpty=|/lib/binfmt.d
+diff --git a/units/systemd-firstboot.service.in b/units/systemd-firstboot.service.in
+index 405c6f3..89fa7e1 100644
+--- a/units/systemd-firstboot.service.in
++++ b/units/systemd-firstboot.service.in
+@@ -10,7 +10,7 @@ Description=First Boot Wizard
+ Documentation=man:systemd-firstboot(1)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=systemd-sysusers.service sysinit.target shutdown.target
+ ConditionPathIsReadWrite=/etc
+ ConditionFirstBoot=yes
+diff --git a/units/systemd-fsck-root.service.in b/units/systemd-fsck-root.service.in
+index 6d76578..26cce51 100644
+--- a/units/systemd-fsck-root.service.in
++++ b/units/systemd-fsck-root.service.in
+@@ -9,6 +9,7 @@
+ Description=File System Check on Root Device
+ Documentation=man:systemd-fsck-root.service(8)
+ DefaultDependencies=no
++After=systemd-readahead-collect.service systemd-readahead-replay.service
+ Before=local-fs.target shutdown.target
+ ConditionPathIsReadWrite=!/
+ 
+diff --git a/units/systemd-fsck@.service.in b/units/systemd-fsck@.service.in
+index 857e625..d2cda6a 100644
+--- a/units/systemd-fsck@.service.in
++++ b/units/systemd-fsck@.service.in
+@@ -10,7 +10,7 @@ Description=File System Check on %f
+ Documentation=man:systemd-fsck@.service(8)
+ DefaultDependencies=no
+ BindsTo=%i.device
+-After=%i.device systemd-fsck-root.service local-fs-pre.target
++After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device systemd-fsck-root.service local-fs-pre.target
+ Before=shutdown.target
+ 
+ [Service]
+diff --git a/units/systemd-hwdb-update.service.in b/units/systemd-hwdb-update.service.in
+index 791528e..4bed482 100644
+--- a/units/systemd-hwdb-update.service.in
++++ b/units/systemd-hwdb-update.service.in
+@@ -10,7 +10,7 @@ Description=Rebuild Hardware Database
+ Documentation=man:hwdb(7) man:systemd-hwdb(8)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target systemd-update-done.service
+ ConditionNeedsUpdate=/etc
+ ConditionPathExists=|!@udevlibexecdir@/hwdb.bin
+diff --git a/units/systemd-journal-catalog-update.service.in b/units/systemd-journal-catalog-update.service.in
+index 6370dd4..5b85889 100644
+--- a/units/systemd-journal-catalog-update.service.in
++++ b/units/systemd-journal-catalog-update.service.in
+@@ -10,7 +10,7 @@ Description=Rebuild Journal Catalog
+ Documentation=man:systemd-journald.service(8) man:journald.conf(5)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=local-fs.target
++After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
+ Before=sysinit.target shutdown.target systemd-update-done.service
+ ConditionNeedsUpdate=/etc
+ 
+diff --git a/units/systemd-modules-load.service.in b/units/systemd-modules-load.service.in
+index 040a0fe..32deb52 100644
+--- a/units/systemd-modules-load.service.in
++++ b/units/systemd-modules-load.service.in
+@@ -10,6 +10,7 @@ Description=Load Kernel Modules
+ Documentation=man:systemd-modules-load.service(8) man:modules-load.d(5)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
++After=systemd-readahead-collect.service systemd-readahead-replay.service
+ Before=sysinit.target shutdown.target
+ ConditionCapability=CAP_SYS_MODULE
+ ConditionDirectoryNotEmpty=|/lib/modules-load.d
+diff --git a/units/systemd-quotacheck.service.in b/units/systemd-quotacheck.service.in
+index 5cb9bc3..f726ea1 100644
+--- a/units/systemd-quotacheck.service.in
++++ b/units/systemd-quotacheck.service.in
+@@ -9,7 +9,7 @@
+ Description=File System Quota Check
+ Documentation=man:systemd-quotacheck.service(8)
+ DefaultDependencies=no
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=local-fs.target shutdown.target
+ ConditionPathExists=@QUOTACHECK@
+ 
+diff --git a/units/systemd-random-seed.service.in b/units/systemd-random-seed.service.in
+index b55844b..1879b2f 100644
+--- a/units/systemd-random-seed.service.in
++++ b/units/systemd-random-seed.service.in
+@@ -11,7 +11,7 @@ Documentation=man:systemd-random-seed.service(8) man:random(4)
+ DefaultDependencies=no
+ RequiresMountsFor=@RANDOM_SEED@
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target
+ 
+ [Service]
+diff --git a/units/systemd-readahead-collect.service.in b/units/systemd-readahead-collect.service.in
+new file mode 100644
+index 0000000..d4b8e67
+--- /dev/null
++++ b/units/systemd-readahead-collect.service.in
+@@ -0,0 +1,28 @@
++#  This file is part of systemd.
++#
++#  systemd is free software; you can redistribute it and/or modify it
++#  under the terms of the GNU Lesser General Public License as published by
++#  the Free Software Foundation; either version 2.1 of the License, or
++#  (at your option) any later version.
++
++[Unit]
++Description=Collect Read-Ahead Data
++Documentation=man:systemd-readahead-replay.service(8)
++DefaultDependencies=no
++Wants=systemd-readahead-done.timer
++Conflicts=shutdown.target
++Before=sysinit.target shutdown.target
++ConditionPathExists=!/run/systemd/readahead/cancel
++ConditionPathExists=!/run/systemd/readahead/done
++ConditionVirtualization=no
++
++[Service]
++Type=notify
++ExecStart=@rootlibexecdir@/systemd-readahead collect
++RemainAfterExit=yes
++StandardOutput=null
++OOMScoreAdjust=1000
++
++[Install]
++WantedBy=default.target
++Also=systemd-readahead-drop.service
+diff --git a/units/systemd-readahead-done.service.in b/units/systemd-readahead-done.service.in
+new file mode 100644
+index 0000000..e0d9579
+--- /dev/null
++++ b/units/systemd-readahead-done.service.in
+@@ -0,0 +1,22 @@
++#  This file is part of systemd.
++#
++#  systemd is free software; you can redistribute it and/or modify it
++#  under the terms of the GNU Lesser General Public License as published by
++#  the Free Software Foundation; either version 2.1 of the License, or
++#  (at your option) any later version.
++
++[Unit]
++Description=Stop Read-Ahead Data Collection
++Documentation=man:systemd-readahead-replay.service(8)
++DefaultDependencies=no
++Conflicts=shutdown.target
++After=default.target
++Before=shutdown.target
++ConditionVirtualization=no
++
++[Service]
++Type=oneshot
++ExecStart=@SYSTEMD_NOTIFY@ --readahead=done
++
++[Install]
++Also=systemd-readahead-collect.service
+diff --git a/units/systemd-readahead-done.timer b/units/systemd-readahead-done.timer
+new file mode 100644
+index 0000000..c58e096
+--- /dev/null
++++ b/units/systemd-readahead-done.timer
+@@ -0,0 +1,22 @@
++#  This file is part of systemd.
++#
++#  systemd is free software; you can redistribute it and/or modify it
++#  under the terms of the GNU Lesser General Public License as published by
++#  the Free Software Foundation; either version 2.1 of the License, or
++#  (at your option) any later version.
++
++[Unit]
++Description=Stop Read-Ahead Data Collection 10s After Completed Startup
++Documentation=man:systemd-readahead-replay.service(8)
++DefaultDependencies=no
++Conflicts=shutdown.target
++After=default.target
++Before=shutdown.target
++ConditionVirtualization=no
++
++[Timer]
++OnActiveSec=30s
++AccuracySec=1s
++
++[Install]
++Also=systemd-readahead-collect.service
+diff --git a/units/systemd-readahead-drop.service b/units/systemd-readahead-drop.service
+new file mode 100644
+index 0000000..d9d12bc
+--- /dev/null
++++ b/units/systemd-readahead-drop.service
+@@ -0,0 +1,19 @@
++#  This file is part of systemd.
++#
++#  systemd is free software; you can redistribute it and/or modify it
++#  under the terms of the GNU Lesser General Public License as published by
++#  the Free Software Foundation; either version 2.1 of the License, or
++#  (at your option) any later version.
++
++[Unit]
++Description=Drop Read-Ahead Data
++Documentation=man:systemd-readahead-replay.service(8)
++ConditionPathExists=/.readahead
++
++[Service]
++Type=oneshot
++ExecStart=/bin/rm -f /.readahead
++
++[Install]
++WantedBy=system-update.target
++Also=systemd-readahead-collect.service
+diff --git a/units/systemd-readahead-replay.service.in b/units/systemd-readahead-replay.service.in
+new file mode 100644
+index 0000000..c64a533
+--- /dev/null
++++ b/units/systemd-readahead-replay.service.in
+@@ -0,0 +1,26 @@
++#  This file is part of systemd.
++#
++#  systemd is free software; you can redistribute it and/or modify it
++#  under the terms of the GNU Lesser General Public License as published by
++#  the Free Software Foundation; either version 2.1 of the License, or
++#  (at your option) any later version.
++
++[Unit]
++Description=Replay Read-Ahead Data
++Documentation=man:systemd-readahead-replay.service(8)
++DefaultDependencies=no
++Conflicts=shutdown.target
++Before=sysinit.target shutdown.target
++ConditionPathExists=!/run/systemd/readahead/noreplay
++ConditionPathExists=/.readahead
++ConditionVirtualization=no
++
++[Service]
++Type=notify
++ExecStart=@rootlibexecdir@/systemd-readahead replay
++RemainAfterExit=yes
++StandardOutput=null
++OOMScoreAdjust=1000
++
++[Install]
++WantedBy=default.target
+diff --git a/units/systemd-remount-fs.service.in b/units/systemd-remount-fs.service.in
+index 8d9daac..70e1a86 100644
+--- a/units/systemd-remount-fs.service.in
++++ b/units/systemd-remount-fs.service.in
+@@ -11,7 +11,7 @@ Documentation=man:systemd-remount-fs.service(8)
+ Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=systemd-fsck-root.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-fsck-root.service
+ Before=local-fs-pre.target local-fs.target shutdown.target
+ Wants=local-fs-pre.target
+ ConditionPathExists=/etc/fstab
+diff --git a/units/systemd-rfkill@.service.in b/units/systemd-rfkill@.service.in
+index b48efe5..0d2757d 100644
+--- a/units/systemd-rfkill@.service.in
++++ b/units/systemd-rfkill@.service.in
+@@ -12,7 +12,7 @@ DefaultDependencies=no
+ BindsTo=sys-subsystem-rfkill-devices-%i.device
+ RequiresMountsFor=/var/lib/systemd/rfkill
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target
+ 
+ [Service]
+diff --git a/units/systemd-sysctl.service.in b/units/systemd-sysctl.service.in
+index fa72085..ade9dc3 100644
+--- a/units/systemd-sysctl.service.in
++++ b/units/systemd-sysctl.service.in
+@@ -10,6 +10,7 @@ Description=Apply Kernel Variables
+ Documentation=man:systemd-sysctl.service(8) man:sysctl.d(5)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
++After=systemd-readahead-collect.service systemd-readahead-replay.service
+ After=systemd-modules-load.service
+ Before=sysinit.target shutdown.target
+ ConditionPathIsReadWrite=/proc/sys/
+diff --git a/units/systemd-sysusers.service.in b/units/systemd-sysusers.service.in
+index ffd6d77..69fea11 100644
+--- a/units/systemd-sysusers.service.in
++++ b/units/systemd-sysusers.service.in
+@@ -10,7 +10,7 @@ Description=Create System Users
+ Documentation=man:sysusers.d(5) man:systemd-sysusers.service(8)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target systemd-update-done.service
+ ConditionNeedsUpdate=/etc
+ 
+diff --git a/units/systemd-tmpfiles-clean.service.in b/units/systemd-tmpfiles-clean.service.in
+index 133c8c9..31b2378 100644
+--- a/units/systemd-tmpfiles-clean.service.in
++++ b/units/systemd-tmpfiles-clean.service.in
+@@ -10,7 +10,7 @@ Description=Cleanup of Temporary Directories
+ Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=local-fs.target time-sync.target
++After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target time-sync.target
+ Before=shutdown.target
+ 
+ [Service]
+diff --git a/units/systemd-tmpfiles-setup-dev.service.in b/units/systemd-tmpfiles-setup-dev.service.in
+index 0123a03..0b66c53 100644
+--- a/units/systemd-tmpfiles-setup-dev.service.in
++++ b/units/systemd-tmpfiles-setup-dev.service.in
+@@ -10,7 +10,7 @@ Description=Create Static Device Nodes in /dev
+ Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=systemd-sysusers.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-sysusers.service
+ Before=sysinit.target local-fs-pre.target systemd-udevd.service shutdown.target
+ ConditionCapability=CAP_SYS_MODULE
+ 
+diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
+index e895cda..72ab083 100644
+--- a/units/systemd-tmpfiles-setup.service.in
++++ b/units/systemd-tmpfiles-setup.service.in
+@@ -10,7 +10,7 @@ Description=Create Volatile Files and Directories
+ Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=local-fs.target systemd-sysusers.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target systemd-sysusers.service
+ Before=sysinit.target shutdown.target
+ RefuseManualStop=yes
+ 
+diff --git a/units/systemd-update-done.service.in b/units/systemd-update-done.service.in
+index ec7d906..7031bff 100644
+--- a/units/systemd-update-done.service.in
++++ b/units/systemd-update-done.service.in
+@@ -10,7 +10,7 @@ Description=Update is Completed
+ Documentation=man:systemd-update-done.service(8)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
+-After=local-fs.target
++After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
+ Before=sysinit.target shutdown.target
+ ConditionNeedsUpdate=|/etc
+ ConditionNeedsUpdate=|/var
+diff --git a/units/systemd-update-utmp.service.in b/units/systemd-update-utmp.service.in
+index 163eccd..da7dda7 100644
+--- a/units/systemd-update-utmp.service.in
++++ b/units/systemd-update-utmp.service.in
+@@ -11,7 +11,7 @@ Documentation=man:systemd-update-utmp.service(8) man:utmp(5)
+ DefaultDependencies=no
+ RequiresMountsFor=/var/log/wtmp
+ Conflicts=shutdown.target
+-After=systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service
++After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service systemd-tmpfiles-setup.service auditd.service
+ Before=sysinit.target shutdown.target
+ 
+ [Service]
+diff --git a/units/systemd-vconsole-setup.service.in b/units/systemd-vconsole-setup.service.in
+index 6160361..18faa63 100644
+--- a/units/systemd-vconsole-setup.service.in
++++ b/units/systemd-vconsole-setup.service.in
+@@ -10,6 +10,7 @@ Description=Setup Virtual Console
+ Documentation=man:systemd-vconsole-setup.service(8) man:vconsole.conf(5)
+ DefaultDependencies=no
+ Conflicts=shutdown.target
++After=systemd-readahead-collect.service systemd-readahead-replay.service
+ Before=sysinit.target shutdown.target
+ ConditionPathExists=/dev/tty0
+ 
diff --git a/SOURCES/0010-strv-don-t-access-potentially-NULL-string-arrays.patch b/SOURCES/0010-strv-don-t-access-potentially-NULL-string-arrays.patch
deleted file mode 100644
index 9fbb5d7..0000000
--- a/SOURCES/0010-strv-don-t-access-potentially-NULL-string-arrays.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From c6d39712453c53e8c859d6682f65d8129afc35a3 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:38:28 +0200
-Subject: [PATCH] strv: don't access potentially NULL string arrays
-
----
- src/shared/env-util.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/env-util.c b/src/shared/env-util.c
-index 5e29629..7976881 100644
---- a/src/shared/env-util.c
-+++ b/src/shared/env-util.c
-@@ -405,7 +405,9 @@ char **strv_env_clean_log(char **e, const char *message) {
-                 e[k++] = *p;
-         }
- 
--        e[k] = NULL;
-+        if (e)
-+                e[k] = NULL;
-+
-         return e;
- }
- 
diff --git a/SOURCES/0011-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch b/SOURCES/0011-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch
deleted file mode 100644
index 13d08bf..0000000
--- a/SOURCES/0011-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 510cc2c4bc293002629547e1f5826d7a0ad92101 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 19:38:52 +0200
-Subject: [PATCH] mkdir: pass a proper function pointer to mkdir_safe_internal
-
----
- src/shared/mkdir.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/mkdir.c b/src/shared/mkdir.c
-index b7e5c6e..43c6ea6 100644
---- a/src/shared/mkdir.c
-+++ b/src/shared/mkdir.c
-@@ -53,7 +53,7 @@ int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, mkd
- }
- 
- int mkdir_safe(const char *path, mode_t mode, uid_t uid, gid_t gid) {
--        return mkdir_safe_internal(path, mode, uid, gid, false);
-+        return mkdir_safe_internal(path, mode, uid, gid, mkdir);
- }
- 
- static int is_dir(const char* path) {
diff --git a/SOURCES/0011-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch b/SOURCES/0011-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch
new file mode 100644
index 0000000..282fef7
--- /dev/null
+++ b/SOURCES/0011-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch
@@ -0,0 +1,41 @@
+From 2411be37e26457c5e6734dbf08feb4b8375c13a2 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 22 Sep 2014 07:53:52 +0200
+Subject: [PATCH] rules: add rule for naming Dell iDRAC USB Virtual NIC as
+ 'idrac'
+
+RHEL-only patch
+
+Resolves: #1054477
+---
+ Makefile.am          | 3 ++-
+ rules/73-idrac.rules | 6 ++++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+ create mode 100644 rules/73-idrac.rules
+
+diff --git a/Makefile.am b/Makefile.am
+index b0e4b5a..9e64d6f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3567,7 +3567,8 @@ dist_udevrules_DATA += \
+ 	rules/78-sound-card.rules \
+ 	rules/80-net-setup-link.rules \
+ 	rules/95-udev-late.rules \
+-	rules/40-redhat.rules
++	rules/40-redhat.rules \
++	rules/73-idrac.rules
+ 
+ nodist_udevrules_DATA += \
+ 	rules/99-systemd.rules
+diff --git a/rules/73-idrac.rules b/rules/73-idrac.rules
+new file mode 100644
+index 0000000..d67fc42
+--- /dev/null
++++ b/rules/73-idrac.rules
+@@ -0,0 +1,6 @@
++# do not edit this file, it will be overwritten on update
++
++# On Dell PowerEdge systems, the iDRAC7 and later support a USB Virtual NIC
++# with terminates in the iDRAC. Help identify this with 'idrac'
++
++ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", ATTRS{idVendor}=="413c", ATTRS{idProduct}=="a102", NAME="idrac"
diff --git a/SOURCES/0012-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch b/SOURCES/0012-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch
deleted file mode 100644
index 40c9afd..0000000
--- a/SOURCES/0012-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 4092dd8187d9ff8d42d7f05b4a95816b575f67ff Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Wed, 2 Oct 2013 15:35:16 -0400
-Subject: [PATCH] tmpfiles.d: include setgid perms for /run/log/journal
-
-4608af4333d0f7f5 set permissions for journal storage on persistent disk
-but not the volatile storage.
-
-ref: https://bugs.archlinux.org/task/37170
----
- tmpfiles.d/systemd.conf | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf
-index b630440..a05c657 100644
---- a/tmpfiles.d/systemd.conf
-+++ b/tmpfiles.d/systemd.conf
-@@ -26,3 +26,5 @@ F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
- 
- m /var/log/journal 2755 root systemd-journal - -
- m /var/log/journal/%m 2755 root systemd-journal - -
-+m /run/log/journal 2755 root systemd-journal - -
-+m /run/log/journal/%m 2755 root systemd-journal - -
diff --git a/SOURCES/0012-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch b/SOURCES/0012-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch
new file mode 100644
index 0000000..049618d
--- /dev/null
+++ b/SOURCES/0012-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch
@@ -0,0 +1,91 @@
+From 74b66951fcd54e6ab51023f60cc021fe355be1a8 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Sat, 25 Oct 2014 17:10:11 +0200
+Subject: [PATCH] udev: net_id - correctly name netdevs based on dev_port when
+ set
+
+Upstream, dev_id was replaced by dev_port, and the same happened for some kernel
+drivers. This logic is not in the RHEL7 kernel, except for one new driver which
+uses dev_port, but never used dev_id in the past.
+
+To give proper names to these devices, fall back to using dev_port when dev_id
+is not set. This does not affect any existing drivers.
+
+(rhel only)
+
+Resolves: #1155996
+
+Conflicts:
+	src/udev/udev-builtin-net_id.c
+
+Conflicts:
+	src/udev/udev-builtin-net_id.c
+---
+ src/udev/udev-builtin-net_id.c | 26 ++++++++++++++++----------
+ 1 file changed, 16 insertions(+), 10 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 37ff1b8..99caa0a 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -38,7 +38,7 @@
+  *   o<index>                              -- on-board device index number
+  *   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
+  *   x<MAC>                                -- MAC address
+- *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
++ *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_id>/<dev_port>]
+  *                                         -- PCI geographical location
+  *   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
+  *                                         -- USB port number chain
+@@ -169,7 +169,7 @@ static bool is_pci_multifunction(struct udev_device *dev) {
+ 
+ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+         struct udev *udev = udev_device_get_udev(names->pcidev);
+-        unsigned domain, bus, slot, func, dev_port = 0;
++        unsigned domain, bus, slot, func, dev_id = 0;
+         size_t l;
+         char *s;
+         const char *attr;
+@@ -183,9 +183,15 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+                 return -ENOENT;
+ 
+         /* kernel provided multi-device index */
+-        attr = udev_device_get_sysattr_value(dev, "dev_port");
+-        if (attr)
+-                dev_port = strtol(attr, NULL, 10);
++        attr = udev_device_get_sysattr_value(dev, "dev_id");
++        if (attr) {
++                dev_id = strtol(attr, NULL, 16);
++                if (dev_id == 0) {
++                        attr = udev_device_get_sysattr_value(dev, "dev_port");
++                        if (attr)
++                                dev_id = strtol(attr, NULL, 16);
++                }
++        }
+ 
+         /* compose a name based on the raw kernel's PCI bus, slot numbers */
+         s = names->pci_path;
+@@ -194,9 +200,9 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+                 l = strpcpyf(&s, l, "P%u", domain);
+         l = strpcpyf(&s, l, "p%us%u", bus, slot);
+         if (func > 0 || is_pci_multifunction(names->pcidev))
+-                l = strpcpyf(&s, l, "f%u", func);
+-        if (dev_port > 0)
+-                l = strpcpyf(&s, l, "d%u", dev_port);
++                l = strpcpyf(&s, l, "f%d", func);
++        if (dev_id > 0)
++                l = strpcpyf(&s, l, "d%d", dev_id);
+         if (l == 0)
+                 names->pci_path[0] = '\0';
+ 
+@@ -245,8 +251,8 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+                 l = strpcpyf(&s, l, "s%d", hotplug_slot);
+                 if (func > 0 || is_pci_multifunction(names->pcidev))
+                         l = strpcpyf(&s, l, "f%d", func);
+-                if (dev_port > 0)
+-                        l = strpcpyf(&s, l, "d%d", dev_port);
++                if (dev_id > 0)
++                        l = strpcpyf(&s, l, "d%d", dev_id);
+                 if (l == 0)
+                         names->pci_path[0] = '\0';
+         }
diff --git a/SOURCES/0013-Revert-blkid-Warn-when-rejecting-a-superblock-with-a.patch b/SOURCES/0013-Revert-blkid-Warn-when-rejecting-a-superblock-with-a.patch
new file mode 100644
index 0000000..a3ef95c
--- /dev/null
+++ b/SOURCES/0013-Revert-blkid-Warn-when-rejecting-a-superblock-with-a.patch
@@ -0,0 +1,77 @@
+From f1faa24b260222e70d38492e5e3f126700dbd9f8 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 4 Mar 2015 16:10:36 +0100
+Subject: [PATCH] Revert "blkid: Warn when rejecting a superblock with a bad
+ csum"
+
+This reverts commit d47f6ca5f9b7a0b400d8bdb050151a0284fb4bdb.
+---
+ README                        |  2 +-
+ configure.ac                  |  2 +-
+ src/udev/udev-builtin-blkid.c | 13 +------------
+ 3 files changed, 3 insertions(+), 14 deletions(-)
+
+diff --git a/README b/README
+index 287d05c..ac2a81c 100644
+--- a/README
++++ b/README
+@@ -115,7 +115,7 @@ REQUIREMENTS:
+         libcap
+         libmount >= 2.20 (from util-linux)
+         libseccomp >= 1.0.0 (optional)
+-        libblkid >= 2.24 (from util-linux) (optional)
++        libblkid >= 2.20 (from util-linux) (optional)
+         libkmod >= 15 (optional)
+         PAM >= 1.1.2 (optional)
+         libcryptsetup (optional)
+diff --git a/configure.ac b/configure.ac
+index f701bcf..9c25c3c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -437,7 +437,7 @@ AM_CONDITIONAL(HAVE_XKBCOMMON, [test "$have_xkbcommon" = "yes"])
+ have_blkid=no
+ AC_ARG_ENABLE(blkid, AS_HELP_STRING([--disable-blkid], [disable blkid support]))
+ if test "x$enable_blkid" != "xno"; then
+-        PKG_CHECK_MODULES(BLKID, [ blkid >= 2.24 ],
++        PKG_CHECK_MODULES(BLKID, [ blkid >= 2.20 ],
+                 [AC_DEFINE(HAVE_BLKID, 1, [Define if blkid is available]) have_blkid=yes], have_blkid=no)
+         if test "x$have_blkid" = xno -a "x$enable_blkid" = xyes; then
+                 AC_MSG_ERROR([*** blkid support requested but libraries not found])
+diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c
+index 03e3dc2..8999583 100644
+--- a/src/udev/udev-builtin-blkid.c
++++ b/src/udev/udev-builtin-blkid.c
+@@ -221,7 +221,6 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t
+         blkid_probe pr;
+         const char *data;
+         const char *name;
+-        const char *prtype = NULL;
+         int nvals;
+         int i;
+         int err = 0;
+@@ -257,8 +256,7 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t
+         blkid_probe_set_superblocks_flags(pr,
+                 BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID |
+                 BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE |
+-                BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION |
+-                BLKID_SUBLKS_BADCSUM);
++                BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION);
+ 
+         if (noraid)
+                 blkid_probe_filter_superblocks_usage(pr, BLKID_FLTR_NOTIN, BLKID_USAGE_RAID);
+@@ -280,15 +278,6 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t
+         err = probe_superblocks(pr);
+         if (err < 0)
+                 goto out;
+-        if (blkid_probe_has_value(pr, "SBBADCSUM")) {
+-                if (!blkid_probe_lookup_value(pr, "TYPE", &prtype, NULL))
+-                        log_warning("incorrect %s checksum on %s",
+-                                    prtype, udev_device_get_devnode(dev));
+-                else
+-                        log_warning("incorrect checksum on %s",
+-                                    udev_device_get_devnode(dev));
+-                goto out;
+-        }
+ 
+         /* If we are a partition then our parent passed on the root
+          * partition UUID to us */
diff --git a/SOURCES/0013-gpt-auto-generator-exit-immediately-if-in-container.patch b/SOURCES/0013-gpt-auto-generator-exit-immediately-if-in-container.patch
deleted file mode 100644
index fe6a546..0000000
--- a/SOURCES/0013-gpt-auto-generator-exit-immediately-if-in-container.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 650b4c3e4e004acfe7c201fd8a3e9d9c87824593 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 3 Oct 2013 22:13:01 -0400
-Subject: [PATCH] gpt-auto-generator: exit immediately if in container
-
-Otherwise we get an ugly warning when running systemd in
-a container.
----
- src/gpt-auto-generator/gpt-auto-generator.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
-index ca54925..d2b4213 100644
---- a/src/gpt-auto-generator/gpt-auto-generator.c
-+++ b/src/gpt-auto-generator/gpt-auto-generator.c
-@@ -38,6 +38,7 @@
- #include "libudev.h"
- #include "special.h"
- #include "unit-name.h"
-+#include "virt.h"
- 
- /* TODO:
-  *
-@@ -481,6 +482,13 @@ int main(int argc, char *argv[]) {
-         umask(0022);
- 
-         if (in_initrd()) {
-+                log_debug("In initrd, exiting.");
-+                r = 0;
-+                goto finish;
-+        }
-+
-+        if (detect_container(NULL) > 0) {
-+                log_debug("In a container, exiting.");
-                 r = 0;
-                 goto finish;
-         }
diff --git a/SOURCES/0014-journald-audit-exit-gracefully-in-the-case-we-can-t-.patch b/SOURCES/0014-journald-audit-exit-gracefully-in-the-case-we-can-t-.patch
new file mode 100644
index 0000000..5f2abb1
--- /dev/null
+++ b/SOURCES/0014-journald-audit-exit-gracefully-in-the-case-we-can-t-.patch
@@ -0,0 +1,27 @@
+From 9b5e05005e534fc7fb6dc56c94e3296bb17fe122 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 6 Mar 2015 12:41:20 +0100
+Subject: [PATCH] journald-audit: exit gracefully in the case we can't join
+ audit multicast group
+
+---
+ src/journal/journald-audit.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c
+index c2f1545..151097a 100644
+--- a/src/journal/journald-audit.c
++++ b/src/journal/journald-audit.c
+@@ -529,8 +529,10 @@ int server_open_audit(Server *s) {
+                 }
+ 
+                 r = bind(s->audit_fd, &sa.sa, sizeof(sa.nl));
+-                if (r < 0)
+-                        return log_error_errno(errno, "Failed to join audit multicast group: %m");
++                if (r < 0) {
++                        log_warning_errno(errno, "Failed to join audit multicast group, ignoring: %m");
++                        return 0;
++                }
+         } else
+                 fd_nonblock(s->audit_fd, 1);
+ 
diff --git a/SOURCES/0014-systemd-order-remote-mounts-from-mountinfo-before-re.patch b/SOURCES/0014-systemd-order-remote-mounts-from-mountinfo-before-re.patch
deleted file mode 100644
index e89d7f2..0000000
--- a/SOURCES/0014-systemd-order-remote-mounts-from-mountinfo-before-re.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From d41259fcb7dac4f1bb02dbc743d5372827d3c01a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 3 Oct 2013 22:15:08 -0400
-Subject: [PATCH] systemd: order remote mounts from mountinfo before
- remote-fs.target
-
-Usually the network is stopped before filesystems are umounted.
-Ordering network filesystems before remote-fs.target means that their
-unmounting will be performed earlier, and can terminate sucessfully.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=70002
----
- src/core/mount.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/mount.c b/src/core/mount.c
-index 3d46557..93bfa99 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -1440,6 +1440,9 @@ static int mount_add_one(
- 
-         u = manager_get_unit(m, e);
-         if (!u) {
-+                const char* const target =
-+                        fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET;
-+
-                 delete = true;
- 
-                 u = unit_new(m, sizeof(Mount));
-@@ -1466,7 +1469,7 @@ static int mount_add_one(
-                         goto fail;
-                 }
- 
--                r = unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_LOCAL_FS_TARGET, NULL, true);
-+                r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
-                 if (r < 0)
-                         goto fail;
- 
diff --git a/SOURCES/0015-fedora-disable-resolv.conf-symlink.patch b/SOURCES/0015-fedora-disable-resolv.conf-symlink.patch
new file mode 100644
index 0000000..e7dd7af
--- /dev/null
+++ b/SOURCES/0015-fedora-disable-resolv.conf-symlink.patch
@@ -0,0 +1,24 @@
+From 634aa6447d365af61b6cd78651eb80c32da966dc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 3 Oct 2014 21:34:14 -0400
+Subject: [PATCH] fedora: disable resolv.conf symlink
+
+Conflicts:
+	tmpfiles.d/etc.conf.m4
+---
+ tmpfiles.d/etc.conf.m4 | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/tmpfiles.d/etc.conf.m4 b/tmpfiles.d/etc.conf.m4
+index 9b0e080..125d6e0 100644
+--- a/tmpfiles.d/etc.conf.m4
++++ b/tmpfiles.d/etc.conf.m4
+@@ -10,8 +10,5 @@
+ L /etc/os-release - - - - ../usr/lib/os-release
+ L /etc/localtime - - - - ../usr/share/zoneinfo/UTC
+ L+ /etc/mtab - - - - ../proc/self/mounts
+-m4_ifdef(`ENABLE_RESOLVED',
+-L /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf
+-)m4_dnl
+ C /etc/nsswitch.conf - - - -
+ C /etc/pam.d - - - -
diff --git a/SOURCES/0015-manager-when-verifying-whether-clients-may-change-en.patch b/SOURCES/0015-manager-when-verifying-whether-clients-may-change-en.patch
deleted file mode 100644
index 20a77f3..0000000
--- a/SOURCES/0015-manager-when-verifying-whether-clients-may-change-en.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From f4d7751752e7d2d2393078daef342e54368468d7 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 4 Oct 2013 17:01:37 +0200
-Subject: [PATCH] manager: when verifying whether clients may change
- environment using selinux check for "reload" rather "reboot"
-
-This appears to be a copy/paste error.
----
- src/core/dbus-manager.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
-index 676a07f..8f4d017 100644
---- a/src/core/dbus-manager.c
-+++ b/src/core/dbus-manager.c
-@@ -1397,7 +1397,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 _cleanup_strv_free_ char **l = NULL;
-                 char **e = NULL;
- 
--                SELINUX_ACCESS_CHECK(connection, message, "reboot");
-+                SELINUX_ACCESS_CHECK(connection, message, "reload");
- 
-                 r = bus_parse_strv(message, &l);
-                 if (r == -ENOMEM)
-@@ -1424,7 +1424,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 _cleanup_strv_free_ char **l = NULL;
-                 char **e = NULL;
- 
--                SELINUX_ACCESS_CHECK(connection, message, "reboot");
-+                SELINUX_ACCESS_CHECK(connection, message, "reload");
- 
-                 r = bus_parse_strv(message, &l);
-                 if (r == -ENOMEM)
-@@ -1452,7 +1452,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 char **f = NULL;
-                 DBusMessageIter iter;
- 
--                SELINUX_ACCESS_CHECK(connection, message, "reboot");
-+                SELINUX_ACCESS_CHECK(connection, message, "reload");
- 
-                 if (!dbus_message_iter_init(message, &iter))
-                         goto oom;
diff --git a/SOURCES/0016-Revert-timedated-manage-systemd-timesyncd-directly-i.patch b/SOURCES/0016-Revert-timedated-manage-systemd-timesyncd-directly-i.patch
new file mode 100644
index 0000000..d63e8ed
--- /dev/null
+++ b/SOURCES/0016-Revert-timedated-manage-systemd-timesyncd-directly-i.patch
@@ -0,0 +1,358 @@
+From 1a3dd33f98312421e0f3d654e8f5d56554557a8c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 3 Oct 2014 21:34:14 -0400
+Subject: [PATCH] Revert "timedated: manage systemd-timesyncd directly instead
+ of lists of alternatives"
+
+This reverts commit b72ddf0f4f552dd53d6404b6ddbc9f17d02b8e12.
+
+Conflicts:
+	Makefile.am
+	NEWS
+	src/timedate/timedated.c
+---
+ Makefile.am              |   9 ++
+ src/timedate/timedated.c | 252 ++++++++++++++++++++++++++++++-----------------
+ 2 files changed, 170 insertions(+), 91 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 9e64d6f..bf65b24 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -111,6 +111,7 @@ catalogdir=$(prefix)/lib/systemd/catalog
+ kernelinstalldir = $(prefix)/lib/kernel/install.d
+ factory_etcdir = $(prefix)/share/factory/etc
+ factory_pamdir = $(prefix)/share/factory/etc/pam.d
++ntpunitsdir=$(prefix)/lib/systemd/ntp-units.d
+ 
+ # And these are the special ones for /
+ rootprefix=@rootprefix@
+@@ -5101,6 +5102,10 @@ dist_systemunit_DATA_busnames += \
+ polkitpolicy_files += \
+ 	src/timedate/org.freedesktop.timedate1.policy
+ 
++INSTALL_DIRS += \
++	$(prefix)/lib/systemd/ntp-units.d \
++	$(sysconfdir)/systemd/ntp-units.d
++
+ SYSTEM_UNIT_ALIASES += \
+ 	systemd-timedated.service dbus-org.freedesktop.timedate1.service
+ 
+@@ -5177,6 +5182,10 @@ EXTRA_DIST += \
+ 
+ CLEANFILES += \
+ 	src/timesync/timesyncd.conf
++
++dist_ntpunits_DATA = \
++	src/timesync/90-systemd.list
++
+ endif
+ 
+ # ------------------------------------------------------------------------------
+diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
+index 753c3d1..66097ef 100644
+--- a/src/timedate/timedated.c
++++ b/src/timedate/timedated.c
+@@ -186,141 +186,211 @@ static int context_write_data_local_rtc(Context *c) {
+         return write_string_file_atomic_label("/etc/adjtime", w);
+ }
+ 
++static char** get_ntp_services(void) {
++        _cleanup_strv_free_ char **r = NULL, **files = NULL;
++        char **i;
++        int k;
++
++        k = conf_files_list(&files, ".list", NULL,
++                            "/etc/systemd/ntp-units.d",
++                            "/run/systemd/ntp-units.d",
++                            "/usr/local/lib/systemd/ntp-units.d",
++                            "/usr/lib/systemd/ntp-units.d",
++                            NULL);
++        if (k < 0)
++                return NULL;
++
++        STRV_FOREACH(i, files) {
++                _cleanup_fclose_ FILE *f;
++
++                f = fopen(*i, "re");
++                if (!f)
++                        continue;
++
++                for (;;) {
++                        char line[PATH_MAX], *l;
++
++                        if (!fgets(line, sizeof(line), f)) {
++                                if (ferror(f))
++                                        log_error("Failed to read NTP unit file: %m");
++
++                                break;
++                        }
++
++                        l = strstrip(line);
++                        if (l[0] == 0 || l[0] == '#')
++                                continue;
++
++                        if (strv_extend(&r, l) < 0) {
++                                log_oom();
++                                return NULL;
++                        }
++                }
++        }
++
++        i = r;
++        r = NULL; /* avoid cleanup */
++
++        return strv_uniq(i);
++}
++
+ static int context_read_ntp(Context *c, sd_bus *bus) {
+-        _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
+-        sd_bus_message *reply = NULL;
+-        const char *s;
++        _cleanup_strv_free_ char **l;
++        char **i;
+         int r;
+ 
+         assert(c);
+         assert(bus);
+ 
+-        r = sd_bus_call_method(
+-                        bus,
+-                        "org.freedesktop.systemd1",
+-                        "/org/freedesktop/systemd1",
+-                        "org.freedesktop.systemd1.Manager",
+-                        "GetUnitFileState",
+-                        &error,
+-                        &reply,
+-                        "s",
+-                        "systemd-timesyncd.service");
++        l = get_ntp_services();
++        STRV_FOREACH(i, l) {
++                _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
++                sd_bus_message *reply = NULL;
++                const char *s;
+ 
+-        if (r < 0) {
+-                if (sd_bus_error_has_name(&error, SD_BUS_ERROR_FILE_NOT_FOUND) ||
+-                    sd_bus_error_has_name(&error, "org.freedesktop.systemd1.LoadFailed") ||
+-                    sd_bus_error_has_name(&error, "org.freedesktop.systemd1.NoSuchUnit"))
+-                        return 0;
++                r = sd_bus_call_method(
++                                bus,
++                                "org.freedesktop.systemd1",
++                                "/org/freedesktop/systemd1",
++                                "org.freedesktop.systemd1.Manager",
++                                "GetUnitFileState",
++                                &error,
++                                &reply,
++                                "s",
++                                *i);
+ 
+-                return r;
+-        }
++                if (r < 0) {
++                        /* This implementation does not exist. Try the next one. */
++                        if (sd_bus_error_has_name(&error, SD_BUS_ERROR_FILE_NOT_FOUND))
++                                continue;
+ 
+-        r = sd_bus_message_read(reply, "s", &s);
+-        if (r < 0)
+-                return r;
++                        return r;
++                }
++
++                r = sd_bus_message_read(reply, "s", &s);
++                if (r < 0)
++                        return r;
+ 
+-        c->can_ntp = true;
+-        c->use_ntp = STR_IN_SET(s, "enabled", "enabled-runtime");
++                c->can_ntp = true;
++                c->use_ntp = STR_IN_SET(s, "enabled", "enabled-runtime");
++
++                return 0;
++        }
+ 
+         return 0;
+ }
+ 
+ static int context_start_ntp(Context *c, sd_bus *bus, sd_bus_error *error) {
++        _cleanup_strv_free_ char **l = NULL;
++        char **i;
+         int r;
+ 
+         assert(c);
+         assert(bus);
+         assert(error);
+ 
+-        if (c->use_ntp)
+-                r = sd_bus_call_method(
+-                                bus,
+-                                "org.freedesktop.systemd1",
+-                                "/org/freedesktop/systemd1",
+-                                "org.freedesktop.systemd1.Manager",
+-                                "StartUnit",
+-                                error,
+-                                NULL,
+-                                "ss",
+-                                "systemd-timesyncd.service",
+-                                "replace");
+-        else
+-                r = sd_bus_call_method(
+-                                bus,
+-                                "org.freedesktop.systemd1",
+-                                "/org/freedesktop/systemd1",
+-                                "org.freedesktop.systemd1.Manager",
+-                                "StopUnit",
+-                                error,
+-                                NULL,
+-                                "ss",
+-                                "systemd-timesyncd.service",
+-                                "replace");
++        l = get_ntp_services();
++        STRV_FOREACH(i, l) {
++
++                if (c->use_ntp)
++                        r = sd_bus_call_method(
++                                        bus,
++                                        "org.freedesktop.systemd1",
++                                        "/org/freedesktop/systemd1",
++                                        "org.freedesktop.systemd1.Manager",
++                                        "StartUnit",
++                                        error,
++                                        NULL,
++                                        "ss", *i, "replace");
++                else
++                        r = sd_bus_call_method(
++                                        bus,
++                                        "org.freedesktop.systemd1",
++                                        "/org/freedesktop/systemd1",
++                                        "org.freedesktop.systemd1.Manager",
++                                        "StopUnit",
++                                        error,
++                                        NULL,
++                                        "ss", *i, "replace");
++
++                if (r < 0) {
++                        if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND) ||
++                            sd_bus_error_has_name(error, "org.freedesktop.systemd1.LoadFailed") ||
++                            sd_bus_error_has_name(error, "org.freedesktop.systemd1.NoSuchUnit")) {
++                                /* This implementation does not exist. Try the next one. */
++                                sd_bus_error_free(error);
++                                continue;
++                        }
+ 
+-        if (r < 0) {
+-                if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND) ||
+-                    sd_bus_error_has_name(error, "org.freedesktop.systemd1.LoadFailed") ||
+-                    sd_bus_error_has_name(error, "org.freedesktop.systemd1.NoSuchUnit"))
+-                        return sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
++                        return r;
++                }
+ 
+-                return r;
++                return 1;
+         }
+ 
+-        return 0;
++        sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
++        return -ENOTSUP;
+ }
+ 
+ static int context_enable_ntp(Context*c, sd_bus *bus, sd_bus_error *error) {
++        _cleanup_strv_free_ char **l = NULL;
++        char **i;
+         int r;
+ 
+         assert(c);
+         assert(bus);
+         assert(error);
+ 
+-        if (c->use_ntp)
+-                r = sd_bus_call_method(
+-                                bus,
+-                                "org.freedesktop.systemd1",
+-                                "/org/freedesktop/systemd1",
+-                                "org.freedesktop.systemd1.Manager",
+-                                "EnableUnitFiles",
+-                                error,
+-                                NULL,
+-                                "asbb", 1,
+-                                "systemd-timesyncd.service",
+-                                false, true);
+-        else
++        l = get_ntp_services();
++        STRV_FOREACH(i, l) {
++                if (c->use_ntp)
++                        r = sd_bus_call_method(
++                                        bus,
++                                        "org.freedesktop.systemd1",
++                                        "/org/freedesktop/systemd1",
++                                        "org.freedesktop.systemd1.Manager",
++                                        "EnableUnitFiles",
++                                        error,
++                                        NULL,
++                                        "asbb", 1, *i, false, true);
++                else
++                        r = sd_bus_call_method(
++                                        bus,
++                                        "org.freedesktop.systemd1",
++                                        "/org/freedesktop/systemd1",
++                                        "org.freedesktop.systemd1.Manager",
++                                        "DisableUnitFiles",
++                                        error,
++                                        NULL,
++                                        "asb", 1, *i, false);
++
++                if (r < 0) {
++                        if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND)) {
++                                /* This implementation does not exist. Try the next one. */
++                                sd_bus_error_free(error);
++                                continue;
++                        }
++
++                        return r;
++                }
++
+                 r = sd_bus_call_method(
+                                 bus,
+                                 "org.freedesktop.systemd1",
+                                 "/org/freedesktop/systemd1",
+                                 "org.freedesktop.systemd1.Manager",
+-                                "DisableUnitFiles",
++                                "Reload",
+                                 error,
+                                 NULL,
+-                                "asb", 1,
+-                                "systemd-timesyncd.service",
+-                                false);
+-
+-        if (r < 0) {
+-                if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND))
+-                        return sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
++                                NULL);
++                if (r < 0)
++                        return r;
+ 
+-                return r;
++                return 1;
+         }
+ 
+-        r = sd_bus_call_method(
+-                        bus,
+-                        "org.freedesktop.systemd1",
+-                        "/org/freedesktop/systemd1",
+-                        "org.freedesktop.systemd1.Manager",
+-                        "Reload",
+-                        error,
+-                        NULL,
+-                        NULL);
+-        if (r < 0)
+-                return r;
+-
+-        return 0;
++        sd_bus_error_set_const(error, "org.freedesktop.timedate1.NoNTPSupport", "NTP not supported.");
++        return -ENOTSUP;
+ }
+ 
+ static int property_get_rtc_time(
diff --git a/SOURCES/0016-mount-check-for-NULL-before-reading-pm-what.patch b/SOURCES/0016-mount-check-for-NULL-before-reading-pm-what.patch
deleted file mode 100644
index 1722a3d..0000000
--- a/SOURCES/0016-mount-check-for-NULL-before-reading-pm-what.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 172b60ee7366d5e46b240386824682e4c051ad9e Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Fri, 4 Oct 2013 18:22:40 -0400
-Subject: [PATCH] mount: check for NULL before reading pm->what
-
-Since a57f7e2c828b85, a mount unit with garbage in it would cause
-systemd to crash on loading it.
-
-ref: https://bugs.freedesktop.org/show_bug.cgi?id=70148
----
- src/core/mount.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/mount.c b/src/core/mount.c
-index 93bfa99..db055f0 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -182,7 +182,7 @@ static int mount_add_mount_links(Mount *m) {
-          * for the source path (if this is a bind mount) to be
-          * available. */
-         pm = get_mount_parameters_fragment(m);
--        if (pm && path_is_absolute(pm->what)) {
-+        if (pm && pm->what && path_is_absolute(pm->what)) {
-                 r = unit_require_mounts_for(UNIT(m), pm->what);
-                 if (r < 0)
-                         return r;
diff --git a/SOURCES/0017-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch b/SOURCES/0017-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
deleted file mode 100644
index 80c2c54..0000000
--- a/SOURCES/0017-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
+++ /dev/null
@@ -1,178 +0,0 @@
-From 980112adcce965de6808390330750aaf11c165ab Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 5 Oct 2013 13:09:43 -0400
-Subject: [PATCH] core: do not add "what" to RequiresMountsFor for network
- mounts
-
-For cifs mount like //server/share, we would get
-RequiresMountsFor=/server/share, which probably isn't
-harmful, but quite confusing.
-
-Unfortunately a bunch of static functions had to be moved
-up, but patch is really one line.
----
- src/core/mount.c | 137 ++++++++++++++++++++++++++++---------------------------
- 1 file changed, 70 insertions(+), 67 deletions(-)
-
-diff --git a/src/core/mount.c b/src/core/mount.c
-index db055f0..70cd372 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -59,6 +59,72 @@ static const UnitActiveState state_translation_table[_MOUNT_STATE_MAX] = {
-         [MOUNT_FAILED] = UNIT_FAILED
- };
- 
-+static char* mount_test_option(const char *haystack, const char *needle) {
-+        struct mntent me = { .mnt_opts = (char*) haystack };
-+
-+        assert(needle);
-+
-+        /* Like glibc's hasmntopt(), but works on a string, not a
-+         * struct mntent */
-+
-+        if (!haystack)
-+                return NULL;
-+
-+        return hasmntopt(&me, needle);
-+}
-+
-+static bool mount_is_network(MountParameters *p) {
-+        assert(p);
-+
-+        if (mount_test_option(p->options, "_netdev"))
-+                return true;
-+
-+        if (p->fstype && fstype_is_network(p->fstype))
-+                return true;
-+
-+        return false;
-+}
-+
-+static bool mount_is_bind(MountParameters *p) {
-+        assert(p);
-+
-+        if (mount_test_option(p->options, "bind"))
-+                return true;
-+
-+        if (p->fstype && streq(p->fstype, "bind"))
-+                return true;
-+
-+        if (mount_test_option(p->options, "rbind"))
-+                return true;
-+
-+        if (p->fstype && streq(p->fstype, "rbind"))
-+                return true;
-+
-+        return false;
-+}
-+
-+static bool mount_is_auto(MountParameters *p) {
-+        assert(p);
-+
-+        return !mount_test_option(p->options, "noauto");
-+}
-+
-+static bool needs_quota(MountParameters *p) {
-+        assert(p);
-+
-+        if (mount_is_network(p))
-+                return false;
-+
-+        if (mount_is_bind(p))
-+                return false;
-+
-+        return mount_test_option(p->options, "usrquota") ||
-+                mount_test_option(p->options, "grpquota") ||
-+                mount_test_option(p->options, "quota") ||
-+                mount_test_option(p->options, "usrjquota") ||
-+                mount_test_option(p->options, "grpjquota");
-+}
-+
- static void mount_init(Unit *u) {
-         Mount *m = MOUNT(u);
- 
-@@ -182,7 +248,10 @@ static int mount_add_mount_links(Mount *m) {
-          * for the source path (if this is a bind mount) to be
-          * available. */
-         pm = get_mount_parameters_fragment(m);
--        if (pm && pm->what && path_is_absolute(pm->what)) {
-+        if (pm && pm->what &&
-+            path_is_absolute(pm->what) &&
-+            !mount_is_network(pm)) {
-+
-                 r = unit_require_mounts_for(UNIT(m), pm->what);
-                 if (r < 0)
-                         return r;
-@@ -214,72 +283,6 @@ static int mount_add_mount_links(Mount *m) {
-         return 0;
- }
- 
--static char* mount_test_option(const char *haystack, const char *needle) {
--        struct mntent me = { .mnt_opts = (char*) haystack };
--
--        assert(needle);
--
--        /* Like glibc's hasmntopt(), but works on a string, not a
--         * struct mntent */
--
--        if (!haystack)
--                return NULL;
--
--        return hasmntopt(&me, needle);
--}
--
--static bool mount_is_network(MountParameters *p) {
--        assert(p);
--
--        if (mount_test_option(p->options, "_netdev"))
--                return true;
--
--        if (p->fstype && fstype_is_network(p->fstype))
--                return true;
--
--        return false;
--}
--
--static bool mount_is_bind(MountParameters *p) {
--        assert(p);
--
--        if (mount_test_option(p->options, "bind"))
--                return true;
--
--        if (p->fstype && streq(p->fstype, "bind"))
--                return true;
--
--        if (mount_test_option(p->options, "rbind"))
--                return true;
--
--        if (p->fstype && streq(p->fstype, "rbind"))
--                return true;
--
--        return false;
--}
--
--static bool mount_is_auto(MountParameters *p) {
--        assert(p);
--
--        return !mount_test_option(p->options, "noauto");
--}
--
--static bool needs_quota(MountParameters *p) {
--        assert(p);
--
--        if (mount_is_network(p))
--                return false;
--
--        if (mount_is_bind(p))
--                return false;
--
--        return mount_test_option(p->options, "usrquota") ||
--                mount_test_option(p->options, "grpquota") ||
--                mount_test_option(p->options, "quota") ||
--                mount_test_option(p->options, "usrjquota") ||
--                mount_test_option(p->options, "grpjquota");
--}
--
- static int mount_add_device_links(Mount *m) {
-         MountParameters *p;
-         bool device_wants_mount = false;
diff --git a/SOURCES/0017-journal-remote-fix-certificate-status-memory-leak.patch b/SOURCES/0017-journal-remote-fix-certificate-status-memory-leak.patch
new file mode 100644
index 0000000..39b39a4
--- /dev/null
+++ b/SOURCES/0017-journal-remote-fix-certificate-status-memory-leak.patch
@@ -0,0 +1,28 @@
+From fb1115e5738b798bb99e5a699838395ca463e29d Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Tue, 17 Feb 2015 10:33:01 +0100
+Subject: [PATCH] journal-remote: fix certificate status memory leak
+
+The output of gnutls_certificate_verification_status_print() needs to be
+freed.
+
+Noticed this while staring at verify_cert_authorized() to see what could
+possibly confuse gcc5 on armv7hl to segfault during compilation.
+
+(cherry picked from commit 9c3cf9693ac5c0a332ba376f99e6adea28b1bb0d)
+---
+ src/journal-remote/microhttpd-util.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c
+index 34d9337..de9c6ab 100644
+--- a/src/journal-remote/microhttpd-util.c
++++ b/src/journal-remote/microhttpd-util.c
+@@ -179,6 +179,7 @@ static int verify_cert_authorized(gnutls_session_t session) {
+                 return log_error_errno(r, "gnutls_certificate_verification_status_print failed: %m");
+ 
+         log_info("Certificate status: %s", out.data);
++        gnutls_free(out.data);
+ 
+         return status == 0 ? 0 : -EPERM;
+ }
diff --git a/SOURCES/0018-journal-remote-fix-client_cert-memory-leak.patch b/SOURCES/0018-journal-remote-fix-client_cert-memory-leak.patch
new file mode 100644
index 0000000..533343a
--- /dev/null
+++ b/SOURCES/0018-journal-remote-fix-client_cert-memory-leak.patch
@@ -0,0 +1,32 @@
+From 0488761858a3bfbf06a25fbf3bc0e28fdfc28234 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Tue, 17 Feb 2015 10:36:57 +0100
+Subject: [PATCH] journal-remote: fix client_cert memory leak
+
+Found by Valgrind while testing the previous memory leak fix.
+
+(cherry picked from commit 32c3d7144cf9a5c8c03761d7f198142ca0f5f7b8)
+---
+ src/journal-remote/microhttpd-util.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c
+index de9c6ab..a95fff1 100644
+--- a/src/journal-remote/microhttpd-util.c
++++ b/src/journal-remote/microhttpd-util.c
+@@ -239,10 +239,14 @@ static int get_auth_dn(gnutls_x509_crt_t client_cert, char **buf) {
+         return 0;
+ }
+ 
++static inline void gnutls_x509_crt_deinitp(gnutls_x509_crt_t *p) {
++        gnutls_x509_crt_deinit(*p);
++}
++
+ int check_permissions(struct MHD_Connection *connection, int *code, char **hostname) {
+         const union MHD_ConnectionInfo *ci;
+         gnutls_session_t session;
+-        gnutls_x509_crt_t client_cert;
++        _cleanup_(gnutls_x509_crt_deinitp) gnutls_x509_crt_t client_cert = NULL;
+         _cleanup_free_ char *buf = NULL;
+         int r;
+ 
diff --git a/SOURCES/0018-systemd-serialize-deserialize-forbid_restart-value.patch b/SOURCES/0018-systemd-serialize-deserialize-forbid_restart-value.patch
deleted file mode 100644
index b0eceb8..0000000
--- a/SOURCES/0018-systemd-serialize-deserialize-forbid_restart-value.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From d5a7089608ccde2302b185ec367165c8b5623a12 Mon Sep 17 00:00:00 2001
-From: Sylvia Else <sylviabz1@cryogenic.net>
-Date: Sun, 6 Oct 2013 23:06:35 -0400
-Subject: [PATCH] systemd: serialize/deserialize forbid_restart value
-
-The Service type's forbid_restart field was not preserved by
-serialization/deserialization, so the fact that the service should not
-be restarted after stopping was lost.
-
-If a systemctl stop foo command has been given, but the foo service
-has not yet stopped, and then the systemctl --system daemon-reload was
-given, then when the foo service eventually stopped, systemd would
-restart it.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=69800
----
- src/core/service.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 6792024..98b1599 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -2651,6 +2651,9 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) {
-         if (s->exec_context.var_tmp_dir)
-                 unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir);
- 
-+        if (s->forbid_restart)
-+                unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart));
-+
-         return 0;
- }
- 
-@@ -2787,6 +2790,14 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
-                         return log_oom();
- 
-                 s->exec_context.var_tmp_dir = t;
-+        } else if (streq(key, "forbid_restart")) {
-+                int b;
-+
-+                b = parse_boolean(value);
-+                if (b < 0)
-+                        log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value);
-+                else
-+                        s->forbid_restart = b;
-         } else
-                 log_debug_unit(u->id, "Unknown serialization key '%s'", key);
- 
diff --git a/SOURCES/0019-core-unify-the-way-we-denote-serialization-attribute.patch b/SOURCES/0019-core-unify-the-way-we-denote-serialization-attribute.patch
deleted file mode 100644
index 5624168..0000000
--- a/SOURCES/0019-core-unify-the-way-we-denote-serialization-attribute.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From e409d591e0d9ae65d351cf32ae7cb79def50f009 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 9 Oct 2013 00:13:55 +0200
-Subject: [PATCH] core: unify the way we denote serialization attributes
-
----
- src/core/service.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 98b1599..96ed2d3 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -2652,7 +2652,7 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) {
-                 unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir);
- 
-         if (s->forbid_restart)
--                unit_serialize_item(u, f, "forbid_restart", yes_no(s->forbid_restart));
-+                unit_serialize_item(u, f, "forbid-restart", yes_no(s->forbid_restart));
- 
-         return 0;
- }
-@@ -2790,12 +2790,12 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
-                         return log_oom();
- 
-                 s->exec_context.var_tmp_dir = t;
--        } else if (streq(key, "forbid_restart")) {
-+        } else if (streq(key, "forbid-restart")) {
-                 int b;
- 
-                 b = parse_boolean(value);
-                 if (b < 0)
--                        log_debug_unit(u->id, "Failed to parse forbid_restart value %s", value);
-+                        log_debug_unit(u->id, "Failed to parse forbid-restart value %s", value);
-                 else
-                         s->forbid_restart = b;
-         } else
diff --git a/SOURCES/0019-tmpfiles-Fix-parse_acl-error-message.patch b/SOURCES/0019-tmpfiles-Fix-parse_acl-error-message.patch
new file mode 100644
index 0000000..ae6e963
--- /dev/null
+++ b/SOURCES/0019-tmpfiles-Fix-parse_acl-error-message.patch
@@ -0,0 +1,25 @@
+From 3d9f88326fefe4bf8f5ed4b1210c6b563a3eecff Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue, 17 Feb 2015 12:47:51 +0100
+Subject: [PATCH] tmpfiles: Fix parse_acl error message
+
+parse_acl() returns the error instead of setting errno.
+
+(cherry picked from commit 484adfd914504cd7e95867cea20ca7af71b888f2)
+---
+ src/tmpfiles/tmpfiles.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index c948d4d..88ba7e4 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -689,7 +689,7 @@ static int get_acls_from_arg(Item *item) {
+          * afterwards, so the mask can be added now if necessary. */
+         r = parse_acl(item->argument, &item->acl_access, &item->acl_default, !item->force);
+         if (r < 0)
+-                log_warning_errno(errno, "Failed to parse ACL \"%s\": %m. Ignoring",
++                log_warning_errno(r, "Failed to parse ACL \"%s\": %m. Ignoring",
+                                   item->argument);
+ #else
+         log_warning_errno(ENOSYS, "ACLs are not supported. Ignoring");
diff --git a/SOURCES/0020-journald-fix-minor-memory-leak.patch b/SOURCES/0020-journald-fix-minor-memory-leak.patch
deleted file mode 100644
index b8f3e4d..0000000
--- a/SOURCES/0020-journald-fix-minor-memory-leak.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From dac4b2528173c73473b0bf6a147e47170fd344d6 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 9 Oct 2013 04:03:45 +0200
-Subject: [PATCH] journald: fix minor memory leak
-
----
- src/journal/journal-vacuum.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
-index c73ad8f..8d5effb 100644
---- a/src/journal/journal-vacuum.c
-+++ b/src/journal/journal-vacuum.c
-@@ -278,6 +278,8 @@ int journal_directory_vacuum(
-                         } else if (errno != ENOENT)
-                                 log_warning("Failed to delete %s/%s: %m", directory, p);
- 
-+                        free(p);
-+
-                         continue;
-                 }
- 
diff --git a/SOURCES/0020-test-utf8-fix-utf16-tests-on-BE-machines.patch b/SOURCES/0020-test-utf8-fix-utf16-tests-on-BE-machines.patch
new file mode 100644
index 0000000..5523542
--- /dev/null
+++ b/SOURCES/0020-test-utf8-fix-utf16-tests-on-BE-machines.patch
@@ -0,0 +1,23 @@
+From c49cced2ef923522398695531363de2eb3940273 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Wed, 18 Feb 2015 14:33:50 +0100
+Subject: [PATCH] test: utf8 - fix utf16 tests on BE machines
+
+(cherry picked from commit 502184de0f95d3a124d4d4c77ae7a88747a0fac2)
+---
+ src/test/test-utf8.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c
+index befa385..346f852 100644
+--- a/src/test/test-utf8.c
++++ b/src/test/test-utf8.c
+@@ -95,7 +95,7 @@ static void test_utf8_escaping_printable(void) {
+ 
+ static void test_utf16_to_utf8(void) {
+         char *a = NULL;
+-        const uint16_t utf16[] = { 'a', 0xd800, 'b', 0xdc00, 'c', 0xd801, 0xdc37 };
++        const uint16_t utf16[] = { htole16('a'), htole16(0xd800), htole16('b'), htole16(0xdc00), htole16('c'), htole16(0xd801), htole16(0xdc37) };
+         const char utf8[] = { 'a', 'b', 'c', 0xf0, 0x90, 0x90, 0xb7, 0 };
+ 
+         a = utf16_to_utf8(utf16, 14);
diff --git a/SOURCES/0021-journald-remove-rotated-file-from-hashmap-when-rotat.patch b/SOURCES/0021-journald-remove-rotated-file-from-hashmap-when-rotat.patch
deleted file mode 100644
index bf5accf..0000000
--- a/SOURCES/0021-journald-remove-rotated-file-from-hashmap-when-rotat.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c10d51e51388a133d1e0a656f9f69c3d2ca79f09 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 9 Oct 2013 22:13:13 -0400
-Subject: [PATCH] journald: remove rotated file from hashmap when rotation
- fails
-
-Before, when the user journal file was rotated, journal_file_rotate
-could close the old file and fail to open the new file. In that
-case, we would leave the old (deallocated) file in the hashmap.
-On subsequent accesses, we could retrieve this stale entry, leading
-to a segfault.
-
-When journal_file_rotate fails with the file pointer set to 0,
-old file is certainly gone, and cannot be used anymore.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=890463
----
- src/journal/journald-server.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
-index 4f47eb1..e03e413 100644
---- a/src/journal/journald-server.c
-+++ b/src/journal/journald-server.c
-@@ -321,8 +321,10 @@ void server_rotate(Server *s) {
-                 if (r < 0)
-                         if (f)
-                                 log_error("Failed to rotate %s: %s", f->path, strerror(-r));
--                        else
-+                        else {
-                                 log_error("Failed to create user journal: %s", strerror(-r));
-+                                hashmap_remove(s->user_journals, k);
-+                        }
-                 else {
-                         hashmap_replace(s->user_journals, k, f);
-                         server_fix_perms(s, f, PTR_TO_UINT32(k));
diff --git a/SOURCES/0021-tmpfiles-avoid-creating-duplicate-acl-entries.patch b/SOURCES/0021-tmpfiles-avoid-creating-duplicate-acl-entries.patch
new file mode 100644
index 0000000..988bd03
--- /dev/null
+++ b/SOURCES/0021-tmpfiles-avoid-creating-duplicate-acl-entries.patch
@@ -0,0 +1,128 @@
+From c7d4f7a5a6cef5a46f905141e2ac27da3c96d2b7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 23 Feb 2015 23:19:54 -0500
+Subject: [PATCH] tmpfiles: avoid creating duplicate acl entries
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89202
+https://bugs.debian.org/778656
+
+Status quo ante can be restored with:
+  getfacl -p /var/log/journal/`cat /etc/machine-id`|grep -v '^#'|sort -u|sudo setfacl --set-file=- /var/log/journal/`cat /etc/machine-id`
+
+(cherry picked from commit 1c73f3bc29111a00738569c9d40a989b161a0624)
+---
+ src/shared/acl-util.c | 79 +++++++++++++++++++++++++++++++++++++++++++++++++--
+ src/shared/acl-util.h |  4 +++
+ 2 files changed, 81 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c
+index a4ff1ab..cbe09d7 100644
+--- a/src/shared/acl-util.c
++++ b/src/shared/acl-util.c
+@@ -282,6 +282,77 @@ int parse_acl(char *text, acl_t *acl_access, acl_t *acl_default, bool want_mask)
+         return 0;
+ }
+ 
++static int acl_entry_equal(acl_entry_t a, acl_entry_t b) {
++        acl_tag_t tag_a, tag_b;
++
++        if (acl_get_tag_type(a, &tag_a) < 0)
++                return -errno;
++
++        if (acl_get_tag_type(b, &tag_b) < 0)
++                return -errno;
++
++        if (tag_a != tag_b)
++                return false;
++
++        switch (tag_a) {
++        case ACL_USER_OBJ:
++        case ACL_GROUP_OBJ:
++        case ACL_MASK:
++        case ACL_OTHER:
++                /* can have only one of those */
++                return true;
++        case ACL_USER: {
++                _cleanup_(acl_free_uid_tpp) uid_t *uid_a, *uid_b;
++
++                uid_a = acl_get_qualifier(a);
++                if (!uid_a)
++                        return -errno;
++
++                uid_b = acl_get_qualifier(b);
++                if (!uid_b)
++                        return -errno;
++
++                return *uid_a == *uid_b;
++        }
++        case ACL_GROUP: {
++                _cleanup_(acl_free_gid_tpp) gid_t *gid_a, *gid_b;
++
++                gid_a = acl_get_qualifier(a);
++                if (!gid_a)
++                        return -errno;
++
++                gid_b = acl_get_qualifier(b);
++                if (!gid_b)
++                        return -errno;
++
++                return *gid_a == *gid_b;
++        }
++        default:
++                assert_not_reached("Unknown acl tag type");
++        }
++}
++
++static int find_acl_entry(acl_t acl, acl_entry_t entry, acl_entry_t *out) {
++        acl_entry_t i;
++        int r;
++
++        for (r = acl_get_entry(acl, ACL_FIRST_ENTRY, &i);
++             r > 0;
++             r = acl_get_entry(acl, ACL_NEXT_ENTRY, &i)) {
++
++                r = acl_entry_equal(i, entry);
++                if (r < 0)
++                        return r;
++                if (r > 0) {
++                        *out = i;
++                        return 1;
++                }
++        }
++        if (r < 0)
++                return -errno;
++        return 0;
++}
++
+ int acls_for_file(const char *path, acl_type_t type, acl_t new, acl_t *acl) {
+         _cleanup_(acl_freep) acl_t old;
+         acl_entry_t i;
+@@ -297,8 +368,12 @@ int acls_for_file(const char *path, acl_type_t type, acl_t new, acl_t *acl) {
+ 
+                 acl_entry_t j;
+ 
+-                if (acl_create_entry(&old, &j) < 0)
+-                        return -errno;
++                r = find_acl_entry(old, i, &j);
++                if (r < 0)
++                        return r;
++                if (r == 0)
++                        if (acl_create_entry(&old, &j) < 0)
++                                return -errno;
+ 
+                 if (acl_copy_entry(j, i) < 0)
+                         return -errno;
+diff --git a/src/shared/acl-util.h b/src/shared/acl-util.h
+index 90e88ff..fdb9006 100644
+--- a/src/shared/acl-util.h
++++ b/src/shared/acl-util.h
+@@ -41,5 +41,9 @@ int acls_for_file(const char *path, acl_type_t type, acl_t new, acl_t *acl);
+ DEFINE_TRIVIAL_CLEANUP_FUNC(acl_t, acl_free);
+ #define acl_free_charp acl_free
+ DEFINE_TRIVIAL_CLEANUP_FUNC(char*, acl_free_charp);
++#define acl_free_uid_tp acl_free
++DEFINE_TRIVIAL_CLEANUP_FUNC(uid_t*, acl_free_uid_tp);
++#define acl_free_gid_tp acl_free
++DEFINE_TRIVIAL_CLEANUP_FUNC(gid_t*, acl_free_gid_tp);
+ 
+ #endif
diff --git a/SOURCES/0022-shared-time-util-fix-gcc5-warning.patch b/SOURCES/0022-shared-time-util-fix-gcc5-warning.patch
new file mode 100644
index 0000000..04ddfbe
--- /dev/null
+++ b/SOURCES/0022-shared-time-util-fix-gcc5-warning.patch
@@ -0,0 +1,29 @@
+From 15bfa13aa624e1f2a15571ad5278acec643c0489 Mon Sep 17 00:00:00 2001
+From: Daniel Mack <daniel@zonque.org>
+Date: Tue, 24 Feb 2015 13:26:09 +0100
+Subject: [PATCH] shared/time-util: fix gcc5 warning
+
+  CC       src/shared/libsystemd_shared_la-time-util.lo
+src/shared/time-util.c: In function 'parse_nsec':
+src/shared/time-util.c:789:25: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
+                 if (!*s != 0)
+                         ^
+
+(cherry picked from commit 8e8933ca0f06bae19cb6db601e83b33f8ac80f2a)
+---
+ src/shared/time-util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/time-util.c b/src/shared/time-util.c
+index 947ac1f..1c36c57 100644
+--- a/src/shared/time-util.c
++++ b/src/shared/time-util.c
+@@ -786,7 +786,7 @@ int parse_nsec(const char *t, nsec_t *nsec) {
+         s = startswith(p, "infinity");
+         if (s) {
+                 s += strspn(s, WHITESPACE);
+-                if (!*s != 0)
++                if (*s != 0)
+                         return -EINVAL;
+ 
+                 *nsec = NSEC_INFINITY;
diff --git a/SOURCES/0022-udevadm.xml-document-resolve-names-option-for-test.patch b/SOURCES/0022-udevadm.xml-document-resolve-names-option-for-test.patch
deleted file mode 100644
index 213de85..0000000
--- a/SOURCES/0022-udevadm.xml-document-resolve-names-option-for-test.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 46ae516340261691a08f64439dfd7aafa43b7467 Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Sun, 13 Oct 2013 17:42:51 -0400
-Subject: [PATCH] udevadm.xml: document --resolve-names option for test
-
-And remove documentation of the --subsystem flag which doesn't actually
-exist.
----
- man/udevadm.xml | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/man/udevadm.xml b/man/udevadm.xml
-index d0b257d..b959216 100644
---- a/man/udevadm.xml
-+++ b/man/udevadm.xml
-@@ -462,9 +462,13 @@
-           </listitem>
-         </varlistentry>
-         <varlistentry>
--          <term><option>--subsystem=<replaceable>string</replaceable></option></term>
-+          <term><option>--resolve-names=<replaceable>early|late|never</replaceable></option></term>
-           <listitem>
--            <para>The subsystem string.</para>
-+            <para>Specify when udevadm should resolve names of users and groups.
-+              When set to early (the default) names will be resolved when the
-+              rules are parsed. When set to late names will be resolved for
-+              every event. When set to never names will never be resolved and
-+              all devices will be owned by root.</para>
-           </listitem>
-         </varlistentry>
-         <varlistentry>
diff --git a/SOURCES/0023-dbus-common-avoid-leak-in-error-path.patch b/SOURCES/0023-dbus-common-avoid-leak-in-error-path.patch
deleted file mode 100644
index 04290cb..0000000
--- a/SOURCES/0023-dbus-common-avoid-leak-in-error-path.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 10725a4ee35e5d1d97c2f9bc72010c5c0210cd6b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 11 Oct 2013 19:33:20 -0400
-Subject: [PATCH] dbus-common: avoid leak in error path
-
-src/shared/dbus-common.c:968:33: warning: Potential leak of memory pointed to by 'l'
-                        return -EINVAL;
-                                ^~~~~~
----
- src/shared/dbus-common.c | 20 ++++++++++----------
- 1 file changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c
-index c727cae..3ba2d87 100644
---- a/src/shared/dbus-common.c
-+++ b/src/shared/dbus-common.c
-@@ -934,7 +934,7 @@ int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l) {
- int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
-         DBusMessageIter sub, sub2;
-         unsigned n = 0, i = 0;
--        char **l;
-+        _cleanup_strv_free_ char **l = NULL;
- 
-         assert(iter);
-         assert(_l);
-@@ -953,6 +953,7 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
-         l = new(char*, n*2+1);
-         if (!l)
-                 return -ENOMEM;
-+        l[0] = NULL; /* make sure that l is properly terminated at all times */
- 
-         dbus_message_iter_recurse(iter, &sub);
- 
-@@ -968,26 +969,25 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) {
-                         return -EINVAL;
- 
-                 l[i] = strdup(a);
--                if (!l[i]) {
--                        strv_free(l);
-+                if (!l[i])
-                         return -ENOMEM;
--                }
-+                i++;
- 
--                l[++i] = strdup(b);
--                if (!l[i]) {
--                        strv_free(l);
-+                l[i] = strdup(b);
-+                if (!l[i])
-                         return -ENOMEM;
--                }
--
-                 i++;
-+
-                 dbus_message_iter_next(&sub);
-         }
- 
-         assert(i == n*2);
-         l[i] = NULL;
- 
--        if (_l)
-+        if (_l) {
-                 *_l = l;
-+                l = NULL; /* avoid freeing */
-+        }
- 
-         return 0;
- }
diff --git a/SOURCES/0023-test-time-test-infinity-parsing-in-nanoseconds.patch b/SOURCES/0023-test-time-test-infinity-parsing-in-nanoseconds.patch
new file mode 100644
index 0000000..9919dc0
--- /dev/null
+++ b/SOURCES/0023-test-time-test-infinity-parsing-in-nanoseconds.patch
@@ -0,0 +1,33 @@
+From 33d01e64bc4e286e4eb772de8b3781686c2d3a3a Mon Sep 17 00:00:00 2001
+From: Daniel Mack <daniel@zonque.org>
+Date: Tue, 24 Feb 2015 13:27:10 +0100
+Subject: [PATCH] test-time: test "infinity" parsing in nanoseconds
+
+(cherry picked from commit fdd30a1530810b659345c565e97beef06b7af2fd)
+---
+ src/test/test-time.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/test/test-time.c b/src/test/test-time.c
+index 8cfc4cc..3840fff 100644
+--- a/src/test/test-time.c
++++ b/src/test/test-time.c
+@@ -78,12 +78,18 @@ static void test_parse_nsec(void) {
+         assert_se(u == 2);
+         assert_se(parse_nsec(".7", &u) >= 0);
+         assert_se(u == 0);
++        assert_se(parse_nsec("infinity", &u) >= 0);
++        assert_se(u == NSEC_INFINITY);
++        assert_se(parse_nsec(" infinity ", &u) >= 0);
++        assert_se(u == NSEC_INFINITY);
+ 
+         assert_se(parse_nsec(" xyz ", &u) < 0);
+         assert_se(parse_nsec("", &u) < 0);
+         assert_se(parse_nsec(" . ", &u) < 0);
+         assert_se(parse_nsec(" 5. ", &u) < 0);
+         assert_se(parse_nsec(".s ", &u) < 0);
++        assert_se(parse_nsec(" infinity .7", &u) < 0);
++        assert_se(parse_nsec(".3 infinity", &u) < 0);
+ }
+ 
+ static void test_format_timespan_one(usec_t x, usec_t accuracy) {
diff --git a/SOURCES/0024-bootchart-fix-default-init-path.patch b/SOURCES/0024-bootchart-fix-default-init-path.patch
new file mode 100644
index 0000000..a315485
--- /dev/null
+++ b/SOURCES/0024-bootchart-fix-default-init-path.patch
@@ -0,0 +1,41 @@
+From 685ddafd9e3c5f548e02e38633f366ff453f918b Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue, 24 Feb 2015 14:30:10 +0100
+Subject: [PATCH] bootchart: fix default init path
+
+Commit 6e1bf7ab99 used the wrong directory; we need rootlibexecdir, not
+rootlibdir, as the latter is something like /lib/x86_64-linux-gnu/ on
+multi-arch systems.
+
+https://launchpad.net/bugs/1423867
+(cherry picked from commit a804d849b3c2199bc25d1d4e65fc119fa4d7d0e2)
+---
+ Makefile.am               | 1 +
+ src/bootchart/bootchart.c | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index bf65b24..2e6455f 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -199,6 +199,7 @@ AM_CPPFLAGS = \
+ 	-DKEXEC=\"$(KEXEC)\" \
+ 	-DLIBDIR=\"$(libdir)\" \
+ 	-DROOTLIBDIR=\"$(rootlibdir)\" \
++	-DROOTLIBEXECDIR=\"$(rootlibexecdir)\" \
+ 	-DTEST_DIR=\"$(abs_top_srcdir)/test\" \
+ 	-I $(top_srcdir)/src \
+ 	-I $(top_builddir)/src/shared \
+diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
+index 64a384b..175be68 100644
+--- a/src/bootchart/bootchart.c
++++ b/src/bootchart/bootchart.c
+@@ -76,7 +76,7 @@ int sysfd=-1;
+ #define DEFAULT_HZ 25.0
+ #define DEFAULT_SCALE_X 100.0 /* 100px = 1sec */
+ #define DEFAULT_SCALE_Y 20.0  /* 16px = 1 process bar */
+-#define DEFAULT_INIT ROOTLIBDIR "/systemd/systemd"
++#define DEFAULT_INIT ROOTLIBEXECDIR "/systemd"
+ #define DEFAULT_OUTPUT "/run/log"
+ 
+ /* graph defaults */
diff --git a/SOURCES/0024-drop-ins-check-return-value.patch b/SOURCES/0024-drop-ins-check-return-value.patch
deleted file mode 100644
index 60dcd24..0000000
--- a/SOURCES/0024-drop-ins-check-return-value.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 0b344626698e0c42a7da558783d70207f8aed05e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 11 Oct 2013 19:33:36 -0400
-Subject: [PATCH] drop-ins: check return value
-
-If the function failed, nothing serious would happen
-because unlink would probably return EFAULT, but this
-would obscure the real error and is a bit sloppy.
----
- src/core/unit.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 4b97710..1db7d06 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -2908,6 +2908,9 @@ int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name) {
-                 return 0;
- 
-         r = drop_in_file(u, mode, name, &p, &q);
-+        if (r < 0)
-+                return r;
-+
-         if (unlink(q) < 0)
-                 r = errno == ENOENT ? 0 : -errno;
-         else
diff --git a/SOURCES/0025-shared-util-Fix-glob_extend-argument.patch b/SOURCES/0025-shared-util-Fix-glob_extend-argument.patch
deleted file mode 100644
index de46ffc..0000000
--- a/SOURCES/0025-shared-util-Fix-glob_extend-argument.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 18f14dc669bfda1131e31f9818eabd962bda631d Mon Sep 17 00:00:00 2001
-From: Bastien Nocera <hadess@hadess.net>
-Date: Mon, 14 Oct 2013 08:15:51 +0200
-Subject: [PATCH] shared/util: Fix glob_extend() argument
-
-glob_extend() would completely fail to work, or return incorrect
-data if it wasn't being passed the current getopt "optarg" variable
-as it used the global variable, instead of the passed parameters.
----
- src/shared/util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 9be6acf..48adc83 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -4391,7 +4391,7 @@ int glob_extend(char ***strv, const char *path) {
-         char **p;
- 
-         errno = 0;
--        k = glob(optarg, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
-+        k = glob(path, GLOB_NOSORT|GLOB_BRACE, NULL, &g);
- 
-         if (k == GLOB_NOMATCH)
-                 return -ENOENT;
diff --git a/SOURCES/0025-systemctl-bump-NOFILE-only-for-systemctl_main.patch b/SOURCES/0025-systemctl-bump-NOFILE-only-for-systemctl_main.patch
new file mode 100644
index 0000000..a6593dc
--- /dev/null
+++ b/SOURCES/0025-systemctl-bump-NOFILE-only-for-systemctl_main.patch
@@ -0,0 +1,41 @@
+From 4581f8d1cde9b6fac4320e5cdf5234c96bbd60ae Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 24 Feb 2015 10:10:04 -0500
+Subject: [PATCH] systemctl: bump NOFILE only for systemctl_main
+
+It is not necessary when running as telinit, etc.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1184712
+(cherry picked from commit 95d383ee47db488f182048cfd6846f2e6b859f2b)
+---
+ src/systemctl/systemctl.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 21cb898..6b93ec8 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -7204,6 +7204,11 @@ found:
+                 }
+         }
+ 
++        /* Increase max number of open files to 16K if we can, we
++         * might needs this when browsing journal files, which might
++         * be split up into many files. */
++        setrlimit_closest(RLIMIT_NOFILE, &RLIMIT_MAKE_CONST(16384));
++
+         return verb->dispatch(bus, argv + optind);
+ }
+ 
+@@ -7453,11 +7458,6 @@ int main(int argc, char*argv[]) {
+                 goto finish;
+         }
+ 
+-        /* Increase max number of open files to 16K if we can, we
+-         * might needs this when browsing journal files, which might
+-         * be split up into many files. */
+-        setrlimit_closest(RLIMIT_NOFILE, &RLIMIT_MAKE_CONST(16384));
+-
+         if (!avoid_bus())
+                 r = bus_open_transport_systemd(arg_transport, arg_host, arg_scope != UNIT_FILE_SYSTEM, &bus);
+ 
diff --git a/SOURCES/0026-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch b/SOURCES/0026-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
deleted file mode 100644
index 91939da..0000000
--- a/SOURCES/0026-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 63d689541fd7e70e83de425986182ee488e14a0f Mon Sep 17 00:00:00 2001
-From: Igor Zhbanov <i.zhbanov@samsung.com>
-Date: Tue, 15 Oct 2013 14:35:13 +0400
-Subject: [PATCH] Fix for SIGSEGV in systemd-bootchart on short-living
- processes
-
-The function svg_ps_bars() dereferencess NULL pointer in the line
-	endtime = ps->last->sampledata->sampletime;
-because of partially initialized ps_struct (ps->last == NULL).
-
-If some process terminates between scaning /proc directory in the log_sample()
-function and reading additional information from /proc/PID/... files,
-the files couldn't be read, the loop will be continued and partially
-initialized structure returned.
----
- src/bootchart/store.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/bootchart/store.c b/src/bootchart/store.c
-index f8c97c2..7f86cfe 100644
---- a/src/bootchart/store.c
-+++ b/src/bootchart/store.c
-@@ -275,7 +275,7 @@ schedstat_next:
-                         pscount++;
- 
-                         /* mark our first sample */
--                        ps->first = ps->sample;
-+                        ps->first = ps->last = ps->sample;
-                         ps->sample->runtime = atoll(rt);
-                         ps->sample->waittime = atoll(wt);
- 
diff --git a/SOURCES/0026-acl-util-avoid-freeing-uninitialized-pointer.patch b/SOURCES/0026-acl-util-avoid-freeing-uninitialized-pointer.patch
new file mode 100644
index 0000000..f7c692a
--- /dev/null
+++ b/SOURCES/0026-acl-util-avoid-freeing-uninitialized-pointer.patch
@@ -0,0 +1,34 @@
+From 86592a27154d8da0e695304a75ae1458c574c962 Mon Sep 17 00:00:00 2001
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 24 Feb 2015 20:40:07 +0100
+Subject: [PATCH] acl-util: avoid freeing uninitialized pointer
+
+CID#1271344/1271345
+
+(cherry picked from commit 76dcbc4992e895a377aad26f8c4a0dcd71002396)
+---
+ src/shared/acl-util.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c
+index cbe09d7..e67e9ac 100644
+--- a/src/shared/acl-util.c
++++ b/src/shared/acl-util.c
+@@ -302,7 +302,7 @@ static int acl_entry_equal(acl_entry_t a, acl_entry_t b) {
+                 /* can have only one of those */
+                 return true;
+         case ACL_USER: {
+-                _cleanup_(acl_free_uid_tpp) uid_t *uid_a, *uid_b;
++                _cleanup_(acl_free_uid_tpp) uid_t *uid_a = NULL, *uid_b = NULL;
+ 
+                 uid_a = acl_get_qualifier(a);
+                 if (!uid_a)
+@@ -315,7 +315,7 @@ static int acl_entry_equal(acl_entry_t a, acl_entry_t b) {
+                 return *uid_a == *uid_b;
+         }
+         case ACL_GROUP: {
+-                _cleanup_(acl_free_gid_tpp) gid_t *gid_a, *gid_b;
++                _cleanup_(acl_free_gid_tpp) gid_t *gid_a = NULL, *gid_b = NULL;
+ 
+                 gid_a = acl_get_qualifier(a);
+                 if (!gid_a)
diff --git a/SOURCES/0027-bootchart-svg-fix-checking-of-list-end.patch b/SOURCES/0027-bootchart-svg-fix-checking-of-list-end.patch
new file mode 100644
index 0000000..61bbddb
--- /dev/null
+++ b/SOURCES/0027-bootchart-svg-fix-checking-of-list-end.patch
@@ -0,0 +1,25 @@
+From 93ac68f5225bc0cf63ead3a3212539586d1fffb7 Mon Sep 17 00:00:00 2001
+From: Aaro Koskinen <aaro.koskinen@nokia.com>
+Date: Tue, 24 Feb 2015 18:32:31 +0200
+Subject: [PATCH] bootchart: svg: fix checking of list end
+
+If we have less samples than expected, systemd-bootchart will crash.
+
+(cherry picked from commit c1682f17a0c966988e865c649e565dae41abf32d)
+---
+ src/bootchart/svg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c
+index e111fa9..144177c 100644
+--- a/src/bootchart/svg.c
++++ b/src/bootchart/svg.c
+@@ -1170,7 +1170,7 @@ static void svg_ps_bars(void) {
+ 
+                 ps->sample = ps->sample->next;
+                 sample_hz = ps->sample;
+-                for (ii=0;((ii<(int)arg_hz/2)&&(ps->sample->next));ii++)
++                for (ii=0;((ii<(int)arg_hz/2)&&(sample_hz->next));ii++)
+                         sample_hz = sample_hz->next;
+ 
+                 /* subtract bootchart cpu utilization from total */
diff --git a/SOURCES/0027-man-document-the-b-special-boot-option.patch b/SOURCES/0027-man-document-the-b-special-boot-option.patch
deleted file mode 100644
index e036fe1..0000000
--- a/SOURCES/0027-man-document-the-b-special-boot-option.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From fb31ccf54084efe2264c0960feb5ed2edb5256b3 Mon Sep 17 00:00:00 2001
-From: Jan Engelhardt <jengelh@inai.de>
-Date: Tue, 15 Oct 2013 08:58:50 +0200
-Subject: [PATCH] man: document the -b special boot option
-
----
- man/kernel-command-line.xml | 1 +
- man/systemd.xml             | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
-index cc267a3..abe68e5 100644
---- a/man/kernel-command-line.xml
-+++ b/man/kernel-command-line.xml
-@@ -123,6 +123,7 @@
-                         </varlistentry>
- 
-                         <varlistentry>
-+                                <term><varname>-b</varname></term>
-                                 <term><varname>emergency</varname></term>
-                                 <term><varname>single</varname></term>
-                                 <term><varname>s</varname></term>
-diff --git a/man/systemd.xml b/man/systemd.xml
-index fe6e331..85c06d3 100644
---- a/man/systemd.xml
-+++ b/man/systemd.xml
-@@ -1149,6 +1149,7 @@
-                         </varlistentry>
- 
-                         <varlistentry>
-+                                <term><varname>-b</varname></term>
-                                 <term><varname>emergency</varname></term>
- 
-                                 <listitem><para>Boot into emergency
diff --git a/SOURCES/0028-systemd-add-getrandom-syscall-numbers-for-MIPS.patch b/SOURCES/0028-systemd-add-getrandom-syscall-numbers-for-MIPS.patch
new file mode 100644
index 0000000..329deb4
--- /dev/null
+++ b/SOURCES/0028-systemd-add-getrandom-syscall-numbers-for-MIPS.patch
@@ -0,0 +1,35 @@
+From 32213f2f1d98bf851a570ecc35c018001e5d5ac4 Mon Sep 17 00:00:00 2001
+From: Aaro Koskinen <aaro.koskinen@nokia.com>
+Date: Mon, 23 Feb 2015 16:01:31 +0200
+Subject: [PATCH] systemd: add getrandom syscall numbers for MIPS
+
+Add getrandom syscall numbers for MIPS. Based on Linux 3.17 kernel
+(commit 42944521af97a3b25516f15f3149aec3779656dc, "MIPS: Wire up new
+syscalls getrandom and memfd_create").
+
+(cherry picked from commit 3bec6d4690d2a7f08dc27b8221299c1db94978c4)
+---
+ src/shared/missing.h | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/src/shared/missing.h b/src/shared/missing.h
+index 06a5576..8cb0b2c 100644
+--- a/src/shared/missing.h
++++ b/src/shared/missing.h
+@@ -243,6 +243,16 @@ static inline int memfd_create(const char *name, unsigned int flags) {
+ #    define __NR_getrandom 349
+ #  elif defined(__powerpc__)
+ #    define __NR_getrandom 359
++#  elif defined _MIPS_SIM
++#    if _MIPS_SIM == _MIPS_SIM_ABI32
++#      define __NR_getrandom 4353
++#    endif
++#    if _MIPS_SIM == _MIPS_SIM_NABI32
++#      define __NR_getrandom 6317
++#    endif
++#    if _MIPS_SIM == _MIPS_SIM_ABI64
++#      define __NR_getrandom 5313
++#    endif
+ #  else
+ #    warning "__NR_getrandom unknown for your architecture"
+ #    define __NR_getrandom 0xffffffff
diff --git a/SOURCES/0028-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch b/SOURCES/0028-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
deleted file mode 100644
index b382add..0000000
--- a/SOURCES/0028-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 710be393ae8d15a274f376677aa68c27cd107356 Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Thu, 17 Oct 2013 03:20:46 +0200
-Subject: [PATCH] tmpfiles: log unaccessible FUSE mount points only as debug
- message
-
----
- src/tmpfiles/tmpfiles.c | 11 +++++++----
- 1 file changed, 7 insertions(+), 4 deletions(-)
-
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 8122d6a..239e56b 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -275,12 +275,15 @@ static int dir_cleanup(
-                         continue;
- 
-                 if (fstatat(dirfd(d), dent->d_name, &s, AT_SYMLINK_NOFOLLOW) < 0) {
-+                        if (errno == ENOENT)
-+                                continue;
- 
--                        if (errno != ENOENT) {
-+                        /* FUSE, NFS mounts, SELinux might return EACCES */
-+                        if (errno == EACCES)
-+                                log_debug("stat(%s/%s) failed: %m", p, dent->d_name);
-+                        else
-                                 log_error("stat(%s/%s) failed: %m", p, dent->d_name);
--                                r = -errno;
--                        }
--
-+                        r = -errno;
-                         continue;
-                 }
- 
diff --git a/SOURCES/0029-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch b/SOURCES/0029-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch
deleted file mode 100644
index 4ab2711..0000000
--- a/SOURCES/0029-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 2f7ce3bd875000149a0868b0652d40406c534f8b Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Sun, 6 Oct 2013 18:26:23 -0400
-Subject: [PATCH] shared/util: fix off-by-one error in tag_to_udev_node
-
-Triggered false negatives when encoding a string which needed every
-character to be escaped, e.g. "LABEL=/".
----
- src/shared/util.c            | 2 +-
- src/test/test-device-nodes.c | 4 +++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 48adc83..6c88040 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -3527,7 +3527,7 @@ static char *tag_to_udev_node(const char *tagvalue, const char *by) {
-         if (u == NULL)
-                 return NULL;
- 
--        enc_len = strlen(u) * 4;
-+        enc_len = strlen(u) * 4 + 1;
-         t = new(char, enc_len);
-         if (t == NULL)
-                 return NULL;
-diff --git a/src/test/test-device-nodes.c b/src/test/test-device-nodes.c
-index 2f3dedb..59ba4be 100644
---- a/src/test/test-device-nodes.c
-+++ b/src/test/test-device-nodes.c
-@@ -26,7 +26,7 @@
- 
- /* helpers for test_encode_devnode_name */
- static char *do_encode_string(const char *in) {
--        size_t out_len = strlen(in) * 4;
-+        size_t out_len = strlen(in) * 4 + 1;
-         char *out = malloc(out_len);
- 
-         assert_se(out);
-@@ -46,6 +46,8 @@ static void test_encode_devnode_name(void) {
-         assert_se(expect_encoded_as("pinkiepie", "pinkiepie"));
-         assert_se(expect_encoded_as("valíd\\ųtf8", "valíd\\x5cųtf8"));
-         assert_se(expect_encoded_as("s/ash/ng", "s\\x2fash\\x2fng"));
-+        assert_se(expect_encoded_as("/", "\\x2f"));
-+        assert_se(expect_encoded_as("!", "\\x21"));
- }
- 
- int main(int argc, char *argv[]) {
diff --git a/SOURCES/0029-unit-use-weaker-dependencies-between-mount-and-devic.patch b/SOURCES/0029-unit-use-weaker-dependencies-between-mount-and-devic.patch
new file mode 100644
index 0000000..8da6b65
--- /dev/null
+++ b/SOURCES/0029-unit-use-weaker-dependencies-between-mount-and-devic.patch
@@ -0,0 +1,30 @@
+From 1c0e8e9ce84cd74a20a60b98ab3a39d75d05b45f Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 25 Feb 2015 22:05:14 +0100
+Subject: [PATCH] unit: use weaker dependencies between mount and device units
+ in --user mode
+
+When running in user mode unmounting of mount units when a device
+vanishes is unlikely to work, and even if it would work is already done
+by PID 1 anyway. HEnce, when creating implicit dependencies between
+mount units and their backing devices, created a Wants= type dependency
+in --user mode, but leave a BindsTo= dependency in --system mode.
+
+(cherry picked from commit 5bd4b173605142c7be493aa4d958ebaef21f421d)
+---
+ src/core/unit.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index ee8e607..9f1e55e 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2845,7 +2845,7 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) {
+         if (r < 0)
+                 return r;
+ 
+-        r = unit_add_two_dependencies(u, UNIT_AFTER, UNIT_BINDS_TO, device, true);
++        r = unit_add_two_dependencies(u, UNIT_AFTER, u->manager->running_as == SYSTEMD_SYSTEM ? UNIT_BINDS_TO : UNIT_WANTS, device, true);
+         if (r < 0)
+                 return r;
+ 
diff --git a/SOURCES/0030-Configurable-Timeouts-Restarts-default-values.patch b/SOURCES/0030-Configurable-Timeouts-Restarts-default-values.patch
deleted file mode 100644
index 01bebfb..0000000
--- a/SOURCES/0030-Configurable-Timeouts-Restarts-default-values.patch
+++ /dev/null
@@ -1,293 +0,0 @@
-From cd1c485f2fc5b23c7cdccb0dd852c7228fc79868 Mon Sep 17 00:00:00 2001
-From: Oleksii Shevchuk <alxchk@gmail.com>
-Date: Mon, 4 Nov 2013 18:47:43 +0200
-Subject: [PATCH] Configurable Timeouts/Restarts default values
-
-https://bugs.freedesktop.org/show_bug.cgi?id=71132
-
-Patch adds DefaultTimeoutStartSec, DefaultTimeoutStopSec, DefaultRestartSec
-configuration options to manager configuration file.
----
- man/systemd-system.conf.xml | 24 +++++++++++++++++++++++-
- man/systemd.mount.xml       |  4 ++--
- man/systemd.service.xml     |  6 ++++--
- man/systemd.socket.xml      |  4 ++--
- man/systemd.swap.xml        |  4 ++--
- src/core/device.c           |  2 +-
- src/core/main.c             |  9 +++++++++
- src/core/manager.h          |  3 +++
- src/core/mount.c            |  2 +-
- src/core/scope.c            |  2 +-
- src/core/service.c          |  6 +++---
- src/core/socket.c           |  2 +-
- src/core/swap.c             |  2 +-
- src/core/system.conf        |  3 +++
- src/core/user.conf          |  3 +++
- 15 files changed, 59 insertions(+), 17 deletions(-)
-
-diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
-index e8cf8a9..c1f2648 100644
---- a/man/systemd-system.conf.xml
-+++ b/man/systemd-system.conf.xml
-@@ -61,7 +61,6 @@
-                 otherwise <filename>user.conf</filename>. These
-                 configuration files contain a few settings controlling
-                 basic manager operations.</para>
--
-         </refsect1>
- 
-         <refsect1>
-@@ -95,6 +94,29 @@
-                         </varlistentry>
- 
-                         <varlistentry>
-+                                <term><varname>DefaultTimeoutStartSec=</varname></term>
-+                                <term><varname>DefaultTimeoutStopSec=</varname></term>
-+                                <term><varname>DefaultRestartSec=</varname></term>
-+
-+                                <listitem><para>Configures the default
-+                                time-outs for starting and stopping of
-+                                units, as well as the default time to
-+                                sleep between automatic restarts of a
-+                                units, as configured per-unit in
-+                                <varname>TimeoutStartSec=</varname>,
-+                                <varname>TimeoutStopSec=</varname> and
-+                                <varname>RestartSec=</varname> (for
-+                                service units see
-+                                <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-+                                for details on the per-unit
-+                                settings). For non-service units
-+                                <varname>DefaultTimeoutStartSec=</varname>
-+                                sets the default
-+                                <varname>TimeoutSec=</varname> value.
-+                                </para></listitem>
-+                        </varlistentry>
-+
-+                        <varlistentry>
-                                 <term><varname>CPUAffinity=</varname></term>
- 
-                                 <listitem><para>Configures the initial
-diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
-index 48af1ca..71a5736 100644
---- a/man/systemd.mount.xml
-+++ b/man/systemd.mount.xml
-@@ -260,8 +260,8 @@
-                                 Takes a unit-less value in seconds, or
-                                 a time span value such as "5min
-                                 20s". Pass 0 to disable the timeout
--                                logic. Defaults to
--                                90s.</para></listitem>
-+                                logic. Default value is setted up in manager configuration
-+                                file via <term><varname>DefaultTimeoutStart=</varname></term>.</para></listitem>
-                         </varlistentry>
-                 </variablelist>
- 
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 5e1ddf7..df04048 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -524,7 +524,8 @@
-                                 Takes a unit-less value in seconds, or a
-                                 time span value such as "5min
-                                 20s". Pass 0 to disable the timeout
--                                logic. Defaults to 90s, except when
-+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
-+                                manager configuration file, except when
-                                 <varname>Type=oneshot</varname> is
-                                 used in which case the timeout
-                                 is disabled by default.
-@@ -545,7 +546,8 @@
-                                 Takes a unit-less value in seconds, or a
-                                 time span value such as "5min
-                                 20s". Pass 0 to disable the timeout
--                                logic. Defaults to 90s.
-+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
-+                                manager configuration file.
-                                 </para></listitem>
-                         </varlistentry>
- 
-diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
-index 8c88d9f..1c78562 100644
---- a/man/systemd.socket.xml
-+++ b/man/systemd.socket.xml
-@@ -679,8 +679,8 @@
-                                 Takes a unit-less value in seconds, or
-                                 a time span value such as "5min
-                                 20s". Pass 0 to disable the timeout
--                                logic. Defaults to
--                                90s.</para></listitem>
-+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
-+                                manager configuration file.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
-index 813ae6c..13f6c84 100644
---- a/man/systemd.swap.xml
-+++ b/man/systemd.swap.xml
-@@ -186,8 +186,8 @@
-                                 Takes a unit-less value in seconds, or
-                                 a time span value such as "5min
-                                 20s". Pass 0 to disable the timeout
--                                logic. Defaults to
--                                90s.</para></listitem>
-+                                logic. Defaults to <varname>TimeoutStartSec=</varname> in
-+                                manager configuration file.</para></listitem>
-                         </varlistentry>
-                 </variablelist>
- 
-diff --git a/src/core/device.c b/src/core/device.c
-index 9fca82a..5397bd6 100644
---- a/src/core/device.c
-+++ b/src/core/device.c
-@@ -70,7 +70,7 @@ static void device_init(Unit *u) {
-          * indefinitely for plugged in devices, something which cannot
-          * happen for the other units since their operations time out
-          * anyway. */
--        UNIT(d)->job_timeout = DEFAULT_TIMEOUT_USEC;
-+        UNIT(d)->job_timeout = u->manager->default_timeout_start_usec;
- 
-         UNIT(d)->ignore_on_isolate = true;
-         UNIT(d)->ignore_on_snapshot = true;
-diff --git a/src/core/main.c b/src/core/main.c
-index fe291f8..937994c 100644
---- a/src/core/main.c
-+++ b/src/core/main.c
-@@ -90,6 +90,9 @@ static bool arg_switched_root = false;
- static char ***arg_join_controllers = NULL;
- static ExecOutput arg_default_std_output = EXEC_OUTPUT_JOURNAL;
- static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT;
-+static usec_t arg_default_restart_usec = DEFAULT_RESTART_USEC;
-+static usec_t arg_default_timeout_start_usec = DEFAULT_TIMEOUT_USEC;
-+static usec_t arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
- static usec_t arg_runtime_watchdog = 0;
- static usec_t arg_shutdown_watchdog = 10 * USEC_PER_MINUTE;
- static char **arg_default_environment = NULL;
-@@ -636,6 +639,9 @@ static int parse_config_file(void) {
-                 { "Manager", "CPUAffinity",           config_parse_cpu_affinity2, 0, NULL                    },
-                 { "Manager", "DefaultStandardOutput", config_parse_output,       0, &arg_default_std_output  },
-                 { "Manager", "DefaultStandardError",  config_parse_output,       0, &arg_default_std_error   },
-+                { "Manager", "DefaultTimeoutStartSec", config_parse_sec,         0, &arg_default_timeout_start_usec },
-+                { "Manager", "DefaultTimeoutStopSec", config_parse_sec,          0, &arg_default_timeout_stop_usec  },
-+                { "Manager", "DefaultRestartSec",     config_parse_sec,          0, &arg_default_restart_usec  },
-                 { "Manager", "JoinControllers",       config_parse_join_controllers, 0, &arg_join_controllers },
-                 { "Manager", "RuntimeWatchdogSec",    config_parse_sec,          0, &arg_runtime_watchdog    },
-                 { "Manager", "ShutdownWatchdogSec",   config_parse_sec,          0, &arg_shutdown_watchdog   },
-@@ -1542,6 +1548,9 @@ int main(int argc, char *argv[]) {
-         m->confirm_spawn = arg_confirm_spawn;
-         m->default_std_output = arg_default_std_output;
-         m->default_std_error = arg_default_std_error;
-+        m->default_restart_usec = arg_default_restart_usec;
-+        m->default_timeout_start_usec = arg_default_timeout_start_usec;
-+        m->default_timeout_stop_usec = arg_default_timeout_stop_usec;
-         m->runtime_watchdog = arg_runtime_watchdog;
-         m->shutdown_watchdog = arg_shutdown_watchdog;
-         m->userspace_timestamp = userspace_timestamp;
-diff --git a/src/core/manager.h b/src/core/manager.h
-index a3049b5..e74c609 100644
---- a/src/core/manager.h
-+++ b/src/core/manager.h
-@@ -230,6 +230,9 @@ struct Manager {
- 
-         ExecOutput default_std_output, default_std_error;
- 
-+        usec_t default_restart_usec, default_timeout_start_usec,
-+                default_timeout_stop_usec;
-+
-         struct rlimit *rlimit[RLIMIT_NLIMITS];
- 
-         /* non-zero if we are reloading or reexecuting, */
-diff --git a/src/core/mount.c b/src/core/mount.c
-index 70cd372..c0445a6 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -131,7 +131,7 @@ static void mount_init(Unit *u) {
-         assert(u);
-         assert(u->load_state == UNIT_STUB);
- 
--        m->timeout_usec = DEFAULT_TIMEOUT_USEC;
-+        m->timeout_usec = u->manager->default_timeout_start_usec;
-         m->directory_mode = 0755;
- 
-         exec_context_init(&m->exec_context);
-diff --git a/src/core/scope.c b/src/core/scope.c
-index 50e5dba..41da3b9 100644
---- a/src/core/scope.c
-+++ b/src/core/scope.c
-@@ -46,7 +46,7 @@ static void scope_init(Unit *u) {
-         assert(u);
-         assert(u->load_state == UNIT_STUB);
- 
--        s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
-+        s->timeout_stop_usec = u->manager->default_timeout_stop_usec;
- 
-         watch_init(&s->timer_watch);
- 
-diff --git a/src/core/service.c b/src/core/service.c
-index 96ed2d3..e81aa1f 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -124,9 +124,9 @@ static void service_init(Unit *u) {
-         assert(u);
-         assert(u->load_state == UNIT_STUB);
- 
--        s->timeout_start_usec = DEFAULT_TIMEOUT_USEC;
--        s->timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
--        s->restart_usec = DEFAULT_RESTART_USEC;
-+        s->timeout_start_usec = u->manager->default_timeout_start_usec;
-+        s->timeout_stop_usec = u->manager->default_timeout_stop_usec;
-+        s->restart_usec = u->manager->default_restart_usec;
-         s->type = _SERVICE_TYPE_INVALID;
- 
-         watch_init(&s->watchdog_watch);
-diff --git a/src/core/socket.c b/src/core/socket.c
-index 6c0ac1a..d368f7e 100644
---- a/src/core/socket.c
-+++ b/src/core/socket.c
-@@ -73,7 +73,7 @@ static void socket_init(Unit *u) {
-         assert(u->load_state == UNIT_STUB);
- 
-         s->backlog = SOMAXCONN;
--        s->timeout_usec = DEFAULT_TIMEOUT_USEC;
-+        s->timeout_usec = u->manager->default_timeout_start_usec;
-         s->directory_mode = 0755;
-         s->socket_mode = 0666;
- 
-diff --git a/src/core/swap.c b/src/core/swap.c
-index a68ab7c..147f710 100644
---- a/src/core/swap.c
-+++ b/src/core/swap.c
-@@ -86,7 +86,7 @@ static void swap_init(Unit *u) {
-         assert(s);
-         assert(UNIT(s)->load_state == UNIT_STUB);
- 
--        s->timeout_usec = DEFAULT_TIMEOUT_USEC;
-+        s->timeout_usec = u->manager->default_timeout_start_usec;
- 
-         exec_context_init(&s->exec_context);
-         s->exec_context.std_output = u->manager->default_std_output;
-diff --git a/src/core/system.conf b/src/core/system.conf
-index 7b03c87..3c6cc03 100644
---- a/src/core/system.conf
-+++ b/src/core/system.conf
-@@ -24,6 +24,9 @@
- #ShutdownWatchdogSec=10min
- #CapabilityBoundingSet=
- #TimerSlackNSec=
-+#DefaultTimeoutStartSec=90s
-+#DefaultTimeoutStopSec=90s
-+#DefaultRestartSec=100ms
- #DefaultEnvironment=
- #DefaultLimitCPU=
- #DefaultLimitFSIZE=
-diff --git a/src/core/user.conf b/src/core/user.conf
-index 4a0129a..b030701 100644
---- a/src/core/user.conf
-+++ b/src/core/user.conf
-@@ -14,3 +14,6 @@
- #LogLocation=no
- #DefaultStandardOutput=inherit
- #DefaultStandardError=inherit
-+#DefaultTimeoutStartSec=90s
-+#DefaultTimeoutStopSec=90s
-+#DefaultRestartSec=100ms
diff --git a/SOURCES/0030-unit-When-stopping-due-to-BindsTo-log-which-unit-cau.patch b/SOURCES/0030-unit-When-stopping-due-to-BindsTo-log-which-unit-cau.patch
new file mode 100644
index 0000000..3fed40f
--- /dev/null
+++ b/SOURCES/0030-unit-When-stopping-due-to-BindsTo-log-which-unit-cau.patch
@@ -0,0 +1,39 @@
+From 95216d7246fe5e8ac404cc9d432072eb59f2af04 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters@verbum.org>
+Date: Tue, 17 Feb 2015 13:47:34 -0500
+Subject: [PATCH] unit: When stopping due to BindsTo=, log which unit caused it
+
+I'm trying to track down a relatively recent change in systemd
+which broke OSTree; see https://bugzilla.gnome.org/show_bug.cgi?id=743891
+
+Systemd started to stop sysroot.mount, and this patch should help
+me debug why at least.
+
+While we're here, "break" on the first unit we find that will
+deactivate, as there's no point in further iteration.
+
+(cherry picked from commit 98f738b62047229af4a929d7996e2ab04253b02c)
+---
+ src/core/unit.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 9f1e55e..563f6fe 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -1648,12 +1648,14 @@ static void unit_check_binds_to(Unit *u) {
+                         continue;
+ 
+                 stop = true;
++                break;
+         }
+ 
+         if (!stop)
+                 return;
+ 
+-        log_unit_info(u->id, "Unit %s is bound to inactive unit. Stopping, too.", u->id);
++        assert(other);
++        log_unit_info(u->id, "Unit %s is bound to inactive unit %s. Stopping, too.", u->id, other->id);
+ 
+         /* A unit we need to run is gone. Sniff. Let's stop this. */
+         manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
diff --git a/SOURCES/0031-manager-configurable-StartLimit-default-values.patch b/SOURCES/0031-manager-configurable-StartLimit-default-values.patch
deleted file mode 100644
index af95ca1..0000000
--- a/SOURCES/0031-manager-configurable-StartLimit-default-values.patch
+++ /dev/null
@@ -1,161 +0,0 @@
-From 409dbe76d743448629167f4412f290bba1aae11e Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Fri, 8 Nov 2013 16:01:22 +0100
-Subject: [PATCH] manager: configurable StartLimit default values
-
-https://bugzilla.redhat.com/show_bug.cgi?id=821723
----
- man/systemd-system.conf.xml | 13 +++++++++++++
- man/systemd.service.xml     |  9 ++++++---
- src/core/main.c             |  6 ++++++
- src/core/manager.h          |  3 +++
- src/core/service.c          |  4 +++-
- src/core/system.conf        |  2 ++
- src/core/user.conf          |  2 ++
- src/shared/def.h            |  3 +++
- 8 files changed, 38 insertions(+), 4 deletions(-)
-
-diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
-index c1f2648..9a1a99f 100644
---- a/man/systemd-system.conf.xml
-+++ b/man/systemd-system.conf.xml
-@@ -115,6 +115,19 @@
-                                 <varname>TimeoutSec=</varname> value.
-                                 </para></listitem>
-                         </varlistentry>
-+                        <varlistentry>
-+                                <term><varname>DefaultStartLimitInterval=</varname></term>
-+                                <term><varname>DefaultStartLimitBurst=</varname></term>
-+
-+                                <listitem><para>Configure the default start rate
-+                                limiting, as configured per-service by
-+                                <varname>StartLimitInterval=</varname> and
-+                                <varname>StartLimitBurst=</varname>. See
-+                                <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-+                                for details on the per-service
-+                                settings).
-+                                </para></listitem>
-+                        </varlistentry>
- 
-                         <varlistentry>
-                                 <term><varname>CPUAffinity=</varname></term>
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index df04048..3f31c11 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -863,12 +863,15 @@
-                                 these two options, this rate limiting
-                                 may be modified. Use
-                                 <varname>StartLimitInterval=</varname>
--                                to configure the checking interval
--                                (defaults to 10s, set to 0 to disable
-+                                to configure the checking interval (defaults to
-+                                <varname>DefaultStartLimitInterval=</varname> in
-+                                manager configuration file, set to 0 to disable
-                                 any kind of rate limiting). Use
-                                 <varname>StartLimitBurst=</varname> to
-                                 configure how many starts per interval
--                                are allowed (defaults to 5). These
-+                                are allowed (defaults to
-+                                <varname>DefaultStartLimitBurst=</varname> in
-+                                manager configuration file). These
-                                 configuration options are particularly
-                                 useful in conjunction with
-                                 <varname>Restart=</varname>, however
-diff --git a/src/core/main.c b/src/core/main.c
-index 937994c..00fd394 100644
---- a/src/core/main.c
-+++ b/src/core/main.c
-@@ -93,6 +93,8 @@ static ExecOutput arg_default_std_error = EXEC_OUTPUT_INHERIT;
- static usec_t arg_default_restart_usec = DEFAULT_RESTART_USEC;
- static usec_t arg_default_timeout_start_usec = DEFAULT_TIMEOUT_USEC;
- static usec_t arg_default_timeout_stop_usec = DEFAULT_TIMEOUT_USEC;
-+static usec_t arg_default_start_limit_interval = DEFAULT_START_LIMIT_INTERVAL;
-+static unsigned arg_default_start_limit_burst = DEFAULT_START_LIMIT_BURST;
- static usec_t arg_runtime_watchdog = 0;
- static usec_t arg_shutdown_watchdog = 10 * USEC_PER_MINUTE;
- static char **arg_default_environment = NULL;
-@@ -642,6 +644,8 @@ static int parse_config_file(void) {
-                 { "Manager", "DefaultTimeoutStartSec", config_parse_sec,         0, &arg_default_timeout_start_usec },
-                 { "Manager", "DefaultTimeoutStopSec", config_parse_sec,          0, &arg_default_timeout_stop_usec  },
-                 { "Manager", "DefaultRestartSec",     config_parse_sec,          0, &arg_default_restart_usec  },
-+                { "Manager", "DefaultStartLimitInterval", config_parse_sec,      0, &arg_default_start_limit_interval },
-+                { "Manager", "DefaultStartLimitBurst", config_parse_unsigned,    0, &arg_default_start_limit_burst },
-                 { "Manager", "JoinControllers",       config_parse_join_controllers, 0, &arg_join_controllers },
-                 { "Manager", "RuntimeWatchdogSec",    config_parse_sec,          0, &arg_runtime_watchdog    },
-                 { "Manager", "ShutdownWatchdogSec",   config_parse_sec,          0, &arg_shutdown_watchdog   },
-@@ -1551,6 +1555,8 @@ int main(int argc, char *argv[]) {
-         m->default_restart_usec = arg_default_restart_usec;
-         m->default_timeout_start_usec = arg_default_timeout_start_usec;
-         m->default_timeout_stop_usec = arg_default_timeout_stop_usec;
-+        m->default_start_limit_interval = arg_default_start_limit_interval;
-+        m->default_start_limit_burst = arg_default_start_limit_burst;
-         m->runtime_watchdog = arg_runtime_watchdog;
-         m->shutdown_watchdog = arg_shutdown_watchdog;
-         m->userspace_timestamp = userspace_timestamp;
-diff --git a/src/core/manager.h b/src/core/manager.h
-index e74c609..ee42c5e 100644
---- a/src/core/manager.h
-+++ b/src/core/manager.h
-@@ -233,6 +233,9 @@ struct Manager {
-         usec_t default_restart_usec, default_timeout_start_usec,
-                 default_timeout_stop_usec;
- 
-+        usec_t default_start_limit_interval;
-+        unsigned default_start_limit_burst;
-+
-         struct rlimit *rlimit[RLIMIT_NLIMITS];
- 
-         /* non-zero if we are reloading or reexecuting, */
-diff --git a/src/core/service.c b/src/core/service.c
-index e81aa1f..5662180 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -143,7 +143,9 @@ static void service_init(Unit *u) {
-         kill_context_init(&s->kill_context);
-         cgroup_context_init(&s->cgroup_context);
- 
--        RATELIMIT_INIT(s->start_limit, 10*USEC_PER_SEC, 5);
-+        RATELIMIT_INIT(s->start_limit,
-+                       u->manager->default_start_limit_interval,
-+                       u->manager->default_start_limit_burst);
- 
-         s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID;
- }
-diff --git a/src/core/system.conf b/src/core/system.conf
-index 3c6cc03..38bbca5 100644
---- a/src/core/system.conf
-+++ b/src/core/system.conf
-@@ -27,6 +27,8 @@
- #DefaultTimeoutStartSec=90s
- #DefaultTimeoutStopSec=90s
- #DefaultRestartSec=100ms
-+#DefaultStartLimitInterval=10s
-+#DefaultStartLimitBurst=5
- #DefaultEnvironment=
- #DefaultLimitCPU=
- #DefaultLimitFSIZE=
-diff --git a/src/core/user.conf b/src/core/user.conf
-index b030701..923ca66 100644
---- a/src/core/user.conf
-+++ b/src/core/user.conf
-@@ -17,3 +17,5 @@
- #DefaultTimeoutStartSec=90s
- #DefaultTimeoutStopSec=90s
- #DefaultRestartSec=100ms
-+#DefaultStartLimitInterval=10s
-+#DefaultStartLimitBurst=5
-diff --git a/src/shared/def.h b/src/shared/def.h
-index edd0bcf..e4ef735 100644
---- a/src/shared/def.h
-+++ b/src/shared/def.h
-@@ -27,6 +27,9 @@
- #define DEFAULT_RESTART_USEC (100*USEC_PER_MSEC)
- #define DEFAULT_CONFIRM_USEC (30*USEC_PER_SEC)
- 
-+#define DEFAULT_START_LIMIT_INTERVAL (10*USEC_PER_SEC)
-+#define DEFAULT_START_LIMIT_BURST 5
-+
- #define DEFAULT_EXIT_USEC (5*USEC_PER_MINUTE)
- 
- #define SYSTEMD_CGROUP_CONTROLLER "name=systemd"
diff --git a/SOURCES/0031-sysctl-downgrade-message-about-sysctl-overrides-to-d.patch b/SOURCES/0031-sysctl-downgrade-message-about-sysctl-overrides-to-d.patch
new file mode 100644
index 0000000..9bf46d7
--- /dev/null
+++ b/SOURCES/0031-sysctl-downgrade-message-about-sysctl-overrides-to-d.patch
@@ -0,0 +1,26 @@
+From 24e82cb7aa809bb8d50f40957cfed51dc48e0d72 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 26 Feb 2015 19:00:11 -0500
+Subject: [PATCH] sysctl: downgrade message about sysctl overrides to debug
+
+Printing it at info level was tedious. We don't do that for any other
+overrides.
+
+(cherry picked from commit 7933e4266f8124e3fca71f67757abd44155fa1cb)
+---
+ src/sysctl/sysctl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
+index d007c93..b6945ed 100644
+--- a/src/sysctl/sysctl.c
++++ b/src/sysctl/sysctl.c
+@@ -176,7 +176,7 @@ found:
+                         if (streq(value, existing))
+                                 continue;
+ 
+-                        log_info("Overwriting earlier assignment of %s in file '%s'.", p, path);
++                        log_debug("Overwriting earlier assignment of %s in file '%s'.", p, path);
+                         free(hashmap_remove(sysctl_options, p));
+                         free(v);
+                 }
diff --git a/SOURCES/0032-sysctl-add-some-hints-how-to-override-settings.patch b/SOURCES/0032-sysctl-add-some-hints-how-to-override-settings.patch
new file mode 100644
index 0000000..78d7c74
--- /dev/null
+++ b/SOURCES/0032-sysctl-add-some-hints-how-to-override-settings.patch
@@ -0,0 +1,36 @@
+From 66d069acb953ed8f2bfc6d76561d594520b5c67b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 26 Feb 2015 19:05:51 -0500
+Subject: [PATCH] sysctl: add some hints how to override settings
+
+Also a link to decent documentation for sysrq keys. It is surprising
+hard to find.
+
+https://lists.fedoraproject.org/pipermail/devel/2015-February/208412.html
+(cherry picked from commit 16b65d7f463e91f6299dfa7b83d4b5fbeb109d1c)
+---
+ sysctl.d/50-default.conf | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/sysctl.d/50-default.conf b/sysctl.d/50-default.conf
+index f189233..def151b 100644
+--- a/sysctl.d/50-default.conf
++++ b/sysctl.d/50-default.conf
+@@ -5,9 +5,16 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ 
+-# See sysctl.d(5) and core(5) for for details.
++# See sysctl.d(5) and core(5) for for documentation.
++
++# To override settings in this file, create a local file in /etc
++# (e.g. /etc/sysctl.d/90-override.conf), and put any assignments
++# there.
+ 
+ # System Request functionality of the kernel (SYNC)
++#
++# Use kernel.sysrq = 1 to allow all keys.
++# See http://fedoraproject.org/wiki/QA/Sysrq for a list of values and keys.
+ kernel.sysrq = 16
+ 
+ # Append the PID to the core filename
diff --git a/SOURCES/0032-sysctl-bring-back-etc-sysctl.conf.patch b/SOURCES/0032-sysctl-bring-back-etc-sysctl.conf.patch
deleted file mode 100644
index 6142ed8..0000000
--- a/SOURCES/0032-sysctl-bring-back-etc-sysctl.conf.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 9944a5e77f0ad03742a1582cd51cc5ebbdd487ed Mon Sep 17 00:00:00 2001
-From: Harald Hoyer <harald@redhat.com>
-Date: Mon, 11 Nov 2013 11:17:57 +0100
-Subject: [PATCH] sysctl: bring back /etc/sysctl.conf
-
-Read /etc/sysctl.conf as the last file, overwriting everything.
----
- src/sysctl/sysctl.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
-index b5670db..878c923 100644
---- a/src/sysctl/sysctl.c
-+++ b/src/sysctl/sysctl.c
-@@ -311,6 +311,10 @@ int main(int argc, char *argv[]) {
-                         if (k < 0 && r == 0)
-                                 r = k;
-                 }
-+
-+                k = parse_file(sysctl_options, "/etc/sysctl.conf", true);
-+                if (k < 0 && r == 0)
-+                        r = k;
-         }
- 
-         k = apply_all(sysctl_options);
diff --git a/SOURCES/0033-core-rework-device-state-logic.patch b/SOURCES/0033-core-rework-device-state-logic.patch
new file mode 100644
index 0000000..4c470dc
--- /dev/null
+++ b/SOURCES/0033-core-rework-device-state-logic.patch
@@ -0,0 +1,909 @@
+From 30ced6a8c742e1c798fff439b28a9800ca43f3e7 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 27 Feb 2015 21:55:08 +0100
+Subject: [PATCH] core: rework device state logic
+
+This change introduces a new state "tentative" for device units. Device
+units are considered "plugged" when udev announced them, "dead" when
+they are not available in the kernel, and "tentative" when they are
+referenced in /proc/self/mountinfo or /proc/swaps but not (yet)
+announced via udev.
+
+This should fix a race when device nodes (like loop devices) are created
+and immediately mounted. Previously, systemd might end up seeing the
+mount unit before the device, and would thus pull down the mount because
+its BindTo dependency on the device would not be fulfilled.
+
+(cherry picked from commit 628c89cc68ab96fce2de7ebba5933725d147aecc)
+---
+ src/core/device.c | 368 +++++++++++++++++++++++++++++++++---------------------
+ src/core/device.h |  14 ++-
+ src/core/mount.c  |  46 ++++---
+ src/core/swap.c   |  32 +++--
+ src/core/swap.h   |   4 +-
+ src/core/unit.c   |   1 -
+ 6 files changed, 285 insertions(+), 180 deletions(-)
+
+diff --git a/src/core/device.c b/src/core/device.c
+index d3deac3..75b9a46 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -36,7 +36,8 @@
+ 
+ static const UnitActiveState state_translation_table[_DEVICE_STATE_MAX] = {
+         [DEVICE_DEAD] = UNIT_INACTIVE,
+-        [DEVICE_PLUGGED] = UNIT_ACTIVE
++        [DEVICE_TENTATIVE] = UNIT_ACTIVATING,
++        [DEVICE_PLUGGED] = UNIT_ACTIVE,
+ };
+ 
+ static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata);
+@@ -65,6 +66,41 @@ static void device_unset_sysfs(Device *d) {
+         d->sysfs = NULL;
+ }
+ 
++static int device_set_sysfs(Device *d, const char *sysfs) {
++        Device *first;
++        char *copy;
++        int r;
++
++        assert(d);
++
++        if (streq_ptr(d->sysfs, sysfs))
++                return 0;
++
++        r = hashmap_ensure_allocated(&UNIT(d)->manager->devices_by_sysfs, &string_hash_ops);
++        if (r < 0)
++                return r;
++
++        copy = strdup(sysfs);
++        if (!copy)
++                return -ENOMEM;
++
++        device_unset_sysfs(d);
++
++        first = hashmap_get(UNIT(d)->manager->devices_by_sysfs, sysfs);
++        LIST_PREPEND(same_sysfs, first, d);
++
++        r = hashmap_replace(UNIT(d)->manager->devices_by_sysfs, copy, first);
++        if (r < 0) {
++                LIST_REMOVE(same_sysfs, first, d);
++                free(copy);
++                return r;
++        }
++
++        d->sysfs = copy;
++
++        return 0;
++}
++
+ static void device_init(Unit *u) {
+         Device *d = DEVICE(u);
+ 
+@@ -112,8 +148,13 @@ static int device_coldplug(Unit *u) {
+         assert(d);
+         assert(d->state == DEVICE_DEAD);
+ 
+-        if (d->sysfs)
++        if (d->found & DEVICE_FOUND_UDEV)
++                /* If udev says the device is around, it's around */
+                 device_set_state(d, DEVICE_PLUGGED);
++        else if (d->found != DEVICE_NOT_FOUND)
++                /* If a device is found in /proc/self/mountinfo or
++                 * /proc/swaps, it's "tentatively" around. */
++                device_set_state(d, DEVICE_TENTATIVE);
+ 
+         return 0;
+ }
+@@ -142,49 +183,9 @@ _pure_ static const char *device_sub_state_to_string(Unit *u) {
+         return device_state_to_string(DEVICE(u)->state);
+ }
+ 
+-static int device_add_escaped_name(Unit *u, const char *dn) {
+-        _cleanup_free_ char *e = NULL;
+-        int r;
+-
+-        assert(u);
+-        assert(dn);
+-        assert(dn[0] == '/');
+-
+-        e = unit_name_from_path(dn, ".device");
+-        if (!e)
+-                return -ENOMEM;
+-
+-        r = unit_add_name(u, e);
+-        if (r < 0 && r != -EEXIST)
+-                return r;
+-
+-        return 0;
+-}
+-
+-static int device_find_escape_name(Manager *m, const char *dn, Unit **_u) {
+-        _cleanup_free_ char *e = NULL;
+-        Unit *u;
+-
+-        assert(m);
+-        assert(dn);
+-        assert(dn[0] == '/');
+-        assert(_u);
+-
+-        e = unit_name_from_path(dn, ".device");
+-        if (!e)
+-                return -ENOMEM;
+-
+-        u = manager_get_unit(m, e);
+-        if (u) {
+-                *_u = u;
+-                return 1;
+-        }
+-
+-        return 0;
+-}
+-
+-static int device_make_description(Unit *u, struct udev_device *dev, const char *path) {
++static int device_update_description(Unit *u, struct udev_device *dev, const char *path) {
+         const char *model;
++        int r;
+ 
+         assert(u);
+         assert(dev);
+@@ -209,13 +210,16 @@ static int device_make_description(Unit *u, struct udev_device *dev, const char
+ 
+                         j = strjoin(model, " ", label, NULL);
+                         if (j)
+-                                return unit_set_description(u, j);
+-                }
++                                r = unit_set_description(u, j);
++                } else
++                        r = unit_set_description(u, model);
++        } else
++                r = unit_set_description(u, path);
+ 
+-                return unit_set_description(u, model);
+-        }
++        if (r < 0)
++                log_unit_error_errno(u->id, r, "Failed to set device description: %m");
+ 
+-        return unit_set_description(u, path);
++        return r;
+ }
+ 
+ static int device_add_udev_wants(Unit *u, struct udev_device *dev) {
+@@ -242,20 +246,20 @@ static int device_add_udev_wants(Unit *u, struct udev_device *dev) {
+ 
+                 n = unit_name_mangle(e, MANGLE_NOGLOB);
+                 if (!n)
+-                        return -ENOMEM;
++                        return log_oom();
+ 
+                 r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true);
+                 if (r < 0)
+-                        return r;
++                        return log_unit_error_errno(u->id, r, "Failed to add wants dependency: %m");
+         }
+         if (!isempty(state))
+-                log_unit_warning(u->id, "Property %s on %s has trailing garbage, ignoring.",
+-                                 property, strna(udev_device_get_syspath(dev)));
++                log_unit_warning(u->id, "Property %s on %s has trailing garbage, ignoring.", property, strna(udev_device_get_syspath(dev)));
+ 
+         return 0;
+ }
+ 
+-static int device_update_unit(Manager *m, struct udev_device *dev, const char *path, bool main) {
++static int device_setup_unit(Manager *m, struct udev_device *dev, const char *path, bool main) {
++        _cleanup_free_ char *e = NULL;
+         const char *sysfs;
+         Unit *u = NULL;
+         bool delete;
+@@ -269,12 +273,18 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+         if (!sysfs)
+                 return 0;
+ 
+-        r = device_find_escape_name(m, path, &u);
+-        if (r < 0)
+-                return r;
++        e = unit_name_from_path(path, ".device");
++        if (!e)
++                return log_oom();
++
++        u = manager_get_unit(m, e);
+ 
+-        if (u && DEVICE(u)->sysfs && !path_equal(DEVICE(u)->sysfs, sysfs))
++        if (u &&
++            DEVICE(u)->sysfs &&
++            !path_equal(DEVICE(u)->sysfs, sysfs)) {
++                log_unit_error(u->id, "Device %s appeared twice with different sysfs paths %s and %s", e, DEVICE(u)->sysfs, sysfs);
+                 return -EEXIST;
++        }
+ 
+         if (!u) {
+                 delete = true;
+@@ -283,7 +293,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+                 if (!u)
+                         return log_oom();
+ 
+-                r = device_add_escaped_name(u, path);
++                r = unit_add_name(u, e);
+                 if (r < 0)
+                         goto fail;
+ 
+@@ -295,37 +305,16 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+          * actually been seen yet ->sysfs will not be
+          * initialized. Hence initialize it if necessary. */
+ 
+-        if (!DEVICE(u)->sysfs) {
+-                Device *first;
+-
+-                DEVICE(u)->sysfs = strdup(sysfs);
+-                if (!DEVICE(u)->sysfs) {
+-                        r = -ENOMEM;
+-                        goto fail;
+-                }
+-
+-                r = hashmap_ensure_allocated(&m->devices_by_sysfs, &string_hash_ops);
+-                if (r < 0)
+-                        goto fail;
+-
+-                first = hashmap_get(m->devices_by_sysfs, sysfs);
+-                LIST_PREPEND(same_sysfs, first, DEVICE(u));
+-
+-                r = hashmap_replace(m->devices_by_sysfs, DEVICE(u)->sysfs, first);
+-                if (r < 0)
+-                        goto fail;
+-        }
+-
+-        device_make_description(u, dev, path);
++        r = device_set_sysfs(DEVICE(u), sysfs);
++        if (r < 0)
++                goto fail;
+ 
+-        if (main) {
+-                /* The additional systemd udev properties we only
+-                 * interpret for the main object */
++        (void) device_update_description(u, dev, path);
+ 
+-                r = device_add_udev_wants(u, dev);
+-                if (r < 0)
+-                        goto fail;
+-        }
++        /* The additional systemd udev properties we only interpret
++         * for the main object */
++        if (main)
++                (void) device_add_udev_wants(u, dev);
+ 
+         /* Note that this won't dispatch the load queue, the caller
+          * has to do that if needed and appropriate */
+@@ -334,7 +323,7 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p
+         return 0;
+ 
+ fail:
+-        log_warning_errno(r, "Failed to load device unit: %m");
++        log_unit_warning_errno(u->id, r, "Failed to set up device unit: %m");
+ 
+         if (delete && u)
+                 unit_free(u);
+@@ -342,7 +331,7 @@ fail:
+         return r;
+ }
+ 
+-static int device_process_new_device(Manager *m, struct udev_device *dev) {
++static int device_process_new(Manager *m, struct udev_device *dev) {
+         const char *sysfs, *dn, *alias;
+         struct udev_list_entry *item = NULL, *first = NULL;
+         int r;
+@@ -354,14 +343,14 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
+                 return 0;
+ 
+         /* Add the main unit named after the sysfs path */
+-        r = device_update_unit(m, dev, sysfs, true);
++        r = device_setup_unit(m, dev, sysfs, true);
+         if (r < 0)
+                 return r;
+ 
+         /* Add an additional unit for the device node */
+         dn = udev_device_get_devnode(dev);
+         if (dn)
+-                device_update_unit(m, dev, dn, false);
++                (void) device_setup_unit(m, dev, dn, false);
+ 
+         /* Add additional units for all symlinks */
+         first = udev_device_get_devlinks_list_entry(dev);
+@@ -388,7 +377,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
+                             st.st_rdev != udev_device_get_devnum(dev))
+                                 continue;
+ 
+-                device_update_unit(m, dev, p, false);
++                (void) device_setup_unit(m, dev, p, false);
+         }
+ 
+         /* Add additional units for all explicitly configured
+@@ -405,7 +394,7 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
+                         e[l] = 0;
+ 
+                         if (path_is_absolute(e))
+-                                device_update_unit(m, dev, e, false);
++                                (void) device_setup_unit(m, dev, e, false);
+                         else
+                                 log_warning("SYSTEMD_ALIAS for %s is not an absolute path, ignoring: %s", sysfs, e);
+                 }
+@@ -416,39 +405,62 @@ static int device_process_new_device(Manager *m, struct udev_device *dev) {
+         return 0;
+ }
+ 
+-static void device_set_path_plugged(Manager *m, struct udev_device *dev) {
+-        const char *sysfs;
++static void device_update_found_one(Device *d, bool add, DeviceFound found, bool now) {
++        DeviceFound n;
++
++        assert(d);
++
++        n = add ? (d->found | found) : (d->found & ~found);
++        if (n == d->found)
++                return;
++
++        d->found = n;
++
++        if (now) {
++                if (d->found & DEVICE_FOUND_UDEV)
++                        device_set_state(d, DEVICE_PLUGGED);
++                else if (d->found != DEVICE_NOT_FOUND)
++                        device_set_state(d, DEVICE_TENTATIVE);
++                else
++                        device_set_state(d, DEVICE_DEAD);
++        }
++}
++
++static int device_update_found_by_sysfs(Manager *m, const char *sysfs, bool add, DeviceFound found, bool now) {
+         Device *d, *l;
+ 
+         assert(m);
+-        assert(dev);
++        assert(sysfs);
+ 
+-        sysfs = udev_device_get_syspath(dev);
+-        if (!sysfs)
+-                return;
++        if (found == DEVICE_NOT_FOUND)
++                return 0;
+ 
+         l = hashmap_get(m->devices_by_sysfs, sysfs);
+         LIST_FOREACH(same_sysfs, d, l)
+-                device_set_state(d, DEVICE_PLUGGED);
++                device_update_found_one(d, add, found, now);
++
++        return 0;
+ }
+ 
+-static int device_process_removed_device(Manager *m, struct udev_device *dev) {
+-        const char *sysfs;
+-        Device *d;
++static int device_update_found_by_name(Manager *m, const char *path, bool add, DeviceFound found, bool now) {
++        _cleanup_free_ char *e = NULL;
++        Unit *u;
+ 
+         assert(m);
+-        assert(dev);
++        assert(path);
+ 
+-        sysfs = udev_device_get_syspath(dev);
+-        if (!sysfs)
+-                return -ENOMEM;
++        if (found == DEVICE_NOT_FOUND)
++                return 0;
+ 
+-        /* Remove all units of this sysfs path */
+-        while ((d = hashmap_get(m->devices_by_sysfs, sysfs))) {
+-                device_unset_sysfs(d);
+-                device_set_state(d, DEVICE_DEAD);
+-        }
++        e = unit_name_from_path(path, ".device");
++        if (!e)
++                return log_oom();
+ 
++        u = manager_get_unit(m, e);
++        if (!u)
++                return 0;
++
++        device_update_found_one(DEVICE(u), add, found, now);
+         return 0;
+ }
+ 
+@@ -464,22 +476,6 @@ static bool device_is_ready(struct udev_device *dev) {
+         return parse_boolean(ready) != 0;
+ }
+ 
+-static int device_process_new_path(Manager *m, const char *path) {
+-        _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
+-
+-        assert(m);
+-        assert(path);
+-
+-        dev = udev_device_new_from_syspath(m->udev, path);
+-        if (!dev)
+-                return log_oom();
+-
+-        if (!device_is_ready(dev))
+-                return 0;
+-
+-        return device_process_new_device(m, dev);
+-}
+-
+ static Unit *device_following(Unit *u) {
+         Device *d = DEVICE(u);
+         Device *other, *first = NULL;
+@@ -606,12 +602,31 @@ static int device_enumerate(Manager *m) {
+                 goto fail;
+ 
+         first = udev_enumerate_get_list_entry(e);
+-        udev_list_entry_foreach(item, first)
+-                device_process_new_path(m, udev_list_entry_get_name(item));
++        udev_list_entry_foreach(item, first) {
++                _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
++                const char *sysfs;
++
++                sysfs = udev_list_entry_get_name(item);
++
++                dev = udev_device_new_from_syspath(m->udev, sysfs);
++                if (!dev) {
++                        log_oom();
++                        continue;
++                }
++
++                if (!device_is_ready(dev))
++                        continue;
++
++                (void) device_process_new(m, dev);
++
++                device_update_found_by_sysfs(m, sysfs, true, DEVICE_FOUND_UDEV, false);
++        }
+ 
+         return 0;
+ 
+ fail:
++        log_error_errno(r, "Failed to enumerate devices: %m");
++
+         device_shutdown(m);
+         return r;
+ }
+@@ -619,7 +634,7 @@ fail:
+ static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata) {
+         _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
+         Manager *m = userdata;
+-        const char *action;
++        const char *action, *sysfs;
+         int r;
+ 
+         assert(m);
+@@ -641,33 +656,47 @@ static int device_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+         if (!dev)
+                 return 0;
+ 
++        sysfs = udev_device_get_syspath(dev);
++        if (!sysfs) {
++                log_error("Failed to get udev sys path.");
++                return 0;
++        }
++
+         action = udev_device_get_action(dev);
+         if (!action) {
+                 log_error("Failed to get udev action string.");
+                 return 0;
+         }
+ 
+-        if (streq(action, "remove") || !device_is_ready(dev))  {
+-                r = device_process_removed_device(m, dev);
+-                if (r < 0)
+-                        log_error_errno(r, "Failed to process device remove event: %m");
+-
+-                r = swap_process_removed_device(m, dev);
++        if (streq(action, "remove"))  {
++                r = swap_process_device_remove(m, dev);
+                 if (r < 0)
+                         log_error_errno(r, "Failed to process swap device remove event: %m");
+ 
+-        } else {
+-                r = device_process_new_device(m, dev);
+-                if (r < 0)
+-                        log_error_errno(r, "Failed to process device new event: %m");
++                /* If we get notified that a device was removed by
++                 * udev, then it's completely gone, hence unset all
++                 * found bits */
++                device_update_found_by_sysfs(m, sysfs, false, DEVICE_FOUND_UDEV|DEVICE_FOUND_MOUNT|DEVICE_FOUND_SWAP, true);
+ 
+-                r = swap_process_new_device(m, dev);
++        } else if (device_is_ready(dev)) {
++
++                (void) device_process_new(m, dev);
++
++                r = swap_process_device_new(m, dev);
+                 if (r < 0)
+                         log_error_errno(r, "Failed to process swap device new event: %m");
+ 
+                 manager_dispatch_load_queue(m);
+ 
+-                device_set_path_plugged(m, dev);
++                /* The device is found now, set the udev found bit */
++                device_update_found_by_sysfs(m, sysfs, true, DEVICE_FOUND_UDEV, true);
++
++        } else {
++                /* The device is nominally around, but not ready for
++                 * us. Hence unset the udev bit, but leave the rest
++                 * around. */
++
++                device_update_found_by_sysfs(m, sysfs, false, DEVICE_FOUND_UDEV, true);
+         }
+ 
+         return 0;
+@@ -686,9 +715,58 @@ static bool device_supported(Manager *m) {
+         return read_only <= 0;
+ }
+ 
++int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now) {
++        _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
++        struct stat st;
++
++        assert(m);
++        assert(node);
++
++        /* This is called whenever we find a device referenced in
++         * /proc/swaps or /proc/self/mounts. Such a device might be
++         * mounted/enabled at a time where udev has not finished
++         * probing it yet, and we thus haven't learned about it
++         * yet. In this case we will set the device unit to
++         * "tentative" state. */
++
++        if (add) {
++                if (!path_startswith(node, "/dev"))
++                        return 0;
++
++                if (stat(node, &st) < 0) {
++                        if (errno == ENOENT)
++                                return 0;
++
++                        return log_error_errno(errno, "Failed to stat device node file %s: %m", node);
++                }
++
++                if (!S_ISBLK(st.st_mode) && !S_ISCHR(st.st_mode))
++                        return 0;
++
++                dev = udev_device_new_from_devnum(m->udev, S_ISBLK(st.st_mode) ? 'b' : 'c', st.st_rdev);
++                if (!dev) {
++                        if (errno == ENOENT)
++                                return 0;
++
++                        return log_oom();
++                }
++
++                /* If the device is known in the kernel and newly
++                 * appeared, then we'll create a device unit for it,
++                 * under the name referenced in /proc/swaps or
++                 * /proc/self/mountinfo. */
++
++                (void) device_setup_unit(m, dev, node, false);
++        }
++
++        /* Update the device unit's state, should it exist */
++        return device_update_found_by_name(m, node, add, found, now);
++}
++
+ static const char* const device_state_table[_DEVICE_STATE_MAX] = {
+         [DEVICE_DEAD] = "dead",
+-        [DEVICE_PLUGGED] = "plugged"
++        [DEVICE_TENTATIVE] = "tentative",
++        [DEVICE_PLUGGED] = "plugged",
+ };
+ 
+ DEFINE_STRING_TABLE_LOOKUP(device_state, DeviceState);
+diff --git a/src/core/device.h b/src/core/device.h
+index bb7ae07..0609b20 100644
+--- a/src/core/device.h
++++ b/src/core/device.h
+@@ -29,20 +29,28 @@ typedef struct Device Device;
+  * simplifies the state engine greatly */
+ typedef enum DeviceState {
+         DEVICE_DEAD,
+-        DEVICE_PLUGGED,
++        DEVICE_TENTATIVE, /* mounted or swapped, but not (yet) announced by udev */
++        DEVICE_PLUGGED,   /* announced by udev */
+         _DEVICE_STATE_MAX,
+         _DEVICE_STATE_INVALID = -1
+ } DeviceState;
+ 
++typedef enum DeviceFound {
++        DEVICE_NOT_FOUND = 0,
++        DEVICE_FOUND_UDEV = 1,
++        DEVICE_FOUND_MOUNT = 2,
++        DEVICE_FOUND_SWAP = 4,
++} DeviceFound;
++
+ struct Device {
+         Unit meta;
+ 
+         char *sysfs;
++        DeviceFound found;
+ 
+         /* In order to be able to distinguish dependencies on
+         different device nodes we might end up creating multiple
+         devices for the same sysfs path. We chain them up here. */
+-
+         LIST_FIELDS(struct Device, same_sysfs);
+ 
+         DeviceState state;
+@@ -52,3 +60,5 @@ extern const UnitVTable device_vtable;
+ 
+ const char* device_state_to_string(DeviceState i) _const_;
+ DeviceState device_state_from_string(const char *s) _pure_;
++
++int device_found_node(Manager *m, const char *node, bool add, DeviceFound found, bool now);
+diff --git a/src/core/mount.c b/src/core/mount.c
+index f3977e6..c971330 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1391,7 +1391,7 @@ static int mount_dispatch_timer(sd_event_source *source, usec_t usec, void *user
+         return 0;
+ }
+ 
+-static int mount_add_one(
++static int mount_setup_unit(
+                 Manager *m,
+                 const char *what,
+                 const char *where,
+@@ -1434,7 +1434,7 @@ static int mount_add_one(
+ 
+                 u = unit_new(m, sizeof(Mount));
+                 if (!u)
+-                        return -ENOMEM;
++                        return log_oom();
+ 
+                 r = unit_add_name(u, e);
+                 if (r < 0)
+@@ -1547,6 +1547,8 @@ static int mount_add_one(
+         return 0;
+ 
+ fail:
++        log_warning_errno(r, "Failed to set up mount unit: %m");
++
+         if (delete && u)
+                 unit_free(u);
+ 
+@@ -1554,33 +1556,36 @@ fail:
+ }
+ 
+ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
+-        _cleanup_(mnt_free_tablep) struct libmnt_table *tb = NULL;
+-        _cleanup_(mnt_free_iterp) struct libmnt_iter *itr = NULL;
+-        struct libmnt_fs *fs;
++        _cleanup_(mnt_free_tablep) struct libmnt_table *t = NULL;
++        _cleanup_(mnt_free_iterp) struct libmnt_iter *i = NULL;
+         int r = 0;
+ 
+         assert(m);
+ 
+-        tb = mnt_new_table();
+-        itr = mnt_new_iter(MNT_ITER_FORWARD);
+-        if (!tb || !itr)
++        t = mnt_new_table();
++        if (!t)
+                 return log_oom();
+ 
+-        r = mnt_table_parse_mtab(tb, NULL);
++        i = mnt_new_iter(MNT_ITER_FORWARD);
++        if (!i)
++                return log_oom();
++
++        r = mnt_table_parse_mtab(t, NULL);
+         if (r < 0)
+-                return r;
++                return log_error_errno(r, "Failed to parse /proc/self/mountinfo: %m");
+ 
+         r = 0;
+         for (;;) {
+                 const char *device, *path, *options, *fstype;
+                 _cleanup_free_ const char *d = NULL, *p = NULL;
++                struct libmnt_fs *fs;
+                 int k;
+ 
+-                k = mnt_table_next_fs(tb, itr, &fs);
++                k = mnt_table_next_fs(t, i, &fs);
+                 if (k == 1)
+                         break;
+-                else if (k < 0)
+-                        return log_error_errno(k, "Failed to get next entry from /etc/fstab: %m");
++                if (k < 0)
++                        return log_error_errno(k, "Failed to get next entry from /proc/self/mountinfo: %m");
+ 
+                 device = mnt_fs_get_source(fs);
+                 path = mnt_fs_get_target(fs);
+@@ -1588,11 +1593,16 @@ static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
+                 fstype = mnt_fs_get_fstype(fs);
+ 
+                 d = cunescape(device);
++                if (!d)
++                        return log_oom();
++
+                 p = cunescape(path);
+-                if (!d || !p)
++                if (!p)
+                         return log_oom();
+ 
+-                k = mount_add_one(m, d, p, options, fstype, set_flags);
++                (void) device_found_node(m, d, true, DEVICE_FOUND_MOUNT, set_flags);
++
++                k = mount_setup_unit(m, d, p, options, fstype, set_flags);
+                 if (r == 0 && k < 0)
+                         r = k;
+         }
+@@ -1736,8 +1746,6 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+ 
+         r = mount_load_proc_self_mountinfo(m, true);
+         if (r < 0) {
+-                log_error_errno(r, "Failed to reread /proc/self/mountinfo: %m");
+-
+                 /* Reset flags, just in case, for later calls */
+                 LIST_FOREACH(units_by_type, u, m->units_by_type[UNIT_MOUNT]) {
+                         Mount *mount = MOUNT(u);
+@@ -1770,6 +1778,10 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+                                 break;
+                         }
+ 
++                        if (mount->parameters_proc_self_mountinfo.what)
++                                (void) device_found_node(m, mount->parameters_proc_self_mountinfo.what, false, DEVICE_FOUND_MOUNT, true);
++
++
+                 } else if (mount->just_mounted || mount->just_changed) {
+ 
+                         /* New or changed mount entry */
+diff --git a/src/core/swap.c b/src/core/swap.c
+index 6997921..5c19af5 100644
+--- a/src/core/swap.c
++++ b/src/core/swap.c
+@@ -338,7 +338,7 @@ static int swap_load(Unit *u) {
+         return swap_verify(s);
+ }
+ 
+-static int swap_add_one(
++static int swap_setup_unit(
+                 Manager *m,
+                 const char *what,
+                 const char *what_proc_swaps,
+@@ -363,8 +363,10 @@ static int swap_add_one(
+ 
+         if (u &&
+             SWAP(u)->from_proc_swaps &&
+-            !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps))
++            !path_equal(SWAP(u)->parameters_proc_swaps.what, what_proc_swaps)) {
++                log_error("Swap %s appeared twice with different device paths %s and %s", e, SWAP(u)->parameters_proc_swaps.what, what_proc_swaps);
+                 return -EEXIST;
++        }
+ 
+         if (!u) {
+                 delete = true;
+@@ -379,7 +381,7 @@ static int swap_add_one(
+ 
+                 SWAP(u)->what = strdup(what);
+                 if (!SWAP(u)->what) {
+-                        r = log_oom();
++                        r = -ENOMEM;
+                         goto fail;
+                 }
+ 
+@@ -407,7 +409,6 @@ static int swap_add_one(
+         p->priority = priority;
+ 
+         unit_add_to_dbus_queue(u);
+-
+         return 0;
+ 
+ fail:
+@@ -419,7 +420,7 @@ fail:
+         return r;
+ }
+ 
+-static int swap_process_new_swap(Manager *m, const char *device, int prio, bool set_flags) {
++static int swap_process_new(Manager *m, const char *device, int prio, bool set_flags) {
+         _cleanup_udev_device_unref_ struct udev_device *d = NULL;
+         struct udev_list_entry *item = NULL, *first = NULL;
+         const char *dn;
+@@ -428,7 +429,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
+ 
+         assert(m);
+ 
+-        r = swap_add_one(m, device, device, prio, set_flags);
++        r = swap_setup_unit(m, device, device, prio, set_flags);
+         if (r < 0)
+                 return r;
+ 
+@@ -444,7 +445,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
+         /* Add the main device node */
+         dn = udev_device_get_devnode(d);
+         if (dn && !streq(dn, device))
+-                swap_add_one(m, dn, device, prio, set_flags);
++                swap_setup_unit(m, dn, device, prio, set_flags);
+ 
+         /* Add additional units for all symlinks */
+         first = udev_device_get_devlinks_list_entry(d);
+@@ -465,7 +466,7 @@ static int swap_process_new_swap(Manager *m, const char *device, int prio, bool
+                             st.st_rdev != udev_device_get_devnum(d))
+                                 continue;
+ 
+-                swap_add_one(m, p, device, prio, set_flags);
++                swap_setup_unit(m, p, device, prio, set_flags);
+         }
+ 
+         return r;
+@@ -1091,15 +1092,17 @@ static int swap_load_proc_swaps(Manager *m, bool set_flags) {
+                         if (k == EOF)
+                                 break;
+ 
+-                        log_warning("Failed to parse /proc/swaps:%u", i);
++                        log_warning("Failed to parse /proc/swaps:%u.", i);
+                         continue;
+                 }
+ 
+                 d = cunescape(dev);
+                 if (!d)
+-                        return -ENOMEM;
++                        return log_oom();
++
++                device_found_node(m, d, true, DEVICE_FOUND_SWAP, set_flags);
+ 
+-                k = swap_process_new_swap(m, d, prio, set_flags);
++                k = swap_process_new(m, d, prio, set_flags);
+                 if (k < 0)
+                         r = k;
+         }
+@@ -1151,6 +1154,9 @@ static int swap_dispatch_io(sd_event_source *source, int fd, uint32_t revents, v
+                                 break;
+                         }
+ 
++                        if (swap->what)
++                                device_found_node(m, swap->what, false, DEVICE_FOUND_SWAP, true);
++
+                 } else if (swap->just_activated) {
+ 
+                         /* New swap entry */
+@@ -1298,7 +1304,7 @@ fail:
+         return r;
+ }
+ 
+-int swap_process_new_device(Manager *m, struct udev_device *dev) {
++int swap_process_device_new(Manager *m, struct udev_device *dev) {
+         struct udev_list_entry *item = NULL, *first = NULL;
+         _cleanup_free_ char *e = NULL;
+         const char *dn;
+@@ -1341,7 +1347,7 @@ int swap_process_new_device(Manager *m, struct udev_device *dev) {
+         return r;
+ }
+ 
+-int swap_process_removed_device(Manager *m, struct udev_device *dev) {
++int swap_process_device_remove(Manager *m, struct udev_device *dev) {
+         const char *dn;
+         int r = 0;
+         Swap *s;
+diff --git a/src/core/swap.h b/src/core/swap.h
+index 73e64d8..914a2db 100644
+--- a/src/core/swap.h
++++ b/src/core/swap.h
+@@ -116,8 +116,8 @@ struct Swap {
+ 
+ extern const UnitVTable swap_vtable;
+ 
+-int swap_process_new_device(Manager *m, struct udev_device *dev);
+-int swap_process_removed_device(Manager *m, struct udev_device *dev);
++int swap_process_device_new(Manager *m, struct udev_device *dev);
++int swap_process_device_remove(Manager *m, struct udev_device *dev);
+ 
+ const char* swap_state_to_string(SwapState i) _const_;
+ SwapState swap_state_from_string(const char *s) _pure_;
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 563f6fe..a6558ee 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2843,7 +2843,6 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) {
+                 return -ENOMEM;
+ 
+         r = manager_load_unit(u->manager, e, NULL, NULL, &device);
+-
+         if (r < 0)
+                 return r;
+ 
diff --git a/SOURCES/0033-systemd-treat-reload-failure-as-failure.patch b/SOURCES/0033-systemd-treat-reload-failure-as-failure.patch
deleted file mode 100644
index c8409cb..0000000
--- a/SOURCES/0033-systemd-treat-reload-failure-as-failure.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From b659126834756a4476a5b020bcece486be1edb85 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 2 Dec 2013 21:52:51 -0500
-Subject: [PATCH] systemd: treat reload failure as failure
-
-systemctl reload "suceeded" on stopped units, but it is documented
-to fail in this case.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1036845
----
- src/core/job.c  | 11 +++++++----
- src/core/job.h  |  3 ++-
- src/core/unit.c |  5 ++++-
- 3 files changed, 13 insertions(+), 6 deletions(-)
-
-diff --git a/src/core/job.c b/src/core/job.c
-index bf1d956..5ea9803 100644
---- a/src/core/job.c
-+++ b/src/core/job.c
-@@ -528,7 +528,7 @@ int job_run_and_invalidate(Job *j) {
-                         else if (t == UNIT_ACTIVATING)
-                                 r = -EAGAIN;
-                         else
--                                r = -ENOEXEC;
-+                                r = -EBADR;
-                         break;
-                 }
- 
-@@ -557,8 +557,10 @@ int job_run_and_invalidate(Job *j) {
-         if (j) {
-                 if (r == -EALREADY)
-                         r = job_finish_and_invalidate(j, JOB_DONE, true);
--                else if (r == -ENOEXEC)
-+                else if (r == -EBADR)
-                         r = job_finish_and_invalidate(j, JOB_SKIPPED, true);
-+                else if (r == -ENOEXEC)
-+                        r = job_finish_and_invalidate(j, JOB_INVALID, true);
-                 else if (r == -EAGAIN) {
-                         j->state = JOB_WAITING;
-                         m->n_running_jobs--;
-@@ -784,7 +786,7 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) {
-                 goto finish;
-         }
- 
--        if (result == JOB_FAILED)
-+        if (result == JOB_FAILED || result == JOB_INVALID)
-                 j->manager->n_failed_jobs ++;
- 
-         job_uninstall(j);
-@@ -1140,7 +1142,8 @@ static const char* const job_result_table[_JOB_RESULT_MAX] = {
-         [JOB_TIMEOUT] = "timeout",
-         [JOB_FAILED] = "failed",
-         [JOB_DEPENDENCY] = "dependency",
--        [JOB_SKIPPED] = "skipped"
-+        [JOB_SKIPPED] = "skipped",
-+        [JOB_INVALID] = "invalid",
- };
- 
- DEFINE_STRING_TABLE_LOOKUP(job_result, JobResult);
-diff --git a/src/core/job.h b/src/core/job.h
-index d90bc96..4237529 100644
---- a/src/core/job.h
-+++ b/src/core/job.h
-@@ -97,7 +97,8 @@ enum JobResult {
-         JOB_TIMEOUT,             /* JobTimeout elapsed */
-         JOB_FAILED,              /* Job failed */
-         JOB_DEPENDENCY,          /* A required dependency job did not result in JOB_DONE */
--        JOB_SKIPPED,             /* JOB_RELOAD of inactive unit; negative result of JOB_VERIFY_ACTIVE */
-+        JOB_SKIPPED,             /* Negative result of JOB_VERIFY_ACTIVE */
-+        JOB_INVALID,             /* JOB_RELOAD of inactive unit */
-         _JOB_RESULT_MAX,
-         _JOB_RESULT_INVALID = -1
- };
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 1db7d06..0f57b06 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1239,8 +1239,11 @@ int unit_reload(Unit *u) {
-         if (state == UNIT_RELOADING)
-                 return -EALREADY;
- 
--        if (state != UNIT_ACTIVE)
-+        if (state != UNIT_ACTIVE) {
-+                log_warning_unit(u->id, "Unit %s cannot be reloaded because it is inactive.",
-+                                 u->id);
-                 return -ENOEXEC;
-+        }
- 
-         if ((following = unit_following(u))) {
-                 log_debug_unit(u->id, "Redirecting reload request from %s to %s.",
diff --git a/SOURCES/0034-core-fix-return-value-on-OOM.patch b/SOURCES/0034-core-fix-return-value-on-OOM.patch
new file mode 100644
index 0000000..52fa25d
--- /dev/null
+++ b/SOURCES/0034-core-fix-return-value-on-OOM.patch
@@ -0,0 +1,23 @@
+From 8cbaef2f9e08dc14e827445de76072e31aa6cce7 Mon Sep 17 00:00:00 2001
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Sat, 28 Feb 2015 23:39:55 +0100
+Subject: [PATCH] core: fix return value on OOM
+
+(cherry picked from commit c43b2132f37264600cc26e07c8d85dfdd6c969f0)
+---
+ src/core/device.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/core/device.c b/src/core/device.c
+index 75b9a46..1cc103c 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -211,6 +211,8 @@ static int device_update_description(Unit *u, struct udev_device *dev, const cha
+                         j = strjoin(model, " ", label, NULL);
+                         if (j)
+                                 r = unit_set_description(u, j);
++                        else
++                                r = -ENOMEM;
+                 } else
+                         r = unit_set_description(u, model);
+         } else
diff --git a/SOURCES/0034-journal-when-appending-to-journal-file-allocate-larg.patch b/SOURCES/0034-journal-when-appending-to-journal-file-allocate-larg.patch
deleted file mode 100644
index c860f88..0000000
--- a/SOURCES/0034-journal-when-appending-to-journal-file-allocate-larg.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From eb38fb593b201a97620555c0aca83ff487a50748 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 26 Nov 2013 18:39:42 +0100
-Subject: [PATCH] journal: when appending to journal file, allocate larger
- blocks at once
-
-Conflicts:
-	src/journal/journal-file.c
----
- src/journal/journal-file.c | 51 +++++++++++++++++++++++-----------------------
- 1 file changed, 26 insertions(+), 25 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 81c344f..4062a83 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -68,6 +68,9 @@
- /* How many entries to keep in the entry array chain cache at max */
- #define CHAIN_CACHE_MAX 20
- 
-+/* How much to increase the journal file size at once each time we allocate something new. */
-+#define FILE_SIZE_INCREASE (8ULL*1024ULL*1024ULL)              /* 8MB */
-+
- int journal_file_set_online(JournalFile *f) {
-         assert(f);
- 
-@@ -218,8 +221,7 @@ static int journal_file_refresh_header(JournalFile *f) {
-         journal_file_set_online(f);
- 
-         /* Sync the online state to disk */
--        msync(f->header, PAGE_ALIGN(sizeof(Header)), MS_SYNC);
--        fdatasync(f->fd);
-+        fsync(f->fd);
- 
-         return 0;
- }
-@@ -313,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) {
- }
- 
- static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) {
--        uint64_t old_size, new_size;
-+        uint64_t old_size, new_size, file_size;
-         int r;
- 
-         assert(f);
-@@ -333,12 +335,10 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
-         if (new_size <= old_size)
-                 return 0;
- 
--        if (f->metrics.max_size > 0 &&
--            new_size > f->metrics.max_size)
-+        if (f->metrics.max_size > 0 && new_size > f->metrics.max_size)
-                 return -E2BIG;
- 
--        if (new_size > f->metrics.min_size &&
--            f->metrics.keep_free > 0) {
-+        if (new_size > f->metrics.min_size && f->metrics.keep_free > 0) {
-                 struct statvfs svfs;
- 
-                 if (fstatvfs(f->fd, &svfs) >= 0) {
-@@ -363,8 +363,16 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
-         if (r != 0)
-                 return -r;
- 
--        if (fstat(f->fd, &f->last_stat) < 0)
--                return -errno;
-+        /* Increase the file size a bit further than this, so that we
-+         * we can create larger memory maps to cache */
-+        file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
-+        if (file_size > (uint64_t) f->last_stat.st_size) {
-+                if (file_size > new_size)
-+                        ftruncate(f->fd, file_size);
-+
-+                if (fstat(f->fd, &f->last_stat) < 0)
-+                        return -errno;
-+        }
- 
-         f->header->arena_size = htole64(new_size - le64toh(f->header->header_size));
- 
-@@ -1344,7 +1352,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
- 
-         /* Order by the position on disk, in order to improve seek
-          * times for rotating media. */
--        qsort(items, n_iovec, sizeof(EntryItem), entry_item_cmp);
-+        qsort_safe(items, n_iovec, sizeof(EntryItem), entry_item_cmp);
- 
-         r = journal_file_append_entry_internal(f, ts, xor_hash, items, n_iovec, seqnum, ret, offset);
- 
-@@ -2551,7 +2559,7 @@ fail:
- }
- 
- int journal_file_rotate(JournalFile **f, bool compress, bool seal) {
--        char *p;
-+        _cleanup_free_ char *p = NULL;
-         size_t l;
-         JournalFile *old_file, *new_file = NULL;
-         int r;
-@@ -2568,22 +2576,15 @@ int journal_file_rotate(JournalFile **f, bool compress, bool seal) {
-                 return -EINVAL;
- 
-         l = strlen(old_file->path);
--
--        p = new(char, l + 1 + 32 + 1 + 16 + 1 + 16 + 1);
--        if (!p)
-+        r = asprintf(&p, "%.*s@" SD_ID128_FORMAT_STR "-%016"PRIx64"-%016"PRIx64".journal",
-+                     (int) l - 8, old_file->path,
-+                     SD_ID128_FORMAT_VAL(old_file->header->seqnum_id),
-+                     le64toh((*f)->header->head_entry_seqnum),
-+                     le64toh((*f)->header->head_entry_realtime));
-+        if (r < 0)
-                 return -ENOMEM;
- 
--        memcpy(p, old_file->path, l - 8);
--        p[l-8] = '@';
--        sd_id128_to_string(old_file->header->seqnum_id, p + l - 8 + 1);
--        snprintf(p + l - 8 + 1 + 32, 1 + 16 + 1 + 16 + 8 + 1,
--                 "-%016"PRIx64"-%016"PRIx64".journal",
--                 le64toh((*f)->header->head_entry_seqnum),
--                 le64toh((*f)->header->head_entry_realtime));
--
-         r = rename(old_file->path, p);
--        free(p);
--
-         if (r < 0)
-                 return -errno;
- 
-@@ -2634,7 +2635,7 @@ int journal_file_open_reliably(
- 
-         l = strlen(fname);
-         if (asprintf(&p, "%.*s@%016llx-%016llx.journal~",
--                     (int) (l-8), fname,
-+                     (int) l - 8, fname,
-                      (unsigned long long) now(CLOCK_REALTIME),
-                      random_ull()) < 0)
-                 return -ENOMEM;
diff --git a/SOURCES/0035-journal-optimize-bisection-logic-a-bit-by-caching-th.patch b/SOURCES/0035-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
deleted file mode 100644
index 68d5cf7..0000000
--- a/SOURCES/0035-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
+++ /dev/null
@@ -1,244 +0,0 @@
-From 563bf9e9305aa88ad403a81c0c91418b7846f465 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 26 Nov 2013 20:37:53 +0100
-Subject: [PATCH] journal: optimize bisection logic a bit by caching the last
- position
-
-This way we can do a quick restart limiting a bit how wildly we need to
-jump around during the bisection process.
----
- src/journal/journal-file.c | 134 +++++++++++++++++++++++++++++++++------------
- 1 file changed, 99 insertions(+), 35 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 4062a83..7adb1b5 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -1366,6 +1366,7 @@ typedef struct ChainCacheItem {
-         uint64_t array; /* the cached array */
-         uint64_t begin; /* the first item in the cached array */
-         uint64_t total; /* the total number of items in all arrays before this one in the chain */
-+        uint64_t last_index; /* the last index we looked at, to optimize locality when bisecting */
- } ChainCacheItem;
- 
- static void chain_cache_put(
-@@ -1374,7 +1375,8 @@ static void chain_cache_put(
-                 uint64_t first,
-                 uint64_t array,
-                 uint64_t begin,
--                uint64_t total) {
-+                uint64_t total,
-+                uint64_t last_index) {
- 
-         if (!ci) {
-                 /* If the chain item to cache for this chain is the
-@@ -1402,12 +1404,14 @@ static void chain_cache_put(
-         ci->array = array;
-         ci->begin = begin;
-         ci->total = total;
-+        ci->last_index = last_index;
- }
- 
--static int generic_array_get(JournalFile *f,
--                             uint64_t first,
--                             uint64_t i,
--                             Object **ret, uint64_t *offset) {
-+static int generic_array_get(
-+                JournalFile *f,
-+                uint64_t first,
-+                uint64_t i,
-+                Object **ret, uint64_t *offset) {
- 
-         Object *o;
-         uint64_t p = 0, a, t = 0;
-@@ -1448,7 +1452,7 @@ static int generic_array_get(JournalFile *f,
- 
- found:
-         /* Let's cache this item for the next invocation */
--        chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t);
-+        chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i);
- 
-         r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o);
-         if (r < 0)
-@@ -1463,11 +1467,12 @@ found:
-         return 1;
- }
- 
--static int generic_array_get_plus_one(JournalFile *f,
--                                      uint64_t extra,
--                                      uint64_t first,
--                                      uint64_t i,
--                                      Object **ret, uint64_t *offset) {
-+static int generic_array_get_plus_one(
-+                JournalFile *f,
-+                uint64_t extra,
-+                uint64_t first,
-+                uint64_t i,
-+                Object **ret, uint64_t *offset) {
- 
-         Object *o;
- 
-@@ -1498,17 +1503,18 @@ enum {
-         TEST_RIGHT
- };
- 
--static int generic_array_bisect(JournalFile *f,
--                                uint64_t first,
--                                uint64_t n,
--                                uint64_t needle,
--                                int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
--                                direction_t direction,
--                                Object **ret,
--                                uint64_t *offset,
--                                uint64_t *idx) {
--
--        uint64_t a, p, t = 0, i = 0, last_p = 0;
-+static int generic_array_bisect(
-+                JournalFile *f,
-+                uint64_t first,
-+                uint64_t n,
-+                uint64_t needle,
-+                int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
-+                direction_t direction,
-+                Object **ret,
-+                uint64_t *offset,
-+                uint64_t *idx) {
-+
-+        uint64_t a, p, t = 0, i = 0, last_p = 0, last_index = (uint64_t) -1;
-         bool subtract_one = false;
-         Object *o, *array = NULL;
-         int r;
-@@ -1533,7 +1539,7 @@ static int generic_array_bisect(JournalFile *f,
-                         return r;
- 
-                 if (r == TEST_LEFT) {
--                        /* OK, what we are looking for is right of th
-+                        /* OK, what we are looking for is right of the
-                          * begin of this EntryArray, so let's jump
-                          * straight to previously cached array in the
-                          * chain */
-@@ -1541,6 +1547,7 @@ static int generic_array_bisect(JournalFile *f,
-                         a = ci->array;
-                         n -= ci->total;
-                         t = ci->total;
-+                        last_index = ci->last_index;
-                 }
-         }
- 
-@@ -1571,6 +1578,60 @@ static int generic_array_bisect(JournalFile *f,
-                 if (r == TEST_RIGHT) {
-                         left = 0;
-                         right -= 1;
-+
-+                        if (last_index != (uint64_t) -1) {
-+                                assert(last_index <= right);
-+
-+                                /* If we cached the last index we
-+                                 * looked at, let's try to not to jump
-+                                 * too wildly around and see if we can
-+                                 * limit the range to look at early to
-+                                 * the immediate neighbors of the last
-+                                 * index we looked at. */
-+
-+                                if (last_index > 0) {
-+                                        uint64_t x = last_index - 1;
-+
-+                                        p = le64toh(array->entry_array.items[x]);
-+                                        if (p <= 0)
-+                                                return -EBADMSG;
-+
-+                                        r = test_object(f, p, needle);
-+                                        if (r < 0)
-+                                                return r;
-+
-+                                        if (r == TEST_FOUND)
-+                                                r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT;
-+
-+                                        if (r == TEST_RIGHT)
-+                                                right = x;
-+                                        else
-+                                                left = x + 1;
-+                                }
-+
-+                                if (last_index < right) {
-+                                        uint64_t y = last_index + 1;
-+
-+                                        p = le64toh(array->entry_array.items[y]);
-+                                        if (p <= 0)
-+                                                return -EBADMSG;
-+
-+                                        r = test_object(f, p, needle);
-+                                        if (r < 0)
-+                                                return r;
-+
-+                                        if (r == TEST_FOUND)
-+                                                r = direction == DIRECTION_DOWN ? TEST_RIGHT : TEST_LEFT;
-+
-+                                        if (r == TEST_RIGHT)
-+                                                right = y;
-+                                        else
-+                                                left = y + 1;
-+                                }
-+
-+                                last_index = (uint64_t) -1;
-+                        }
-+
-                         for (;;) {
-                                 if (left == right) {
-                                         if (direction == DIRECTION_UP)
-@@ -1581,8 +1642,8 @@ static int generic_array_bisect(JournalFile *f,
-                                 }
- 
-                                 assert(left < right);
--
-                                 i = (left + right) / 2;
-+
-                                 p = le64toh(array->entry_array.items[i]);
-                                 if (p <= 0)
-                                         return -EBADMSG;
-@@ -1615,6 +1676,7 @@ static int generic_array_bisect(JournalFile *f,
- 
-                 n -= k;
-                 t += k;
-+                last_index = (uint64_t) -1;
-                 a = le64toh(array->entry_array.next_entry_array_offset);
-         }
- 
-@@ -1625,7 +1687,7 @@ found:
-                 return 0;
- 
-         /* Let's cache this item for the next invocation */
--        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t);
-+        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0));
- 
-         if (subtract_one && i == 0)
-                 p = last_p;
-@@ -1650,16 +1712,18 @@ found:
-         return 1;
- }
- 
--static int generic_array_bisect_plus_one(JournalFile *f,
--                                         uint64_t extra,
--                                         uint64_t first,
--                                         uint64_t n,
--                                         uint64_t needle,
--                                         int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
--                                         direction_t direction,
--                                         Object **ret,
--                                         uint64_t *offset,
--                                         uint64_t *idx) {
-+
-+static int generic_array_bisect_plus_one(
-+                JournalFile *f,
-+                uint64_t extra,
-+                uint64_t first,
-+                uint64_t n,
-+                uint64_t needle,
-+                int (*test_object)(JournalFile *f, uint64_t p, uint64_t needle),
-+                direction_t direction,
-+                Object **ret,
-+                uint64_t *offset,
-+                uint64_t *idx) {
- 
-         int r;
-         bool step_back = false;
diff --git a/SOURCES/0035-machined-use-x-machine-unix-prefix-for-the-container.patch b/SOURCES/0035-machined-use-x-machine-unix-prefix-for-the-container.patch
new file mode 100644
index 0000000..c83a81f
--- /dev/null
+++ b/SOURCES/0035-machined-use-x-machine-unix-prefix-for-the-container.patch
@@ -0,0 +1,30 @@
+From e02e6845a4c4abe7d79df4305810703af5e6ec21 Mon Sep 17 00:00:00 2001
+From: Benjamin Franzke <benjaminfranzke@googlemail.com>
+Date: Thu, 19 Feb 2015 20:47:28 +0100
+Subject: [PATCH] machined: use x-machine-unix prefix for the container bus on
+ dbus1
+
+This fixes "machinectl login" on systems configured with --disable-kdbus.
+
+The error was:
+machinectl login foo
+Failed to get machine PTY: Input/output error
+
+(cherry picked from commit f2273101c21bc59a390379e182e53cd4f07a7e71)
+---
+ src/machine/machine-dbus.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index b46f0a8..b0f0f66 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -477,7 +477,7 @@ int bus_machine_method_open_login(sd_bus *bus, sd_bus_message *message, void *us
+ #ifdef ENABLE_KDBUS
+         asprintf(&container_bus->address, "x-machine-kernel:pid=" PID_FMT ";x-machine-unix:pid=" PID_FMT, m->leader, m->leader);
+ #else
+-        asprintf(&container_bus->address, "x-machine-kernel:pid=" PID_FMT, m->leader);
++        asprintf(&container_bus->address, "x-machine-unix:pid=" PID_FMT, m->leader);
+ #endif
+         if (!container_bus->address)
+                 return -ENOMEM;
diff --git a/SOURCES/0036-journal-fix-iteration-when-we-go-backwards-from-the-.patch b/SOURCES/0036-journal-fix-iteration-when-we-go-backwards-from-the-.patch
deleted file mode 100644
index 3b68302..0000000
--- a/SOURCES/0036-journal-fix-iteration-when-we-go-backwards-from-the-.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 5284c03b3bc881c4b79b1afb32284dd86ab836f5 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 27 Nov 2013 00:58:39 +0100
-Subject: [PATCH] journal: fix iteration when we go backwards from the
- beginning of an array chain element
-
----
- src/journal/journal-file.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 7adb1b5..53dd0c3 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -1687,7 +1687,7 @@ found:
-                 return 0;
- 
-         /* Let's cache this item for the next invocation */
--        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, i + (subtract_one ? -1 : 0));
-+        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i);
- 
-         if (subtract_one && i == 0)
-                 p = last_p;
diff --git a/SOURCES/0036-shared-AFS-is-also-a-network-filesystem.patch b/SOURCES/0036-shared-AFS-is-also-a-network-filesystem.patch
new file mode 100644
index 0000000..164e6e3
--- /dev/null
+++ b/SOURCES/0036-shared-AFS-is-also-a-network-filesystem.patch
@@ -0,0 +1,22 @@
+From 46392c1d8f433ee44fc5bacb085879779a662468 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Fri, 20 Feb 2015 15:35:11 -0300
+Subject: [PATCH] shared: AFS is also a network filesystem
+
+(cherry picked from commit ba89821c104d959082aad6f3f0e05a8afd575023)
+---
+ src/shared/util.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index ba035ca..f24b5b4 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -1689,6 +1689,7 @@ bool chars_intersect(const char *a, const char *b) {
+ 
+ bool fstype_is_network(const char *fstype) {
+         static const char table[] =
++                "afs\0"
+                 "cifs\0"
+                 "smbfs\0"
+                 "sshfs\0"
diff --git a/SOURCES/0037-core-downgrade-unit-type-not-supported-message.patch b/SOURCES/0037-core-downgrade-unit-type-not-supported-message.patch
new file mode 100644
index 0000000..f03205a
--- /dev/null
+++ b/SOURCES/0037-core-downgrade-unit-type-not-supported-message.patch
@@ -0,0 +1,28 @@
+From 0b78cbf29f02adc3cc490bf2b4e9365057ed7d7b Mon Sep 17 00:00:00 2001
+From: Umut Tezduyar Lindskog <umut.tezduyar@axis.com>
+Date: Fri, 20 Feb 2015 10:53:28 +0100
+Subject: [PATCH] core: downgrade unit type not supported message
+
+Otherwise every daemon reload prints out warnings like:
+
+systemd[1]: Unit type .busname is not supported on this system.
+systemd[1]: Unit type .swap is not supported on this system.
+
+(cherry picked from commit 03afec3c9aa849ba13161c253b129b834298fd40)
+---
+ src/core/manager.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 4775219..bc9b7ec 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -961,7 +961,7 @@ int manager_enumerate(Manager *m) {
+                 int q;
+ 
+                 if (unit_vtable[c]->supported && !unit_vtable[c]->supported(m)) {
+-                        log_info("Unit type .%s is not supported on this system.", unit_type_to_string(c));
++                        log_debug("Unit type .%s is not supported on this system.", unit_type_to_string(c));
+                         continue;
+                 }
+ 
diff --git a/SOURCES/0037-journal-allow-journal_file_copy_entry-to-work-on-non.patch b/SOURCES/0037-journal-allow-journal_file_copy_entry-to-work-on-non.patch
deleted file mode 100644
index e62849e..0000000
--- a/SOURCES/0037-journal-allow-journal_file_copy_entry-to-work-on-non.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 0badfa6266d2b5116a14fe2eebcf55f6a072332b Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 27 Nov 2013 00:59:07 +0100
-Subject: [PATCH] journal: allow journal_file_copy_entry() to work on non-local
- files
-
----
- src/journal/journal-file.c | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 53dd0c3..94e3921 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -2732,10 +2732,6 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6
-         ts.monotonic = le64toh(o->entry.monotonic);
-         ts.realtime = le64toh(o->entry.realtime);
- 
--        if (to->tail_entry_monotonic_valid &&
--            ts.monotonic < le64toh(to->header->tail_entry_monotonic))
--                return -EINVAL;
--
-         n = journal_file_entry_n_items(o);
-         items = alloca(sizeof(EntryItem) * n);
- 
diff --git a/SOURCES/0038-journal-remote-fix-saving-of-binary-fields.patch b/SOURCES/0038-journal-remote-fix-saving-of-binary-fields.patch
new file mode 100644
index 0000000..2b08bec
--- /dev/null
+++ b/SOURCES/0038-journal-remote-fix-saving-of-binary-fields.patch
@@ -0,0 +1,94 @@
+From 608259be892c532d0afaeb81de3a5ee578d7658a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 2 Mar 2015 10:34:51 -0500
+Subject: [PATCH] journal-remote: fix saving of binary fields
+
+Binary fields were not processed properly, and resulting journal files
+were non-conforming, resulting in an error ("Invalid field.") when reading.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89391
+(cherry picked from commit 09d801a82a46df518dd752e40bf13ac404daa2ce)
+---
+ src/journal-remote/journal-remote-parse.c | 31 ++++++++++++++++++-------------
+ src/journal-remote/journal-remote-parse.h |  4 +++-
+ 2 files changed, 21 insertions(+), 14 deletions(-)
+
+diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c
+index d9dea8d..afded7e 100644
+--- a/src/journal-remote/journal-remote-parse.c
++++ b/src/journal-remote/journal-remote-parse.c
+@@ -344,22 +344,25 @@ int process_data(RemoteSource *source) {
+                    LLLLLLLL0011223344...\n
+                 */
+                 sep = memchr(line, '=', n);
+-                if (sep)
++                if (sep) {
+                         /* chomp newline */
+                         n--;
+-                else
++
++                        r = iovw_put(&source->iovw, line, n);
++                        if (r < 0)
++                                return r;
++                } else {
+                         /* replace \n with = */
+                         line[n-1] = '=';
+-                log_trace("Received: %.*s", (int) n, line);
+ 
+-                r = iovw_put(&source->iovw, line, n);
+-                if (r < 0) {
+-                        log_error("Failed to put line in iovect");
+-                        return r;
++                        source->field_len = n;
++                        source->state = STATE_DATA_START;
++
++                        /* we cannot put the field in iovec until we have all data */
+                 }
+ 
+-                if (!sep)
+-                        source->state = STATE_DATA_START;
++                log_trace("Received: %.*s (%s)", (int) n, line, sep ? "text" : "binary");
++
+                 return 0; /* continue */
+         }
+ 
+@@ -382,6 +385,7 @@ int process_data(RemoteSource *source) {
+ 
+         case STATE_DATA: {
+                 void *data;
++                char *field;
+ 
+                 assert(source->data_size > 0);
+ 
+@@ -396,11 +400,12 @@ int process_data(RemoteSource *source) {
+ 
+                 assert(data);
+ 
+-                r = iovw_put(&source->iovw, data, source->data_size);
+-                if (r < 0) {
+-                        log_error("failed to put binary buffer in iovect");
++                field = (char*) data - sizeof(uint64_t) - source->field_len;
++                memmove(field + sizeof(uint64_t), field, source->field_len);
++
++                r = iovw_put(&source->iovw, field + sizeof(uint64_t), source->field_len + source->data_size);
++                if (r < 0)
+                         return r;
+-                }
+ 
+                 source->state = STATE_DATA_FINISH;
+ 
+diff --git a/src/journal-remote/journal-remote-parse.h b/src/journal-remote/journal-remote-parse.h
+index 8499f4e..22db550 100644
+--- a/src/journal-remote/journal-remote-parse.h
++++ b/src/journal-remote/journal-remote-parse.h
+@@ -42,7 +42,9 @@ typedef struct RemoteSource {
+         size_t offset;     /* offset to the beginning of live data in the buffer */
+         size_t scanned;    /* number of bytes since the beginning of data without a newline */
+         size_t filled;     /* total number of bytes in the buffer */
+-        size_t data_size;  /* size of the binary data chunk being processed */
++
++        size_t field_len;  /* used for binary fields: the field name length */
++        size_t data_size;  /* and the size of the binary data chunk being processed */
+ 
+         struct iovec_wrapper iovw;
+ 
diff --git a/SOURCES/0038-journal-simplify-pre-allocation-logic.patch b/SOURCES/0038-journal-simplify-pre-allocation-logic.patch
deleted file mode 100644
index f0b319d..0000000
--- a/SOURCES/0038-journal-simplify-pre-allocation-logic.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 2d9a810729f9c209cab7aa6bf50ec5f749ebff82 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 27 Nov 2013 01:44:52 +0100
-Subject: [PATCH] journal: simplify pre-allocation logic
-
-let's just do a single fallocate() as far as possible, and don't
-distuingish between allocated space and file size.
-
-This way we can save a syscall for each append, which makes quite some
-benefits.
----
- src/journal/journal-file.c | 19 ++++++++-----------
- 1 file changed, 8 insertions(+), 11 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 94e3921..962cdd6 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -315,7 +315,7 @@ static int journal_file_verify_header(JournalFile *f) {
- }
- 
- static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size) {
--        uint64_t old_size, new_size, file_size;
-+        uint64_t old_size, new_size;
-         int r;
- 
-         assert(f);
-@@ -356,6 +356,11 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
-                 }
-         }
- 
-+        /* Increase by larger blocks at once */
-+        new_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
-+        if (f->metrics.max_size > 0 && new_size > f->metrics.max_size)
-+                new_size = f->metrics.max_size;
-+
-         /* Note that the glibc fallocate() fallback is very
-            inefficient, hence we try to minimize the allocation area
-            as we can. */
-@@ -363,16 +368,8 @@ static int journal_file_allocate(JournalFile *f, uint64_t offset, uint64_t size)
-         if (r != 0)
-                 return -r;
- 
--        /* Increase the file size a bit further than this, so that we
--         * we can create larger memory maps to cache */
--        file_size = ((new_size+FILE_SIZE_INCREASE-1) / FILE_SIZE_INCREASE) * FILE_SIZE_INCREASE;
--        if (file_size > (uint64_t) f->last_stat.st_size) {
--                if (file_size > new_size)
--                        ftruncate(f->fd, file_size);
--
--                if (fstat(f->fd, &f->last_stat) < 0)
--                        return -errno;
--        }
-+        if (fstat(f->fd, &f->last_stat) < 0)
-+                return -errno;
- 
-         f->header->arena_size = htole64(new_size - le64toh(f->header->header_size));
- 
diff --git a/SOURCES/0039-journal-fix-Inappropriate-ioctl-for-device-on-ext4.patch b/SOURCES/0039-journal-fix-Inappropriate-ioctl-for-device-on-ext4.patch
new file mode 100644
index 0000000..9963a54
--- /dev/null
+++ b/SOURCES/0039-journal-fix-Inappropriate-ioctl-for-device-on-ext4.patch
@@ -0,0 +1,34 @@
+From b3df4af4258e3285704f9622b9655084439c6f5e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Sun, 1 Mar 2015 21:13:10 -0300
+Subject: [PATCH] journal: fix Inappropriate ioctl for device on ext4
+
+Logs constantly show
+
+systemd-journald[395]: Failed to set file attributes: Inappropriate ioctl for device
+
+This is because ext4 does not support FS_NOCOW_FL.
+
+[zj: fold into one conditional as suggested on the ML and
+     fix (preexisting) r/errno confusion in error message.]
+
+(cherry picked from commit 65eae3b76243d2dfd869f8c43b787575f7b4b994)
+---
+ src/journal/journal-file.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 2845e05..0f28718 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -2611,8 +2611,8 @@ int journal_file_open(
+                  * shouldn't be too bad, given that we do our own
+                  * checksumming). */
+                 r = chattr_fd(f->fd, true, FS_NOCOW_FL);
+-                if (r < 0)
+-                        log_warning_errno(errno, "Failed to set file attributes: %m");
++                if (r < 0 && r != -ENOTTY)
++                        log_warning_errno(r, "Failed to set file attributes: %m");
+ 
+                 /* Let's attach the creation time to the journal file,
+                  * so that the vacuuming code knows the age of this
diff --git a/SOURCES/0039-journald-mention-how-long-we-needed-to-flush-to-var-.patch b/SOURCES/0039-journald-mention-how-long-we-needed-to-flush-to-var-.patch
deleted file mode 100644
index cc56f08..0000000
--- a/SOURCES/0039-journald-mention-how-long-we-needed-to-flush-to-var-.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 29323cff9feac15e1871a10e727690ac0ed1007d Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 27 Nov 2013 01:54:25 +0100
-Subject: [PATCH] journald: mention how long we needed to flush to /var in the
- logs
-
----
- src/journal/journald-server.c | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
-index e03e413..a0a8e9c 100644
---- a/src/journal/journald-server.c
-+++ b/src/journal/journald-server.c
-@@ -968,9 +968,12 @@ static int system_journal_open(Server *s) {
- }
- 
- int server_flush_to_var(Server *s) {
--        int r;
-         sd_id128_t machine;
-         sd_journal *j = NULL;
-+        char ts[FORMAT_TIMESPAN_MAX];
-+        usec_t start;
-+        unsigned n = 0;
-+        int r;
- 
-         assert(s);
- 
-@@ -988,6 +991,8 @@ int server_flush_to_var(Server *s) {
- 
-         log_debug("Flushing to /var...");
- 
-+        start = now(CLOCK_MONOTONIC);
-+
-         r = sd_id128_get_machine(&machine);
-         if (r < 0)
-                 return r;
-@@ -1007,6 +1012,8 @@ int server_flush_to_var(Server *s) {
-                 f = j->current_file;
-                 assert(f && f->current_offset > 0);
- 
-+                n++;
-+
-                 r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o);
-                 if (r < 0) {
-                         log_error("Can't read entry: %s", strerror(-r));
-@@ -1050,6 +1057,8 @@ finish:
- 
-         sd_journal_close(j);
- 
-+        server_driver_message(s, SD_ID128_NULL, "Time spent on flushing to /var is %s for %u entries.", format_timespan(ts, sizeof(ts), now(CLOCK_MONOTONIC) - start, 0), n);
-+
-         return r;
- }
- 
diff --git a/SOURCES/0040-Never-call-qsort-on-potentially-NULL-arrays.patch b/SOURCES/0040-Never-call-qsort-on-potentially-NULL-arrays.patch
deleted file mode 100644
index bd6b097..0000000
--- a/SOURCES/0040-Never-call-qsort-on-potentially-NULL-arrays.patch
+++ /dev/null
@@ -1,368 +0,0 @@
-From 43406f091aaa58ed23250a9967f46ad9cfa0b007 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 11 Oct 2013 19:33:13 -0400
-Subject: [PATCH] Never call qsort on potentially NULL arrays
-
-This extends 62678ded 'efi: never call qsort on potentially
-NULL arrays' to all other places where qsort is used and it
-is not obvious that the count is non-zero.
----
- src/analyze/systemd-analyze.c     |  2 +-
- src/cgtop/cgtop.c                 |  2 +-
- src/core/namespace.c              | 38 ++++++++++++++++++++------------------
- src/journal/catalog.c             |  2 +-
- src/journal/journal-vacuum.c      |  3 +--
- src/journal/journalctl.c          |  2 +-
- src/libsystemd-bus/bus-match.c    |  2 +-
- src/libudev/libudev-enumerate.c   |  2 +-
- src/nss-myhostname/netlink.c      |  3 ++-
- src/readahead/readahead-collect.c | 39 ++++++++++++++++++++++-----------------
- src/shared/cgroup-show.c          |  2 ++
- src/shared/conf-files.c           |  2 +-
- src/shared/efivars.c              |  3 +--
- src/shared/fileio.c               |  1 +
- src/shared/util.h                 | 12 ++++++++++++
- src/systemctl/systemctl.c         | 10 +++++-----
- 16 files changed, 73 insertions(+), 52 deletions(-)
-
-diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c
-index 27d063c..a4f15eb 100644
---- a/src/analyze/systemd-analyze.c
-+++ b/src/analyze/systemd-analyze.c
-@@ -768,7 +768,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, unsigned
-         if (r < 0)
-                 return r;
- 
--        qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
-+        qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
- 
-         r = acquire_boot_times(bus, &boot);
-         if (r < 0)
-diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
-index cacf705..293a211 100644
---- a/src/cgtop/cgtop.c
-+++ b/src/cgtop/cgtop.c
-@@ -461,7 +461,7 @@ static int display(Hashmap *a) {
-                 if (g->n_tasks_valid || g->cpu_valid || g->memory_valid || g->io_valid)
-                         array[n++] = g;
- 
--        qsort(array, n, sizeof(Group*), group_compare);
-+        qsort_safe(array, n, sizeof(Group*), group_compare);
- 
-         /* Find the longest names in one run */
-         for (j = 0; j < n; j++) {
-diff --git a/src/core/namespace.c b/src/core/namespace.c
-index 16b132b..936f368 100644
---- a/src/core/namespace.c
-+++ b/src/core/namespace.c
-@@ -222,7 +222,7 @@ int setup_namespace(char** read_write_dirs,
-                      strv_length(read_only_dirs) +
-                      strv_length(inaccessible_dirs) +
-                      (private_tmp ? 2 : 0);
--        BindMount *m, *mounts;
-+        BindMount *m, *mounts = NULL;
-         int r = 0;
- 
-         if (!mount_flags)
-@@ -231,27 +231,29 @@ int setup_namespace(char** read_write_dirs,
-         if (unshare(CLONE_NEWNS) < 0)
-                 return -errno;
- 
--        m = mounts = (BindMount *) alloca(n * sizeof(BindMount));
--        if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 ||
--                (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 ||
--                (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0)
--                return r;
-+        if (n) {
-+                m = mounts = (BindMount *) alloca(n * sizeof(BindMount));
-+                if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 ||
-+                    (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 ||
-+                    (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0)
-+                        return r;
-+
-+                if (private_tmp) {
-+                        m->path = "/tmp";
-+                        m->mode = PRIVATE_TMP;
-+                        m++;
-+
-+                        m->path = "/var/tmp";
-+                        m->mode = PRIVATE_VAR_TMP;
-+                        m++;
-+                }
- 
--        if (private_tmp) {
--                m->path = "/tmp";
--                m->mode = PRIVATE_TMP;
--                m++;
-+                assert(mounts + n == m);
- 
--                m->path = "/var/tmp";
--                m->mode = PRIVATE_VAR_TMP;
--                m++;
-+                qsort(mounts, n, sizeof(BindMount), mount_path_compare);
-+                drop_duplicates(mounts, &n);
-         }
- 
--        assert(mounts + n == m);
--
--        qsort(mounts, n, sizeof(BindMount), mount_path_compare);
--        drop_duplicates(mounts, &n);
--
-         /* Remount / as SLAVE so that nothing now mounted in the namespace
-            shows up in the parent */
-         if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0)
-diff --git a/src/journal/catalog.c b/src/journal/catalog.c
-index 7738d24..90ca008 100644
---- a/src/journal/catalog.c
-+++ b/src/journal/catalog.c
-@@ -399,7 +399,7 @@ int catalog_update(const char* database, const char* root, const char* const* di
-         }
- 
-         assert(n == hashmap_size(h));
--        qsort(items, n, sizeof(CatalogItem), catalog_compare_func);
-+        qsort_safe(items, n, sizeof(CatalogItem), catalog_compare_func);
- 
-         r = write_catalog(database, h, sb, items, n);
-         if (r < 0)
-diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
-index 8d5effb..d4a1c6c 100644
---- a/src/journal/journal-vacuum.c
-+++ b/src/journal/journal-vacuum.c
-@@ -299,8 +299,7 @@ int journal_directory_vacuum(
-                 n_list ++;
-         }
- 
--        if (n_list > 0)
--                qsort(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
-+        qsort_safe(list, n_list, sizeof(struct vacuum_info), vacuum_compare);
- 
-         for (i = 0; i < n_list; i++) {
-                 struct statvfs ss;
-diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
-index 9a2d255..0876ee6 100644
---- a/src/journal/journalctl.c
-+++ b/src/journal/journalctl.c
-@@ -755,7 +755,7 @@ static int get_relative_boot_id(sd_journal *j, sd_id128_t *boot_id, int relative
-                 sd_journal_flush_matches(j);
-         }
- 
--        qsort(all_ids, count, sizeof(boot_id_t), boot_id_cmp);
-+        qsort_safe(all_ids, count, sizeof(boot_id_t), boot_id_cmp);
- 
-         if (sd_id128_equal(*boot_id, SD_ID128_NULL)) {
-                 if (relative > (int) count || relative <= -(int)count)
-diff --git a/src/libsystemd-bus/bus-match.c b/src/libsystemd-bus/bus-match.c
-index 1411167..916682a 100644
---- a/src/libsystemd-bus/bus-match.c
-+++ b/src/libsystemd-bus/bus-match.c
-@@ -768,7 +768,7 @@ int bus_match_parse(
-         }
- 
-         /* Order the whole thing, so that we always generate the same tree */
--        qsort(components, n_components, sizeof(struct bus_match_component), match_component_compare);
-+        qsort_safe(components, n_components, sizeof(struct bus_match_component), match_component_compare);
- 
-         /* Check for duplicates */
-         for (i = 0; i+1 < n_components; i++)
-diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c
-index 8146f27..e71d766 100644
---- a/src/libudev/libudev-enumerate.c
-+++ b/src/libudev/libudev-enumerate.c
-@@ -276,7 +276,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume
-                 size_t move_later_prefix = 0;
- 
-                 udev_list_cleanup(&udev_enumerate->devices_list);
--                qsort(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp);
-+                qsort_safe(udev_enumerate->devices, udev_enumerate->devices_cur, sizeof(struct syspath), syspath_cmp);
- 
-                 max = udev_enumerate->devices_cur;
-                 for (i = 0; i < max; i++) {
-diff --git a/src/nss-myhostname/netlink.c b/src/nss-myhostname/netlink.c
-index b1ef912..47a41f5 100644
---- a/src/nss-myhostname/netlink.c
-+++ b/src/nss-myhostname/netlink.c
-@@ -197,7 +197,8 @@ finish:
-                 return r;
-         }
- 
--        qsort(list, n_list, sizeof(struct address), address_compare);
-+        if (n_list)
-+                qsort(list, n_list, sizeof(struct address), address_compare);
- 
-         *_list = list;
-         *_n_list = n_list;
-diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c
-index 32888ad..6b74866 100644
---- a/src/readahead/readahead-collect.c
-+++ b/src/readahead/readahead-collect.c
-@@ -536,8 +536,7 @@ done:
-                 HASHMAP_FOREACH_KEY(q, p, files, i)
-                         pack_file(pack, p, on_btrfs);
-         } else {
--                struct item *ordered, *j;
--                unsigned k, n;
-+                unsigned n;
- 
-                 /* On rotating media, order things by the block
-                  * numbers */
-@@ -545,25 +544,31 @@ done:
-                 log_debug("Ordering...");
- 
-                 n = hashmap_size(files);
--                if (!(ordered = new(struct item, n))) {
--                        r = log_oom();
--                        goto finish;
--                }
--
--                j = ordered;
--                HASHMAP_FOREACH_KEY(q, p, files, i) {
--                        memcpy(j, q, sizeof(struct item));
--                        j++;
--                }
-+                if (n) {
-+                        _cleanup_free_ struct item *ordered;
-+                        struct item *j;
-+                        unsigned k;
-+
-+                        ordered = new(struct item, n);
-+                        if (!ordered) {
-+                                r = log_oom();
-+                                goto finish;
-+                        }
- 
--                assert(ordered + n == j);
-+                        j = ordered;
-+                        HASHMAP_FOREACH_KEY(q, p, files, i) {
-+                                memcpy(j, q, sizeof(struct item));
-+                                j++;
-+                        }
- 
--                qsort(ordered, n, sizeof(struct item), qsort_compare);
-+                        assert(ordered + n == j);
- 
--                for (k = 0; k < n; k++)
--                        pack_file(pack, ordered[k].path, on_btrfs);
-+                        qsort(ordered, n, sizeof(struct item), qsort_compare);
- 
--                free(ordered);
-+                        for (k = 0; k < n; k++)
-+                                pack_file(pack, ordered[k].path, on_btrfs);
-+                } else
-+                        log_warning("No pack files");
-         }
- 
-         log_debug("Finalizing...");
-diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
-index e971f36..cc44ab4 100644
---- a/src/shared/cgroup-show.c
-+++ b/src/shared/cgroup-show.c
-@@ -44,6 +44,8 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
-         unsigned i, m, pid_width;
-         pid_t biggest = 0;
- 
-+        assert(n_pids > 0);
-+
-         /* Filter duplicates */
-         m = 0;
-         for (i = 0; i < n_pids; i++) {
-diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
-index 6d99739..ed4070c 100644
---- a/src/shared/conf-files.c
-+++ b/src/shared/conf-files.c
-@@ -127,7 +127,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
-                 return -ENOMEM;
-         }
- 
--        qsort(files, hashmap_size(fh), sizeof(char *), base_cmp);
-+        qsort_safe(files, hashmap_size(fh), sizeof(char *), base_cmp);
-         *strv = files;
- 
-         hashmap_free(fh);
-diff --git a/src/shared/efivars.c b/src/shared/efivars.c
-index c015b16..f3eb6a6 100644
---- a/src/shared/efivars.c
-+++ b/src/shared/efivars.c
-@@ -384,8 +384,7 @@ int efi_get_boot_options(uint16_t **options) {
-                 list[count ++] = id;
-         }
- 
--        if (list)
--                qsort(list, count, sizeof(uint16_t), cmp_uint16);
-+        qsort_safe(list, count, sizeof(uint16_t), cmp_uint16);
- 
-         *options = list;
-         return count;
-diff --git a/src/shared/fileio.c b/src/shared/fileio.c
-index 603a1c7..733b320 100644
---- a/src/shared/fileio.c
-+++ b/src/shared/fileio.c
-@@ -662,6 +662,7 @@ int get_status_field(const char *filename, const char *pattern, char **field) {
-         int r;
- 
-         assert(filename);
-+        assert(pattern);
-         assert(field);
- 
-         r = read_full_file(filename, &status, NULL);
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 1b845b3..222abe0 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -764,3 +764,15 @@ bool id128_is_valid(const char *s) _pure_;
- void parse_user_at_host(char *arg, char **user, char **host);
- 
- int split_pair(const char *s, const char *sep, char **l, char **r);
-+
-+/**
-+ * Normal qsort requires base to be nonnull. Here were require
-+ * that only if nmemb > 0.
-+ */
-+static inline void qsort_safe(void *base, size_t nmemb, size_t size,
-+                              int (*compar)(const void *, const void *)) {
-+        if (nmemb) {
-+                assert(base);
-+                qsort(base, nmemb, size, compar);
-+        }
-+}
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index bb7ada9..0d1a487 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -471,7 +471,7 @@ static int list_units(DBusConnection *bus, char **args) {
-         if (r < 0)
-                 return r;
- 
--        qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
-+        qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
- 
-         output_units_list(unit_infos, c);
- 
-@@ -733,8 +733,8 @@ static int list_sockets(DBusConnection *bus, char **args) {
-                 listen = triggered = NULL; /* avoid cleanup */
-         }
- 
--        qsort(socket_infos, cs, sizeof(struct socket_info),
--              (__compar_fn_t) socket_info_compare);
-+        qsort_safe(socket_infos, cs, sizeof(struct socket_info),
-+                   (__compar_fn_t) socket_info_compare);
- 
-         output_sockets_list(socket_infos, cs);
- 
-@@ -1108,7 +1108,7 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, int leve
-         if (r < 0)
-                 return r;
- 
--        qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
-+        qsort_safe(deps, strv_length(deps), sizeof (char*), list_dependencies_compare);
- 
-         STRV_FOREACH(c, deps) {
-                 if (strv_contains(u, *c)) {
-@@ -3532,7 +3532,7 @@ static int show_all(const char* verb,
-         if (r < 0)
-                 return r;
- 
--        qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
-+        qsort_safe(unit_infos, c, sizeof(struct unit_info), compare_unit_info);
- 
-         for (u = unit_infos; u < unit_infos + c; u++) {
-                 _cleanup_free_ char *p = NULL;
diff --git a/SOURCES/0040-sd-daemon-replace-VLA-with-alloca-to-make-llvm-happy.patch b/SOURCES/0040-sd-daemon-replace-VLA-with-alloca-to-make-llvm-happy.patch
new file mode 100644
index 0000000..6361b1b
--- /dev/null
+++ b/SOURCES/0040-sd-daemon-replace-VLA-with-alloca-to-make-llvm-happy.patch
@@ -0,0 +1,49 @@
+From 529c94b47f886f99796cff0f5827d6c2ebdcea19 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 2 Mar 2015 20:55:38 +0100
+Subject: [PATCH] sd-daemon: replace VLA with alloca(), to make llvm happy
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89379
+(cherry picked from commit d4a144fadf89bca681724c6c9a65b4a165fa0f90)
+---
+ src/libsystemd/sd-daemon/sd-daemon.c | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/src/libsystemd/sd-daemon/sd-daemon.c b/src/libsystemd/sd-daemon/sd-daemon.c
+index 028c2a7..22a3a53 100644
+--- a/src/libsystemd/sd-daemon/sd-daemon.c
++++ b/src/libsystemd/sd-daemon/sd-daemon.c
+@@ -352,11 +352,7 @@ _public_ int sd_pid_notify_with_fds(pid_t pid, int unset_environment, const char
+                 .msg_iovlen = 1,
+                 .msg_name = &sockaddr,
+         };
+-        union {
+-                struct cmsghdr cmsghdr;
+-                uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) +
+-                            CMSG_SPACE(sizeof(int) * n_fds)];
+-        } control;
++        struct cmsghdr *control;
+         _cleanup_close_ int fd = -1;
+         struct cmsghdr *cmsg = NULL;
+         const char *e;
+@@ -400,8 +396,10 @@ _public_ int sd_pid_notify_with_fds(pid_t pid, int unset_environment, const char
+         if (msghdr.msg_namelen > sizeof(struct sockaddr_un))
+                 msghdr.msg_namelen = sizeof(struct sockaddr_un);
+ 
++        control = alloca(CMSG_SPACE(sizeof(struct ucred)) + CMSG_SPACE(sizeof(int) * n_fds));
++
+         if (n_fds > 0) {
+-                msghdr.msg_control = &control;
++                msghdr.msg_control = control;
+                 msghdr.msg_controllen = CMSG_LEN(sizeof(int) * n_fds);
+ 
+                 cmsg = CMSG_FIRSTHDR(&msghdr);
+@@ -418,7 +416,7 @@ _public_ int sd_pid_notify_with_fds(pid_t pid, int unset_environment, const char
+                 try_without_ucred = true;
+                 controllen_without_ucred = msghdr.msg_controllen;
+ 
+-                msghdr.msg_control = &control;
++                msghdr.msg_control = control;
+                 msghdr.msg_controllen += CMSG_LEN(sizeof(struct ucred));
+ 
+                 if (cmsg)
diff --git a/SOURCES/0041-localed-match-converted-keymaps-before-legacy.patch b/SOURCES/0041-localed-match-converted-keymaps-before-legacy.patch
deleted file mode 100644
index 6274b97..0000000
--- a/SOURCES/0041-localed-match-converted-keymaps-before-legacy.patch
+++ /dev/null
@@ -1,324 +0,0 @@
-From 354d8234f177bca65eddf1451b180772cdbf7611 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 18 Nov 2013 13:42:57 -0500
-Subject: [PATCH] localed: match converted keymaps before legacy
-
-Before, X11 keymap fr-pc105-oss would be converted to fr,
-even though fr-oss exists. Now, if
-/usr/lib/kbd/keymaps/xkb/<layout>[-<variant>].map[.gz] exists,
-<layout>[-<variant>] will be used as the console keymap,
-falling back to the legacy mappings otherwise.
-
-% sudo localectl set-x11-keymap pl pc105
-% localectl
-   System Locale: LANG=en_US.UTF-8
-       VC Keymap: pl                      (was pl2 before)
-      X11 Layout: pl
-       X11 Model: pc105
-% sudo localectl set-x11-keymap fr pc105 oss
-% localectl
-   System Locale: LANG=en_US.UTF-8
-       VC Keymap: fr-oss                  (was fr before)
-      X11 Layout: fr
-       X11 Model: pc105
-     X11 Variant: oss
-% sudo localectl set-x11-keymap fr pc105
-% localectl
-   System Locale: LANG=en_US.UTF-8
-       VC Keymap: fr
-      X11 Layout: fr
-       X11 Model: pc105
-% sudo localectl set-x11-keymap gb
-% localectl
-   System Locale: LANG=en_US.UTF-8
-       VC Keymap: gb                     (was uk before)
-      X11 Layout: gb
-
-Conflicts:
-	src/locale/localed.c
-	src/shared/def.h
----
- src/locale/localectl.c |   8 +--
- src/locale/localed.c   | 189 ++++++++++++++++++++++++++++---------------------
- src/shared/def.h       |  13 ++++
- 3 files changed, 126 insertions(+), 84 deletions(-)
-
-diff --git a/src/locale/localectl.c b/src/locale/localectl.c
-index 8259c0a..d3c6152 100644
---- a/src/locale/localectl.c
-+++ b/src/locale/localectl.c
-@@ -38,6 +38,7 @@
- #include "set.h"
- #include "path-util.h"
- #include "utf8.h"
-+#include "def.h"
- 
- static bool arg_no_pager = false;
- static enum transport {
-@@ -533,15 +534,14 @@ static int nftw_cb(
- 
- static int list_vconsole_keymaps(DBusConnection *bus, char **args, unsigned n) {
-         _cleanup_strv_free_ char **l = NULL;
-+        const char *dir;
- 
-         keymaps = set_new(string_hash_func, string_compare_func);
-         if (!keymaps)
-                 return log_oom();
- 
--        nftw("/usr/share/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
--        nftw("/usr/share/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
--        nftw("/usr/lib/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
--        nftw("/lib/kbd/keymaps/", nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
-+        NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS)
-+                nftw(dir, nftw_cb, 20, FTW_MOUNT|FTW_PHYS);
- 
-         l = set_get_strv(keymaps);
-         if (!l) {
-diff --git a/src/locale/localed.c b/src/locale/localed.c
-index e160c04..b9b98f4 100644
---- a/src/locale/localed.c
-+++ b/src/locale/localed.c
-@@ -792,105 +792,135 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
-         return 0;
- }
- 
--static int convert_x11_to_vconsole(DBusConnection *connection) {
--        bool modified = false;
-+static int find_converted_keymap(char **new_keymap) {
-+        const char *dir;
-+        _cleanup_free_ char *n;
-+
-+        if (state.x11_variant)
-+                n = strjoin(state.x11_layout, "-", state.x11_variant, NULL);
-+        else
-+                n = strdup(state.x11_layout);
-+        if (!n)
-+                return -ENOMEM;
- 
--        assert(connection);
-+        NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS) {
-+                _cleanup_free_ char *p = NULL, *pz = NULL;
- 
--        if (isempty(state.x11_layout)) {
-+                p = strjoin(dir, "xkb/", n, ".map", NULL);
-+                pz = strjoin(dir, "xkb/", n, ".map.gz", NULL);
-+                if (!p || !pz)
-+                        return -ENOMEM;
- 
--                modified =
--                        !isempty(state.vc_keymap) ||
--                        !isempty(state.vc_keymap_toggle);
-+                if (access(p, F_OK) == 0 || access(pz, F_OK) == 0) {
-+                        *new_keymap = n;
-+                        n = NULL;
-+                        return 1;
-+                }
-+        }
- 
--                free_data_x11();
--        } else {
--                FILE *f;
--                unsigned n = 0;
--                unsigned best_matching = 0;
--                char *new_keymap = NULL;
-+        return 0;
-+}
- 
--                f = fopen(SYSTEMD_KBD_MODEL_MAP, "re");
--                if (!f)
--                        return -errno;
-+static int find_legacy_keymap(char **new_keymap) {
-+        _cleanup_fclose_ FILE *f;
-+        unsigned n = 0;
-+        unsigned best_matching = 0;
- 
--                for (;;) {
--                        char **a;
--                        unsigned matching = 0;
--                        int r;
- 
--                        r = read_next_mapping(f, &n, &a);
--                        if (r < 0) {
--                                fclose(f);
--                                return r;
--                        }
-+        f = fopen(SYSTEMD_KBD_MODEL_MAP, "re");
-+        if (!f)
-+                return -errno;
- 
--                        if (r == 0)
--                                break;
-+        for (;;) {
-+                _cleanup_strv_free_ char **a = NULL;
-+                unsigned matching = 0;
-+                int r;
- 
--                        /* Determine how well matching this entry is */
--                        if (streq_ptr(state.x11_layout, a[1]))
--                                /* If we got an exact match, this is best */
--                                matching = 10;
--                        else {
--                                size_t x;
--
--                                x = strcspn(state.x11_layout, ",");
--
--                                /* We have multiple X layouts, look
--                                 * for an entry that matches our key
--                                 * with the everything but the first
--                                 * layout stripped off. */
--                                if (x > 0 &&
--                                    strlen(a[1]) == x &&
--                                    strneq(state.x11_layout, a[1], x))
--                                        matching = 5;
--                                else  {
--                                        size_t w;
--
--                                        /* If that didn't work, strip
--                                         * off the other layouts from
--                                         * the entry, too */
--
--                                        w = strcspn(a[1], ",");
--
--                                        if (x > 0 && x == w &&
--                                            memcmp(state.x11_layout, a[1], x) == 0)
--                                                matching = 1;
--                                }
-+                r = read_next_mapping(f, &n, &a);
-+                if (r < 0)
-+                        return r;
-+                if (r == 0)
-+                        break;
-+
-+                /* Determine how well matching this entry is */
-+                if (streq_ptr(state.x11_layout, a[1]))
-+                        /* If we got an exact match, this is best */
-+                        matching = 10;
-+                else {
-+                        size_t x;
-+
-+                        x = strcspn(state.x11_layout, ",");
-+
-+                        /* We have multiple X layouts, look for an
-+                         * entry that matches our key with everything
-+                         * but the first layout stripped off. */
-+                        if (x > 0 &&
-+                            strlen(a[1]) == x &&
-+                            strneq(state.x11_layout, a[1], x))
-+                                matching = 5;
-+                        else  {
-+                                size_t w;
-+
-+                                /* If that didn't work, strip off the
-+                                 * other layouts from the entry, too */
-+                                w = strcspn(a[1], ",");
-+
-+                                if (x > 0 && x == w &&
-+                                    memcmp(state.x11_layout, a[1], x) == 0)
-+                                        matching = 1;
-                         }
-+                }
-+
-+                if (matching > 0 &&
-+                    streq_ptr(state.x11_model, a[2])) {
-+                        matching++;
- 
--                        if (matching > 0 &&
--                            streq_ptr(state.x11_model, a[2])) {
-+                        if (streq_ptr(state.x11_variant, a[3])) {
-                                 matching++;
- 
--                                if (streq_ptr(state.x11_variant, a[3])) {
-+                                if (streq_ptr(state.x11_options, a[4]))
-                                         matching++;
--
--                                        if (streq_ptr(state.x11_options, a[4]))
--                                                matching++;
--                                }
-                         }
-+                }
- 
--                        /* The best matching entry so far, then let's
--                         * save that */
--                        if (matching > best_matching) {
--                                best_matching = matching;
-+                /* The best matching entry so far, then let's save that */
-+                if (matching > best_matching) {
-+                        best_matching = matching;
- 
--                                free(new_keymap);
--                                new_keymap = strdup(a[0]);
-+                        free(*new_keymap);
-+                        *new_keymap = strdup(a[0]);
-+                        if (!*new_keymap)
-+                                return -ENOMEM;
-+                }
-+        }
- 
--                                if (!new_keymap) {
--                                        strv_free(a);
--                                        fclose(f);
--                                        return -ENOMEM;
--                                }
--                        }
-+        return 0;
-+}
- 
--                        strv_free(a);
--                }
-+static int convert_x11_to_vconsole(DBusConnection *connection) {
-+        bool modified = false;
-+        int r;
- 
--                fclose(f);
-+        assert(connection);
-+
-+        if (isempty(state.x11_layout)) {
-+
-+                modified =
-+                        !isempty(state.vc_keymap) ||
-+                        !isempty(state.vc_keymap_toggle);
-+
-+                free_data_x11();
-+        } else {
-+                char *new_keymap = NULL;
-+
-+                r = find_converted_keymap(&new_keymap);
-+                if (r < 0)
-+                        return r;
-+                else if (r == 0) {
-+                        r = find_legacy_keymap(&new_keymap);
-+                        if (r < 0)
-+                                return r;
-+                }
- 
-                 if (!streq_ptr(state.vc_keymap, new_keymap)) {
-                         free(state.vc_keymap);
-@@ -907,7 +937,6 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
-         if (modified) {
-                 dbus_bool_t b;
-                 DBusMessage *changed;
--                int r;
- 
-                 r = write_data_vconsole();
-                 if (r < 0)
-diff --git a/src/shared/def.h b/src/shared/def.h
-index e4ef735..58c834c 100644
---- a/src/shared/def.h
-+++ b/src/shared/def.h
-@@ -41,3 +41,16 @@
- #define LOWERCASE_LETTERS "abcdefghijklmnopqrstuvwxyz"
- #define UPPERCASE_LETTERS "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- #define LETTERS LOWERCASE_LETTERS UPPERCASE_LETTERS
-+
-+#ifdef HAVE_SPLIT_USR
-+#define KBD_KEYMAP_DIRS                         \
-+        "/usr/share/keymaps/\0"                 \
-+        "/usr/share/kbd/keymaps/\0"             \
-+        "/usr/lib/kbd/keymaps/\0"               \
-+        "/lib/kbd/keymaps/\0"
-+#else
-+#define KBD_KEYMAP_DIRS                         \
-+        "/usr/share/keymaps/\0"                 \
-+        "/usr/share/kbd/keymaps/\0"             \
-+        "/usr/lib/kbd/keymaps/\0"
-+#endif
diff --git a/SOURCES/0041-tmpfiles-quietly-ignore-ACLs-on-unsupported-filesyst.patch b/SOURCES/0041-tmpfiles-quietly-ignore-ACLs-on-unsupported-filesyst.patch
new file mode 100644
index 0000000..c0b94d6
--- /dev/null
+++ b/SOURCES/0041-tmpfiles-quietly-ignore-ACLs-on-unsupported-filesyst.patch
@@ -0,0 +1,80 @@
+From 6ad61c838992d17f5faa94faa8f17967083a4226 Mon Sep 17 00:00:00 2001
+From: Hans-Peter Deifel <hpd@hpdeifel.de>
+Date: Tue, 3 Mar 2015 00:35:08 +0100
+Subject: [PATCH] tmpfiles: quietly ignore ACLs on unsupported filesystems
+
+A warning is printed if ACLs cannot be retrieved for any reason other
+than -ENOSYS. For -ENOSYS, debug log is printed.
+
+(cherry picked from commit d873e8778c92014c02a9122852758b436fa95c0e)
+---
+ src/tmpfiles/tmpfiles.c | 36 ++++++++++++++++++++----------------
+ 1 file changed, 20 insertions(+), 16 deletions(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 88ba7e4..187997e 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -704,6 +704,9 @@ static int path_set_acl(const char *path, acl_type_t type, acl_t acl, bool modif
+         int r;
+         _cleanup_(acl_free_charpp) char *t = NULL;
+ 
++        /* Returns 0 for success, positive error if already warned,
++         * negative error otherwise. */
++
+         if (modify) {
+                 r = acls_for_file(path, type, acl, &dup);
+                 if (r < 0)
+@@ -731,35 +734,36 @@ static int path_set_acl(const char *path, acl_type_t type, acl_t acl, bool modif
+ 
+         r = acl_set_file(path, type, dup);
+         if (r < 0)
+-                return log_error_errno(-errno,
+-                                       "Setting %s ACL \"%s\" on %s failed: %m",
+-                                       type == ACL_TYPE_ACCESS ? "access" : "default",
+-                                       strna(t), path);
++                return -log_error_errno(errno,
++                                        "Setting %s ACL \"%s\" on %s failed: %m",
++                                        type == ACL_TYPE_ACCESS ? "access" : "default",
++                                        strna(t), path);
++
+         return 0;
+ }
+ #endif
+ 
+ static int path_set_acls(Item *item, const char *path) {
++        int r = 0;
+ #ifdef HAVE_ACL
+-        int r;
+-
+         assert(item);
+         assert(path);
+ 
+-        if (item->acl_access) {
++        if (item->acl_access)
+                 r = path_set_acl(path, ACL_TYPE_ACCESS, item->acl_access, item->force);
+-                if (r < 0)
+-                        return r;
+-        }
+ 
+-        if (item->acl_default) {
++        if (r == 0 && item->acl_default)
+                 r = path_set_acl(path, ACL_TYPE_DEFAULT, item->acl_default, item->force);
+-                if (r < 0)
+-                        return r;
+-        }
+-#endif
+ 
+-        return 0;
++        if (r > 0)
++                return -r; /* already warned */
++        else if (r == -ENOTSUP) {
++                log_debug_errno(r, "ACLs not supported by file system at %s", path);
++                return 0;
++        } else if (r < 0)
++                log_error_errno(r, "ACL operation on \"%s\" failed: %m", path);
++#endif
++        return r;
+ }
+ 
+ static int write_one_file(Item *i, const char *path) {
diff --git a/SOURCES/0042-core-socket-fix-SO_REUSEPORT.patch b/SOURCES/0042-core-socket-fix-SO_REUSEPORT.patch
deleted file mode 100644
index 2f8c231..0000000
--- a/SOURCES/0042-core-socket-fix-SO_REUSEPORT.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 9dda034962ef7d339f07e5cdeae87f34db970431 Mon Sep 17 00:00:00 2001
-From: Shawn Landden <shawn@churchofgit.com>
-Date: Sat, 16 Nov 2013 13:18:13 -0800
-Subject: [PATCH] core/socket: fix SO_REUSEPORT
-
----
- src/core/load-fragment-gperf.gperf.m4 | 1 +
- src/core/socket.c                     | 2 +-
- 2 files changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
-index 31fb7bc..d65bcc1 100644
---- a/src/core/load-fragment-gperf.gperf.m4
-+++ b/src/core/load-fragment-gperf.gperf.m4
-@@ -211,6 +211,7 @@ Socket.Broadcast,                config_parse_bool,                  0,
- Socket.PassCredentials,          config_parse_bool,                  0,                             offsetof(Socket, pass_cred)
- Socket.PassSecurity,             config_parse_bool,                  0,                             offsetof(Socket, pass_sec)
- Socket.TCPCongestion,            config_parse_string,                0,                             offsetof(Socket, tcp_congestion)
-+Socket.ReusePort,                config_parse_bool,                  0,                             offsetof(Socket, reuseport)
- Socket.MessageQueueMaxMessages,  config_parse_long,                  0,                             offsetof(Socket, mq_maxmsg)
- Socket.MessageQueueMessageSize,  config_parse_long,                  0,                             offsetof(Socket, mq_msgsize)
- Socket.Service,                  config_parse_socket_service,        0,                             0
-diff --git a/src/core/socket.c b/src/core/socket.c
-index d368f7e..e673f38 100644
---- a/src/core/socket.c
-+++ b/src/core/socket.c
-@@ -770,7 +770,7 @@ static void socket_apply_socket_options(Socket *s, int fd) {
- 
-         if (s->reuseport) {
-                 int b = s->reuseport;
--                if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)))
-+                if (setsockopt(fd, SOL_SOCKET, SO_REUSEPORT, &b, sizeof(b)) < 0)
-                         log_warning_unit(UNIT(s)->id, "SO_REUSEPORT failed: %m");
-         }
- 
diff --git a/SOURCES/0042-shared-util-assume-ac-when-sys-class-power_supply-is.patch b/SOURCES/0042-shared-util-assume-ac-when-sys-class-power_supply-is.patch
new file mode 100644
index 0000000..d290e83
--- /dev/null
+++ b/SOURCES/0042-shared-util-assume-ac-when-sys-class-power_supply-is.patch
@@ -0,0 +1,27 @@
+From a2911c593e9d69a2aa01d89d876e313f90e7db17 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 3 Mar 2015 19:07:28 -0500
+Subject: [PATCH] shared/util: assume ac when /sys/class/power_supply is
+ missing
+
+On s390 (at least) /sys/class/power_supply is not present. We should
+treat this like if this directory was empty, and not an error.
+
+(cherry picked from commit 6d89003462484c8656b698e07b9cf0a337e3818e)
+---
+ src/shared/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index f24b5b4..8548723 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -5994,7 +5994,7 @@ int on_ac_power(void) {
+ 
+         d = opendir("/sys/class/power_supply");
+         if (!d)
+-                return -errno;
++                return errno == ENOENT ? true : -errno;
+ 
+         for (;;) {
+                 struct dirent *de;
diff --git a/SOURCES/0043-activate-fix-crash-when-s-is-passed.patch b/SOURCES/0043-activate-fix-crash-when-s-is-passed.patch
deleted file mode 100644
index b4519f7..0000000
--- a/SOURCES/0043-activate-fix-crash-when-s-is-passed.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 6a4da7d980bf91207d07e2a7b1c4d1d2fe59e3e8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= <grawity@gmail.com>
-Date: Wed, 13 Nov 2013 13:36:16 +0200
-Subject: [PATCH] activate: fix crash when -s is passed
-
-getopt_long() was told to accept -s which was never implemented.
----
- src/activate/activate.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/activate/activate.c b/src/activate/activate.c
-index 83d25b1..535b330 100644
---- a/src/activate/activate.c
-+++ b/src/activate/activate.c
-@@ -344,7 +344,7 @@ static int parse_argv(int argc, char *argv[]) {
-         assert(argc >= 0);
-         assert(argv);
- 
--        while ((c = getopt_long(argc, argv, "+hl:saE:", options, NULL)) >= 0)
-+        while ((c = getopt_long(argc, argv, "+hl:aE:", options, NULL)) >= 0)
-                 switch(c) {
-                 case 'h':
-                         help();
diff --git a/SOURCES/0043-import-remove-unused-variable.patch b/SOURCES/0043-import-remove-unused-variable.patch
new file mode 100644
index 0000000..35e4fbc
--- /dev/null
+++ b/SOURCES/0043-import-remove-unused-variable.patch
@@ -0,0 +1,22 @@
+From 2bbdb63f7e5f125e1259b0fcfcea8226c5ae4e58 Mon Sep 17 00:00:00 2001
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 17 Feb 2015 20:06:13 +0100
+Subject: [PATCH] import: remove unused variable
+
+(cherry picked from commit b89c454b37a23433f8fd6ad7b93f5a6190930aa4)
+---
+ src/import/import-tar.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/import/import-tar.c b/src/import/import-tar.c
+index 999aa8a..493252a 100644
+--- a/src/import/import-tar.c
++++ b/src/import/import-tar.c
+@@ -301,7 +301,6 @@ finish:
+ }
+ 
+ static int tar_import_job_on_open_disk(ImportJob *j) {
+-        _cleanup_close_pair_ int pipefd[2] = { -1 , -1 };
+         TarImport *i;
+         int r;
+ 
diff --git a/SOURCES/0044-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch b/SOURCES/0044-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch
new file mode 100644
index 0000000..ffa17cd
--- /dev/null
+++ b/SOURCES/0044-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch
@@ -0,0 +1,44 @@
+From 61d5dff976f33ec7189eae58641c49088e166479 Mon Sep 17 00:00:00 2001
+From: Lubomir Rintel <lkundrak@v3.sk>
+Date: Wed, 18 Feb 2015 21:02:01 +0100
+Subject: [PATCH] hwdb: fix ThinkPad X* Tablet special keys
+
+ThinkPad tablet firmware has DMI product name and version reversed:
+
+Handle 0x0001, DMI type 1, 27 bytes
+System Information
+        Manufacturer: LENOVO
+        Product Name: 7762AS1
+        Version: ThinkPad X61 Tablet
+        Serial Number: LKZCDH2
+        UUID: 6ADBC681-4FC9-11CB-844F-B47CB9210BE2
+        Wake-up Type: Power Switch
+        SKU Number: Not Specified
+        Family: ThinkPad X61 Tablet
+
+(cherry picked from commit 39addb81b660dd7af7d21be941d8de6497abbdbf)
+---
+ hwdb/60-keyboard.hwdb | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index 1b7d871..2cb9769 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -586,7 +586,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr*
+  KEYBOARD_KEY_f3=f21
+ 
+ # Thinkpad X200_Tablet
+-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X2*Tablet*:pvr*
+ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*
+  KEYBOARD_KEY_5d=menu
+  KEYBOARD_KEY_63=fn
+@@ -596,7 +595,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*
+  KEYBOARD_KEY_6c=direction                              # rotate screen
+ 
+ # ThinkPad X6 Tablet
+-keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X6*:pvr*
++keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X6*Tablet*
+  KEYBOARD_KEY_6c=direction                              # rotate
+  KEYBOARD_KEY_68=leftmeta                               # toolbox
+  KEYBOARD_KEY_6b=esc                                    # escape
diff --git a/SOURCES/0044-systemd-python-fix-booted-and-add-two-functions-to-d.patch b/SOURCES/0044-systemd-python-fix-booted-and-add-two-functions-to-d.patch
deleted file mode 100644
index 25d5952..0000000
--- a/SOURCES/0044-systemd-python-fix-booted-and-add-two-functions-to-d.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 27b42c85817e4ebf03c60492f2bf187931450b51 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 11 Nov 2013 19:53:59 -0500
-Subject: [PATCH] systemd-python: fix booted() and add two functions to docs
-
-For some reason sphinx doesn't want to show inherited C functions.
----
- src/python-systemd/_daemon.c       | 2 +-
- src/python-systemd/docs/daemon.rst | 2 ++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
-index 6b84fb8..f0ab16f 100644
---- a/src/python-systemd/_daemon.c
-+++ b/src/python-systemd/_daemon.c
-@@ -51,7 +51,7 @@ static PyObject* booted(PyObject *self, PyObject *args) {
-         assert(args == NULL);
- 
-         r = sd_booted();
--        if (set_error(r, NULL, NULL))
-+        if (set_error(r, NULL, NULL) < 0)
-                 return NULL;
- 
-         return PyBool_FromLong(r);
-diff --git a/src/python-systemd/docs/daemon.rst b/src/python-systemd/docs/daemon.rst
-index 72280ca..0ad11ed 100644
---- a/src/python-systemd/docs/daemon.rst
-+++ b/src/python-systemd/docs/daemon.rst
-@@ -14,3 +14,5 @@
-    .. autofunction:: _is_socket_unix
-    .. autofunction:: _is_socket_inet
-    .. autofunction:: _is_mq
-+   .. autofunction:: notify
-+   .. autofunction:: booted
diff --git a/SOURCES/0045-man-add-newlines-to-the-pull-raw-example-in-machinec.patch b/SOURCES/0045-man-add-newlines-to-the-pull-raw-example-in-machinec.patch
new file mode 100644
index 0000000..886bc89
--- /dev/null
+++ b/SOURCES/0045-man-add-newlines-to-the-pull-raw-example-in-machinec.patch
@@ -0,0 +1,34 @@
+From e411ef694a09d001cdb97e139af6884b01be4aba Mon Sep 17 00:00:00 2001
+From: Benjamin Franzke <benjaminfranzke@googlemail.com>
+Date: Thu, 19 Feb 2015 13:10:18 +0100
+Subject: [PATCH] man: add newlines to the pull-raw example in machinectl(1)
+
+They were removed in commit 798d3a52 ("Reindent man pages to 2ch").
+
+(cherry picked from commit ac92ced5bb41def1d90f871d6c8cfec2b03c0c7d)
+---
+ man/machinectl.xml | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/man/machinectl.xml b/man/machinectl.xml
+index 9b07af4..640cb8b 100644
+--- a/man/machinectl.xml
++++ b/man/machinectl.xml
+@@ -715,11 +715,12 @@
+       <title>Download a Fedora image, set a root password in it, start
+       it as service</title>
+ 
+-      <programlisting># machinectl pull-raw --verify=no
+-      http://ftp.halifax.rwth-aachen.de/fedora/linux/releases/21/Cloud/Images/x86_64/Fedora-Cloud-Base-20141203-21.x86_64.raw.xz
+-      # systemd-nspawn -M Fedora-Cloud-Base-20141203-21 # passwd #
+-      exit # machinectl start Fedora-Cloud-Base-20141203-21 #
+-      machinectl login Fedora-Cloud-Base-20141203-21</programlisting>
++      <programlisting># machinectl pull-raw --verify=no http://ftp.halifax.rwth-aachen.de/fedora/linux/releases/21/Cloud/Images/x86_64/Fedora-Cloud-Base-20141203-21.x86_64.raw.xz
++# systemd-nspawn -M Fedora-Cloud-Base-20141203-21
++# passwd
++# exit
++# machinectl start Fedora-Cloud-Base-20141203-21
++# machinectl login Fedora-Cloud-Base-20141203-21</programlisting>
+ 
+       <para>This downloads the specified <filename>.raw</filename>
+       image with verification disabled. Then a shell is opened in it
diff --git a/SOURCES/0045-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch b/SOURCES/0045-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
deleted file mode 100644
index bcd7ad4..0000000
--- a/SOURCES/0045-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 4003ebeac4b10481f32b5b1fdd65fcc905a4b9a7 Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Sat, 30 Nov 2013 23:45:31 +0100
-Subject: [PATCH] util.c: check if return value from ttyname_r is > 0 instead
- of != 0
-
-We must return a negative error code from getttyname_malloc but
-that would not be the case if ttyname_r returned a negative value.
-
-ttyname_r should only return EBADF, ENOTTY, or ERANGE so it should
-be safe to change.
----
- src/shared/util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 6c88040..f602625 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -2561,7 +2561,7 @@ int getttyname_malloc(int fd, char **r) {
-         assert(r);
- 
-         k = ttyname_r(fd, path, sizeof(path));
--        if (k != 0)
-+        if (k > 0)
-                 return -k;
- 
-         char_array_0(path);
diff --git a/SOURCES/0046-activate-mention-E-in-the-help-text.patch b/SOURCES/0046-activate-mention-E-in-the-help-text.patch
deleted file mode 100644
index a839f65..0000000
--- a/SOURCES/0046-activate-mention-E-in-the-help-text.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 75095af78beb53ce399f50b004b4bf9a4de9ab60 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= <grawity@gmail.com>
-Date: Wed, 13 Nov 2013 13:36:17 +0200
-Subject: [PATCH] activate: mention -E in the help text
-
----
- src/activate/activate.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/activate/activate.c b/src/activate/activate.c
-index 535b330..a9461bc 100644
---- a/src/activate/activate.c
-+++ b/src/activate/activate.c
-@@ -316,6 +316,8 @@ static int help(void) {
-                "  -l --listen=ADDR     Listen for raw connections at ADDR\n"
-                "  -a --accept          Spawn separate child for each connection\n"
-                "  -h --help            Show this help and exit\n"
-+               "  -E --environment=NAME[=VALUE]\n"
-+               "                       Pass an environment variable to children\n"
-                "  --version            Print version string and exit\n"
-                "\n"
-                "Note: file descriptors from sd_listen_fds() will be passed through.\n"
diff --git a/SOURCES/0046-core-shared-in-deserializing-match-same-files-reache.patch b/SOURCES/0046-core-shared-in-deserializing-match-same-files-reache.patch
new file mode 100644
index 0000000..c5923f4
--- /dev/null
+++ b/SOURCES/0046-core-shared-in-deserializing-match-same-files-reache.patch
@@ -0,0 +1,133 @@
+From 5d66d4942090a971de8df2c3de9ce143a208eb37 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Thu, 19 Feb 2015 23:12:38 +0100
+Subject: [PATCH] core, shared: in deserializing, match same files reached via
+ different paths
+
+When dbus.socket is updated like this:
+-ListenStream=/var/run/dbus/system_bus_socket
++ListenStream=/run/dbus/system_bus_socket
+... and daemon-reload is performed, bad things happen.
+During deserialization systemd does not recognize that the two paths
+refer to the same named socket and replaces the socket file with a new
+one. As a result, applications hang when they try talking to dbus.
+
+Fix this by finding a match not only when the path names are equal, but
+also when they point to the same inode.
+In socket_address_equal() it is necessary to move the address size
+comparison into the abstract sockets branch. For path name sockets the
+comparison must not be done and for other families it is redundant
+(their sizes are constant and checked by socket_address_verify()).
+
+FIFOs and special files can also have multiple pathnames, so compare the
+inodes for them as well. Note that previously the pathname checks used
+streq_ptr(), but the paths cannot be NULL.
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1186018
+(cherry picked from commit c78e47a61fa8d9a21fece01c83e4c26ce0938d27)
+---
+ src/core/socket.c        |  6 +++---
+ src/shared/path-util.c   |  4 ++++
+ src/shared/path-util.h   |  1 +
+ src/shared/socket-util.c | 10 ++++------
+ 4 files changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/src/core/socket.c b/src/core/socket.c
+index 48c43a2..88aae48 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -2100,7 +2100,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+ 
+                         LIST_FOREACH(port, p, s->ports)
+                                 if (p->type == SOCKET_FIFO &&
+-                                    streq_ptr(p->path, value+skip))
++                                    path_equal_or_files_same(p->path, value+skip))
+                                         break;
+ 
+                         if (p) {
+@@ -2119,7 +2119,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+ 
+                         LIST_FOREACH(port, p, s->ports)
+                                 if (p->type == SOCKET_SPECIAL &&
+-                                    streq_ptr(p->path, value+skip))
++                                    path_equal_or_files_same(p->path, value+skip))
+                                         break;
+ 
+                         if (p) {
+@@ -2138,7 +2138,7 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value,
+ 
+                         LIST_FOREACH(port, p, s->ports)
+                                 if (p->type == SOCKET_MQUEUE &&
+-                                    streq_ptr(p->path, value+skip))
++                                    streq(p->path, value+skip))
+                                         break;
+ 
+                         if (p) {
+diff --git a/src/shared/path-util.c b/src/shared/path-util.c
+index b9db7f1..70bc1ca 100644
+--- a/src/shared/path-util.c
++++ b/src/shared/path-util.c
+@@ -436,6 +436,10 @@ bool path_equal(const char *a, const char *b) {
+         }
+ }
+ 
++bool path_equal_or_files_same(const char *a, const char *b) {
++        return path_equal(a, b) || files_same(a, b) > 0;
++}
++
+ char* path_join(const char *root, const char *path, const char *rest) {
+         assert(path);
+ 
+diff --git a/src/shared/path-util.h b/src/shared/path-util.h
+index bd0d324..bcf116e 100644
+--- a/src/shared/path-util.h
++++ b/src/shared/path-util.h
+@@ -45,6 +45,7 @@ int path_make_relative(const char *from_dir, const char *to_path, char **_r);
+ char* path_kill_slashes(char *path);
+ char* path_startswith(const char *path, const char *prefix) _pure_;
+ bool path_equal(const char *a, const char *b) _pure_;
++bool path_equal_or_files_same(const char *a, const char *b);
+ char* path_join(const char *root, const char *path, const char *rest);
+ 
+ char** path_strv_make_absolute_cwd(char **l);
+diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c
+index c6f6487..c278d6f 100644
+--- a/src/shared/socket-util.c
++++ b/src/shared/socket-util.c
+@@ -325,9 +325,6 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) {
+         if (a->type != b->type)
+                 return false;
+ 
+-        if (a->size != b->size)
+-                return false;
+-
+         if (socket_address_family(a) != socket_address_family(b))
+                 return false;
+ 
+@@ -352,14 +349,16 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) {
+                 break;
+ 
+         case AF_UNIX:
+-
+                 if ((a->sockaddr.un.sun_path[0] == 0) != (b->sockaddr.un.sun_path[0] == 0))
+                         return false;
+ 
+                 if (a->sockaddr.un.sun_path[0]) {
+-                        if (!strneq(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, sizeof(a->sockaddr.un.sun_path)))
++                        if (!path_equal_or_files_same(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path))
+                                 return false;
+                 } else {
++                        if (a->size != b->size)
++                                return false;
++
+                         if (memcmp(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, a->size) != 0)
+                                 return false;
+                 }
+@@ -367,7 +366,6 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) {
+                 break;
+ 
+         case AF_NETLINK:
+-
+                 if (a->protocol != b->protocol)
+                         return false;
+ 
diff --git a/SOURCES/0047-docs-remove-unneeded-the-s-in-gudev-docs.patch b/SOURCES/0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
deleted file mode 100644
index f811a9b..0000000
--- a/SOURCES/0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 9d175ba1edccb9e7e1d9d2994c3c074f43ea2539 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 30 Nov 2013 20:27:54 -0500
-Subject: [PATCH] docs: remove unneeded the's in gudev docs
-
-https://bugs.freedesktop.org/show_bug.cgi?id=72164
----
- src/libudev/libudev-device.c | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
-diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
-index a644904..161181a 100644
---- a/src/libudev/libudev-device.c
-+++ b/src/libudev/libudev-device.c
-@@ -980,9 +980,8 @@ static struct udev_device *device_new_from_parent(struct udev_device *udev_devic
-  * Find the next parent device, and fill in information from the sys
-  * device and the udev database entry.
-  *
-- * The returned the device is not referenced. It is attached to the
-- * child device, and will be cleaned up when the child device
-- * is cleaned up.
-+ * Returned device is not referenced. It is attached to the child
-+ * device, and will be cleaned up when the child device is cleaned up.
-  *
-  * It is not necessarily just the upper level directory, empty or not
-  * recognized sys directories are ignored.
-@@ -1016,9 +1015,8 @@ _public_ struct udev_device *udev_device_get_parent(struct udev_device *udev_dev
-  * If devtype is #NULL, only subsystem is checked, and any devtype will
-  * match.
-  *
-- * The returned the device is not referenced. It is attached to the
-- * child device, and will be cleaned up when the child device
-- * is cleaned up.
-+ * Returned device is not referenced. It is attached to the child
-+ * device, and will be cleaned up when the child device is cleaned up.
-  *
-  * It can be called as many times as needed, without caring about
-  * references.
diff --git a/SOURCES/0047-shared-use-SocketAddress-in-socket_address_matches_f.patch b/SOURCES/0047-shared-use-SocketAddress-in-socket_address_matches_f.patch
new file mode 100644
index 0000000..e176028
--- /dev/null
+++ b/SOURCES/0047-shared-use-SocketAddress-in-socket_address_matches_f.patch
@@ -0,0 +1,83 @@
+From 73cbcbaf7e04d42816ada8ee44b5fbc6b7f0bdb4 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Fri, 20 Feb 2015 02:04:05 +0100
+Subject: [PATCH] shared: use SocketAddress in socket_address_matches_fd()
+
+Cleanup. No behavior change.
+
+(cherry picked from commit dbafedacba3ee77098e932222ae7840e7b4040fc)
+---
+ src/shared/socket-util.c | 36 ++++++++++++++++++------------------
+ 1 file changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c
+index c278d6f..c31f60e 100644
+--- a/src/shared/socket-util.c
++++ b/src/shared/socket-util.c
+@@ -435,48 +435,48 @@ bool socket_ipv6_is_supported(void) {
+ }
+ 
+ bool socket_address_matches_fd(const SocketAddress *a, int fd) {
+-        union sockaddr_union sa;
+-        socklen_t salen = sizeof(sa), solen;
+-        int protocol, type;
++        SocketAddress b;
++        socklen_t solen;
+ 
+         assert(a);
+         assert(fd >= 0);
+ 
+-        if (getsockname(fd, &sa.sa, &salen) < 0)
++        b.size = sizeof(b.sockaddr);
++        if (getsockname(fd, &b.sockaddr.sa, &b.size) < 0)
+                 return false;
+ 
+-        if (sa.sa.sa_family != a->sockaddr.sa.sa_family)
++        if (b.sockaddr.sa.sa_family != a->sockaddr.sa.sa_family)
+                 return false;
+ 
+-        solen = sizeof(type);
+-        if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &type, &solen) < 0)
++        solen = sizeof(b.type);
++        if (getsockopt(fd, SOL_SOCKET, SO_TYPE, &b.type, &solen) < 0)
+                 return false;
+ 
+-        if (type != a->type)
++        if (b.type != a->type)
+                 return false;
+ 
+         if (a->protocol != 0)  {
+-                solen = sizeof(protocol);
+-                if (getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &protocol, &solen) < 0)
++                solen = sizeof(b.protocol);
++                if (getsockopt(fd, SOL_SOCKET, SO_PROTOCOL, &b.protocol, &solen) < 0)
+                         return false;
+ 
+-                if (protocol != a->protocol)
++                if (b.protocol != a->protocol)
+                         return false;
+         }
+ 
+-        switch (sa.sa.sa_family) {
++        switch (b.sockaddr.sa.sa_family) {
+ 
+         case AF_INET:
+-                return sa.in.sin_port == a->sockaddr.in.sin_port &&
+-                        sa.in.sin_addr.s_addr == a->sockaddr.in.sin_addr.s_addr;
++                return b.sockaddr.in.sin_port == a->sockaddr.in.sin_port &&
++                        b.sockaddr.in.sin_addr.s_addr == a->sockaddr.in.sin_addr.s_addr;
+ 
+         case AF_INET6:
+-                return sa.in6.sin6_port == a->sockaddr.in6.sin6_port &&
+-                        memcmp(&sa.in6.sin6_addr, &a->sockaddr.in6.sin6_addr, sizeof(struct in6_addr)) == 0;
++                return b.sockaddr.in6.sin6_port == a->sockaddr.in6.sin6_port &&
++                        memcmp(&b.sockaddr.in6.sin6_addr, &a->sockaddr.in6.sin6_addr, sizeof(struct in6_addr)) == 0;
+ 
+         case AF_UNIX:
+-                return salen == a->size &&
+-                        memcmp(sa.un.sun_path, a->sockaddr.un.sun_path, salen - offsetof(struct sockaddr_un, sun_path)) == 0;
++                return b.sockaddr.size == a->size &&
++                        memcmp(b.sockaddr.un.sun_path, a->sockaddr.un.sun_path, b.size - offsetof(struct sockaddr_un, sun_path)) == 0;
+ 
+         }
+ 
diff --git a/SOURCES/0048-man-explicitly-say-when-multiple-units-can-be-specif.patch b/SOURCES/0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
deleted file mode 100644
index 3d29fe8..0000000
--- a/SOURCES/0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
+++ /dev/null
@@ -1,235 +0,0 @@
-From 521519ead8bb49d2c94aed90982ffcd6d5e34e92 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 30 Nov 2013 21:23:01 -0500
-Subject: [PATCH] man: explicitly say when multiple units can be specified
-
-itistoday> how do you specify multiple dependencies in a unit file? i've been
-           googling and can't find this basic thing :-\
-itistoday> do you use a comma, or use multiple After= statements?
----
- man/systemd.unit.xml | 128 ++++++++++++++++++++++++++++-----------------------
- 1 file changed, 70 insertions(+), 58 deletions(-)
-
-diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
-index 5c8b8e8..029392c 100644
---- a/man/systemd.unit.xml
-+++ b/man/systemd.unit.xml
-@@ -410,10 +410,12 @@
-                                 of the other units gets deactivated or
-                                 its activation fails, this unit will
-                                 be deactivated. This option may be
--                                specified more than once, in which
--                                case requirement dependencies for all
--                                listed names are created. Note that
--                                requirement dependencies do not
-+                                specified more than once or multiple
-+                                space-separated units may be specified
-+                                in one option in which case
-+                                requirement dependencies for all
-+                                listed names will be created. Note
-+                                that requirement dependencies do not
-                                 influence the order in which services
-                                 are started or stopped. This has to be
-                                 configured independently with the
-@@ -476,22 +478,23 @@
-                                 <term><varname>RequisiteOverridable=</varname></term>
- 
-                                 <listitem><para>Similar to
--                                <varname>Requires=</varname>
--                                and <varname>RequiresOverridable=</varname>, respectively. However,
--                                if a unit listed here is not started
--                                already it will not be started and the
--                                transaction fails
--                                immediately.</para></listitem>
-+                                <varname>Requires=</varname> and
-+                                <varname>RequiresOverridable=</varname>,
-+                                respectively. However, if the units
-+                                listed here are not started already
-+                                they will not be started and the
-+                                transaction will fail immediately.
-+                                </para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-                                 <term><varname>Wants=</varname></term>
- 
-                                 <listitem><para>A weaker version of
--                                <varname>Requires=</varname>. A unit
-+                                <varname>Requires=</varname>. Units
-                                 listed in this option will be started
-                                 if the configuring unit is. However,
--                                if the listed unit fails to start up
-+                                if the listed units fail to start
-                                 or cannot be added to the transaction
-                                 this has no impact on the validity of
-                                 the transaction as a whole. This is
-@@ -501,8 +504,8 @@
- 
-                                 <para>Note that dependencies of this
-                                 type may also be configured outside of
--                                the unit configuration file by
--                                adding a symlink to a
-+                                the unit configuration file by adding
-+                                symlinks to a
-                                 <filename>.wants/</filename> directory
-                                 accompanying the unit file. For
-                                 details see above.</para></listitem>
-@@ -534,7 +537,7 @@
-                                 of units. When systemd stops or restarts
-                                 the units listed here, the action is
-                                 propagated to this unit.
--                                Note that this is a one way dependency -
-+                                Note that this is a one way dependency —
-                                 changes to this unit do not affect the
-                                 listed units.
-                                 </para></listitem>
-@@ -543,12 +546,12 @@
-                         <varlistentry>
-                                 <term><varname>Conflicts=</varname></term>
- 
--                                <listitem><para>Configures negative
-+                                <listitem><para>A space-separated list
-+                                of unit names. Configures negative
-                                 requirement dependencies. If a unit
--                                has a
--                                <varname>Conflicts=</varname> setting
--                                on another unit, starting the former
--                                will stop the latter and vice
-+                                has a <varname>Conflicts=</varname>
-+                                setting on another unit, starting the
-+                                former will stop the latter and vice
-                                 versa. Note that this setting is
-                                 independent of and orthogonal to the
-                                 <varname>After=</varname> and
-@@ -575,7 +578,8 @@
-                                 <term><varname>Before=</varname></term>
-                                 <term><varname>After=</varname></term>
- 
--                                <listitem><para>Configures ordering
-+                                <listitem><para>A space-separated list
-+                                of unit names. Configures ordering
-                                 dependencies between units. If a unit
-                                 <filename>foo.service</filename>
-                                 contains a setting
-@@ -624,18 +628,18 @@
-                                 type <varname>After=</varname> or
-                                 <varname>Before=</varname>. If two
-                                 units have no ordering dependencies
--                                between them, they are shut down
--                                or started up simultaneously, and
--                                no ordering takes
-+                                between them, they are shut down or
-+                                started up simultaneously, and no
-+                                ordering takes
-                                 place. </para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-                                 <term><varname>OnFailure=</varname></term>
- 
--                                <listitem><para>Lists one or more
--                                units that are activated when this
--                                unit enters the
-+                                <listitem><para>A space-separated list
-+                                of one or more units that are
-+                                activated when this unit enters the
-                                 <literal>failed</literal>
-                                 state.</para></listitem>
-                         </varlistentry>
-@@ -644,16 +648,17 @@
-                                 <term><varname>PropagatesReloadTo=</varname></term>
-                                 <term><varname>ReloadPropagatedFrom=</varname></term>
- 
--                                <listitem><para>Lists one or more
--                                units where reload requests on the
--                                unit will be propagated to/on the
--                                other unit will be propagated
--                                from. Issuing a reload request on a
--                                unit will automatically also enqueue a
--                                reload request on all units that the
--                                reload request shall be propagated to
--                                via these two
--                                settings.</para></listitem>
-+                                <listitem><para>A space-separated list
-+                                of one or more units where reload
-+                                requests on this unit will be
-+                                propagated to, or reload requests on
-+                                the other unit will be propagated to
-+                                this unit, respectively. Issuing a
-+                                reload request on a unit will
-+                                automatically also enqueue a reload
-+                                request on all units that the reload
-+                                request shall be propagated to via
-+                                these two settings.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-@@ -1089,32 +1094,34 @@
-                         <varlistentry>
-                                 <term><varname>Alias=</varname></term>
- 
--                                <listitem><para>Additional names this
--                                unit shall be installed under. The
--                                names listed here must have the same
--                                suffix (i.e. type) as the unit file
--                                name. This option may be specified
--                                more than once, in which case all
--                                listed names are used. At installation
--                                time,
--                                <command>systemctl enable</command>
--                                will create symlinks from these names
--                                to the unit filename.</para></listitem>
-+                                <listitem><para>A space-seperated list
-+                                of additional names this unit shall be
-+                                installed under. The names listed here
-+                                must have the same suffix (i.e. type)
-+                                as the unit file name. This option may
-+                                be specified more than once, in which
-+                                case all listed names are used. At
-+                                installation time, <command>systemctl
-+                                enable</command> will create symlinks
-+                                from these names to the unit
-+                                filename.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-                                 <term><varname>WantedBy=</varname></term>
-                                 <term><varname>RequiredBy=</varname></term>
- 
--                                <listitem><para>A symbolic link is
--                                created in the
--                                <filename>.wants/</filename> or
--                                <filename>.requires/</filename> directory
--                                of the listed unit when this unit is
--                                activated by <command>systemctl
--                                enable</command>.  This has the effect
--                                that a dependency of type
--                                <varname>Wants=</varname> or
-+                                <listitem><para>This option may be
-+                                used more than once, or a
-+                                space-separated list of unit names may
-+                                be given. A symbolic link is created
-+                                in the <filename>.wants/</filename> or
-+                                <filename>.requires/</filename>
-+                                directory of each of the listed units
-+                                when this unit is installed by
-+                                <command>systemctl enable</command>.
-+                                This has the effect that a dependency
-+                                of type <varname>Wants=</varname> or
-                                 <varname>Requires=</varname> is added
-                                 from the listed unit to the current
-                                 unit. The primary result is that the
-@@ -1160,7 +1167,12 @@
-                                 and <command>systemctl
-                                 disable</command> will automatically
-                                 install/uninstall units listed in this option as
--                                well.</para></listitem>
-+                                well.</para>
-+
-+                                <para>This option may be used more
-+                                than once, or a space-separated list
-+                                of unit names may be
-+                                given.</para></listitem>
-                         </varlistentry>
-                 </variablelist>
- 
diff --git a/SOURCES/0048-shared-avoid-semi-duplicating-socket_address_equal.patch b/SOURCES/0048-shared-avoid-semi-duplicating-socket_address_equal.patch
new file mode 100644
index 0000000..ae3495b
--- /dev/null
+++ b/SOURCES/0048-shared-avoid-semi-duplicating-socket_address_equal.patch
@@ -0,0 +1,42 @@
+From ea81ddfdc0eadfb62e28ed998d33c5e1d3b3abab Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Fri, 20 Feb 2015 02:13:03 +0100
+Subject: [PATCH] shared: avoid semi-duplicating socket_address_equal()
+
+Just call socket_address_equal() from socket_address_matches_fd()
+instead of implementing similar comparing of addresses.
+
+(cherry picked from commit 02233928a502e46fc125118dba7234ba3e48dc15)
+---
+ src/shared/socket-util.c | 18 +-----------------
+ 1 file changed, 1 insertion(+), 17 deletions(-)
+
+diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c
+index c31f60e..deecce8 100644
+--- a/src/shared/socket-util.c
++++ b/src/shared/socket-util.c
+@@ -464,23 +464,7 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd) {
+                         return false;
+         }
+ 
+-        switch (b.sockaddr.sa.sa_family) {
+-
+-        case AF_INET:
+-                return b.sockaddr.in.sin_port == a->sockaddr.in.sin_port &&
+-                        b.sockaddr.in.sin_addr.s_addr == a->sockaddr.in.sin_addr.s_addr;
+-
+-        case AF_INET6:
+-                return b.sockaddr.in6.sin6_port == a->sockaddr.in6.sin6_port &&
+-                        memcmp(&b.sockaddr.in6.sin6_addr, &a->sockaddr.in6.sin6_addr, sizeof(struct in6_addr)) == 0;
+-
+-        case AF_UNIX:
+-                return b.sockaddr.size == a->size &&
+-                        memcmp(b.sockaddr.un.sun_path, a->sockaddr.un.sun_path, b.size - offsetof(struct sockaddr_un, sun_path)) == 0;
+-
+-        }
+-
+-        return false;
++        return socket_address_equal(a, &b);
+ }
+ 
+ int sockaddr_pretty(const struct sockaddr *_sa, socklen_t salen, bool translate_ipv6, char **ret) {
diff --git a/SOURCES/0049-shared-handle-unnamed-sockets-in-socket_address_equa.patch b/SOURCES/0049-shared-handle-unnamed-sockets-in-socket_address_equa.patch
new file mode 100644
index 0000000..24ca761
--- /dev/null
+++ b/SOURCES/0049-shared-handle-unnamed-sockets-in-socket_address_equa.patch
@@ -0,0 +1,29 @@
+From 394185c013c15e47ffa1bdc5948ac6010c329728 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Fri, 20 Feb 2015 02:25:16 +0100
+Subject: [PATCH] shared: handle unnamed sockets in socket_address_equal()
+
+Make sure we don't inspect sun_path of unnamed sockets.
+Since we cannot know if two unnamed sockets' adresses refer to the same
+socket, just return false.
+
+(cherry picked from commit 710708a54ccc48e168ad7d4cd401645ef9e2eb14)
+---
+ src/shared/socket-util.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c
+index deecce8..a4e26b1 100644
+--- a/src/shared/socket-util.c
++++ b/src/shared/socket-util.c
+@@ -349,6 +349,10 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) {
+                 break;
+ 
+         case AF_UNIX:
++                if (a->size <= offsetof(struct sockaddr_un, sun_path) ||
++                    b->size <= offsetof(struct sockaddr_un, sun_path))
++                        return false;
++
+                 if ((a->sockaddr.un.sun_path[0] == 0) != (b->sockaddr.un.sun_path[0] == 0))
+                         return false;
+ 
diff --git a/SOURCES/0049-util-fix-handling-of-trailing-whitespace-in-split_qu.patch b/SOURCES/0049-util-fix-handling-of-trailing-whitespace-in-split_qu.patch
deleted file mode 100644
index e7fc500..0000000
--- a/SOURCES/0049-util-fix-handling-of-trailing-whitespace-in-split_qu.patch
+++ /dev/null
@@ -1,122 +0,0 @@
-From 996e958ecde418244f6aca999b5b1edaeeeb009b Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 27 Nov 2013 22:37:52 +0100
-Subject: [PATCH] util: fix handling of trailing whitespace in split_quoted()
-
-Inspired by a patch by Lukas Nykryn.
-
-Conflicts:
-	src/test/test-strv.c
----
- src/shared/util.c    | 24 +++++++++++++++---------
- src/test/test-strv.c | 26 ++++++++++++++++++++++++++
- 2 files changed, 41 insertions(+), 9 deletions(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index f602625..b1a4006 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -370,17 +370,21 @@ char *split(const char *c, size_t *l, const char *separator, char **state) {
- /* Split a string into words, but consider strings enclosed in '' and
-  * "" as words even if they include spaces. */
- char *split_quoted(const char *c, size_t *l, char **state) {
--        char *current, *e;
-+        const char *current, *e;
-         bool escaped = false;
- 
--        current = *state ? *state : (char*) c;
-+        assert(c);
-+        assert(l);
-+        assert(state);
- 
--        if (!*current || *c == 0)
--                return NULL;
-+        current = *state ? *state : c;
- 
-         current += strspn(current, WHITESPACE);
- 
--        if (*current == '\'') {
-+        if (*current == 0)
-+                return NULL;
-+
-+        else if (*current == '\'') {
-                 current ++;
- 
-                 for (e = current; *e; e++) {
-@@ -393,7 +397,8 @@ char *split_quoted(const char *c, size_t *l, char **state) {
-                 }
- 
-                 *l = e-current;
--                *state = *e == 0 ? e : e+1;
-+                *state = (char*) (*e == 0 ? e : e+1);
-+
-         } else if (*current == '\"') {
-                 current ++;
- 
-@@ -407,7 +412,8 @@ char *split_quoted(const char *c, size_t *l, char **state) {
-                 }
- 
-                 *l = e-current;
--                *state = *e == 0 ? e : e+1;
-+                *state = (char*) (*e == 0 ? e : e+1);
-+
-         } else {
-                 for (e = current; *e; e++) {
-                         if (escaped)
-@@ -418,10 +424,10 @@ char *split_quoted(const char *c, size_t *l, char **state) {
-                                 break;
-                 }
-                 *l = e-current;
--                *state = e;
-+                *state = (char*) e;
-         }
- 
--        return (char*) current;
-+        return current;
- }
- 
- int get_parent_of_pid(pid_t pid, pid_t *_ppid) {
-diff --git a/src/test/test-strv.c b/src/test/test-strv.c
-index c3d536d..ed26ad1 100644
---- a/src/test/test-strv.c
-+++ b/src/test/test-strv.c
-@@ -156,6 +156,20 @@ static void test_strv_quote_unquote(const char* const *split, const char *quoted
-         }
- }
- 
-+static void test_strv_quote_unquote2(const char *quoted, const char ** list) {
-+        _cleanup_strv_free_ char **s;
-+        unsigned i = 0;
-+        char **t;
-+
-+        s = strv_split_quoted(quoted);
-+        assert_se(s);
-+
-+        STRV_FOREACH(t, s)
-+                assert_se(streq(list[i++], *t));
-+
-+        assert_se(list[i] == NULL);
-+}
-+
- static void test_strv_split_nulstr(void) {
-         _cleanup_strv_free_ char **l = NULL;
-         const char nulstr[] = "str0\0str1\0str2\0str3\0";
-@@ -309,6 +323,18 @@ int main(int argc, char *argv[]) {
-         test_strv_quote_unquote(input_table_quotes, QUOTES_STRING);
-         test_strv_quote_unquote(input_table_spaces, SPACES_STRING);
- 
-+        test_strv_quote_unquote2("    foo=bar     \"waldo\"    zzz    ", (const char*[]) { "foo=bar", "waldo", "zzz", NULL });
-+        test_strv_quote_unquote2("", (const char*[]) { NULL });
-+        test_strv_quote_unquote2(" ", (const char*[]) { NULL });
-+        test_strv_quote_unquote2("   ", (const char*[]) { NULL });
-+        test_strv_quote_unquote2("   x", (const char*[]) { "x", NULL });
-+        test_strv_quote_unquote2("x   ", (const char*[]) { "x", NULL });
-+        test_strv_quote_unquote2("  x   ", (const char*[]) { "x", NULL });
-+        test_strv_quote_unquote2("  \"x\"   ", (const char*[]) { "x", NULL });
-+        test_strv_quote_unquote2("  \'x\'   ", (const char*[]) { "x", NULL });
-+        test_strv_quote_unquote2("  \'x\"\'   ", (const char*[]) { "x\"", NULL });
-+        test_strv_quote_unquote2("  \"x\'\"   ", (const char*[]) { "x\'", NULL });
-+
-         test_strv_split_nulstr();
-         test_strv_parse_nulstr();
-         test_strv_overlap();
diff --git a/SOURCES/0050-man-Improve-the-description-of-parameter-X-in-tmpfil.patch b/SOURCES/0050-man-Improve-the-description-of-parameter-X-in-tmpfil.patch
deleted file mode 100644
index c6d99c6..0000000
--- a/SOURCES/0050-man-Improve-the-description-of-parameter-X-in-tmpfil.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From fb8be2cd82a3e00fdbe506e163fdf599e0bd5bd2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= <vpavlin@redhat.com>
-Date: Thu, 3 Oct 2013 15:47:26 +0200
-Subject: [PATCH] man: Improve the description of parameter X in tmpfiles.d
- page
-
----
- man/tmpfiles.d.xml | 21 ++++++++++++---------
- 1 file changed, 12 insertions(+), 9 deletions(-)
-
-diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
-index 9fc4b7c..e8b630d 100644
---- a/man/tmpfiles.d.xml
-+++ b/man/tmpfiles.d.xml
-@@ -184,15 +184,18 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                                 <varlistentry>
-                                         <term><varname>X</varname></term>
-                                         <listitem><para>Ignore a path
--                                        during cleanup. Use this type
--                                        to prevent path removal as
--                                        controlled with the Age parameter.
--                                        Note that if path is a directory,
--                                        content of a directory is not
--                                        excluded from clean-up, only
--                                        directory itself. Lines of this
--                                        type accept shell-style globs
--                                        in place of normal path
-+                                        during cleaning. Use this type
-+                                        to exclude paths from clean-up
-+                                        as controlled with the Age
-+                                        parameter. Unlike x this
-+                                        parameter will not exclude the
-+                                        content if path is a directory,
-+                                        but only directory itself.
-+                                        Note that lines of this type do
-+                                        not influence the effect of r
-+                                        or R lines. Lines of this type
-+                                        accept shell-style globs in
-+                                        place of normal path
-                                         names.</para></listitem>
-                                 </varlistentry>
- 
diff --git a/SOURCES/0050-man-make-bootup-graph-consistent.patch b/SOURCES/0050-man-make-bootup-graph-consistent.patch
new file mode 100644
index 0000000..619887d
--- /dev/null
+++ b/SOURCES/0050-man-make-bootup-graph-consistent.patch
@@ -0,0 +1,23 @@
+From d65ce525915a604d31cda80b5d7a8d639fb5cbb9 Mon Sep 17 00:00:00 2001
+From: Chris Morin <chris.morin2@gmail.com>
+Date: Wed, 4 Feb 2015 14:54:34 -0500
+Subject: [PATCH] man: make bootup graph consistent
+
+(cherry picked from commit b44787bd437f4051660272b37bd6f75392f17931)
+---
+ man/bootup.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/bootup.xml b/man/bootup.xml
+index d97d550..b92057a 100644
+--- a/man/bootup.xml
++++ b/man/bootup.xml
+@@ -134,7 +134,7 @@
+          v                  v                  |                    v              <emphasis>rescue.target</emphasis>
+    timers.target      paths.target             |             sockets.target
+          |                  |                  |                    |
+-         v                  |_________________ | ___________________/
++         v                  \_________________ | ___________________/
+                                               \|/
+                                                v
+                                          basic.target
diff --git a/SOURCES/0051-coredumpctl-in-case-of-error-free-pattern-after-prin.patch b/SOURCES/0051-coredumpctl-in-case-of-error-free-pattern-after-prin.patch
deleted file mode 100644
index ec5fa69..0000000
--- a/SOURCES/0051-coredumpctl-in-case-of-error-free-pattern-after-prin.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 70a0ba4546c69646ef7b220fb5e753416443d5b2 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Tue, 14 Jan 2014 15:40:16 +0100
-Subject: [PATCH] coredumpctl: in case of error free pattern after print
-
----
- src/journal/coredumpctl.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c
-index 75c96cc..356d03d 100644
---- a/src/journal/coredumpctl.c
-+++ b/src/journal/coredumpctl.c
-@@ -126,10 +126,11 @@ static int add_match(Set *set, const char *match) {
-                 goto fail;
- 
-         log_debug("Adding pattern: %s", pattern);
--        r = set_consume(set, pattern);
-+        r = set_put(set, pattern);
-         if (r < 0) {
-                 log_error("Failed to add pattern '%s': %s",
-                           pattern, strerror(-r));
-+                free(pattern);
-                 goto fail;
-         }
- 
diff --git a/SOURCES/0051-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch b/SOURCES/0051-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch
new file mode 100644
index 0000000..4f45b9e
--- /dev/null
+++ b/SOURCES/0051-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch
@@ -0,0 +1,23 @@
+From 3af8c723aebecb5d220fdb5b1fb80a097c366db1 Mon Sep 17 00:00:00 2001
+From: Jan Synacek <jsynacek@redhat.com>
+Date: Mon, 23 Feb 2015 15:22:40 +0100
+Subject: [PATCH] nspawn: fix whitespace and typo in partition table blurb
+
+(cherry picked from commit 4aab5d0cbd979b2cccb88534f118bceaa86466d8)
+---
+ src/nspawn/nspawn.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index fb67251..7724df9 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -2676,7 +2676,7 @@ static int setup_image(char **device_path, int *loop_nr) {
+ 
+ #define PARTITION_TABLE_BLURB \
+         "Note that the disk image needs to either contain only a single MBR partition of\n" \
+-        "type 0x83 that is marked bootable, or a sinlge GPT partition of type" \
++        "type 0x83 that is marked bootable, or a single GPT partition of type " \
+         "0FC63DAF-8483-4772-8E79-3D69D8477DE4 or follow\n" \
+         "    http://www.freedesktop.org/wiki/Specifications/DiscoverablePartitionsSpec/\n" \
+         "to be bootable with systemd-nspawn."
diff --git a/SOURCES/0052-man-explain-time-units-in-tmpfiles.patch b/SOURCES/0052-man-explain-time-units-in-tmpfiles.patch
new file mode 100644
index 0000000..67e2eb8
--- /dev/null
+++ b/SOURCES/0052-man-explain-time-units-in-tmpfiles.patch
@@ -0,0 +1,53 @@
+From 6995221c988db99faa5de5ed948466e1982d9d9d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 23 Feb 2015 18:59:17 -0500
+Subject: [PATCH] man: explain time units in tmpfiles
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1195294
+(cherry picked from commit 00c53f4283ca41878a84b370840a84760b00d46e)
+---
+ man/tmpfiles.d.xml | 29 ++++++++++++++---------------
+ 1 file changed, 14 insertions(+), 15 deletions(-)
+
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index 8815bf9..4bd0fcf 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -443,23 +443,22 @@
+       delete when cleaning. If a file or directory is older than the
+       current time minus the age field, it is deleted. The field
+       format is a series of integers each followed by one of the
+-      following postfixes for the respective time units:</para>
+-
+-      <variablelist>
+-        <varlistentry>
+-          <term><varname>s</varname></term>
+-          <term><varname>min</varname></term>
+-          <term><varname>h</varname></term>
+-          <term><varname>d</varname></term>
+-          <term><varname>w</varname></term>
+-          <term><varname>ms</varname></term>
+-          <term><varname>m</varname></term>
+-        <term><varname>us</varname></term></varlistentry>
+-      </variablelist>
++      following postfixes for the respective time units:
++      <constant>s</constant>,
++      <constant>m</constant> or <constant>min</constant>,
++      <constant>h</constant>,
++      <constant>d</constant>,
++      <constant>w</constant>,
++      <constant>ms</constant>,
++      <constant>us</constant>,
++      respectively meaning seconds, minutes, hours, days, weeks,
++      milliseconds, and microseconds. Full names of the time units can
++      be used too.
++      </para>
+ 
+       <para>If multiple integers and units are specified, the time
+-      values are summed up. If an integer is given without a unit,
+-      <varname>s</varname> is assumed.
++      values are summed. If an integer is given without a unit,
++      <constant>s</constant> is assumed.
+       </para>
+ 
+       <para>When the age is set to zero, the files are cleaned
diff --git a/SOURCES/0052-udev-net_id-Introduce-predictable-network-names-for-.patch b/SOURCES/0052-udev-net_id-Introduce-predictable-network-names-for-.patch
deleted file mode 100644
index 463d571..0000000
--- a/SOURCES/0052-udev-net_id-Introduce-predictable-network-names-for-.patch
+++ /dev/null
@@ -1,142 +0,0 @@
-From 08f8572347ca597147ab761d425e4480885e1995 Mon Sep 17 00:00:00 2001
-From: Hendrik Brueckner <brueckner@redhat.com>
-Date: Thu, 9 Jan 2014 11:28:12 +0100
-Subject: [PATCH] udev/net_id: Introduce predictable network names for Linux on
- System z
-
-Use the bus-ID to create predicatable devices names for network interfaces
-on Linux on System z instances.  The bus-ID identifies a device in the s390
-channel subsystem.
-
-Network interfaces of device type Ethernet are named as:
-    enccw0.0.1234    (13 characters)
-up to
-    enccwff.7.ffff   (14 characters)
-
-CTC network devices of device type SLIP, use a different prefix as follows:
-    slccw0.0.1234    (13 characters)
-
-See also Red Hat Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=870859
-[tomegun: typical problem of netdevs switching names between reboots.]
-
-Conflicts:
-	src/udev/udev-builtin-net_id.c
----
- src/udev/udev-builtin-net_id.c | 64 ++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 62 insertions(+), 2 deletions(-)
-
-diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
-index 9ae8f08..d9de46d 100644
---- a/src/udev/udev-builtin-net_id.c
-+++ b/src/udev/udev-builtin-net_id.c
-@@ -28,6 +28,7 @@
-  *
-  * Two character prefixes based on the type of interface:
-  *   en -- ethernet
-+ *   sl -- serial line IP (slip)
-  *   wl -- wlan
-  *   ww -- wwan
-  *
-@@ -101,6 +102,7 @@ enum netname_type{
-         NET_PCI,
-         NET_USB,
-         NET_BCMA,
-+        NET_CCWGROUP,
- };
- 
- struct netnames {
-@@ -118,6 +120,8 @@ struct netnames {
-         char usb_ports[IFNAMSIZ];
- 
-         char bcma_core[IFNAMSIZ];
-+
-+        char ccw_core[IFNAMSIZ];
- };
- 
- /* retrieve on-board index number and label from firmware */
-@@ -351,6 +355,44 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) {
-         return 0;
- }
- 
-+static int names_ccw(struct  udev_device *dev, struct netnames *names) {
-+        struct udev_device *cdev;
-+        const char *bus_id;
-+        size_t bus_id_len;
-+        int rc;
-+
-+        /* Retrieve the associated CCW device */
-+        cdev = udev_device_get_parent(dev);
-+        if (!cdev)
-+                return -ENOENT;
-+
-+        /* Network devices are always grouped CCW devices */
-+        if (!streq_ptr("ccwgroup", udev_device_get_subsystem(cdev)))
-+                return -ENOENT;
-+
-+        /* Retrieve bus-ID of the grouped 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.
-+         */
-+        bus_id = udev_device_get_sysname(cdev);
-+        if (!bus_id)
-+                return -ENOENT;
-+
-+        /* Check the length of the bus-ID.  Rely on that the kernel provides
-+         * a correct bus-ID; alternatively, improve this check and parse and
-+         * verify each bus-ID part...
-+         */
-+        bus_id_len = strlen(bus_id);
-+        if (!bus_id_len || bus_id_len < 8 || bus_id_len > 9)
-+                return -EINVAL;
-+
-+        /* Store the CCW bus-ID for use as network device name */
-+        rc = snprintf(names->ccw_core, sizeof(names->ccw_core), "ccw%s", bus_id);
-+        if (rc >= 0 && rc < (int)sizeof(names->ccw_core))
-+                names->type = NET_CCWGROUP;
-+        return 0;
-+}
-+
- static int names_mac(struct udev_device *dev, struct netnames *names) {
-         const char *s;
-         unsigned int i;
-@@ -409,13 +451,21 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
-         struct netnames names = {};
-         int err;
- 
--        /* handle only ARPHRD_ETHER devices */
-+        /* handle only ARPHRD_ETHER and ARPHRD_SLIP devices */
-         s = udev_device_get_sysattr_value(dev, "type");
-         if (!s)
-                 return EXIT_FAILURE;
-         i = strtoul(s, NULL, 0);
--        if (i != 1)
-+        switch (i) {
-+        case 1: /* ARPHRD_ETHER */
-+                prefix = "en";
-+                break;
-+        case 256: /* ARPHRD_SLIP */
-+                prefix = "sl";
-+                break;
-+        default:
-                 return 0;
-+        }
- 
-         /* skip stacked devices, like VLANs, ... */
-         s = udev_device_get_sysattr_value(dev, "ifindex");
-@@ -447,6 +497,16 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool
-                 ieee_oui(dev, &names, test);
-         }
- 
-+        /* get path names for Linux on System z network devices */
-+        err = names_ccw(dev, &names);
-+        if (err >= 0 && names.type == NET_CCWGROUP) {
-+                char str[IFNAMSIZ];
-+
-+                if (snprintf(str, sizeof(str), "%s%s", prefix, names.ccw_core) < (int)sizeof(str))
-+                        udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str);
-+                goto out;
-+        }
-+
-         /* get PCI based path names, we compose only PCI based paths */
-         err = names_pci(dev, &names);
-         if (err < 0)
diff --git a/SOURCES/0053-systemctl-check-validity-of-PID-we-received.patch b/SOURCES/0053-systemctl-check-validity-of-PID-we-received.patch
new file mode 100644
index 0000000..24222fb
--- /dev/null
+++ b/SOURCES/0053-systemctl-check-validity-of-PID-we-received.patch
@@ -0,0 +1,33 @@
+From 3b573e5c39f452f98084b3d36486369882455b72 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 7 Feb 2015 11:16:04 -0500
+Subject: [PATCH] systemctl: check validity of PID we received
+
+(cherry picked from commit d028e01814a405e83c400c60545785d35dba2a17)
+---
+ src/systemctl/systemctl.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 6b93ec8..3da4d3d 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -2881,6 +2881,9 @@ static int check_inhibitors(sd_bus *bus, enum action a) {
+                 if (!sv)
+                         return log_oom();
+ 
++                if ((pid_t) pid < 0)
++                        return log_error_errno(ERANGE, "Bad PID %"PRIu32": %m", pid);
++
+                 if (!strv_contains(sv,
+                                   a == ACTION_HALT ||
+                                   a == ACTION_POWEROFF ||
+@@ -2892,7 +2895,7 @@ static int check_inhibitors(sd_bus *bus, enum action a) {
+                 user = uid_to_name(uid);
+ 
+                 log_warning("Operation inhibited by \"%s\" (PID "PID_FMT" \"%s\", user %s), reason is \"%s\".",
+-                            who, pid, strna(comm), strna(user), why);
++                            who, (pid_t) pid, strna(comm), strna(user), why);
+ 
+                 c++;
+         }
diff --git a/SOURCES/0053-tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch b/SOURCES/0053-tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch
deleted file mode 100644
index ecb2e74..0000000
--- a/SOURCES/0053-tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 5d27397f97e26c9b1e9f01f041c2e68cbfb41eb3 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 9 Jan 2014 18:00:50 +0100
-Subject: [PATCH] tmpfiles: don't allow label_fix to print ENOENT when we want
- to ignore it
-
----
- src/tmpfiles/tmpfiles.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 239e56b..9a397af 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -434,8 +434,6 @@ finish:
- }
- 
- static int item_set_perms_full(Item *i, const char *path, bool ignore_enoent) {
--        int r;
--
-         /* not using i->path directly because it may be a glob */
-         if (i->mode_set)
-                 if (chmod(path, i->mode) < 0) {
-@@ -456,8 +454,7 @@ static int item_set_perms_full(Item *i, const char *path, bool ignore_enoent) {
-                         }
-                 }
- 
--        r = label_fix(path, false, false);
--        return r == -ENOENT && ignore_enoent ? 0 : r;
-+        return label_fix(path, ignore_enoent, false);
- }
- 
- static int item_set_perms(Item *i, const char *path) {
diff --git a/SOURCES/0054-delta-ensure-that-d_type-will-be-set-on-every-fs.patch b/SOURCES/0054-delta-ensure-that-d_type-will-be-set-on-every-fs.patch
deleted file mode 100644
index ee073d0..0000000
--- a/SOURCES/0054-delta-ensure-that-d_type-will-be-set-on-every-fs.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 8d48fb915cbfa1b4ad594b597f2567d682bfc635 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 9 Jan 2014 16:43:00 +0100
-Subject: [PATCH] delta: ensure that d_type will be set on every fs
-
----
- src/delta/delta.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/delta/delta.c b/src/delta/delta.c
-index b3272d9..193642d 100644
---- a/src/delta/delta.c
-+++ b/src/delta/delta.c
-@@ -291,6 +291,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
-                 if (!de)
-                         break;
- 
-+                dirent_ensure_type(d, de);
-+
-                 if (dropins && de->d_type == DT_DIR && endswith(de->d_name, ".d"))
-                         enumerate_dir_d(top, bottom, drops, path, de->d_name);
- 
diff --git a/SOURCES/0054-systemctl-support-auditd.service-better.patch b/SOURCES/0054-systemctl-support-auditd.service-better.patch
new file mode 100644
index 0000000..acac2ef
--- /dev/null
+++ b/SOURCES/0054-systemctl-support-auditd.service-better.patch
@@ -0,0 +1,85 @@
+From 98d1fe84e1eac91563bff326539465cd34e971c0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 7 Feb 2015 11:35:37 -0500
+Subject: [PATCH] systemctl: support auditd.service better
+
+We would print the filename header before trying to open the file. But since
+the header was printed to stdout, and the error to stderr, the error would appear
+on the terminal before the header. It is cleaner to open the file first, then
+and only then print the header.
+
+Also exit on first error. We shouldn't report success if we were unable to open
+a file.
+
+(cherry picked from commit 8527b07be1c5211b50a1a6496585952857a25c73)
+---
+ src/systemctl/systemctl.c | 46 +++++++++++++++++++++++-----------------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 3da4d3d..4ec0cff 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -4555,6 +4555,23 @@ static int init_home_and_lookup_paths(char **user_home, char **user_runtime, Loo
+         return 0;
+ }
+ 
++static int cat_file(const char *filename, bool newline) {
++        _cleanup_close_ int fd;
++
++        fd = open(filename, O_RDONLY|O_CLOEXEC|O_NOCTTY);
++        if (fd < 0)
++                return -errno;
++
++        printf("%s%s# %s%s\n",
++               newline ? "\n" : "",
++               ansi_highlight_blue(),
++               filename,
++               ansi_highlight_off());
++        fflush(stdout);
++
++        return copy_bytes(fd, STDOUT_FILENO, (off_t) -1, false);
++}
++
+ static int cat(sd_bus *bus, char **args) {
+         _cleanup_free_ char *user_home = NULL;
+         _cleanup_free_ char *user_runtime = NULL;
+@@ -4600,32 +4617,15 @@ static int cat(sd_bus *bus, char **args) {
+                         puts("");
+ 
+                 if (fragment_path) {
+-                        printf("%s# %s%s\n",
+-                               ansi_highlight_blue(),
+-                               fragment_path,
+-                               ansi_highlight_off());
+-                        fflush(stdout);
+-
+-                        r = copy_file_fd(fragment_path, STDOUT_FILENO, false);
+-                        if (r < 0) {
+-                                log_warning_errno(r, "Failed to cat %s: %m", fragment_path);
+-                                continue;
+-                        }
++                        r = cat_file(fragment_path, false);
++                        if (r < 0)
++                                return log_warning_errno(r, "Failed to cat %s: %m", fragment_path);
+                 }
+ 
+                 STRV_FOREACH(path, dropin_paths) {
+-                        printf("%s%s# %s%s\n",
+-                               isempty(fragment_path) && path == dropin_paths ? "" : "\n",
+-                               ansi_highlight_blue(),
+-                               *path,
+-                               ansi_highlight_off());
+-                        fflush(stdout);
+-
+-                        r = copy_file_fd(*path, STDOUT_FILENO, false);
+-                        if (r < 0) {
+-                                log_warning_errno(r, "Failed to cat %s: %m", *path);
+-                                continue;
+-                        }
++                        r = cat_file(*path, path == dropin_paths);
++                        if (r < 0)
++                                return log_warning_errno(r, "Failed to cat %s: %m", *path);
+                 }
+         }
+ 
diff --git a/SOURCES/0055-shared-unit-name-fix-gcc5-warning.patch b/SOURCES/0055-shared-unit-name-fix-gcc5-warning.patch
new file mode 100644
index 0000000..b29d183
--- /dev/null
+++ b/SOURCES/0055-shared-unit-name-fix-gcc5-warning.patch
@@ -0,0 +1,31 @@
+From 10cfa6f617fdc2b9d85823163b4445f5ae9058c5 Mon Sep 17 00:00:00 2001
+From: Daniel Mack <daniel@zonque.org>
+Date: Tue, 24 Feb 2015 16:18:43 +0100
+Subject: [PATCH] shared/unit-name: fix gcc5 warning
+
+Fix the following gcc5 warning:
+
+  CC       src/shared/libsystemd_shared_la-unit-name.lo
+src/shared/unit-name.c: In function 'unit_name_is_valid':
+src/shared/unit-name.c:102:34: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
+                 if (!template_ok == TEMPLATE_VALID && at+1 == e)
+                                  ^
+
+(cherry picked from commit f9bf3e260c480f7b660bec3f78a13f52a46ec34d)
+---
+ src/shared/unit-name.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
+index 21b6691..f728af4 100644
+--- a/src/shared/unit-name.c
++++ b/src/shared/unit-name.c
+@@ -100,7 +100,7 @@ bool unit_name_is_valid(const char *n, enum template_valid template_ok) {
+                 if (at == n)
+                         return false;
+ 
+-                if (!template_ok == TEMPLATE_VALID && at+1 == e)
++                if (template_ok != TEMPLATE_VALID && at+1 == e)
+                         return false;
+         }
+ 
diff --git a/SOURCES/0055-shell-completion-dump-has-moved-to-systemd-analyze.patch b/SOURCES/0055-shell-completion-dump-has-moved-to-systemd-analyze.patch
deleted file mode 100644
index 041deda..0000000
--- a/SOURCES/0055-shell-completion-dump-has-moved-to-systemd-analyze.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 544af839ed7dd06d20fb4efd201dd93dc0e98a15 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 21 Oct 2013 18:53:57 -0400
-Subject: [PATCH] shell-completion: dump has moved to systemd-analyze
-
-Rename NO_OPTION to STANDALONE for consistency with other files.
----
- shell-completion/bash/systemctl       | 2 +-
- shell-completion/bash/systemd-analyze | 4 ++--
- shell-completion/zsh/_systemctl       | 3 +--
- shell-completion/zsh/_systemd-analyze | 1 +
- 4 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
-index e335ee8..eea4b6d 100644
---- a/shell-completion/bash/systemctl
-+++ b/shell-completion/bash/systemctl
-@@ -137,7 +137,7 @@ _systemctl () {
-                      [JOBS]='cancel'
-                 [SNAPSHOTS]='delete'
-                      [ENVS]='set-environment unset-environment'
--               [STANDALONE]='daemon-reexec daemon-reload default dump
-+               [STANDALONE]='daemon-reexec daemon-reload default
-                              emergency exit halt hibernate hybrid-sleep kexec list-jobs
-                              list-sockets list-units list-unit-files poweroff reboot rescue
-                              show-environment suspend get-default'
-diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze
-index 5bd6768..b65466b 100644
---- a/shell-completion/bash/systemd-analyze
-+++ b/shell-completion/bash/systemd-analyze
-@@ -31,7 +31,7 @@ _systemd_analyze() {
-         local OPTS='--help --version --system --user --from-pattern --to-pattern --order --require'
- 
-         local -A VERBS=(
--                [NO_OPTION]='time blame plot'
-+                [STANDALONE]='time blame plot dump'
-                 [CRITICAL_CHAIN]='critical-chain'
-                 [DOT]='dot'
-                 [LOG_LEVEL]='set-log-level'
-@@ -55,7 +55,7 @@ _systemd_analyze() {
-         if [[ -z $verb ]]; then
-                 comps=${VERBS[*]}
- 
--        elif __contains_word "$verb" ${VERBS[NO_OPTION]}; then
-+        elif __contains_word "$verb" ${VERBS[STANDALONE]}; then
-                 if [[ $cur = -* ]]; then
-                         comps='--help --version --system --user'
-                 fi
-diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl
-index 298e97e..3959cd5 100644
---- a/shell-completion/zsh/_systemctl
-+++ b/shell-completion/zsh/_systemctl
-@@ -38,7 +38,6 @@
-     "is-enabled:Check whether unit files are enabled"
-     "list-jobs:List jobs"
-     "cancel:Cancel all, one, or more jobs"
--    "dump:Dump server status"
-     "snapshot:Create a snapshot"
-     "delete:Remove one or more snapshots"
-     "show-environment:Dump environment"
-@@ -264,7 +263,7 @@ done
- (( $+functions[_systemctl_link] )) || _systemctl_link() { _files }
- 
- # no systemctl completion for:
--#    [STANDALONE]='daemon-reexec daemon-reload default dump
-+#    [STANDALONE]='daemon-reexec daemon-reload default
- #                  emergency exit halt kexec list-jobs list-units
- #                  list-unit-files poweroff reboot rescue show-environment'
- #         [NAME]='snapshot load'
-diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze
-index 37c60f5..2eda5fe 100644
---- a/shell-completion/zsh/_systemd-analyze
-+++ b/shell-completion/zsh/_systemd-analyze
-@@ -15,6 +15,7 @@ _systemd_analyze_command(){
-         'critical-chain:Print a tree of the time critical chain of units'
-         'plot:Output SVG graphic showing service initialization'
-         'dot:Dump dependency graph (in dot(1) format)'
-+        'dump:Dump server status'
-         'set-log-level:Set systemd log threshold'
-     )
- 
diff --git a/SOURCES/0056-shell-completion-remove-load-from-systemctl.patch b/SOURCES/0056-shell-completion-remove-load-from-systemctl.patch
deleted file mode 100644
index 7227e58..0000000
--- a/SOURCES/0056-shell-completion-remove-load-from-systemctl.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 9e658a10c1de26c8b4a18a7e55440bb8bd819f20 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Wed, 15 Jan 2014 15:31:07 +0100
-Subject: [PATCH] shell-completion: remove load from systemctl
-
-Conflicts:
-	shell-completion/bash/systemctl
----
- shell-completion/bash/systemctl | 2 +-
- shell-completion/zsh/_systemctl | 3 +--
- 2 files changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
-index eea4b6d..84149e3 100644
---- a/shell-completion/bash/systemctl
-+++ b/shell-completion/bash/systemctl
-@@ -141,7 +141,7 @@ _systemctl () {
-                              emergency exit halt hibernate hybrid-sleep kexec list-jobs
-                              list-sockets list-units list-unit-files poweroff reboot rescue
-                              show-environment suspend get-default'
--                     [NAME]='snapshot load'
-+                     [NAME]='snapshot'
-                      [FILE]='link'
-                   [TARGETS]='set-default'
-         )
-diff --git a/shell-completion/zsh/_systemctl b/shell-completion/zsh/_systemctl
-index 3959cd5..6d98cb6 100644
---- a/shell-completion/zsh/_systemctl
-+++ b/shell-completion/zsh/_systemctl
-@@ -24,7 +24,6 @@
-     "status:Show runtime status of one or more units"
-     "show:Show properties of one or more units/jobs or the manager"
-     "reset-failed:Reset failed state for all, one, or more units"
--    "load:Load one or more units"
-     "list-unit-files:List installed unit files"
-     "enable:Enable one or more unit files"
-     "disable:Disable one or more unit files"
-@@ -266,7 +265,7 @@ done
- #    [STANDALONE]='daemon-reexec daemon-reload default
- #                  emergency exit halt kexec list-jobs list-units
- #                  list-unit-files poweroff reboot rescue show-environment'
--#         [NAME]='snapshot load'
-+#         [NAME]='snapshot'
- 
- _systemctl_caching_policy()
- {
diff --git a/SOURCES/0056-test-hashmap-fix-gcc5-warning.patch b/SOURCES/0056-test-hashmap-fix-gcc5-warning.patch
new file mode 100644
index 0000000..f60caba
--- /dev/null
+++ b/SOURCES/0056-test-hashmap-fix-gcc5-warning.patch
@@ -0,0 +1,32 @@
+From a4409b8ae6b80acffc9a4f89df2d06c498b8c8f9 Mon Sep 17 00:00:00 2001
+From: Daniel Mack <daniel@zonque.org>
+Date: Tue, 24 Feb 2015 16:24:14 +0100
+Subject: [PATCH] test-hashmap: fix gcc5 warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+gcc5 spits out a warning about test-hashmap.c:
+
+  CC       src/test/test-hashmap.o
+src/test/test-hashmap.c: In function ‘test_string_compare_func’:
+src/test/test-hashmap.c:76:79: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
+
+(cherry picked from commit 4b3eff61640672bf0b19cb8cdd88ce5e84dcda1c)
+---
+ src/test/test-hashmap.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/test/test-hashmap.c b/src/test/test-hashmap.c
+index 6900da9..351563b 100644
+--- a/src/test/test-hashmap.c
++++ b/src/test/test-hashmap.c
+@@ -75,7 +75,7 @@ static void test_trivial_compare_func(void) {
+ }
+ 
+ static void test_string_compare_func(void) {
+-        assert_se(!string_compare_func("fred", "wilma") == 0);
++        assert_se(string_compare_func("fred", "wilma") != 0);
+         assert_se(string_compare_func("fred", "fred") == 0);
+ }
+ 
diff --git a/SOURCES/0057-Fix-SELinux-check-for-transient-units.-1008864.patch b/SOURCES/0057-Fix-SELinux-check-for-transient-units.-1008864.patch
deleted file mode 100644
index e456505..0000000
--- a/SOURCES/0057-Fix-SELinux-check-for-transient-units.-1008864.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 96bb682b6fa33faaff5c3db7506e9864fe5c09dc Mon Sep 17 00:00:00 2001
-From: Dan Walsh <dwalsh@redhat.com>
-Date: Thu, 16 Jan 2014 12:59:10 +0100
-Subject: [PATCH] Fix SELinux check for transient units. (#1008864)
-
-SELinux does not have a path to check for a snapshot servic creation.
-This ends up giving us a bogus check.
-
-On snapshot creation we should check if the remote process type, has the ability to start a service with the type that systemd is running with.
----
- src/core/dbus-manager.c   |  6 +++---
- src/core/selinux-access.c |  9 +++++----
- src/core/selinux-access.h | 13 +++++++++++++
- 3 files changed, 21 insertions(+), 7 deletions(-)
-
-diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
-index 8f4d017..7be5d13 100644
---- a/src/core/dbus-manager.c
-+++ b/src/core/dbus-manager.c
-@@ -1102,7 +1102,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 dbus_bool_t cleanup;
-                 Snapshot *s;
- 
--                SELINUX_ACCESS_CHECK(connection, message, "start");
-+                SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, "start");
- 
-                 if (!dbus_message_get_args(
-                                     message,
-@@ -1155,7 +1155,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                         return bus_send_error_reply(connection, message, &error, -ENOENT);
-                 }
- 
--                SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop");
-+                SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, "stop");
-                 snapshot_remove(SNAPSHOT(u));
- 
-                 reply = dbus_message_new_method_return(message);
-@@ -1765,7 +1765,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 if (r < 0)
-                         return bus_send_error_reply(connection, message, &error, r);
- 
--                SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start");
-+                SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, "start");
- 
-                 if (u->load_state != UNIT_NOT_FOUND || set_size(u->dependencies[UNIT_REFERENCED_BY]) > 0) {
-                         dbus_set_error(&error, BUS_ERROR_UNIT_EXISTS, "Unit %s already exists.", name);
-diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
-index 0a3ee18..5d85b26 100644
---- a/src/core/selinux-access.c
-+++ b/src/core/selinux-access.c
-@@ -374,8 +374,9 @@ int selinux_access_check(
-                 goto finish;
-         }
- 
--        if (path) {
--                tclass = "service";
-+
-+        tclass = "service";
-+        if (path && !strneq(path,"system", strlen("system"))) {
-                 /* get the file context of the unit file */
-                 r = getfilecon(path, &fcon);
-                 if (r < 0) {
-@@ -384,9 +385,9 @@ int selinux_access_check(
-                         log_error("Failed to get security context on %s: %m",path);
-                         goto finish;
-                 }
--
-         } else {
--                tclass = "system";
-+                if (path)
-+                        tclass = "system";
-                 r = getcon(&fcon);
-                 if (r < 0) {
-                         dbus_set_error(error, DBUS_ERROR_ACCESS_DENIED, "Failed to get current context.");
-diff --git a/src/core/selinux-access.h b/src/core/selinux-access.h
-index 2d7ac64..92acd69 100644
---- a/src/core/selinux-access.h
-+++ b/src/core/selinux-access.h
-@@ -36,6 +36,18 @@ int selinux_access_check(DBusConnection *connection, DBusMessage *message, const
-                 DBusConnection *_c = (connection);                      \
-                 DBusMessage *_m = (message);                            \
-                 dbus_error_init(&_error);                               \
-+                _r = selinux_access_check(_c, _m, "system", (permission), &_error); \
-+                if (_r < 0)                                             \
-+                        return bus_send_error_reply(_c, _m, &_error, _r); \
-+        } while (false)
-+
-+#define SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, permission) \
-+        do {                                                            \
-+                DBusError _error;                                       \
-+                int _r;                                                 \
-+                DBusConnection *_c = (connection);                      \
-+                DBusMessage *_m = (message);                            \
-+                dbus_error_init(&_error);                               \
-                 _r = selinux_access_check(_c, _m, NULL, (permission), &_error); \
-                 if (_r < 0)                                             \
-                         return bus_send_error_reply(_c, _m, &_error, _r); \
-@@ -57,6 +69,7 @@ int selinux_access_check(DBusConnection *connection, DBusMessage *message, const
- #else
- 
- #define SELINUX_ACCESS_CHECK(connection, message, permission) do { } while (false)
-+#define SELINUX_RUNTIME_UNIT_ACCESS_CHECK(connection, message, permission) do { } while (false)
- #define SELINUX_UNIT_ACCESS_CHECK(unit, connection, message, permission) do { } while (false)
- 
- #endif
diff --git a/SOURCES/0057-shared-fix-wrong-assertion-in-barrier_set_role.patch b/SOURCES/0057-shared-fix-wrong-assertion-in-barrier_set_role.patch
new file mode 100644
index 0000000..227f539
--- /dev/null
+++ b/SOURCES/0057-shared-fix-wrong-assertion-in-barrier_set_role.patch
@@ -0,0 +1,29 @@
+From 5acd5e264d53cf293ac5d2e57371690120fb7119 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Fri, 20 Feb 2015 15:14:56 -0300
+Subject: [PATCH] shared: fix wrong assertion in barrier_set_role()
+
+ assert(b->pipe[0] >= 0 && b->pipe[0] >= 0);
+
+Test the same condition twice, pretty sure we mean
+
+ assert(b->pipe[0] >= 0 && b->pipe[1] >= 0);
+
+(cherry picked from commit 3f7f1fad7621f584d9ce024abb313ecbc9bd0e62)
+---
+ src/shared/barrier.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/barrier.c b/src/shared/barrier.c
+index f65363a..b7dca75 100644
+--- a/src/shared/barrier.c
++++ b/src/shared/barrier.c
+@@ -178,7 +178,7 @@ void barrier_set_role(Barrier *b, unsigned int role) {
+         assert(b);
+         assert(role == BARRIER_PARENT || role == BARRIER_CHILD);
+         /* make sure this is only called once */
+-        assert(b->pipe[1] >= 0 && b->pipe[1] >= 0);
++        assert(b->pipe[0] >= 0 && b->pipe[1] >= 0);
+ 
+         if (role == BARRIER_PARENT)
+                 b->pipe[1] = safe_close(b->pipe[1]);
diff --git a/SOURCES/0058-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch b/SOURCES/0058-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch
deleted file mode 100644
index 2d0a17d..0000000
--- a/SOURCES/0058-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From eaa9e2f4c332d7cf8ee4bc9e377edb2043031e85 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Wed, 2 Oct 2013 13:39:49 +0200
-Subject: [PATCH] acpi-fptd: fix memory leak in acpi_get_boot_usec
-
----
- src/shared/acpi-fpdt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
-index b094f34..a7c83ed 100644
---- a/src/shared/acpi-fpdt.c
-+++ b/src/shared/acpi-fpdt.c
-@@ -81,7 +81,7 @@ struct acpi_fpdt_boot {
- };
- 
- int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
--        char *buf;
-+        _cleanup_free_ char *buf;
-         struct acpi_table_header *tbl;
-         size_t l;
-         struct acpi_fpdt_header *rec;
diff --git a/SOURCES/0058-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/SOURCES/0058-hwdb-Update-database-of-Bluetooth-company-identifier.patch
new file mode 100644
index 0000000..3868550
--- /dev/null
+++ b/SOURCES/0058-hwdb-Update-database-of-Bluetooth-company-identifier.patch
@@ -0,0 +1,60 @@
+From 7958951ba84f870c624b4d2ab452b12c844bde20 Mon Sep 17 00:00:00 2001
+From: Marcel Holtmann <marcel@holtmann.org>
+Date: Wed, 25 Feb 2015 07:27:49 +0100
+Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
+
+(cherry picked from commit 3cabeab1197d3e45f16f514f5a396e0fb311e867)
+---
+ hwdb/20-bluetooth-vendor-product.hwdb | 42 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
+index fb789fd..4fd951a 100644
+--- a/hwdb/20-bluetooth-vendor-product.hwdb
++++ b/hwdb/20-bluetooth-vendor-product.hwdb
+@@ -1430,3 +1430,45 @@ bluetooth:v01D9*
+ 
+ bluetooth:v01DA*
+  ID_VENDOR_FROM_DATABASE=Logitech International SA
++
++bluetooth:v01DB*
++ ID_VENDOR_FROM_DATABASE=Innblue Consulting
++
++bluetooth:v01DC*
++ ID_VENDOR_FROM_DATABASE=iParking Ltd.
++
++bluetooth:v01DD*
++ ID_VENDOR_FROM_DATABASE=Koninklijke Philips Electronics N.V.
++
++bluetooth:v01DE*
++ ID_VENDOR_FROM_DATABASE=Minelab Electronics Pty Limited
++
++bluetooth:v01DF*
++ ID_VENDOR_FROM_DATABASE=Bison Group Ltd.
++
++bluetooth:v01E0*
++ ID_VENDOR_FROM_DATABASE=Widex A/S
++
++bluetooth:v01E1*
++ ID_VENDOR_FROM_DATABASE=Jolla Ltd
++
++bluetooth:v01E2*
++ ID_VENDOR_FROM_DATABASE=Lectronix, Inc.
++
++bluetooth:v01E3*
++ ID_VENDOR_FROM_DATABASE=Caterpillar Inc
++
++bluetooth:v01E4*
++ ID_VENDOR_FROM_DATABASE=Freedom Innovations
++
++bluetooth:v01E5*
++ ID_VENDOR_FROM_DATABASE=Dynamic Devices Ltd
++
++bluetooth:v01E6*
++ ID_VENDOR_FROM_DATABASE=Technology Solutions (UK) Ltd
++
++bluetooth:v01E7*
++ ID_VENDOR_FROM_DATABASE=IPS Group Inc.
++
++bluetooth:v01E8*
++ ID_VENDOR_FROM_DATABASE=STIR
diff --git a/SOURCES/0059-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch b/SOURCES/0059-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch
deleted file mode 100644
index ec6e9d9..0000000
--- a/SOURCES/0059-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9257a03a02a35f12e6d410dd16bf003c9bae742e Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 2 Oct 2013 14:03:56 +0200
-Subject: [PATCH] acpi: make sure we never free an uninitialized pointer
-
----
- src/shared/acpi-fpdt.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
-index a7c83ed..af58c7c 100644
---- a/src/shared/acpi-fpdt.c
-+++ b/src/shared/acpi-fpdt.c
-@@ -81,7 +81,7 @@ struct acpi_fpdt_boot {
- };
- 
- int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
--        _cleanup_free_ char *buf;
-+        _cleanup_free_ char *buf = NULL;
-         struct acpi_table_header *tbl;
-         size_t l;
-         struct acpi_fpdt_header *rec;
diff --git a/SOURCES/0059-journal-make-skipping-of-exhausted-journal-files-eff.patch b/SOURCES/0059-journal-make-skipping-of-exhausted-journal-files-eff.patch
new file mode 100644
index 0000000..160a925
--- /dev/null
+++ b/SOURCES/0059-journal-make-skipping-of-exhausted-journal-files-eff.patch
@@ -0,0 +1,114 @@
+From 0ad01db952718d3437fa8f077a065d17efe5279b Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Tue, 24 Feb 2015 19:45:17 +0100
+Subject: [PATCH] journal: make skipping of exhausted journal files effective
+ again
+
+Commit 668c965af "journal: skipping of exhausted journal files is bad if
+direction changed" fixed a correctness issue, but it also significantly
+limited the cases where the optimization that skips exhausted journal
+files could apply.
+As a result, some journalctl queries are much slower in v219 than in v218.
+(e.g. queries where a "--since" cutoff should have quickly eliminated
+older journal files from consideration, but didn't.)
+
+If already in the initial iteration find_location_with_matches() finds
+no entry, the journal file's location is not updated. This is fine,
+except that:
+ - We must update at least f->last_direction. The optimization relies on
+   it. Let's separate that from journal_file_save_location() and update
+   it immediately after the direction checks.
+ - The optimization was conditional on "f->current_offset > 0", but it
+   would always be 0 in this scenario. This check is unnecessary for the
+   optimization.
+
+(cherry picked from commit 950c07d421c04e5aae99973479f4f13131fb45e1)
+---
+ src/journal/journal-file.c |  3 +--
+ src/journal/journal-file.h |  2 +-
+ src/journal/sd-journal.c   | 24 +++++++++++++++---------
+ 3 files changed, 17 insertions(+), 12 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 0f28718..24c49b9 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -2014,8 +2014,7 @@ void journal_file_reset_location(JournalFile *f) {
+         f->current_xor_hash = 0;
+ }
+ 
+-void journal_file_save_location(JournalFile *f, direction_t direction, Object *o, uint64_t offset) {
+-        f->last_direction = direction;
++void journal_file_save_location(JournalFile *f, Object *o, uint64_t offset) {
+         f->location_type = LOCATION_SEEK;
+         f->current_offset = offset;
+         f->current_seqnum = le64toh(o->entry.seqnum);
+diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
+index 2526e14..403c8f7 100644
+--- a/src/journal/journal-file.h
++++ b/src/journal/journal-file.h
+@@ -199,7 +199,7 @@ int journal_file_find_field_object(JournalFile *f, const void *field, uint64_t s
+ int journal_file_find_field_object_with_hash(JournalFile *f, const void *field, uint64_t size, uint64_t hash, Object **ret, uint64_t *offset);
+ 
+ void journal_file_reset_location(JournalFile *f);
+-void journal_file_save_location(JournalFile *f, direction_t direction, Object *o, uint64_t offset);
++void journal_file_save_location(JournalFile *f, Object *o, uint64_t offset);
+ int journal_file_compare_locations(JournalFile *af, JournalFile *bf);
+ int journal_file_next_entry(JournalFile *f, uint64_t p, direction_t direction, Object **ret, uint64_t *offset);
+ 
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index 94891cd..9b57e59 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -723,13 +723,17 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc
+         assert(j);
+         assert(f);
+ 
+-        if (f->last_direction == direction && f->current_offset > 0) {
+-                /* If we hit EOF before, recheck if any new entries arrived. */
+-                n_entries = le64toh(f->header->n_entries);
+-                if (f->location_type == LOCATION_TAIL && n_entries == f->last_n_entries)
+-                        return 0;
+-                f->last_n_entries = n_entries;
++        n_entries = le64toh(f->header->n_entries);
++
++        /* If we hit EOF before, we don't need to look into this file again
++         * unless direction changed or new entries appeared. */
++        if (f->last_direction == direction && f->location_type == LOCATION_TAIL &&
++            n_entries == f->last_n_entries)
++                return 0;
+ 
++        f->last_n_entries = n_entries;
++
++        if (f->last_direction == direction && f->current_offset > 0) {
+                 /* LOCATION_SEEK here means we did the work in a previous
+                  * iteration and the current location already points to a
+                  * candidate entry. */
+@@ -738,14 +742,16 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc
+                         if (r <= 0)
+                                 return r;
+ 
+-                        journal_file_save_location(f, direction, c, cp);
++                        journal_file_save_location(f, c, cp);
+                 }
+         } else {
++                f->last_direction = direction;
++
+                 r = find_location_with_matches(j, f, direction, &c, &cp);
+                 if (r <= 0)
+                         return r;
+ 
+-                journal_file_save_location(f, direction, c, cp);
++                journal_file_save_location(f, c, cp);
+         }
+ 
+         /* OK, we found the spot, now let's advance until an entry
+@@ -773,7 +779,7 @@ static int next_beyond_location(sd_journal *j, JournalFile *f, direction_t direc
+                 if (r <= 0)
+                         return r;
+ 
+-                journal_file_save_location(f, direction, c, cp);
++                journal_file_save_location(f, c, cp);
+         }
+ }
+ 
diff --git a/SOURCES/0060-shared-condition-fix-gcc5-warning.patch b/SOURCES/0060-shared-condition-fix-gcc5-warning.patch
new file mode 100644
index 0000000..c697235
--- /dev/null
+++ b/SOURCES/0060-shared-condition-fix-gcc5-warning.patch
@@ -0,0 +1,42 @@
+From 2ee0903b0a00dd4a13af8a26ee5fb435c9895568 Mon Sep 17 00:00:00 2001
+From: Daniel Mack <daniel@zonque.org>
+Date: Fri, 27 Feb 2015 20:05:26 +0100
+Subject: [PATCH] shared/condition: fix gcc5 warning
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes the warning below.
+
+src/shared/condition.c: In function ‘condition_new’:
+src/shared/condition.c:47:27: warning: logical not is only applied to the left hand side of comparison [-Wlogical-not-parentheses]
+         assert(!parameter == (type == CONDITION_NULL));
+                           ^
+src/shared/macro.h:42:44: note: in definition of macro ‘_unlikely_’
+ #define _unlikely_(x) (__builtin_expect(!!(x),0))
+                                            ^
+src/shared/macro.h:226:22: note: in expansion of macro ‘assert_se’
+ #define assert(expr) assert_se(expr)
+                      ^
+src/shared/condition.c:47:9: note: in expansion of macro ‘assert’
+         assert(!parameter == (type == CONDITION_NULL));
+         ^
+
+(cherry picked from commit 8a9c6071cb7467170010f0287672c987981bdf9c)
+---
+ src/shared/condition.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/condition.c b/src/shared/condition.c
+index da7560f..796cc52 100644
+--- a/src/shared/condition.c
++++ b/src/shared/condition.c
+@@ -46,7 +46,7 @@ Condition* condition_new(ConditionType type, const char *parameter, bool trigger
+ 
+         assert(type >= 0);
+         assert(type < _CONDITION_TYPE_MAX);
+-        assert(!parameter == (type == CONDITION_NULL));
++        assert((!parameter) == (type == CONDITION_NULL));
+ 
+         c = new0(Condition, 1);
+         if (!c)
diff --git a/SOURCES/0060-systemctl-fix-name-mangling-for-sysv-units.patch b/SOURCES/0060-systemctl-fix-name-mangling-for-sysv-units.patch
deleted file mode 100644
index 2e8df3b..0000000
--- a/SOURCES/0060-systemctl-fix-name-mangling-for-sysv-units.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From f4cad2f52718b386ab8c233d6d702e808acfb844 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= <vpavlin@redhat.com>
-Date: Wed, 2 Oct 2013 16:42:42 +0200
-Subject: [PATCH] systemctl: fix name mangling for sysv units
-
----
- src/systemctl/systemctl.c | 45 ++++++++++++++++++---------------------------
- 1 file changed, 18 insertions(+), 27 deletions(-)
-
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index 0d1a487..036828b 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -4218,11 +4218,10 @@ static int set_environment(DBusConnection *bus, char **args) {
-         return 0;
- }
- 
--static int enable_sysv_units(char **args) {
-+static int enable_sysv_units(const char *verb, char **args) {
-         int r = 0;
- 
- #if defined(HAVE_SYSV_COMPAT) && defined(HAVE_CHKCONFIG)
--        const char *verb = args[0];
-         unsigned f = 1, t = 1;
-         LookupPaths paths = {};
- 
-@@ -4242,7 +4241,7 @@ static int enable_sysv_units(char **args) {
-                 return r;
- 
-         r = 0;
--        for (f = 1; args[f]; f++) {
-+        for (f = 0; args[f]; f++) {
-                 const char *name;
-                 _cleanup_free_ char *p = NULL, *q = NULL;
-                 bool found_native = false, found_sysv;
-@@ -4365,7 +4364,7 @@ finish:
-         lookup_paths_free(&paths);
- 
-         /* Drop all SysV units */
--        for (f = 1, t = 1; args[f]; f++) {
-+        for (f = 0, t = 0; args[f]; f++) {
- 
-                 if (isempty(args[f]))
-                         continue;
-@@ -4423,16 +4422,16 @@ static int enable_unit(DBusConnection *bus, char **args) {
- 
-         dbus_error_init(&error);
- 
--        r = enable_sysv_units(args);
--        if (r < 0)
--                return r;
--
-         if (!args[1])
-                 return 0;
- 
-         r = mangle_names(args+1, &mangled_names);
-         if (r < 0)
--                goto finish;
-+                return r;
-+
-+        r = enable_sysv_units(verb, mangled_names);
-+        if (r < 0)
-+                return r;
- 
-         if (!bus || avoid_bus()) {
-                 if (streq(verb, "enable")) {
-@@ -4624,11 +4623,15 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
-         _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
-         bool enabled;
-         char **name;
--        char *n;
-+        _cleanup_strv_free_ char **mangled_names = NULL;
- 
-         dbus_error_init(&error);
- 
--        r = enable_sysv_units(args);
-+        r = mangle_names(args+1, &mangled_names);
-+        if (r < 0)
-+                return r;
-+
-+        r = enable_sysv_units(args[0], mangled_names);
-         if (r < 0)
-                 return r;
- 
-@@ -4636,16 +4639,10 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
- 
-         if (!bus || avoid_bus()) {
- 
--                STRV_FOREACH(name, args+1) {
-+                STRV_FOREACH(name, mangled_names) {
-                         UnitFileState state;
- 
--                        n = unit_name_mangle(*name);
--                        if (!n)
--                                return log_oom();
--
--                        state = unit_file_get_state(arg_scope, arg_root, n);
--
--                        free(n);
-+                        state = unit_file_get_state(arg_scope, arg_root, *name);
- 
-                         if (state < 0)
-                                 return state;
-@@ -4660,13 +4657,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
-                 }
- 
-         } else {
--                STRV_FOREACH(name, args+1) {
-+                STRV_FOREACH(name, mangled_names) {
-                         const char *s;
- 
--                        n = unit_name_mangle(*name);
--                        if (!n)
--                                return log_oom();
--
-                         r = bus_method_call_with_reply (
-                                         bus,
-                                         "org.freedesktop.systemd1",
-@@ -4675,11 +4668,9 @@ static int unit_is_enabled(DBusConnection *bus, char **args) {
-                                         "GetUnitFileState",
-                                         &reply,
-                                         NULL,
--                                        DBUS_TYPE_STRING, &n,
-+                                        DBUS_TYPE_STRING, name,
-                                         DBUS_TYPE_INVALID);
- 
--                        free(n);
--
-                         if (r)
-                                 return r;
- 
diff --git a/SOURCES/0061-execute-more-debugging-messages.patch b/SOURCES/0061-execute-more-debugging-messages.patch
deleted file mode 100644
index 5093eea..0000000
--- a/SOURCES/0061-execute-more-debugging-messages.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From a454e9c726630fe4811a1c93b2d88b0e77b3094f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 28 Aug 2013 08:01:30 -0400
-Subject: [PATCH] execute: more debugging messages
-
----
- src/core/execute.c     | 35 +++++++++++++++++++++--------------
- src/login/pam-module.c |  3 ++-
- 2 files changed, 23 insertions(+), 15 deletions(-)
-
-diff --git a/src/core/execute.c b/src/core/execute.c
-index a53ef48..981b9e4 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -317,12 +317,12 @@ static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty
-         case EXEC_INPUT_TTY_FAIL: {
-                 int fd, r;
- 
--                if ((fd = acquire_terminal(
--                                     tty_path(context),
--                                     i == EXEC_INPUT_TTY_FAIL,
--                                     i == EXEC_INPUT_TTY_FORCE,
--                                     false,
--                                     (usec_t) -1)) < 0)
-+                fd = acquire_terminal(tty_path(context),
-+                                      i == EXEC_INPUT_TTY_FAIL,
-+                                      i == EXEC_INPUT_TTY_FORCE,
-+                                      false,
-+                                      (usec_t) -1);
-+                if (fd < 0)
-                         return fd;
- 
-                 if (fd != STDIN_FILENO) {
-@@ -748,6 +748,7 @@ static int setup_pam(
-         char **e = NULL;
-         bool close_session = false;
-         pid_t pam_pid = 0, parent_pid;
-+        int flags = 0;
- 
-         assert(name);
-         assert(user);
-@@ -760,6 +761,9 @@ static int setup_pam(
-          * daemon. We do things this way to ensure that the main PID
-          * of the daemon is the one we initially fork()ed. */
- 
-+        if (log_get_max_level() < LOG_PRI(LOG_DEBUG))
-+                flags |= PAM_SILENT;
-+
-         pam_code = pam_start(name, user, &conv, &handle);
-         if (pam_code != PAM_SUCCESS) {
-                 handle = NULL;
-@@ -772,11 +776,11 @@ static int setup_pam(
-                         goto fail;
-         }
- 
--        pam_code = pam_acct_mgmt(handle, PAM_SILENT);
-+        pam_code = pam_acct_mgmt(handle, flags);
-         if (pam_code != PAM_SUCCESS)
-                 goto fail;
- 
--        pam_code = pam_open_session(handle, PAM_SILENT);
-+        pam_code = pam_open_session(handle, flags);
-         if (pam_code != PAM_SUCCESS)
-                 goto fail;
- 
-@@ -850,7 +854,7 @@ static int setup_pam(
- 
-                 /* If our parent died we'll end the session */
-                 if (getppid() != parent_pid) {
--                        pam_code = pam_close_session(handle, PAM_DATA_SILENT);
-+                        pam_code = pam_close_session(handle, flags);
-                         if (pam_code != PAM_SUCCESS)
-                                 goto child_finish;
-                 }
-@@ -858,7 +862,7 @@ static int setup_pam(
-                 r = 0;
- 
-         child_finish:
--                pam_end(handle, pam_code | PAM_DATA_SILENT);
-+                pam_end(handle, pam_code | flags);
-                 _exit(r);
-         }
- 
-@@ -880,16 +884,19 @@ static int setup_pam(
-         return 0;
- 
- fail:
--        if (pam_code != PAM_SUCCESS)
-+        if (pam_code != PAM_SUCCESS) {
-+                log_error("PAM failed: %s", pam_strerror(handle, pam_code));
-                 err = -EPERM;  /* PAM errors do not map to errno */
--        else
-+        } else {
-+                log_error("PAM failed: %m");
-                 err = -errno;
-+        }
- 
-         if (handle) {
-                 if (close_session)
--                        pam_code = pam_close_session(handle, PAM_DATA_SILENT);
-+                        pam_code = pam_close_session(handle, flags);
- 
--                pam_end(handle, pam_code | PAM_DATA_SILENT);
-+                pam_end(handle, pam_code | flags);
-         }
- 
-         strv_free(e);
-diff --git a/src/login/pam-module.c b/src/login/pam-module.c
-index 49296b5..973daf7 100644
---- a/src/login/pam-module.c
-+++ b/src/login/pam-module.c
-@@ -199,7 +199,8 @@ _public_ PAM_EXTERN int pam_sm_open_session(
- 
-         dbus_error_init(&error);
- 
--        /* pam_syslog(handle, LOG_INFO, "pam-systemd initializing"); */
-+        if (debug)
-+                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
- 
-         /* Make this a NOP on non-logind systems */
-         if (!logind_running())
diff --git a/SOURCES/0061-man-correct-description-of-systemd-user-sessions.patch b/SOURCES/0061-man-correct-description-of-systemd-user-sessions.patch
new file mode 100644
index 0000000..248ce01
--- /dev/null
+++ b/SOURCES/0061-man-correct-description-of-systemd-user-sessions.patch
@@ -0,0 +1,34 @@
+From 3104b6659b1405d25cdb5cad68e2bb2c9f8b5980 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 27 Feb 2015 17:26:42 -0500
+Subject: [PATCH] man: correct description of systemd-user-sessions
+
+That part of functionality was removed in 7fb3ee51c1b377.
+
+(cherry picked from commit 3849a2ac8198fedd25e66fe780821fa96eb6396d)
+---
+ man/systemd-user-sessions.service.xml | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/man/systemd-user-sessions.service.xml b/man/systemd-user-sessions.service.xml
+index 9d796b1..e75ef11 100644
+--- a/man/systemd-user-sessions.service.xml
++++ b/man/systemd-user-sessions.service.xml
+@@ -55,13 +55,12 @@
+     <title>Description</title>
+ 
+     <para><filename>systemd-user-sessions.service</filename> is a
+-    service that controls user logins. After basic system
+-    initialization is complete it removes
++    service that controls user logins through
++    <citerefentry project='man-pages'><refentrytitle>pam_nologin</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
++    After basic system initialization is complete it removes
+     <filename>/run/nologin</filename>, thus permitting logins. Before
+     system shutdown it creates <filename>/run/nologin</filename>, thus
+-    prohibiting further logins. At the same time it also kills all
+-    user processes, so that system shutdown may proceed without any
+-    remaining user processes around.</para>
++    prohibiting further logins.</para>
+   </refsect1>
+ 
+   <refsect1>
diff --git a/SOURCES/0062-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch b/SOURCES/0062-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch
new file mode 100644
index 0000000..76c32f3
--- /dev/null
+++ b/SOURCES/0062-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch
@@ -0,0 +1,31 @@
+From 21511551c7d49424a202b25ffe76cf1371dfc0c1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 1 Mar 2015 22:46:43 -0500
+Subject: [PATCH] build-sys: allow lto and FORTIFY_SOURCE with -O[sz]
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89382
+(cherry picked from commit 0289f2fb2a64df53b589b771f69c43126b029590)
+---
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 9c25c3c..3201428 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -208,13 +208,13 @@ AS_CASE([$CC], [*clang*],
+                -Wno-gnu-variable-sized-type-not-at-end \
+         ])])
+ 
+-AS_CASE([$CFLAGS], [*-O[[12345\ ]]*],
++AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
+         [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
+                -flto -ffat-lto-objects])],
+         [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
+ AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
+ 
+-AS_CASE([$CFLAGS], [*-O[[12345\ ]]*],
++AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
+         [CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\
+                -Wp,-D_FORTIFY_SOURCE=2])],
+         [AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])])
diff --git a/SOURCES/0062-logind-fix-bus-introspection-data-for-TakeControl.patch b/SOURCES/0062-logind-fix-bus-introspection-data-for-TakeControl.patch
deleted file mode 100644
index 7b09e47..0000000
--- a/SOURCES/0062-logind-fix-bus-introspection-data-for-TakeControl.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 52fe02b97504dfefb89db203cf7c6e93679ff681 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 4 Oct 2013 21:16:40 +0200
-Subject: [PATCH] logind: fix bus introspection data for TakeControl()
-
----
- src/login/logind-session-dbus.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
-index 5f6bafb..be4e01c 100644
---- a/src/login/logind-session-dbus.c
-+++ b/src/login/logind-session-dbus.c
-@@ -41,7 +41,7 @@
-         "   <arg name=\"who\" type=\"s\"/>\n"                           \
-         "   <arg name=\"signal\" type=\"s\"/>\n"                        \
-         "  </method>\n"                                                 \
--        "  <method name=\"TakeControl\"/>\n"                            \
-+        "  <method name=\"TakeControl\">\n"                             \
-         "   <arg name=\"force\" type=\"b\"/>\n"                         \
-         "  </method>\n"                                                 \
-         "  <method name=\"ReleaseControl\"/>\n"                         \
diff --git a/SOURCES/0063-man-fix-typo.patch b/SOURCES/0063-man-fix-typo.patch
new file mode 100644
index 0000000..60fe6df
--- /dev/null
+++ b/SOURCES/0063-man-fix-typo.patch
@@ -0,0 +1,23 @@
+From 3f4c4af890ff655bf409875d0775f436e6d63353 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 3 Mar 2015 00:11:51 +0100
+Subject: [PATCH] man: fix typo
+
+(cherry picked from commit a68188812290cb9ec9f3f8a17b65e64549a4fd65)
+---
+ man/systemd.netdev.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd.netdev.xml b/man/systemd.netdev.xml
+index 4480e19..ef58887 100644
+--- a/man/systemd.netdev.xml
++++ b/man/systemd.netdev.xml
+@@ -108,7 +108,7 @@
+           <entry>A bond device is an aggregation of all its slave devices. See <ulink url="https://www.kernel.org/doc/Documentation/networking/bonding.txt">Linux Ethernet Bonding Driver HOWTO</ulink> for details.Local configuration</entry></row>
+ 
+           <row><entry><varname>bridge</varname></entry>
+-          <entry>A bridge devcie is a software switch, each of its slave devices and the bridge itself are ports of the switch.</entry></row>
++          <entry>A bridge device is a software switch, each of its slave devices and the bridge itself are ports of the switch.</entry></row>
+ 
+           <row><entry><varname>dummy</varname></entry>
+           <entry>A dummy device drops all packets sent to it.</entry></row>
diff --git a/SOURCES/0063-utf8-fix-utf8_is_printable.patch b/SOURCES/0063-utf8-fix-utf8_is_printable.patch
deleted file mode 100644
index 0074c63..0000000
--- a/SOURCES/0063-utf8-fix-utf8_is_printable.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 91eda57764f26d3ebdbf8194a528d8d60d0f409a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 5 Oct 2013 22:47:52 -0400
-Subject: [PATCH] utf8: fix utf8_is_printable
-
----
- src/shared/utf8.c    | 5 +++--
- src/test/test-utf8.c | 1 +
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/shared/utf8.c b/src/shared/utf8.c
-index a8e28ac..31120af 100644
---- a/src/shared/utf8.c
-+++ b/src/shared/utf8.c
-@@ -141,14 +141,15 @@ bool utf8_is_printable(const char* str, size_t length) {
- 
-         assert(str);
- 
--        for (p = (const uint8_t*) str; length; p++) {
-+        for (p = (const uint8_t*) str; length;) {
-                 int encoded_len = utf8_encoded_valid_unichar((const char *)p);
--                int32_t val = utf8_encoded_to_unichar((const char*)p);
-+                int val = utf8_encoded_to_unichar((const char*)p);
- 
-                 if (encoded_len < 0 || val < 0 || is_unicode_control(val))
-                         return false;
- 
-                 length -= encoded_len;
-+                p += encoded_len;
-         }
- 
-         return true;
-diff --git a/src/test/test-utf8.c b/src/test/test-utf8.c
-index 7bd0db1..f0182ee 100644
---- a/src/test/test-utf8.c
-+++ b/src/test/test-utf8.c
-@@ -26,6 +26,7 @@ static void test_utf8_is_printable(void) {
-         assert_se(utf8_is_printable("ascii is valid\tunicode", 22));
-         assert_se(utf8_is_printable("\342\204\242", 3));
-         assert_se(!utf8_is_printable("\341\204", 2));
-+        assert_se(utf8_is_printable("ąę", 4));
- }
- 
- static void test_utf8_is_valid(void) {
diff --git a/SOURCES/0064-bus-proxyd-avoid-logging-oom-twice.patch b/SOURCES/0064-bus-proxyd-avoid-logging-oom-twice.patch
new file mode 100644
index 0000000..9671e78
--- /dev/null
+++ b/SOURCES/0064-bus-proxyd-avoid-logging-oom-twice.patch
@@ -0,0 +1,23 @@
+From 61dd027666b40102bc9463217264f1deaab4cc8a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 3 Mar 2015 00:05:14 -0500
+Subject: [PATCH] bus-proxyd: avoid logging oom twice
+
+(cherry picked from commit c29005212dc38d98c707639d1a82ffa5270f2e97)
+---
+ src/bus-proxyd/bus-proxyd.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c
+index b6b0056..b6550ed 100644
+--- a/src/bus-proxyd/bus-proxyd.c
++++ b/src/bus-proxyd/bus-proxyd.c
+@@ -82,7 +82,7 @@ static int client_context_new(ClientContext **out) {
+ 
+         c = new0(ClientContext, 1);
+         if (!c)
+-                return log_oom();
++                return -ENOMEM;
+ 
+         c->fd = -1;
+ 
diff --git a/SOURCES/0064-keymap-Fix-Samsung-900X-34-C.patch b/SOURCES/0064-keymap-Fix-Samsung-900X-34-C.patch
deleted file mode 100644
index 4782f3a..0000000
--- a/SOURCES/0064-keymap-Fix-Samsung-900X-34-C.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 774b623c772bbb716b74c8927b6f90cfbce795b9 Mon Sep 17 00:00:00 2001
-From: Martin Pitt <martinpitt@gnome.org>
-Date: Wed, 9 Oct 2013 16:05:15 +0200
-Subject: [PATCH] keymap: Fix Samsung 900X[34]C
-
-It appears that it's not really the 900 vs. 940 or the X3 vs X4, but the
-A/B/C/D suffix after that which makes the difference between the keymaps. On a
-NP900X3C-A04RU you get
-
-   MODALIAS=dmi:bvn*:bvr*:bd*:svnSAMSUNGELECTRONICSCO.,LTD.:pn900X3C/900X3D/900X4C/900X4D:*
-
-So change the matches to use AB vs. CDG as the differentiator.
-
-Thanks to Anatoly Markov for reporting and testing!
----
- hwdb/60-keyboard.hwdb | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index 20d398f..b497f92 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -904,6 +904,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr*
-  KEYBOARD_KEY_a9=!                                      # Fn Lock - Function lock off
- 
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
-+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
-  KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
-  KEYBOARD_KEY_a0=!mute                                  # Fn+F6 mute
-@@ -915,7 +916,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
- 
- # Series 9
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
--keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34]*:pvr*
-+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr*
-  KEYBOARD_KEY_ce=!                                      # Fn+F8 keyboard backlight up
-  KEYBOARD_KEY_8d=!                                      # Fn+F7 keyboard backlight down
-  KEYBOARD_KEY_96=!                                      # Fn+F1 performance mode (?)
diff --git a/SOURCES/0065-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch b/SOURCES/0065-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch
new file mode 100644
index 0000000..9f2a66c
--- /dev/null
+++ b/SOURCES/0065-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch
@@ -0,0 +1,29 @@
+From c11c73fc4541bf0ea5a418ebea53e58668100f82 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 3 Mar 2015 10:36:47 -0500
+Subject: [PATCH] Do not run sysv-generator-test when sysv compat is disabled
+
+(cherry picked from commit dcf1369057231fbf09e37b5a48483763b4ae6e19)
+---
+ Makefile.am | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index 2e6455f..4933f76 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3789,9 +3789,14 @@ TESTS += \
+ if HAVE_PYTHON
+ TESTS += \
+ 	test/rule-syntax-check.py \
++	$(NULL)
++
++if HAVE_SYSV_COMPAT
++TESTS += \
+ 	test/sysv-generator-test.py \
+ 	$(NULL)
+ endif
++endif
+ 
+ manual_tests += \
+ 	test-libudev \
diff --git a/SOURCES/0065-do-not-accept-garbage-from-acpi-firmware-performance.patch b/SOURCES/0065-do-not-accept-garbage-from-acpi-firmware-performance.patch
deleted file mode 100644
index 531aa76..0000000
--- a/SOURCES/0065-do-not-accept-garbage-from-acpi-firmware-performance.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From d6987c081c5b0d1a2d9083b3d50fb78c63ab4904 Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Thu, 10 Oct 2013 01:38:11 +0200
-Subject: [PATCH] do not accept "garbage" from acpi firmware performance data
- (FPDT)
-
-00000000  46 42 50 54 38 00 00 00  02 00 30 02 00 00 00 00  |FBPT8.....0.....|
-00000010  23 45 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |#E..............|
-00000020  f5 6a 51 00 00 00 00 00  00 00 00 00 00 00 00 00  |.jQ.............|
-00000030  00 00 00 00 00 00 00 00  70 74 61 6c 58 00 00 00  |........ptalX...|
----
- src/shared/acpi-fpdt.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
-index af58c7c..75648b4 100644
---- a/src/shared/acpi-fpdt.c
-+++ b/src/shared/acpi-fpdt.c
-@@ -146,6 +146,11 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
-         if (brec.type != ACPI_FPDT_BOOT_REC)
-                 return -EINVAL;
- 
-+        if (brec.startup_start == 0 || brec.exit_services_exit < brec.startup_start)
-+                return -EINVAL;
-+        if (brec.exit_services_exit > NSEC_PER_HOUR)
-+                return -EINVAL;
-+
-         if (loader_start)
-                 *loader_start = brec.startup_start / 1000;
-         if (loader_exit)
diff --git a/SOURCES/0066-README-mention-ACLs-more.patch b/SOURCES/0066-README-mention-ACLs-more.patch
new file mode 100644
index 0000000..93e5683
--- /dev/null
+++ b/SOURCES/0066-README-mention-ACLs-more.patch
@@ -0,0 +1,26 @@
+From b1e53a9d3cc7c6fbe4447e201c8f6348ffcd7b6a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 3 Mar 2015 09:00:39 -0500
+Subject: [PATCH] README: mention ACLs more
+
+They are now useful for any fs used for journal storage.
+
+(cherry picked from commit a6cccd8f580fc1e062dba3895e232007acd38781)
+---
+ README | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/README b/README
+index ac2a81c..ffc2cf9 100644
+--- a/README
++++ b/README
+@@ -78,8 +78,8 @@ REQUIREMENTS:
+         Optional but strongly recommended:
+           CONFIG_IPV6
+           CONFIG_AUTOFS4_FS
+-          CONFIG_TMPFS_POSIX_ACL
+           CONFIG_TMPFS_XATTR
++          CONFIG_{TMPFS,EXT4,XFS,BTRFS_FS,...}_POSIX_ACL
+           CONFIG_SECCOMP
+ 
+         Required for CPUShares in resource control unit settings
diff --git a/SOURCES/0066-login-fix-invalid-free-in-sd_session_get_vt.patch b/SOURCES/0066-login-fix-invalid-free-in-sd_session_get_vt.patch
deleted file mode 100644
index 01743fd..0000000
--- a/SOURCES/0066-login-fix-invalid-free-in-sd_session_get_vt.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 540aab87440dbde3bf6a1d057df9c7a79adf7031 Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann@gmail.com>
-Date: Thu, 10 Oct 2013 13:09:37 +0200
-Subject: [PATCH] login: fix invalid free() in sd_session_get_vt()
-
-We need to clear variables markes as _cleanup_free_. Otherwise, our
-error-paths might corrupt random memory.
----
- src/login/sd-login.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/sd-login.c b/src/login/sd-login.c
-index 71d8c29..6c27dfe 100644
---- a/src/login/sd-login.c
-+++ b/src/login/sd-login.c
-@@ -350,7 +350,7 @@ _public_ int sd_session_get_tty(const char *session, char **tty) {
- }
- 
- _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) {
--        _cleanup_free_ char *vtnr_string;
-+        _cleanup_free_ char *vtnr_string = NULL;
-         unsigned u;
-         int r;
- 
diff --git a/SOURCES/0067-Do-not-advertise-.d-snippets-over-main-config-file.patch b/SOURCES/0067-Do-not-advertise-.d-snippets-over-main-config-file.patch
new file mode 100644
index 0000000..57e3439
--- /dev/null
+++ b/SOURCES/0067-Do-not-advertise-.d-snippets-over-main-config-file.patch
@@ -0,0 +1,333 @@
+From b72201257216f687bf3462ad7539612cccbbce75 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 3 Mar 2015 19:10:21 -0500
+Subject: [PATCH] Do not advertise .d snippets over main config file
+
+For daemons which have a main configuration file, there's
+little reason for the administrator to use configuration snippets.
+They are useful for packagers which need to override settings, but
+we shouldn't advertise that as the main way of configuring those
+services.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89397
+(cherry picked from commit e93549ef29c4123d9ee45acb5815048390201e49)
+---
+ man/bootchart.conf.xml         |  3 +--
+ man/coredump.conf.xml          |  3 +--
+ man/journald.conf.xml          |  3 +--
+ man/logind.conf.xml            |  8 +++++---
+ man/resolved.conf.xml          |  3 +--
+ man/standard-conf.xml          | 42 ++++++++++++++++++++++++++++++++++--------
+ man/systemd-sleep.conf.xml     |  3 +--
+ man/systemd-system.conf.xml    |  3 +--
+ man/timesyncd.conf.xml         |  3 +--
+ src/bootchart/bootchart.conf   |  7 ++++---
+ src/core/system.conf           |  7 ++++---
+ src/journal/coredump.conf      |  7 ++++---
+ src/journal/journald.conf      |  7 ++++---
+ src/login/logind.conf          |  7 ++++---
+ src/resolve/resolved.conf.in   |  5 +++--
+ src/timesync/timesyncd.conf.in |  7 ++++---
+ 16 files changed, 73 insertions(+), 45 deletions(-)
+
+diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml
+index 8d9700d..bf6ca0b 100644
+--- a/man/bootchart.conf.xml
++++ b/man/bootchart.conf.xml
+@@ -68,8 +68,7 @@
+     parameters and graph output.</para>
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/man/coredump.conf.xml b/man/coredump.conf.xml
+index 3d325e6..0b7329b 100644
+--- a/man/coredump.conf.xml
++++ b/man/coredump.conf.xml
+@@ -63,8 +63,7 @@
+     a handler for core dumps invoked by the kernel.</para>
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index 364b58f..85146b0 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -64,8 +64,7 @@
+ 
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/man/logind.conf.xml b/man/logind.conf.xml
+index ffaec50..ca2b187 100644
+--- a/man/logind.conf.xml
++++ b/man/logind.conf.xml
+@@ -58,11 +58,13 @@
+   <refsect1>
+     <title>Description</title>
+ 
+-    <para>These files configure various parameters of the systemd login manager, <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
++    <para>These files configure various parameters of the systemd
++    login manager,
++    <citerefentry><refentrytitle>systemd-logind.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
++    </para>
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/man/resolved.conf.xml b/man/resolved.conf.xml
+index 36cae27..8047a4e 100644
+--- a/man/resolved.conf.xml
++++ b/man/resolved.conf.xml
+@@ -63,8 +63,7 @@
+ 
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/man/standard-conf.xml b/man/standard-conf.xml
+index b87d7e9..36af459 100644
+--- a/man/standard-conf.xml
++++ b/man/standard-conf.xml
+@@ -33,13 +33,39 @@
+     configuration file.</para>
+   </refsection>
+ 
+-  <refsection id='conf'>
+-    <title>Configuration File</title>
+-
+-    <para>Configuration is also read from a single configuration file in
+-    <filename>/etc/</filename>. This file is read before any of the
+-    configuration directories, and has the lowest precedence; entries in a file
+-    in any configuration directory override entries in the single configuration
+-    file.</para>
++  <refsection id='main-conf'>
++    <title>Configuration Directories and Precedence</title>
++
++    <para>Default configuration is defined during compilation, so a
++    configuration file is only needed when it is necessary to deviate
++    from those defaults. By default the configuration file in
++    <filename>/etc/systemd/</filename> contains commented out entries
++    showing the defaults as a guide to the administrator. This file
++    can be edited to create local overrides.
++    </para>
++
++    <para>When packages need to customize the configuration, they can
++    install configuration snippets in
++    <filename>/usr/lib/systemd/*.conf.d/</filename>. Files in
++    <filename>/etc/</filename> are reserved for the local
++    administrator, who may use this logic to override the
++    configuration files installed by vendor packages. The main
++    configuration file is read before any of the configuration
++    directories, and has the lowest precedence; entries in a file in
++    any configuration directory override entries in the single
++    configuration file. Files in the
++    <filename>logind.conf.d/</filename> configuration subdirectories
++    are sorted by their filename in lexicographic order, regardless of
++    which of the subdirectories they reside in. If multiple files
++    specify the same option, the entry in the file with the
++    lexicographically latest name takes precedence.  It is recommended
++    to prefix all filenames in those subdirectories with a two-digit
++    number and a dash, to simplify the ordering of the files.</para>
++
++    <para>To disable a configuration file supplied by the vendor, the
++    recommended way is to place a symlink to
++    <filename>/dev/null</filename> in the configuration directory in
++    <filename>/etc/</filename>, with the same filename as the vendor
++    configuration file.</para>
+   </refsection>
+ </refsection>
+diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml
+index 433f2f8..bb17ec8 100644
+--- a/man/systemd-sleep.conf.xml
++++ b/man/systemd-sleep.conf.xml
+@@ -112,8 +112,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     attempts to suspend or hibernate the machine.</para>
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
+index 7c3f237..c7bcfae 100644
+--- a/man/systemd-system.conf.xml
++++ b/man/systemd-system.conf.xml
+@@ -74,8 +74,7 @@
+     operations.</para>
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/man/timesyncd.conf.xml b/man/timesyncd.conf.xml
+index 1127970..89a651c 100644
+--- a/man/timesyncd.conf.xml
++++ b/man/timesyncd.conf.xml
+@@ -63,8 +63,7 @@
+ 
+   </refsect1>
+ 
+-  <xi:include href="standard-conf.xml" xpointer="confd" />
+-  <xi:include href="standard-conf.xml" xpointer="conf" />
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
+ 
+   <refsect1>
+     <title>Options</title>
+diff --git a/src/bootchart/bootchart.conf b/src/bootchart/bootchart.conf
+index 2d7cb61..4f5e509 100644
+--- a/src/bootchart/bootchart.conf
++++ b/src/bootchart/bootchart.conf
+@@ -5,10 +5,11 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ #
+-# You can override the directives in this file by creating files in
+-# /etc/systemd/bootchart.conf.d/*.conf.
++# Entries in this file show the compile time defaults.
++# You can change settings by editing this file.
++# Defaults can be restored by simply deleting this file.
+ #
+-# See bootchart.conf(5) for details
++# See bootchart.conf(5) for details.
+ 
+ [Bootchart]
+ #Samples=500
+diff --git a/src/core/system.conf b/src/core/system.conf
+index a372720..2316090 100644
+--- a/src/core/system.conf
++++ b/src/core/system.conf
+@@ -5,10 +5,11 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ #
+-# You can override the directives in this file by creating files in
+-# /etc/systemd/system.conf.d/*.conf.
++# Entries in this file show the compile time defaults.
++# You can change settings by editing this file.
++# Defaults can be restored by simply deleting this file.
+ #
+-# See systemd-system.conf(5) for details
++# See systemd-system.conf(5) for details.
+ 
+ [Manager]
+ #LogLevel=info
+diff --git a/src/journal/coredump.conf b/src/journal/coredump.conf
+index 0fe9fe8..c2f0643 100644
+--- a/src/journal/coredump.conf
++++ b/src/journal/coredump.conf
+@@ -5,10 +5,11 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ #
+-# You can override the directives in this file by creating files in
+-# /etc/systemd/coredump.conf.d/*.conf.
++# Entries in this file show the compile time defaults.
++# You can change settings by editing this file.
++# Defaults can be restored by simply deleting this file.
+ #
+-# See coredump.conf(5) for details
++# See coredump.conf(5) for details.
+ 
+ [Coredump]
+ #Storage=external
+diff --git a/src/journal/journald.conf b/src/journal/journald.conf
+index 29bdf8f..47eefe9 100644
+--- a/src/journal/journald.conf
++++ b/src/journal/journald.conf
+@@ -5,10 +5,11 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ #
+-# You can override the directives in this file by creating files in
+-# /etc/systemd/journald.conf.d/*.conf.
++# Entries in this file show the compile time defaults.
++# You can change settings by editing this file.
++# Defaults can be restored by simply deleting this file.
+ #
+-# See journald.conf(5) for details
++# See journald.conf(5) for details.
+ 
+ [Journal]
+ #Storage=auto
+diff --git a/src/login/logind.conf b/src/login/logind.conf
+index 6b1943a..834c4c2 100644
+--- a/src/login/logind.conf
++++ b/src/login/logind.conf
+@@ -5,10 +5,11 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ #
+-# You can override the directives in this file by creating files in
+-# /etc/systemd/logind.conf.d/*.conf.
++# Entries in this file show the compile time defaults.
++# You can change settings by editing this file.
++# Defaults can be restored by simply deleting this file.
+ #
+-# See logind.conf(5) for details
++# See logind.conf(5) for details.
+ 
+ [Login]
+ #NAutoVTs=6
+diff --git a/src/resolve/resolved.conf.in b/src/resolve/resolved.conf.in
+index e5a19ee..3eb19e4 100644
+--- a/src/resolve/resolved.conf.in
++++ b/src/resolve/resolved.conf.in
+@@ -5,8 +5,9 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ #
+-# You can override the directives in this file by creating files in
+-# /etc/systemd/resolved.conf.d/*.conf.
++# Entries in this file show the compile time defaults.
++# You can change settings by editing this file.
++# Defaults can be restored by simply deleting this file.
+ #
+ # See resolved.conf(5) for details
+ 
+diff --git a/src/timesync/timesyncd.conf.in b/src/timesync/timesyncd.conf.in
+index fc3c6c4..b6a2ada 100644
+--- a/src/timesync/timesyncd.conf.in
++++ b/src/timesync/timesyncd.conf.in
+@@ -5,10 +5,11 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ #
+-# You can override the directives in this file by creating files in
+-# /etc/systemd/timesyncd.conf.d/*.conf.
++# Entries in this file show the compile time defaults.
++# You can change settings by editing this file.
++# Defaults can be restored by simply deleting this file.
+ #
+-# See timesyncd.conf(5) for details
++# See timesyncd.conf(5) for details.
+ 
+ [Time]
+ #NTP=
diff --git a/SOURCES/0067-login-make-sd_session_get_vt-actually-work.patch b/SOURCES/0067-login-make-sd_session_get_vt-actually-work.patch
deleted file mode 100644
index 74b6f71..0000000
--- a/SOURCES/0067-login-make-sd_session_get_vt-actually-work.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From b2301b8a4a17d51ac713fd39484fe48075ad2f64 Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann@gmail.com>
-Date: Thu, 10 Oct 2013 13:11:27 +0200
-Subject: [PATCH] login: make sd_session_get_vt() actually work
-
-We use VTNR, not VTNr as key. Until now sd_session_get_vt() just returns
-an error.
----
- src/login/sd-login.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/sd-login.c b/src/login/sd-login.c
-index 6c27dfe..7e25041 100644
---- a/src/login/sd-login.c
-+++ b/src/login/sd-login.c
-@@ -354,7 +354,7 @@ _public_ int sd_session_get_vt(const char *session, unsigned *vtnr) {
-         unsigned u;
-         int r;
- 
--        r = session_get_string(session, "VTNr", &vtnr_string);
-+        r = session_get_string(session, "VTNR", &vtnr_string);
-         if (r < 0)
-                 return r;
- 
diff --git a/SOURCES/0068-Make-sure-that-we-don-t-dereference-NULL.patch b/SOURCES/0068-Make-sure-that-we-don-t-dereference-NULL.patch
deleted file mode 100644
index 48887d0..0000000
--- a/SOURCES/0068-Make-sure-that-we-don-t-dereference-NULL.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 9765cfab7747c4d9435ec16a5fe29affeb2e52a7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 12 Oct 2013 13:43:07 -0400
-Subject: [PATCH] Make sure that we don't dereference NULL
-
-The code was actually safe, because b should
-never be null, because if rvalue is empty, a different
-branch is taken. But we *do* check for NULL in the
-loop above, so it's better to also check here for symmetry.
----
- src/core/load-fragment.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
-index 44920d6..f01843d 100644
---- a/src/core/load-fragment.c
-+++ b/src/core/load-fragment.c
-@@ -1860,7 +1860,8 @@ int config_parse_documentation(const char *unit,
-                         free(*a);
-                 }
-         }
--        *b = NULL;
-+        if (b)
-+                *b = NULL;
- 
-         return r;
- }
diff --git a/SOURCES/0068-hwdb-add-pnpid-for-the-T450s-touchpad.patch b/SOURCES/0068-hwdb-add-pnpid-for-the-T450s-touchpad.patch
new file mode 100644
index 0000000..52dcf04
--- /dev/null
+++ b/SOURCES/0068-hwdb-add-pnpid-for-the-T450s-touchpad.patch
@@ -0,0 +1,22 @@
+From 48b8df6ea51021e6624bdc45ff371dd033d379df Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Wed, 4 Mar 2015 13:24:45 +1000
+Subject: [PATCH] hwdb: add pnpid for the T450s touchpad
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89411
+(cherry picked from commit c26c1d86b3e466e073577e27ad839a0c112cd17b)
+---
+ hwdb/70-touchpad.hwdb | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/hwdb/70-touchpad.hwdb b/hwdb/70-touchpad.hwdb
+index bbf44db..9fcb5fd 100644
+--- a/hwdb/70-touchpad.hwdb
++++ b/hwdb/70-touchpad.hwdb
+@@ -36,4 +36,6 @@
+ 
+ # Lenovo X1 Carbon 3rd
+ touchpad:pnpid:*LEN0048*:
++# Lenovo T450s
++touchpad:pnpid:*LEN200f*:
+  TOUCHPAD_HAS_TRACKPOINT_BUTTONS=1
diff --git a/SOURCES/0069-gitignore-ignore-clang-analyze-output.patch b/SOURCES/0069-gitignore-ignore-clang-analyze-output.patch
deleted file mode 100644
index 84f5b8e..0000000
--- a/SOURCES/0069-gitignore-ignore-clang-analyze-output.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 9f433bba1d84c974f73d7c5929850a317981f692 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 12 Oct 2013 19:50:54 -0400
-Subject: [PATCH] gitignore: ignore clang --analyze output
-
----
- .gitignore | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/.gitignore b/.gitignore
-index 5b38c0b..56e10a6 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -162,6 +162,7 @@
- *.la
- *.lo
- *.o
-+*.plist
- *.stamp
- *.pyc
- __pycache__/
diff --git a/SOURCES/0069-networkd-netdev-inform-when-we-take-over-an-existing.patch b/SOURCES/0069-networkd-netdev-inform-when-we-take-over-an-existing.patch
new file mode 100644
index 0000000..6a68bb0
--- /dev/null
+++ b/SOURCES/0069-networkd-netdev-inform-when-we-take-over-an-existing.patch
@@ -0,0 +1,30 @@
+From fab00ed4a9ce8a1d579028c2fc39db3717b454da Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Wed, 4 Mar 2015 10:33:50 +0100
+Subject: [PATCH] networkd: netdev - inform when we take over an existing
+ netdev
+
+The crucial point here is that we will not change the settings of a netdev created by someone else
+we simply use it as is and trust it was set up as intended.
+
+This is confusing in the case of the pre-created netdev's (bond0 etc.), the solution should probably
+be to simply make the kernel stop creating these devices as they are pretty useless.
+
+(cherry picked from commit ff88a301e93cf1bddbaa7faa981f390a2a81a4bb)
+---
+ src/network/networkd-netdev.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/network/networkd-netdev.c b/src/network/networkd-netdev.c
+index 8119205..7d193d0 100644
+--- a/src/network/networkd-netdev.c
++++ b/src/network/networkd-netdev.c
+@@ -261,7 +261,7 @@ static int netdev_create_handler(sd_rtnl *rtnl, sd_rtnl_message *m, void *userda
+ 
+         r = sd_rtnl_message_get_errno(m);
+         if (r == -EEXIST)
+-                log_netdev_debug(netdev, "netdev exists, using existing");
++                log_info_netdev(netdev, "netdev exists, using existing without changing its parameters");
+         else if (r < 0) {
+                 log_warning_netdev(netdev, "netdev could not be created: %s", strerror(-r));
+                 netdev_drop(netdev);
diff --git a/SOURCES/0070-man-add-more-markup-to-udevadm-8.patch b/SOURCES/0070-man-add-more-markup-to-udevadm-8.patch
deleted file mode 100644
index efbecde..0000000
--- a/SOURCES/0070-man-add-more-markup-to-udevadm-8.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 52473fa9ee6d097431c48c0b9c4b4a51837c75eb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 13 Oct 2013 19:43:19 -0400
-Subject: [PATCH] man: add more markup to udevadm(8)
-
----
- man/udevadm.xml | 49 +++++++++++++++++++++++++++++++++----------------
- 1 file changed, 33 insertions(+), 16 deletions(-)
-
-diff --git a/man/udevadm.xml b/man/udevadm.xml
-index b959216..a1ffe42 100644
---- a/man/udevadm.xml
-+++ b/man/udevadm.xml
-@@ -61,9 +61,10 @@
-   </refsynopsisdiv>
- 
-   <refsect1><title>Description</title>
--    <para>udevadm expects a command and command specific options.  It
--    controls the runtime behavior of udev, requests kernel events,
--    manages the event queue, and provides simple debugging mechanisms.</para>
-+    <para><command>udevadm</command> expects a command and command
-+    specific options.  It controls the runtime behavior of
-+    <command>systemd-udevd</command>, requests kernel events, manages
-+    the event queue, and provides simple debugging mechanisms.</para>
-   </refsect1>
- 
-   <refsect1><title>OPTIONS</title>
-@@ -97,23 +98,37 @@
-         <varlistentry>
-           <term><option>--query=<replaceable>type</replaceable></option></term>
-           <listitem>
--            <para>Query the database for specified type of device data. It needs the
--            <option>--path</option> or <option>--name</option> to identify the specified
--            device. Valid queries are:
--            <command>name</command>, <command>symlink</command>, <command>path</command>,
--            <command>property</command>, <command>all</command>.</para>
-+            <para>Query the database for specified type of device
-+            data. It needs the <option>--path</option> or
-+            <option>--name</option> to identify the specified
-+            device. Valid queries are: <constant>name</constant>,
-+            <constant>symlink</constant>, <constant>path</constant>,
-+            <constant>property</constant>,
-+            <constant>all</constant>.</para>
-           </listitem>
-         </varlistentry>
-         <varlistentry>
-           <term><option>--path=<replaceable>devpath</replaceable></option></term>
-           <listitem>
--            <para>The devpath of the device to query.</para>
-+            <para>The <filename>/sys</filename> path of the device to
-+            query, e.g.
-+            <filename><optional>/sys</optional>/class/block/sda</filename>.
-+            Note that this option usually isn't very useful, since
-+            <command>udev</command> can guess the type of the
-+            argument, so <command>udevadm
-+            --devpath=/class/block/sda</command> is equivalent to
-+            <command>udevadm /sys/class/block/sda</command>.</para>
-           </listitem>
-         </varlistentry>
-         <varlistentry>
-           <term><option>--name=<replaceable>file</replaceable></option></term>
-           <listitem>
--            <para>The name of the device node or a symlink to query</para>
-+            <para>The name of the device node or a symlink to query,
-+            e.g. <filename><optional>/dev</optional>/sda</filename>.
-+            Note that this option usually isn't very useful, since
-+            <command>udev</command> can guess the type of the
-+            argument, so <command>udevadm --name=sda</command> is
-+            equivalent to <command>udevadm /dev/sda</command>.</para>
-           </listitem>
-         </varlistentry>
-         <varlistentry>
-@@ -462,13 +477,15 @@
-           </listitem>
-         </varlistentry>
-         <varlistentry>
--          <term><option>--resolve-names=<replaceable>early|late|never</replaceable></option></term>
-+          <term><option>--resolve-names=<constant>early</constant>|<constant>late</constant>|<constant>never</constant></option></term>
-           <listitem>
--            <para>Specify when udevadm should resolve names of users and groups.
--              When set to early (the default) names will be resolved when the
--              rules are parsed. When set to late names will be resolved for
--              every event. When set to never names will never be resolved and
--              all devices will be owned by root.</para>
-+            <para>Specify when udevadm should resolve names of users
-+            and groups.  When set to <constant>early</constant> (the
-+            default) names will be resolved when the rules are
-+            parsed. When set to <constant>late</constant> names will
-+            be resolved for every event. When set to
-+            <constant>never</constant> names will never be resolved
-+            and all devices will be owned by root.</para>
-           </listitem>
-         </varlistentry>
-         <varlistentry>
diff --git a/SOURCES/0070-man-replace-obsolete-wiki-link-with-man-page.patch b/SOURCES/0070-man-replace-obsolete-wiki-link-with-man-page.patch
new file mode 100644
index 0000000..657c617
--- /dev/null
+++ b/SOURCES/0070-man-replace-obsolete-wiki-link-with-man-page.patch
@@ -0,0 +1,181 @@
+From d3a45e70ee215646cdfbe19f514be08ae95e12eb Mon Sep 17 00:00:00 2001
+From: Zachary Cook <zachcook1991@gmail.com>
+Date: Wed, 4 Mar 2015 18:43:20 -0500
+Subject: [PATCH] man: replace obsolete wiki link with man page
+
+(cherry picked from commit b1c1a51944e8e11545ae2a230d674f5145595192)
+---
+ man/systemd-cryptsetup-generator.xml    | 6 ++----
+ man/systemd-debug-generator.xml         | 6 ++----
+ man/systemd-efi-boot-generator.xml      | 4 +---
+ man/systemd-fstab-generator.xml         | 6 ++----
+ man/systemd-getty-generator.xml         | 5 ++---
+ man/systemd-gpt-auto-generator.xml      | 4 +---
+ man/systemd-system-update-generator.xml | 6 ++----
+ man/systemd-sysv-generator.xml          | 6 ++----
+ man/systemd.unit.xml                    | 4 ++--
+ man/systemd.xml                         | 5 ++---
+ 10 files changed, 18 insertions(+), 34 deletions(-)
+
+diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml
+index 0e48e79..1974cd7 100644
+--- a/man/systemd-cryptsetup-generator.xml
++++ b/man/systemd-cryptsetup-generator.xml
+@@ -59,10 +59,8 @@
+     <citerefentry><refentrytitle>systemd-cryptsetup@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     units as necessary.</para>
+ 
+-    <para><filename>systemd-cryptsetup-generator</filename>
+-    implements the <ulink
+-    url="http://www.freedesktop.org/wiki/Software/systemd/Generators">generator
+-    specification</ulink>.</para>
++    <para><filename>systemd-cryptsetup-generator</filename> implements
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+diff --git a/man/systemd-debug-generator.xml b/man/systemd-debug-generator.xml
+index 74c3b26..5c5e9fc 100644
+--- a/man/systemd-debug-generator.xml
++++ b/man/systemd-debug-generator.xml
+@@ -79,10 +79,8 @@
+     <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s
+     <command>enable</command> command.</para>
+ 
+-    <para><filename>systemd-debug-generator</filename> implements the
+-    <ulink
+-    url="http://www.freedesktop.org/wiki/Software/systemd/Generators">generator
+-    specification</ulink>.</para>
++    <para><filename>systemd-debug-generator</filename> implements
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+diff --git a/man/systemd-efi-boot-generator.xml b/man/systemd-efi-boot-generator.xml
+index b2d8d65..fd7ba79 100644
+--- a/man/systemd-efi-boot-generator.xml
++++ b/man/systemd-efi-boot-generator.xml
+@@ -68,9 +68,7 @@
+     only be activated on-demand, when accessed.</para>
+ 
+     <para><filename>systemd-efi-boot-generator</filename> implements
+-    the <ulink
+-    url="http://www.freedesktop.org/wiki/Software/systemd/Generators">generator
+-    specification</ulink>.</para>
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml
+index 8f82e33..022efb4 100644
+--- a/man/systemd-fstab-generator.xml
++++ b/man/systemd-fstab-generator.xml
+@@ -71,10 +71,8 @@
+     for more information about special <filename>/etc/fstab</filename>
+     mount options this generator understands.</para>
+ 
+-    <para><filename>systemd-fstab-generator</filename> implements the
+-    <ulink
+-    url="http://www.freedesktop.org/wiki/Software/systemd/Generators">generator
+-    specification</ulink>.</para>
++    <para><filename>systemd-fstab-generator</filename> implements
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+diff --git a/man/systemd-getty-generator.xml b/man/systemd-getty-generator.xml
+index 0b5b2f2..3389259 100644
+--- a/man/systemd-getty-generator.xml
++++ b/man/systemd-getty-generator.xml
+@@ -75,9 +75,8 @@
+     for more information on the <varname>console=</varname> kernel
+     parameter.</para>
+ 
+-    <para><filename>systemd-getty-generator</filename> implements the
+-    <ulink url="http://www.freedesktop.org/wiki/Software/systemd/Generators">generator
+-    specification</ulink>.</para>
++    <para><filename>systemd-getty-generator</filename> implements
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+ 
+     <para>Further information about configuration of gettys you may
+     find in
+diff --git a/man/systemd-gpt-auto-generator.xml b/man/systemd-gpt-auto-generator.xml
+index 9c706df..8d2eaca 100644
+--- a/man/systemd-gpt-auto-generator.xml
++++ b/man/systemd-gpt-auto-generator.xml
+@@ -157,9 +157,7 @@
+     using <command>btrfs subvolume set-default</command>.</para>
+ 
+     <para><filename>systemd-gpt-auto-generator</filename> implements
+-    the
+-    <ulink url="http://www.freedesktop.org/wiki/Software/systemd/Generators">Generator
+-    Specification</ulink>.</para>
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+diff --git a/man/systemd-system-update-generator.xml b/man/systemd-system-update-generator.xml
+index 3eec1d7..e7fc95c 100644
+--- a/man/systemd-system-update-generator.xml
++++ b/man/systemd-system-update-generator.xml
+@@ -61,10 +61,8 @@
+     Updates Specification</ulink>.
+     </para>
+ 
+-    <para><filename>systemd-system-update-generator</filename>
+-    implements the
+-    <ulink url="http://www.freedesktop.org/wiki/Software/systemd/Generators">generator
+-    specification</ulink>.</para>
++    <para><filename>systemd-system-update-generator</filename> implements
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+diff --git a/man/systemd-sysv-generator.xml b/man/systemd-sysv-generator.xml
+index e619b1b..f2d56cb 100644
+--- a/man/systemd-sysv-generator.xml
++++ b/man/systemd-sysv-generator.xml
+@@ -81,10 +81,8 @@
+     part of early boot, so all wrapper units are ordered after
+     <filename>basic.target</filename>.</para>
+ 
+-    <para><filename>systemd-sysv-generator</filename>
+-    implements the <ulink
+-    url="http://www.freedesktop.org/wiki/Software/systemd/Generators">generator
+-    specification</ulink>.</para>
++    <para><filename>systemd-sysv-generator</filename> implements
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index 09e11b4..a452f87 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -357,8 +357,8 @@
+     from directories not on the unit load path. See the
+     <command>link</command> command for
+     <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+-    Also, some units are dynamically created via generators <ulink
+-    url="http://www.freedesktop.org/wiki/Software/systemd/Generators/">Generators</ulink>.
++    Also, some units are dynamically created via a
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd.xml b/man/systemd.xml
+index 80591dc..9b92140 100644
+--- a/man/systemd.xml
++++ b/man/systemd.xml
+@@ -415,9 +415,8 @@
+ 
+     <para>Units may be generated dynamically at boot and system
+     manager reload time, for example based on other configuration
+-    files or parameters passed on the kernel command line. For details
+-    see the
+-    <ulink url="http://www.freedesktop.org/wiki/Software/systemd/Generators">Generators Specification</ulink>.</para>
++    files or parameters passed on the kernel command line. For details see
++    <citerefentry><refentrytitle>systemd.generator</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+ 
+     <para>Systems which invoke systemd in a container or initrd
+     environment should implement the
diff --git a/SOURCES/0071-Fix-bad-assert-in-show_pid_array.patch b/SOURCES/0071-Fix-bad-assert-in-show_pid_array.patch
deleted file mode 100644
index 08c3d4e..0000000
--- a/SOURCES/0071-Fix-bad-assert-in-show_pid_array.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 50f0e2315d0c22d2e98e53ff02e7ae2412463e9a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 14 Oct 2013 19:15:24 -0400
-Subject: [PATCH] Fix bad assert in show_pid_array
-
-This function should get the same treatment as other qsort uses
-did in 7ff7394 "Never call qsort on potentially NULL arrays".
-
-Reported-by: Oleksii Shevchuk <alxchk@gmail.com>
----
- src/shared/cgroup-show.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
-index cc44ab4..aa0f017 100644
---- a/src/shared/cgroup-show.c
-+++ b/src/shared/cgroup-show.c
-@@ -44,8 +44,6 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
-         unsigned i, m, pid_width;
-         pid_t biggest = 0;
- 
--        assert(n_pids > 0);
--
-         /* Filter duplicates */
-         m = 0;
-         for (i = 0; i < n_pids; i++) {
-@@ -65,7 +63,7 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
-         pid_width = DECIMAL_STR_WIDTH(biggest);
- 
-         /* And sort */
--        qsort(pids, n_pids, sizeof(pid_t), compare);
-+        qsort_safe(pids, n_pids, sizeof(pid_t), compare);
- 
-         if(flags & OUTPUT_FULL_WIDTH)
-                 n_columns = 0;
diff --git a/SOURCES/0071-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch b/SOURCES/0071-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch
new file mode 100644
index 0000000..42132df
--- /dev/null
+++ b/SOURCES/0071-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch
@@ -0,0 +1,31 @@
+From 3df99b05df12b73e4d081ee223f9b35ed33f47ca Mon Sep 17 00:00:00 2001
+From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
+Date: Thu, 5 Mar 2015 00:07:33 +0100
+Subject: [PATCH] Use correct uname identifiers in arch_map for SuperH
+ architecture
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89421
+(cherry picked from commit 3a867c6a2361c8af943d3ed452da6e8623a3f65d)
+---
+ src/shared/architecture.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/architecture.c b/src/shared/architecture.c
+index 34c5a53..884abdd 100644
+--- a/src/shared/architecture.c
++++ b/src/shared/architecture.c
+@@ -108,8 +108,12 @@ int uname_architecture(void) {
+                 { "armv8l",     ARCHITECTURE_ARM      },
+                 { "armv8b",     ARCHITECTURE_ARM_BE   },
+ #elif defined(__sh__) || defined(__sh64__)
+-                { "sh64",       ARCHITECTURE_SH64     },
+-                { "sh",         ARCHITECTURE_SH       },
++                { "sh5",        ARCHITECTURE_SH64     },
++                { "sh2",        ARCHITECTURE_SH       },
++                { "sh2a",       ARCHITECTURE_SH       },
++                { "sh3",        ARCHITECTURE_SH       },
++                { "sh4",        ARCHITECTURE_SH       },
++                { "sh4a",       ARCHITECTURE_SH       },
+ #elif defined(__m68k__)
+                 { "m68k",       ARCHITECTURE_M68K     },
+ #elif defined(__tilegx__)
diff --git a/SOURCES/0072-Never-call-qsort-on-potentially-NULL-arrays.patch b/SOURCES/0072-Never-call-qsort-on-potentially-NULL-arrays.patch
deleted file mode 100644
index 1df9c4c..0000000
--- a/SOURCES/0072-Never-call-qsort-on-potentially-NULL-arrays.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 87f830a2046141ed917661a726c3ec38b4d15e89 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 11 Oct 2013 19:33:13 -0400
-Subject: [PATCH] Never call qsort on potentially NULL arrays
-
-This extends 62678ded 'efi: never call qsort on potentially
-NULL arrays' to all other places where qsort is used and it
-is not obvious that the count is non-zero.
----
- src/shared/cgroup-show.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
-index aa0f017..f6e56db 100644
---- a/src/shared/cgroup-show.c
-+++ b/src/shared/cgroup-show.c
-@@ -44,6 +44,8 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
-         unsigned i, m, pid_width;
-         pid_t biggest = 0;
- 
-+        assert(n_pids > 0);
-+
-         /* Filter duplicates */
-         m = 0;
-         for (i = 0; i < n_pids; i++) {
diff --git a/SOURCES/0072-hwdb-fix-Dell-XPS12-9Q33-key-name.patch b/SOURCES/0072-hwdb-fix-Dell-XPS12-9Q33-key-name.patch
new file mode 100644
index 0000000..ce15d99
--- /dev/null
+++ b/SOURCES/0072-hwdb-fix-Dell-XPS12-9Q33-key-name.patch
@@ -0,0 +1,24 @@
+From e43361ab55a61ebfaf16e1c78be1bce1fdf84c67 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 4 Mar 2015 20:25:04 -0500
+Subject: [PATCH] hwdb: fix Dell XPS12 9Q33 key name
+
+https://bugs.freedesktop.org/show_bug.cgi?id=84437
+(cherry picked from commit 4f70555d76c90ffdc5a5e4f75bbc08b38022c911)
+---
+ hwdb/60-keyboard.hwdb | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
+index 2cb9769..8890665 100644
+--- a/hwdb/60-keyboard.hwdb
++++ b/hwdb/60-keyboard.hwdb
+@@ -259,7 +259,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS*:pvr*
+ # Dell XPS12 9Q33
+ keyboard:dmi:bvn*:bvr*:bd*:svnDell*:pnXPS12-9Q33*:pvr*
+  KEYBOARD_KEY_88=wlan
+- KEYBOARD_KEY_65=switchvideomode                        # Screen Rotate
++ KEYBOARD_KEY_65=direction                              # Screen Rotate
+ 
+ # Dell Latitude microphone mute
+ keyboard:name:Dell WMI hotkeys:dmi:bvn*:bvr*:bd*:svnDell*:pnLatitude*
diff --git a/SOURCES/0073-Remove-the-cap-on-epoll-events.patch b/SOURCES/0073-Remove-the-cap-on-epoll-events.patch
new file mode 100644
index 0000000..57a1a34
--- /dev/null
+++ b/SOURCES/0073-Remove-the-cap-on-epoll-events.patch
@@ -0,0 +1,36 @@
+From f5ce5e24f9cf18a37ef6aedb149891d07767b045 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare@suse.de>
+Date: Wed, 4 Mar 2015 16:32:16 +0100
+Subject: [PATCH] Remove the cap on epoll events
+
+Currently the code will silently blank out events if there are more
+then 512 epoll events, causing them never to be handled at all. This
+patch removes the cap on the number of events for epoll_wait, thereby
+avoiding this issue.
+
+(cherry picked from commit 1c724e9e0ec5bc4bf791a3d7b1cf5b955cdb98b2)
+---
+ src/libsystemd/sd-event/sd-event.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
+index 25089a0..c6350be 100644
+--- a/src/libsystemd/sd-event/sd-event.c
++++ b/src/libsystemd/sd-event/sd-event.c
+@@ -37,7 +37,6 @@
+ 
+ #include "sd-event.h"
+ 
+-#define EPOLL_QUEUE_MAX 512U
+ #define DEFAULT_ACCURACY_USEC (250 * USEC_PER_MSEC)
+ 
+ typedef enum EventSourceType {
+@@ -2367,7 +2366,7 @@ _public_ int sd_event_wait(sd_event *e, uint64_t timeout) {
+                 return 1;
+         }
+ 
+-        ev_queue_max = CLAMP(e->n_sources, 1U, EPOLL_QUEUE_MAX);
++        ev_queue_max = MAX(e->n_sources, 1u);
+         ev_queue = newa(struct epoll_event, ev_queue_max);
+ 
+         m = epoll_wait(e->epoll_fd, ev_queue, ev_queue_max,
diff --git a/SOURCES/0073-rules-expose-loop-block-devices-to-systemd.patch b/SOURCES/0073-rules-expose-loop-block-devices-to-systemd.patch
deleted file mode 100644
index 0da76da..0000000
--- a/SOURCES/0073-rules-expose-loop-block-devices-to-systemd.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 24888798c1c90dbdc7ab0aa0b57f2196066712c4 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 16 Oct 2013 02:49:54 +0200
-Subject: [PATCH] rules: expose loop block devices to systemd
-
-Since the kernel no longer exposes a large number of "dead" loop devices
-it is OK to expose them now in systemd, so let's do that. This has the
-benefit that mount dependencies on loop devices start to work.
----
- rules/99-systemd.rules.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
-index bbb7d0c..3c99475 100644
---- a/rules/99-systemd.rules.in
-+++ b/rules/99-systemd.rules.in
-@@ -11,12 +11,12 @@ SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd"
- 
- KERNEL=="vport*", TAG+="systemd"
- 
--SUBSYSTEM=="block", KERNEL!="ram*|loop*", TAG+="systemd"
--SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0"
-+SUBSYSTEM=="block", KERNEL!="ram*", TAG+="systemd"
-+SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UDEV_DISABLE_OTHER_RULES_FLAG}=="1", ENV{SYSTEMD_READY}="0"
- 
- # Ignore encrypted devices with no identified superblock on it, since
- # we are probably still calling mke2fs or mkswap on it.
--SUBSYSTEM=="block", KERNEL!="ram*|loop*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0"
-+SUBSYSTEM=="block", KERNEL!="ram*", ENV{DM_UUID}=="CRYPT-*", ENV{ID_PART_TABLE_TYPE}=="", ENV{ID_FS_USAGE}=="", ENV{SYSTEMD_READY}="0"
- 
- # Ignore raid devices that are not yet assembled and started
- SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", TEST!="md/array_state", ENV{SYSTEMD_READY}="0"
diff --git a/SOURCES/0074-Allow-up-to-4096-simultaneous-connections.patch b/SOURCES/0074-Allow-up-to-4096-simultaneous-connections.patch
new file mode 100644
index 0000000..e89f571
--- /dev/null
+++ b/SOURCES/0074-Allow-up-to-4096-simultaneous-connections.patch
@@ -0,0 +1,30 @@
+From b4ea0d8280135b7eabb1bb70e24d62c86e065db3 Mon Sep 17 00:00:00 2001
+From: Hannes Reinecke <hare@suse.de>
+Date: Wed, 4 Mar 2015 16:32:17 +0100
+Subject: [PATCH] Allow up to 4096 simultaneous connections
+
+On large system we hit the limit on 512 simultaneous dbus
+connections, resulting in tons of annoying messages:
+
+Too many concurrent connections, refusing
+
+This patch raises the limit to 4096.
+
+(cherry picked from commit cbecf9bf929318533fea798c57c10efcf6b2b447)
+---
+ src/core/dbus.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/dbus.c b/src/core/dbus.c
+index 260775c..85b5174 100644
+--- a/src/core/dbus.c
++++ b/src/core/dbus.c
+@@ -44,7 +44,7 @@
+ #include "bus-internal.h"
+ #include "selinux-access.h"
+ 
+-#define CONNECTIONS_MAX 512
++#define CONNECTIONS_MAX 4096
+ 
+ static void destroy_bus(Manager *m, sd_bus **bus);
+ 
diff --git a/SOURCES/0074-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch b/SOURCES/0074-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
deleted file mode 100644
index fa85b4f..0000000
--- a/SOURCES/0074-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From d59e493f9b1b6645c9d1916bdc3e8b4802643ab5 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 16 Oct 2013 02:51:24 +0200
-Subject: [PATCH] rules: don't limit some of the rules to the "add" action
-
-Devices should show up in systemd regardless whether the user invoked
-"udevadm trigger" or not. Before this change some devices might have
-suddenly disappeared due issuing that command.
-
-Conflicts:
-	rules/99-systemd.rules.in
----
- rules/99-systemd.rules.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
-index 3c99475..307f18f 100644
---- a/rules/99-systemd.rules.in
-+++ b/rules/99-systemd.rules.in
-@@ -53,12 +53,12 @@ ACTION=="add", SUBSYSTEM=="net", KERNEL!="lo", RUN+="@rootlibexecdir@/systemd-sy
- 
- # Pull in backlight save/restore for all firmware backlight devices
- 
--ACTION=="add", SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
-+SUBSYSTEM=="backlight", ATTR{type}=="firmware", TAG+="systemd", ENV{SYSTEMD_WANTS}+="systemd-backlight@$name.service"
- 
- # Asynchronously mount file systems implemented by these modules as
- # soon as they are loaded.
- 
--SUBSYSTEM=="module", KERNEL=="fuse", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount"
--SUBSYSTEM=="module", KERNEL=="configfs", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount"
-+SUBSYSTEM=="module", KERNEL=="fuse", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-fs-fuse-connections.mount"
-+SUBSYSTEM=="module", KERNEL=="configfs", TAG+="systemd", ENV{SYSTEMD_WANTS}+="sys-kernel-config.mount"
- 
- LABEL="systemd_end"
diff --git a/SOURCES/0075-hwdb-add-Logitech-G5-Laser-Mouse.patch b/SOURCES/0075-hwdb-add-Logitech-G5-Laser-Mouse.patch
new file mode 100644
index 0000000..bd1835b
--- /dev/null
+++ b/SOURCES/0075-hwdb-add-Logitech-G5-Laser-Mouse.patch
@@ -0,0 +1,23 @@
+From b9c441e4f5e7049c23d3f5d0a5a874b13e0356fc Mon Sep 17 00:00:00 2001
+From: Jonathon Gilbert <coroutines@gmail.com>
+Date: Thu, 5 Mar 2015 20:29:56 +1000
+Subject: [PATCH] hwdb: add Logitech G5 Laser Mouse
+
+(cherry picked from commit 6437edbebe80e68b782f178c7a76e870a53811d7)
+---
+ hwdb/70-mouse.hwdb | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/hwdb/70-mouse.hwdb b/hwdb/70-mouse.hwdb
+index a62ebc4..93ee4d9 100644
+--- a/hwdb/70-mouse.hwdb
++++ b/hwdb/70-mouse.hwdb
+@@ -196,6 +196,8 @@ mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:4008:
+ mouse:usb:v046dpc52b:name:Logitech Unifying Device. Wireless PID:101b:
+  MOUSE_DPI=800@166
+ 
++# Logitech G5 Laser Mouse
++mouse:usb:v046dpc049:name:Logitech USB Gaming Mouse:
+ # Logitech G500s Laser Gaming Mouse
+ mouse:usb:v046dpc24e:name:Logitech G500s Laser Gaming Mouse:
+  MOUSE_DPI=400@500 *800@500 2000@500
diff --git a/SOURCES/0075-hwdb-update.patch b/SOURCES/0075-hwdb-update.patch
deleted file mode 100644
index 66eb771..0000000
--- a/SOURCES/0075-hwdb-update.patch
+++ /dev/null
@@ -1,1629 +0,0 @@
-From 805268127b9bceb16f58bf52e3f993e87ea0b9f8 Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Sun, 20 Oct 2013 01:12:29 +0200
-Subject: [PATCH] hwdb: update
-
----
- hwdb/20-OUI.hwdb              | 391 +++++++++++++++++++++++++++++++++++++++++-
- hwdb/20-pci-vendor-model.hwdb | 216 ++++++++++++++++++++---
- 2 files changed, 578 insertions(+), 29 deletions(-)
-
-diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
-index e913b28..5067167 100644
---- a/hwdb/20-OUI.hwdb
-+++ b/hwdb/20-OUI.hwdb
-@@ -12278,7 +12278,7 @@ OUI:40D85501B*
-  ID_OUI_FROM_DATABASE=Audio Enhancement
- 
- OUI:40D85501C*
-- ID_OUI_FROM_DATABASE=BERG
-+ ID_OUI_FROM_DATABASE=BERG Cloud Limited
- 
- OUI:40D85501D*
-  ID_OUI_FROM_DATABASE=Scharco Elektronik GmbH
-@@ -13324,6 +13324,93 @@ OUI:40D85517B*
- OUI:40D85517C*
-  ID_OUI_FROM_DATABASE=Critical Link
- 
-+OUI:40D85517D*
-+ ID_OUI_FROM_DATABASE=Kiwigrid GmbH
-+
-+OUI:40D85517E*
-+ ID_OUI_FROM_DATABASE=TOKHATEC
-+
-+OUI:40D85517F*
-+ ID_OUI_FROM_DATABASE=Telvent
-+
-+OUI:40D855180*
-+ ID_OUI_FROM_DATABASE=BroadSoft Inc
-+
-+OUI:40D855181*
-+ ID_OUI_FROM_DATABASE=eROCCA
-+
-+OUI:40D855182*
-+ ID_OUI_FROM_DATABASE=Georg Neumann GmbH
-+
-+OUI:40D855183*
-+ ID_OUI_FROM_DATABASE=EMAC, Inc.
-+
-+OUI:40D855184*
-+ ID_OUI_FROM_DATABASE=Satkirit Ltd
-+
-+OUI:40D855185*
-+ ID_OUI_FROM_DATABASE=Standard Change Makers
-+
-+OUI:40D855186*
-+ ID_OUI_FROM_DATABASE=KST technology
-+
-+OUI:40D855187*
-+ ID_OUI_FROM_DATABASE=CDEX Corp.
-+
-+OUI:40D855188*
-+ ID_OUI_FROM_DATABASE=Array Corporation
-+
-+OUI:40D855189*
-+ ID_OUI_FROM_DATABASE=Yoozma Corporation
-+
-+OUI:40D85518A*
-+ ID_OUI_FROM_DATABASE=Aplex Technology Inc.
-+
-+OUI:40D85518B*
-+ ID_OUI_FROM_DATABASE=Diagnosys Test Systems Ltd
-+
-+OUI:40D85518C*
-+ ID_OUI_FROM_DATABASE=EOS S.r.l.
-+
-+OUI:40D85518D*
-+ ID_OUI_FROM_DATABASE=Zoe Medical
-+
-+OUI:40D85518E*
-+ ID_OUI_FROM_DATABASE=Kerun Visual Technology Co., Ltd.(Shenzhen)
-+
-+OUI:40D85518F*
-+ ID_OUI_FROM_DATABASE=Beat Sensing co. , ltd.
-+
-+OUI:40D855190*
-+ ID_OUI_FROM_DATABASE=Spider Tecnologia Ind. e Com Ltda
-+
-+OUI:40D855191*
-+ ID_OUI_FROM_DATABASE=Soukai Electric
-+
-+OUI:40D855192*
-+ ID_OUI_FROM_DATABASE=GENERAL DYNAMICS C4 SYSTEMS
-+
-+OUI:40D855193*
-+ ID_OUI_FROM_DATABASE=FORZA SILICON CORP.
-+
-+OUI:40D855194*
-+ ID_OUI_FROM_DATABASE=RF Code
-+
-+OUI:40D855195*
-+ ID_OUI_FROM_DATABASE=TONNA ELECTRONIQUE
-+
-+OUI:40D855196*
-+ ID_OUI_FROM_DATABASE=Advanced Micro Controls Inc.
-+
-+OUI:40D855197*
-+ ID_OUI_FROM_DATABASE=Berg Cloud Limited
-+
-+OUI:40D855198*
-+ ID_OUI_FROM_DATABASE=devboards GmbH
-+
-+OUI:40D855199*
-+ ID_OUI_FROM_DATABASE=PRESSOL Schmiergeraete GmbH
-+
- OUI:000000*
-  ID_OUI_FROM_DATABASE=XEROX CORPORATION
- 
-@@ -46883,7 +46970,7 @@ OUI:0080B7*
-  ID_OUI_FROM_DATABASE=STELLAR COMPUTER
- 
- OUI:0080B8*
-- ID_OUI_FROM_DATABASE=BUG, INCORPORATED
-+ ID_OUI_FROM_DATABASE=B.U.G. MORISEIKI, INCORPORATED
- 
- OUI:0080B9*
-  ID_OUI_FROM_DATABASE=ARCHE TECHNOLIGIES INC.
-@@ -51589,6 +51676,9 @@ OUI:04F7E4*
- OUI:04F8C2*
-  ID_OUI_FROM_DATABASE=Flaircomm Microelectronics, Inc.
- 
-+OUI:04F938*
-+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-+
- OUI:04FE31*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -52132,6 +52222,9 @@ OUI:08512E*
- OUI:085240*
-  ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH
- 
-+OUI:085AE0*
-+ ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd.
-+
- OUI:085B0E*
-  ID_OUI_FROM_DATABASE=Fortinet, Inc.
- 
-@@ -52297,6 +52390,9 @@ OUI:08FC52*
- OUI:08FC88*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:08FD0E*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:0C0400*
-  ID_OUI_FROM_DATABASE=Jantar d.o.o.
- 
-@@ -52306,6 +52402,9 @@ OUI:0C0535*
- OUI:0C1105*
-  ID_OUI_FROM_DATABASE=Ringslink (Xiamen) Network Communication Technologies Co., Ltd
- 
-+OUI:0C1262*
-+ ID_OUI_FROM_DATABASE=zte corporation
-+
- OUI:0C130B*
-  ID_OUI_FROM_DATABASE=Uniqoteq Ltd.
- 
-@@ -52366,6 +52465,9 @@ OUI:0C4DE9*
- OUI:0C51F7*
-  ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX
- 
-+OUI:0C54A5*
-+ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
-+
- OUI:0C5521*
-  ID_OUI_FROM_DATABASE=Axiros GmbH
- 
-@@ -52627,6 +52729,9 @@ OUI:100D7F*
- OUI:100E2B*
-  ID_OUI_FROM_DATABASE=NEC CASIO Mobile Communications
- 
-+OUI:100E7E*
-+ ID_OUI_FROM_DATABASE=Juniper networks
-+
- OUI:1010B6*
-  ID_OUI_FROM_DATABASE=McCain Inc
- 
-@@ -53023,6 +53128,9 @@ OUI:149090*
- OUI:149448*
-  ID_OUI_FROM_DATABASE=BLU CASTLE S.A.
- 
-+OUI:1499E2*
-+ ID_OUI_FROM_DATABASE=Apple, Inc
-+
- OUI:149FE8*
-  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
- 
-@@ -53095,6 +53203,9 @@ OUI:14EE9D*
- OUI:14F0C5*
-  ID_OUI_FROM_DATABASE=Xtremio Ltd.
- 
-+OUI:14F28E*
-+ ID_OUI_FROM_DATABASE=ShenYang ZhongKe-Allwin Technology Co.LTD
-+
- OUI:14F42A*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-@@ -53257,6 +53368,9 @@ OUI:1867B0*
- OUI:186D99*
-  ID_OUI_FROM_DATABASE=Adanis Inc.
- 
-+OUI:1879A2*
-+ ID_OUI_FROM_DATABASE=GMJ ELECTRIC LIMITED
-+
- OUI:187A93*
-  ID_OUI_FROM_DATABASE=AMICCOM Electronics Corporation
- 
-@@ -53440,6 +53554,9 @@ OUI:1C19DE*
- OUI:1C1D67*
-  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
- 
-+OUI:1C1D86*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:1C334D*
-  ID_OUI_FROM_DATABASE=ITS Telecom
- 
-@@ -53803,6 +53920,9 @@ OUI:20858C*
- OUI:208984*
-  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD
- 
-+OUI:208986*
-+ ID_OUI_FROM_DATABASE=zte corporation
-+
- OUI:20918A*
-  ID_OUI_FROM_DATABASE=PROFALUX
- 
-@@ -53929,6 +54049,9 @@ OUI:20FEDB*
- OUI:2401C7*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-+OUI:24050F*
-+ ID_OUI_FROM_DATABASE=MTN Electronic Co. Ltd
-+
- OUI:240917*
-  ID_OUI_FROM_DATABASE=Devlin Electronics Limited
- 
-@@ -54034,6 +54157,9 @@ OUI:249442*
- OUI:249504*
-  ID_OUI_FROM_DATABASE=SFR
- 
-+OUI:24A2E1*
-+ ID_OUI_FROM_DATABASE=Apple, Inc
-+
- OUI:24A42C*
-  ID_OUI_FROM_DATABASE=KOUKAAM a.s.
- 
-@@ -54043,6 +54169,9 @@ OUI:24A43C*
- OUI:24A495*
-  ID_OUI_FROM_DATABASE=Thales Canada Inc.
- 
-+OUI:24A87D*
-+ ID_OUI_FROM_DATABASE=Panasonic Automotive Systems Asia Pacific(Thailand)Co.,Ltd.
-+
- OUI:24A937*
-  ID_OUI_FROM_DATABASE=PURE Storage
- 
-@@ -54121,6 +54250,9 @@ OUI:24DBAC*
- OUI:24DBAD*
-  ID_OUI_FROM_DATABASE=ShopperTrak RCT Corporation
- 
-+OUI:24DBED*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:24DEC6*
-  ID_OUI_FROM_DATABASE=Aruba Networks
- 
-@@ -54130,6 +54262,9 @@ OUI:24E271*
- OUI:24E6BA*
-  ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky
- 
-+OUI:24E9B3*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:24EA40*
-  ID_OUI_FROM_DATABASE=Systeme Helmholz GmbH
- 
-@@ -54547,6 +54682,9 @@ OUI:2C553C*
- OUI:2C59E5*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-+OUI:2C5A05*
-+ ID_OUI_FROM_DATABASE=Nokia Corporation
-+
- OUI:2C5AA3*
-  ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD
- 
-@@ -54940,6 +55078,9 @@ OUI:3407FB*
- OUI:340804*
-  ID_OUI_FROM_DATABASE=D-Link Corporation
- 
-+OUI:3413A8*
-+ ID_OUI_FROM_DATABASE=Mediplan Limited
-+
- OUI:3413E8*
-  ID_OUI_FROM_DATABASE=Intel Corporate
- 
-@@ -55321,6 +55462,9 @@ OUI:386E21*
- OUI:3872C0*
-  ID_OUI_FROM_DATABASE=COMTREND
- 
-+OUI:387B47*
-+ ID_OUI_FROM_DATABASE=AKELA, Inc.
-+
- OUI:388345*
-  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD.
- 
-@@ -55390,6 +55534,9 @@ OUI:38C7BA*
- OUI:38C85C*
-  ID_OUI_FROM_DATABASE=Cisco SPVTG
- 
-+OUI:38C9A9*
-+ ID_OUI_FROM_DATABASE=SMART High Reliability Solutions, Inc.
-+
- OUI:38CA97*
-  ID_OUI_FROM_DATABASE=Contour Design LLC
- 
-@@ -55459,6 +55606,9 @@ OUI:3C081E*
- OUI:3C096D*
-  ID_OUI_FROM_DATABASE=Powerhouse Dynamics
- 
-+OUI:3C0E23*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:3C0FC1*
-  ID_OUI_FROM_DATABASE=KBC Networks
- 
-@@ -55507,6 +55657,9 @@ OUI:3C300C*
- OUI:3C363D*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-+OUI:3C36E4*
-+ ID_OUI_FROM_DATABASE=Arris Group, Inc.
-+
- OUI:3C3888*
-  ID_OUI_FROM_DATABASE=ConnectQuest, llc
- 
-@@ -55672,6 +55825,9 @@ OUI:3CD0F8*
- OUI:3CD16E*
-  ID_OUI_FROM_DATABASE=Telepower Communication Co., Ltd
- 
-+OUI:3CD4D6*
-+ ID_OUI_FROM_DATABASE=WirelessWERX, Inc
-+
- OUI:3CD7DA*
-  ID_OUI_FROM_DATABASE=SK Mtek microelectronics(shenzhen)limited
- 
-@@ -55771,6 +55927,9 @@ OUI:402CF4*
- OUI:403004*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:403067*
-+ ID_OUI_FROM_DATABASE=Conlog (Pty) Ltd
-+
- OUI:40336C*
-  ID_OUI_FROM_DATABASE=Godrej & Boyce Mfg. co. ltd
- 
-@@ -55918,6 +56077,9 @@ OUI:40B3FC*
- OUI:40B4F0*
-  ID_OUI_FROM_DATABASE=Juniper Networks
- 
-+OUI:40B6B1*
-+ ID_OUI_FROM_DATABASE=SUNGSAM CO,.Ltd
-+
- OUI:40B7F3*
-  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
- 
-@@ -55972,6 +56134,9 @@ OUI:40ECF8*
- OUI:40EF4C*
-  ID_OUI_FROM_DATABASE=Fihonest communication co.,Ltd
- 
-+OUI:40F02F*
-+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
-+
- OUI:40F14C*
-  ID_OUI_FROM_DATABASE=ISE Europe SPRL
- 
-@@ -56203,6 +56368,12 @@ OUI:44C233*
- OUI:44C39B*
-  ID_OUI_FROM_DATABASE=OOO RUBEZH NPO
- 
-+OUI:44C4A9*
-+ ID_OUI_FROM_DATABASE=Opticom Communication, LLC
-+
-+OUI:44C56F*
-+ ID_OUI_FROM_DATABASE=NGN Easy Satfinder (Tianjin) Electronic Co., Ltd
-+
- OUI:44C9A2*
-  ID_OUI_FROM_DATABASE=Greenwald Industries
- 
-@@ -56362,6 +56533,9 @@ OUI:48B253*
- OUI:48B8DE*
-  ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD.
- 
-+OUI:48B977*
-+ ID_OUI_FROM_DATABASE=PulseOn Oy
-+
- OUI:48B9C2*
-  ID_OUI_FROM_DATABASE=Teletics Inc.
- 
-@@ -56659,9 +56833,15 @@ OUI:4CCC34*
- OUI:4CD637*
-  ID_OUI_FROM_DATABASE=Qsono Electronics Co., Ltd
- 
-+OUI:4CD9C4*
-+ ID_OUI_FROM_DATABASE=Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd
-+
- OUI:4CDF3D*
-  ID_OUI_FROM_DATABASE=TEAM ENGINEERS ADVANCE TECHNOLOGIES INDIA PVT LTD
- 
-+OUI:4CE1BB*
-+ ID_OUI_FROM_DATABASE=Zhuhai HiFocus Technology Co., Ltd.
-+
- OUI:4CE676*
-  ID_OUI_FROM_DATABASE=Buffalo Inc.
- 
-@@ -56701,6 +56881,9 @@ OUI:5011EB*
- OUI:5017FF*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-+OUI:501AC5*
-+ ID_OUI_FROM_DATABASE=Microsoft
-+
- OUI:50206B*
-  ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions
- 
-@@ -56812,6 +56995,9 @@ OUI:507D02*
- OUI:507E5D*
-  ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
- 
-+OUI:508569*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
-+
- OUI:5087B8*
-  ID_OUI_FROM_DATABASE=Nuvyyo Inc
- 
-@@ -56995,6 +57181,9 @@ OUI:5435DF*
- OUI:543968*
-  ID_OUI_FROM_DATABASE=Edgewater Networks Inc
- 
-+OUI:5439DF*
-+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-+
- OUI:543D37*
-  ID_OUI_FROM_DATABASE=Ruckus Wireless
- 
-@@ -57055,6 +57244,9 @@ OUI:5481AD*
- OUI:54847B*
-  ID_OUI_FROM_DATABASE=Digital Devices GmbH
- 
-+OUI:54880E*
-+ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD.
-+
- OUI:548922*
-  ID_OUI_FROM_DATABASE=Zelfy Inc
- 
-@@ -57439,6 +57631,9 @@ OUI:5C2479*
- OUI:5C260A*
-  ID_OUI_FROM_DATABASE=Dell Inc.
- 
-+OUI:5C2AEF*
-+ ID_OUI_FROM_DATABASE=Open Access Pty Ltd
-+
- OUI:5C3327*
-  ID_OUI_FROM_DATABASE=Spazio Italia srl
- 
-@@ -57547,6 +57742,9 @@ OUI:5CA39D*
- OUI:5CA3EB*
-  ID_OUI_FROM_DATABASE=Lokel s.r.o.
- 
-+OUI:5CA48A*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:5CAC4C*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-@@ -58228,6 +58426,9 @@ OUI:64E161*
- OUI:64E599*
-  ID_OUI_FROM_DATABASE=EFM Networks
- 
-+OUI:64E625*
-+ ID_OUI_FROM_DATABASE=Woxu Wireless Co., Ltd
-+
- OUI:64E682*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -58318,6 +58519,9 @@ OUI:683EEC*
- OUI:684352*
-  ID_OUI_FROM_DATABASE=Bhuu Limited
- 
-+OUI:684898*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:684B88*
-  ID_OUI_FROM_DATABASE=Galtronics Telemetry Inc.
- 
-@@ -58573,6 +58777,9 @@ OUI:6C3A84*
- OUI:6C3BE5*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-+OUI:6C3C53*
-+ ID_OUI_FROM_DATABASE=SoundHawk Corp
-+
- OUI:6C3E6D*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -58912,6 +59119,9 @@ OUI:706582*
- OUI:70704C*
-  ID_OUI_FROM_DATABASE=Purple Communications, Inc
- 
-+OUI:7071B3*
-+ ID_OUI_FROM_DATABASE=Brain Corporation
-+
- OUI:7071BC*
-  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
- 
-@@ -58936,6 +59146,9 @@ OUI:7076F0*
- OUI:707BE8*
-  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
- 
-+OUI:707C18*
-+ ID_OUI_FROM_DATABASE=ADATA Technology Co., Ltd
-+
- OUI:707E43*
-  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
- 
-@@ -59128,6 +59341,9 @@ OUI:74372F*
- OUI:743889*
-  ID_OUI_FROM_DATABASE=ANNAX Anzeigesysteme GmbH
- 
-+OUI:743ECB*
-+ ID_OUI_FROM_DATABASE=Gentrice tech
-+
- OUI:744401*
-  ID_OUI_FROM_DATABASE=NETGEAR
- 
-@@ -59533,6 +59749,9 @@ OUI:78A6BD*
- OUI:78A714*
-  ID_OUI_FROM_DATABASE=Amphenol
- 
-+OUI:78A873*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:78AB60*
-  ID_OUI_FROM_DATABASE=ABB Australia
- 
-@@ -59644,6 +59863,9 @@ OUI:78E8B6*
- OUI:78EC22*
-  ID_OUI_FROM_DATABASE=Shanghai Qihui Telecom Technology Co., LTD
- 
-+OUI:78EC74*
-+ ID_OUI_FROM_DATABASE=Kyland-USA
-+
- OUI:78EF4C*
-  ID_OUI_FROM_DATABASE=Unetconvergence Co., Ltd.
- 
-@@ -59749,6 +59971,9 @@ OUI:7C3E9D*
- OUI:7C438F*
-  ID_OUI_FROM_DATABASE=E-Band Communications Corp.
- 
-+OUI:7C444C*
-+ ID_OUI_FROM_DATABASE=Entertainment Solutions, S.L.
-+
- OUI:7C49B9*
-  ID_OUI_FROM_DATABASE=Plexus Manufacturing Sdn Bhd
- 
-@@ -59911,6 +60136,9 @@ OUI:7CC8D7*
- OUI:7CCB0D*
-  ID_OUI_FROM_DATABASE=Antaira Technologies, LLC
- 
-+OUI:7CCD11*
-+ ID_OUI_FROM_DATABASE=MS-Magnet
-+
- OUI:7CCD3C*
-  ID_OUI_FROM_DATABASE=Guangzhou Juzing Technology Co., Ltd
- 
-@@ -60181,6 +60409,9 @@ OUI:80B95C*
- OUI:80BAAC*
-  ID_OUI_FROM_DATABASE=TeleAdapt Ltd
- 
-+OUI:80BAE6*
-+ ID_OUI_FROM_DATABASE=Neets
-+
- OUI:80BBEB*
-  ID_OUI_FROM_DATABASE=Satmap Systems Ltd
- 
-@@ -60373,6 +60604,9 @@ OUI:847E40*
- OUI:8482F4*
-  ID_OUI_FROM_DATABASE=Beijing Huasun Unicreate Technology Co., Ltd
- 
-+OUI:848336*
-+ ID_OUI_FROM_DATABASE=Newrun
-+
- OUI:848371*
-  ID_OUI_FROM_DATABASE=Avaya, Inc
- 
-@@ -60475,6 +60709,9 @@ OUI:84F64C*
- OUI:84FCFE*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:84FE9E*
-+ ID_OUI_FROM_DATABASE=RTC Industries, Inc.
-+
- OUI:880355*
-  ID_OUI_FROM_DATABASE=Arcadyan Technology Corp.
- 
-@@ -60634,6 +60871,9 @@ OUI:889821*
- OUI:889B39*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:889CA6*
-+ ID_OUI_FROM_DATABASE=BTB Korea INC
-+
- OUI:889FFA*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-@@ -60664,6 +60904,9 @@ OUI:88BFD5*
- OUI:88C36E*
-  ID_OUI_FROM_DATABASE=Beijing Ereneben lnformation Technology Limited
- 
-+OUI:88C626*
-+ ID_OUI_FROM_DATABASE=Logitech - Ultimate Ears
-+
- OUI:88C663*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -60760,6 +61003,9 @@ OUI:8C2F39*
- OUI:8C3330*
-  ID_OUI_FROM_DATABASE=EmFirst Co., Ltd.
- 
-+OUI:8C3AE3*
-+ ID_OUI_FROM_DATABASE=LG Electronics
-+
- OUI:8C3C07*
-  ID_OUI_FROM_DATABASE=Skiva Technologies, Inc.
- 
-@@ -60778,6 +61024,9 @@ OUI:8C4B59*
- OUI:8C4CDC*
-  ID_OUI_FROM_DATABASE=PLANEX COMMUNICATIONS INC.
- 
-+OUI:8C4DB9*
-+ ID_OUI_FROM_DATABASE=Unmonday Ltd
-+
- OUI:8C4DEA*
-  ID_OUI_FROM_DATABASE=Cerio Corporation
- 
-@@ -60790,6 +61039,9 @@ OUI:8C53F7*
- OUI:8C541D*
-  ID_OUI_FROM_DATABASE=LGE
- 
-+OUI:8C569D*
-+ ID_OUI_FROM_DATABASE=Imaging Solutions Group
-+
- OUI:8C56C5*
-  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
- 
-@@ -60943,6 +61195,9 @@ OUI:8CDD8D*
- OUI:8CDE52*
-  ID_OUI_FROM_DATABASE=ISSC Technologies Corp.
- 
-+OUI:8CDE99*
-+ ID_OUI_FROM_DATABASE=Comlab Inc.
-+
- OUI:8CE081*
-  ID_OUI_FROM_DATABASE=zte corporation
- 
-@@ -61138,6 +61393,9 @@ OUI:907F61*
- OUI:908260*
-  ID_OUI_FROM_DATABASE=IEEE 1904.1 Working Group
- 
-+OUI:90837A*
-+ ID_OUI_FROM_DATABASE=General Electric Water & Process Technologies
-+
- OUI:90840D*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -61204,6 +61462,9 @@ OUI:90B21F*
- OUI:90B8D0*
-  ID_OUI_FROM_DATABASE=Joyent, Inc.
- 
-+OUI:90B931*
-+ ID_OUI_FROM_DATABASE=Apple, Inc
-+
- OUI:90B97D*
-  ID_OUI_FROM_DATABASE=Johnson Outdoors Marine Electronics d/b/a Minnkota
- 
-@@ -61543,6 +61804,9 @@ OUI:94F720*
- OUI:94FAE8*
-  ID_OUI_FROM_DATABASE=Shenzhen Eycom Technology Co., Ltd
- 
-+OUI:94FBB2*
-+ ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd
-+
- OUI:94FD1D*
-  ID_OUI_FROM_DATABASE=WhereWhen Corp
- 
-@@ -61747,6 +62011,9 @@ OUI:98D6F7*
- OUI:98D88C*
-  ID_OUI_FROM_DATABASE=Nortel Networks
- 
-+OUI:98DA92*
-+ ID_OUI_FROM_DATABASE=Vuzix Corporation
-+
- OUI:98DCD9*
-  ID_OUI_FROM_DATABASE=UNITEC Co., Ltd.
- 
-@@ -61780,6 +62047,9 @@ OUI:98FE03*
- OUI:98FE94*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:98FF6A*
-+ ID_OUI_FROM_DATABASE=OTEC(Shanghai)Technology Co.,Ltd.
-+
- OUI:98FFD0*
-  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
- 
-@@ -61849,6 +62119,9 @@ OUI:9C417C*
- OUI:9C443D*
-  ID_OUI_FROM_DATABASE=CHENGDU XUGUANG TECHNOLOGY CO, LTD
- 
-+OUI:9C44A6*
-+ ID_OUI_FROM_DATABASE=SwiftTest, Inc.
-+
- OUI:9C4563*
-  ID_OUI_FROM_DATABASE=DIMEP Sistemas
- 
-@@ -61927,6 +62200,9 @@ OUI:9C7BD2*
- OUI:9C807D*
-  ID_OUI_FROM_DATABASE=SYSCABLE Korea Inc.
- 
-+OUI:9C80DF*
-+ ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
-+
- OUI:9C8888*
-  ID_OUI_FROM_DATABASE=Simac Techniek NV
- 
-@@ -62098,6 +62374,9 @@ OUI:A01917*
- OUI:A01C05*
-  ID_OUI_FROM_DATABASE=NIMAX TELECOM CO.,LTD.
- 
-+OUI:A01D48*
-+ ID_OUI_FROM_DATABASE=Hewlett Packard
-+
- OUI:A02195*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Digital Imaging
- 
-@@ -62416,6 +62695,9 @@ OUI:A433D1*
- OUI:A438FC*
-  ID_OUI_FROM_DATABASE=Plastic Logic
- 
-+OUI:A43A69*
-+ ID_OUI_FROM_DATABASE=Vers Inc
-+
- OUI:A4466B*
-  ID_OUI_FROM_DATABASE=EOC Technology
- 
-@@ -62461,6 +62743,9 @@ OUI:A46706*
- OUI:A46E79*
-  ID_OUI_FROM_DATABASE=DFT System Co.Ltd
- 
-+OUI:A47733*
-+ ID_OUI_FROM_DATABASE=Google
-+
- OUI:A47760*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-@@ -62911,6 +63196,9 @@ OUI:AC20AA*
- OUI:AC220B*
-  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
- 
-+OUI:AC2DA3*
-+ ID_OUI_FROM_DATABASE=TXTR GmbH
-+
- OUI:AC2FA8*
-  ID_OUI_FROM_DATABASE=Humannix Co.,Ltd.
- 
-@@ -62986,6 +63274,9 @@ OUI:AC6123*
- OUI:AC6706*
-  ID_OUI_FROM_DATABASE=Ruckus Wireless
- 
-+OUI:AC6BAC*
-+ ID_OUI_FROM_DATABASE=Jenny Science AG
-+
- OUI:AC6E1A*
-  ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd
- 
-@@ -63085,6 +63376,9 @@ OUI:ACBEB6*
- OUI:ACC2EC*
-  ID_OUI_FROM_DATABASE=CLT INT'L IND. CORP.
- 
-+OUI:ACC595*
-+ ID_OUI_FROM_DATABASE=Graphite Systems
-+
- OUI:ACC698*
-  ID_OUI_FROM_DATABASE=Kohzu Precision Co., Ltd.
- 
-@@ -63172,6 +63466,9 @@ OUI:ACF7F3*
- OUI:ACF97E*
-  ID_OUI_FROM_DATABASE=ELESYS INC.
- 
-+OUI:ACFDEC*
-+ ID_OUI_FROM_DATABASE=Apple, Inc
-+
- OUI:B00594*
-  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
- 
-@@ -63193,6 +63490,9 @@ OUI:B01B7C*
- OUI:B01C91*
-  ID_OUI_FROM_DATABASE=Elim Co
- 
-+OUI:B024F3*
-+ ID_OUI_FROM_DATABASE=Progeny Systems
-+
- OUI:B0358D*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-@@ -63286,6 +63586,9 @@ OUI:B09134*
- OUI:B0973A*
-  ID_OUI_FROM_DATABASE=E-Fuel Corporation
- 
-+OUI:B0989F*
-+ ID_OUI_FROM_DATABASE=LG CNS
-+
- OUI:B09928*
-  ID_OUI_FROM_DATABASE=Fujitsu Limited
- 
-@@ -63313,6 +63616,9 @@ OUI:B0AA36*
- OUI:B0ACFA*
-  ID_OUI_FROM_DATABASE=Fujitsu Limited
- 
-+OUI:B0ADAA*
-+ ID_OUI_FROM_DATABASE=Avaya, Inc
-+
- OUI:B0B2DC*
-  ID_OUI_FROM_DATABASE=Zyxel Communications Corporation
- 
-@@ -63364,6 +63670,9 @@ OUI:B0D09C*
- OUI:B0D2F5*
-  ID_OUI_FROM_DATABASE=Vello Systems, Inc.
- 
-+OUI:B0D7C5*
-+ ID_OUI_FROM_DATABASE=STP KFT
-+
- OUI:B0DF3A*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -63466,6 +63775,9 @@ OUI:B43741*
- OUI:B439D6*
-  ID_OUI_FROM_DATABASE=ProCurve Networking by HP
- 
-+OUI:B43A28*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:B43DB2*
-  ID_OUI_FROM_DATABASE=Degreane Horizon
- 
-@@ -63784,6 +64096,9 @@ OUI:B8782E*
- OUI:B8797E*
-  ID_OUI_FROM_DATABASE=Secure Meters (UK) Limited
- 
-+OUI:B87AC9*
-+ ID_OUI_FROM_DATABASE=Siemens Ltd.
-+
- OUI:B8871E*
-  ID_OUI_FROM_DATABASE=Good Mind Industries Co., Ltd.
- 
-@@ -63823,6 +64138,9 @@ OUI:B8975A*
- OUI:B898B0*
-  ID_OUI_FROM_DATABASE=Atlona Inc.
- 
-+OUI:B898F7*
-+ ID_OUI_FROM_DATABASE=Gionee Communication Equipment Co,Ltd.ShenZhen
-+
- OUI:B89AED*
-  ID_OUI_FROM_DATABASE=OceanServer Technology, Inc
- 
-@@ -63985,12 +64303,18 @@ OUI:BC125E*
- OUI:BC1401*
-  ID_OUI_FROM_DATABASE=Hitron Technologies. Inc
- 
-+OUI:BC14EF*
-+ ID_OUI_FROM_DATABASE=ITON Technology Limited
-+
- OUI:BC15A6*
-  ID_OUI_FROM_DATABASE=Taiwan Jantek Electronics,Ltd.
- 
- OUI:BC1665*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-+OUI:BC1A67*
-+ ID_OUI_FROM_DATABASE=YF Technology Co., Ltd
-+
- OUI:BC20A4*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-@@ -64021,6 +64345,9 @@ OUI:BC2D98*
- OUI:BC305B*
-  ID_OUI_FROM_DATABASE=Dell Inc.
- 
-+OUI:BC307D*
-+ ID_OUI_FROM_DATABASE=Wistron Neweb Corp.
-+
- OUI:BC35E5*
-  ID_OUI_FROM_DATABASE=Hydro Systems Company
- 
-@@ -64207,6 +64534,9 @@ OUI:BCE59F*
- OUI:BCEA2B*
-  ID_OUI_FROM_DATABASE=CityCom GmbH
- 
-+OUI:BCEE7B*
-+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
-+
- OUI:BCF2AF*
-  ID_OUI_FROM_DATABASE=devolo AG
- 
-@@ -64324,6 +64654,9 @@ OUI:C0626B*
- OUI:C06394*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:C064C6*
-+ ID_OUI_FROM_DATABASE=Nokia Corporation
-+
- OUI:C06599*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -64462,6 +64795,9 @@ OUI:C0E54E*
- OUI:C0EAE4*
-  ID_OUI_FROM_DATABASE=Sonicwall
- 
-+OUI:C0F1C4*
-+ ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd.
-+
- OUI:C0F8DA*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-@@ -64642,6 +64978,9 @@ OUI:C47F51*
- OUI:C4823F*
-  ID_OUI_FROM_DATABASE=Fujian Newland Auto-ID Tech. Co,.Ltd.
- 
-+OUI:C4824E*
-+ ID_OUI_FROM_DATABASE=Changzhou Uchip Electronics Co., LTD.
-+
- OUI:C48508*
-  ID_OUI_FROM_DATABASE=Intel Corporate
- 
-@@ -65005,6 +65344,9 @@ OUI:C8F386*
- OUI:C8F406*
-  ID_OUI_FROM_DATABASE=Avaya, Inc
- 
-+OUI:C8F68D*
-+ ID_OUI_FROM_DATABASE=S.E.TECHNOLOGIES LIMITED
-+
- OUI:C8F704*
-  ID_OUI_FROM_DATABASE=Building Block Video
- 
-@@ -65143,6 +65485,9 @@ OUI:CC5D57*
- OUI:CC60BB*
-  ID_OUI_FROM_DATABASE=Empower RF Systems
- 
-+OUI:CC65AD*
-+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-+
- OUI:CC69B0*
-  ID_OUI_FROM_DATABASE=Global Traffic Technologies, LLC
- 
-@@ -65533,6 +65878,9 @@ OUI:D0DFB2*
- OUI:D0DFC7*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:D0E140*
-+ ID_OUI_FROM_DATABASE=Apple, Inc
-+
- OUI:D0E347*
-  ID_OUI_FROM_DATABASE=Yoga
- 
-@@ -65716,6 +66064,9 @@ OUI:D479C3*
- OUI:D47B75*
-  ID_OUI_FROM_DATABASE=HARTING Electronics GmbH
- 
-+OUI:D481CA*
-+ ID_OUI_FROM_DATABASE=iDevices, LLC
-+
- OUI:D4823E*
-  ID_OUI_FROM_DATABASE=Argosy Technologies, Ltd.
- 
-@@ -65965,6 +66316,9 @@ OUI:D8543A*
- OUI:D857EF*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-+OUI:D858D7*
-+ ID_OUI_FROM_DATABASE=CZ.NIC, z.s.p.o.
-+
- OUI:D85D4C*
-  ID_OUI_FROM_DATABASE=TP-LINK Technologies Co.,Ltd.
- 
-@@ -66004,6 +66358,9 @@ OUI:D878E5*
- OUI:D87988*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co., Ltd.
- 
-+OUI:D87CDD*
-+ ID_OUI_FROM_DATABASE=SANIX INCORPORATED
-+
- OUI:D88A3B*
-  ID_OUI_FROM_DATABASE=UNIT-EM
- 
-@@ -66475,6 +66832,9 @@ OUI:E067B3*
- OUI:E06995*
-  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
- 
-+OUI:E0750A*
-+ ID_OUI_FROM_DATABASE=ALPS ERECTORIC CO.,LTD.
-+
- OUI:E0757D*
-  ID_OUI_FROM_DATABASE=Motorola Mobility LLC
- 
-@@ -66577,6 +66937,9 @@ OUI:E0C6B3*
- OUI:E0C79D*
-  ID_OUI_FROM_DATABASE=Texas Instruments
- 
-+OUI:E0C86A*
-+ ID_OUI_FROM_DATABASE=SHENZHEN TW-SCIE Co., Ltd
-+
- OUI:E0C922*
-  ID_OUI_FROM_DATABASE=Jireh Energy Tech., Ltd.
- 
-@@ -66661,6 +67024,9 @@ OUI:E0F9BE*
- OUI:E0FAEC*
-  ID_OUI_FROM_DATABASE=Platan sp. z o.o. sp. k.
- 
-+OUI:E40439*
-+ ID_OUI_FROM_DATABASE=TomTom Software Ltd
-+
- OUI:E4115B*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-@@ -66997,6 +67363,9 @@ OUI:E85E53*
- OUI:E8611F*
-  ID_OUI_FROM_DATABASE=Dawning Information Industry Co.,Ltd
- 
-+OUI:E86183*
-+ ID_OUI_FROM_DATABASE=Black Diamond Advanced Technology, LLC
-+
- OUI:E86CDA*
-  ID_OUI_FROM_DATABASE=Supercomputers and Neurocomputers Research Center
- 
-@@ -67435,6 +67804,9 @@ OUI:F02408*
- OUI:F02572*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-+OUI:F025B7*
-+ ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co., LTD.
-+
- OUI:F0264C*
-  ID_OUI_FROM_DATABASE=Dr. Sigrist AG
- 
-@@ -67486,6 +67858,9 @@ OUI:F05DC8*
- OUI:F05F5A*
-  ID_OUI_FROM_DATABASE=Getriebebau NORD GmbH and Co. KG
- 
-+OUI:F06130*
-+ ID_OUI_FROM_DATABASE=Advantage Pharmacy Services, LLC
-+
- OUI:F0620D*
-  ID_OUI_FROM_DATABASE=Shenzhen Egreat Tech Corp.,Ltd
- 
-@@ -67681,6 +68056,9 @@ OUI:F40321*
- OUI:F4044C*
-  ID_OUI_FROM_DATABASE=ValenceTech Limited
- 
-+OUI:F4068D*
-+ ID_OUI_FROM_DATABASE=devolo AG
-+
- OUI:F40B93*
-  ID_OUI_FROM_DATABASE=Research In Motion
- 
-@@ -68107,6 +68485,9 @@ OUI:F89FB8*
- OUI:F8A03D*
-  ID_OUI_FROM_DATABASE=Dinstar Technologies Co., Ltd.
- 
-+OUI:F8A2B4*
-+ ID_OUI_FROM_DATABASE=RHEWA-WAAGENFABRIK August Freudewald GmbH &amp;Co. KG
-+
- OUI:F8A45F*
-  ID_OUI_FROM_DATABASE=Beijing Xiaomi communications co.,ltd
- 
-@@ -68245,6 +68626,9 @@ OUI:FC0647*
- OUI:FC0877*
-  ID_OUI_FROM_DATABASE=Prentke Romich Company
- 
-+OUI:FC09D8*
-+ ID_OUI_FROM_DATABASE=ACTEON Group
-+
- OUI:FC0A81*
-  ID_OUI_FROM_DATABASE=Motorola Solutions Inc.
- 
-@@ -68314,6 +68698,9 @@ OUI:FC455F*
- OUI:FC48EF*
-  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
- 
-+OUI:FC4B1C*
-+ ID_OUI_FROM_DATABASE=INTERSENSOR S.R.L.
-+
- OUI:FC4BBC*
-  ID_OUI_FROM_DATABASE=Sunplus Technology Co., Ltd.
- 
-diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
-index fdb534d..289f81c 100644
---- a/hwdb/20-pci-vendor-model.hwdb
-+++ b/hwdb/20-pci-vendor-model.hwdb
-@@ -4158,7 +4158,7 @@ pci:v00001002d00005F57*
-  ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT]
- 
- pci:v00001002d00006600*
-- ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8750M]
-+ ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8670M/8750M]
- 
- pci:v00001002d00006601*
-  ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M]
-@@ -4169,6 +4169,12 @@ pci:v00001002d00006602*
- pci:v00001002d00006603*
-  ID_MODEL_FROM_DATABASE=Mars
- 
-+pci:v00001002d00006604*
-+ ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M265]
-+
-+pci:v00001002d00006605*
-+ ID_MODEL_FROM_DATABASE=Mars [Radeon R7 M260]
-+
- pci:v00001002d00006606*
-  ID_MODEL_FROM_DATABASE=Mars XTX [Radeon HD 8790M]
- 
-@@ -4176,13 +4182,13 @@ pci:v00001002d00006607*
-  ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M]
- 
- pci:v00001002d00006610*
-- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8600 Series]
-+ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670/R7 250]
- 
- pci:v00001002d00006611*
-  ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570]
- 
- pci:v00001002d00006613*
-- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8500 Series]
-+ ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240]
- 
- pci:v00001002d00006620*
-  ID_MODEL_FROM_DATABASE=Mars
-@@ -4197,10 +4203,10 @@ pci:v00001002d00006631*
-  ID_MODEL_FROM_DATABASE=Oland
- 
- pci:v00001002d00006640*
-- ID_MODEL_FROM_DATABASE=Saturn [Radeon HD 8950]
-+ ID_MODEL_FROM_DATABASE=Saturn XT [Radeon HD 8950M]
- 
- pci:v00001002d00006641*
-- ID_MODEL_FROM_DATABASE=Saturn PRO
-+ ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M]
- 
- pci:v00001002d00006649*
-  ID_MODEL_FROM_DATABASE=Bonaire
-@@ -4236,13 +4242,13 @@ pci:v00001002d0000665Csv00001787sd00002329*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7790 TurboDuo
- 
- pci:v00001002d0000665D*
-- ID_MODEL_FROM_DATABASE=Bonaire
-+ ID_MODEL_FROM_DATABASE=Bonaire [Radeon R7 200 Series]
- 
- pci:v00001002d00006660*
-- ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A]
-+ ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M]
- 
- pci:v00001002d00006663*
-- ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8500M Series]
-+ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570M]
- 
- pci:v00001002d00006664*
-  ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series]
-@@ -4254,7 +4260,7 @@ pci:v00001002d00006667*
-  ID_MODEL_FROM_DATABASE=Jet ULT [Radeon R5 M200 Series]
- 
- pci:v00001002d0000666F*
-- ID_MODEL_FROM_DATABASE=Sun [Radeon HD 8500M]
-+ ID_MODEL_FROM_DATABASE=Sun LE [Radeon HD 8550M]
- 
- pci:v00001002d00006670*
-  ID_MODEL_FROM_DATABASE=Hainan
-@@ -5675,6 +5681,15 @@ pci:v00001002d0000678Asv00001002sd0000030C*
- pci:v00001002d0000678Asv00001002sd00000310*
-  ID_MODEL_FROM_DATABASE=FirePro S9000
- 
-+pci:v00001002d0000678Asv00001002sd00000420*
-+ ID_MODEL_FROM_DATABASE=Radeon Sky 700
-+
-+pci:v00001002d0000678Asv00001002sd00000422*
-+ ID_MODEL_FROM_DATABASE=Radeon Sky 900
-+
-+pci:v00001002d0000678Asv00001002sd00000B0E*
-+ ID_MODEL_FROM_DATABASE=FirePro S10000 Passive
-+
- pci:v00001002d0000678Asv00001002sd00000B2A*
-  ID_MODEL_FROM_DATABASE=FirePro S10000
- 
-@@ -5691,11 +5706,14 @@ pci:v00001002d00006792*
-  ID_MODEL_FROM_DATABASE=Tahiti
- 
- pci:v00001002d00006798*
-- ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970]
-+ ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970/R9 280X]
- 
- pci:v00001002d00006798sv00001002sd00003000*
-  ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition]
- 
-+pci:v00001002d00006798sv00001002sd00003001*
-+ ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X]
-+
- pci:v00001002d00006798sv00001002sd00004000*
-  ID_MODEL_FROM_DATABASE=Radeon HD 8970 OEM
- 
-@@ -5717,6 +5735,12 @@ pci:v00001002d00006798sv00001043sd0000044A*
- pci:v00001002d00006798sv00001043sd0000044C*
-  ID_MODEL_FROM_DATABASE=Tahiti XT2 [Matrix HD 7970 Platinum]
- 
-+pci:v00001002d00006798sv00001043sd00003001*
-+ ID_MODEL_FROM_DATABASE=Tahiti XTL [ROG Matrix R9 280X]
-+
-+pci:v00001002d00006798sv00001043sd00003006*
-+ ID_MODEL_FROM_DATABASE=Tahiti XTL [Radeon R9 280X DirectCU II TOP]
-+
- pci:v00001002d00006798sv00001043sd00009999*
-  ID_MODEL_FROM_DATABASE=ARES II
- 
-@@ -5771,6 +5795,9 @@ pci:v00001002d0000679Bsv00001002sd00000B2A*
- pci:v00001002d0000679Bsv00001462sd00008036*
-  ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM
- 
-+pci:v00001002d0000679Bsv0000148Csd00008990*
-+ ID_MODEL_FROM_DATABASE=Radeon HD 8990 OEM
-+
- pci:v00001002d0000679E*
-  ID_MODEL_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT]
- 
-@@ -5834,6 +5861,9 @@ pci:v00001002d00006808*
- pci:v00001002d00006808sv00001002sd00000310*
-  ID_MODEL_FROM_DATABASE=FirePro S7000
- 
-+pci:v00001002d00006808sv00001002sd00000420*
-+ ID_MODEL_FROM_DATABASE=Radeon Sky 500
-+
- pci:v00001002d00006809*
-  ID_MODEL_FROM_DATABASE=Pitcairn LE GL [FirePro W5000]
- 
-@@ -5865,19 +5895,22 @@ pci:v00001002d00006819sv0000174Bsd0000E221*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7850 2GB GDDR5 DVI-I/DVI-D/HDMI/DP
- 
- pci:v00001002d00006820*
-- ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8800M Series]
-+ ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8890M]
- 
- pci:v00001002d00006820sv0000103Csd00001851*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7750M
- 
- pci:v00001002d00006821*
-- ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8800M Series]
-+ ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8870M]
-+
-+pci:v00001002d00006821sv00001002sd0000031E*
-+ ID_MODEL_FROM_DATABASE=FirePro SX4000
- 
- pci:v00001002d00006822*
-  ID_MODEL_FROM_DATABASE=Venus PRO
- 
- pci:v00001002d00006823*
-- ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8800M Series]
-+ ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M]
- 
- pci:v00001002d00006825*
-  ID_MODEL_FROM_DATABASE=Heathrow XT [Radeon HD 7870M]
-@@ -5901,7 +5934,7 @@ pci:v00001002d0000682A*
-  ID_MODEL_FROM_DATABASE=Venus PRO
- 
- pci:v00001002d0000682B*
-- ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8800M Series]
-+ ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8830M]
- 
- pci:v00001002d0000682D*
-  ID_MODEL_FROM_DATABASE=Chelsea XT GL [FirePro M4000]
-@@ -5919,7 +5952,7 @@ pci:v00001002d00006831*
-  ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series]
- 
- pci:v00001002d00006835*
-- ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 200 Series]
-+ ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 260]
- 
- pci:v00001002d00006837*
-  ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730]
-@@ -16466,6 +16499,12 @@ pci:v00001077d00008031*
- pci:v00001077d00008032*
-  ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI)
- 
-+pci:v00001077d00008430*
-+ ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller (NIC VF)
-+
-+pci:v00001077d00008431*
-+ ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (FCoE VF)
-+
- pci:v00001077d00008432*
-  ID_MODEL_FROM_DATABASE=ISP2432M-based 10GbE Converged Network Adapter (CNA)
- 
-@@ -17090,6 +17129,12 @@ pci:v00001093d00002890*
- pci:v00001093d000028C0*
-  ID_MODEL_FROM_DATABASE=PCI-6014
- 
-+pci:v00001093d000028D0*
-+ ID_MODEL_FROM_DATABASE=PCI-5122
-+
-+pci:v00001093d000028E0*
-+ ID_MODEL_FROM_DATABASE=PXI-5122
-+
- pci:v00001093d00002A60*
-  ID_MODEL_FROM_DATABASE=PCI-6023E
- 
-@@ -17174,12 +17219,33 @@ pci:v00001093d000070BF*
- pci:v00001093d000070C0*
-  ID_MODEL_FROM_DATABASE=PCI-6143
- 
-+pci:v00001093d000070F0*
-+ ID_MODEL_FROM_DATABASE=PXI-5922
-+
-+pci:v00001093d000070F1*
-+ ID_MODEL_FROM_DATABASE=PCI-5922
-+
- pci:v00001093d000070F2*
-  ID_MODEL_FROM_DATABASE=PCI-6224
- 
-+pci:v00001093d00007121*
-+ ID_MODEL_FROM_DATABASE=PXI-5122EX
-+
-+pci:v00001093d00007122*
-+ ID_MODEL_FROM_DATABASE=PCI-5122EX
-+
- pci:v00001093d00007144*
-  ID_MODEL_FROM_DATABASE=PXI-5124 (12-bit 200 MS/s Digitizer)
- 
-+pci:v00001093d00007145*
-+ ID_MODEL_FROM_DATABASE=PCI-5124
-+
-+pci:v00001093d0000714C*
-+ ID_MODEL_FROM_DATABASE=PXI-5114
-+
-+pci:v00001093d0000714D*
-+ ID_MODEL_FROM_DATABASE=PCI-5114
-+
- pci:v00001093d0000716C*
-  ID_MODEL_FROM_DATABASE=PCI-6225
- 
-@@ -17195,6 +17261,60 @@ pci:v00001093d000071BC*
- pci:v00001093d000071D0*
-  ID_MODEL_FROM_DATABASE=PXI-6143
- 
-+pci:v00001093d00007260*
-+ ID_MODEL_FROM_DATABASE=PXI-5142
-+
-+pci:v00001093d00007261*
-+ ID_MODEL_FROM_DATABASE=PCI-5142
-+
-+pci:v00001093d000072A8*
-+ ID_MODEL_FROM_DATABASE=PXI-5152
-+
-+pci:v00001093d000072A9*
-+ ID_MODEL_FROM_DATABASE=PCI-5152
-+
-+pci:v00001093d000072AA*
-+ ID_MODEL_FROM_DATABASE=PXI-5105
-+
-+pci:v00001093d000072AB*
-+ ID_MODEL_FROM_DATABASE=PCI-5105
-+
-+pci:v00001093d0000730F*
-+ ID_MODEL_FROM_DATABASE=PXI-5922EX
-+
-+pci:v00001093d00007310*
-+ ID_MODEL_FROM_DATABASE=PCI-5922EX
-+
-+pci:v00001093d00007333*
-+ ID_MODEL_FROM_DATABASE=PXI-5900
-+
-+pci:v00001093d00007349*
-+ ID_MODEL_FROM_DATABASE=PXI-5154
-+
-+pci:v00001093d0000734A*
-+ ID_MODEL_FROM_DATABASE=PCI-5154
-+
-+pci:v00001093d0000737D*
-+ ID_MODEL_FROM_DATABASE=PXI-5124EX
-+
-+pci:v00001093d000073F0*
-+ ID_MODEL_FROM_DATABASE=PXI-5153
-+
-+pci:v00001093d000073F1*
-+ ID_MODEL_FROM_DATABASE=PCI-5153
-+
-+pci:v00001093d0000745E*
-+ ID_MODEL_FROM_DATABASE=PXI-5153EX
-+
-+pci:v00001093d0000745F*
-+ ID_MODEL_FROM_DATABASE=PCI-5153EX
-+
-+pci:v00001093d00007460*
-+ ID_MODEL_FROM_DATABASE=PXI-5154EX
-+
-+pci:v00001093d00007461*
-+ ID_MODEL_FROM_DATABASE=PCI-5154EX
-+
- pci:v00001093d0000B001*
-  ID_MODEL_FROM_DATABASE=IMAQ-PCI-1408
- 
-@@ -17226,7 +17346,10 @@ pci:v00001093d0000B091*
-  ID_MODEL_FROM_DATABASE=IMAQ-PXI-1411
- 
- pci:v00001093d0000C4C4*
-- ID_MODEL_FROM_DATABASE=PXIe-4353
-+ ID_MODEL_FROM_DATABASE=PXIe-4353/5160
-+
-+pci:v00001093d0000C4C4sv00001093sd000076D0*
-+ ID_MODEL_FROM_DATABASE=PXIe-5160
- 
- pci:v00001093d0000C801*
-  ID_MODEL_FROM_DATABASE=PCI-GPIB
-@@ -25557,10 +25680,10 @@ pci:v000010DEd00000FE5*
-  ID_MODEL_FROM_DATABASE=GK107 [GeForce K340 USM]
- 
- pci:v000010DEd00000FE6*
-- ID_MODEL_FROM_DATABASE=GK107 [NVS K1 USM]
-+ ID_MODEL_FROM_DATABASE=GK107 [GRID K1 NVS USM]
- 
- pci:v000010DEd00000FE7*
-- ID_MODEL_FROM_DATABASE=GK107GL [GRID K1]
-+ ID_MODEL_FROM_DATABASE=GK107GL [GRID K100 vGPU]
- 
- pci:v000010DEd00000FE7sv000010DEsd0000101E*
-  ID_MODEL_FROM_DATABASE=GRID K100
-@@ -25575,13 +25698,13 @@ pci:v000010DEd00000FF2*
-  ID_MODEL_FROM_DATABASE=GK107GL [GRID K1]
- 
- pci:v000010DEd00000FF5*
-- ID_MODEL_FROM_DATABASE=GK107GL [Tesla K1 USM]
-+ ID_MODEL_FROM_DATABASE=GK107GL [GRID K1 Tesla USM]
- 
- pci:v000010DEd00000FF6*
-  ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K1100M]
- 
- pci:v000010DEd00000FF7*
-- ID_MODEL_FROM_DATABASE=GK107GL [Quadro K1 USM]
-+ ID_MODEL_FROM_DATABASE=GK107GL [GRID K140Q vGPU]
- 
- pci:v000010DEd00000FF7sv000010DEsd00001037*
-  ID_MODEL_FROM_DATABASE=GRID K140Q
-@@ -25652,6 +25775,9 @@ pci:v000010DEd00001021*
- pci:v000010DEd00001022*
-  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20c]
- 
-+pci:v000010DEd00001024*
-+ ID_MODEL_FROM_DATABASE=GK110GL [Tesla K40c]
-+
- pci:v000010DEd00001026*
-  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s]
- 
-@@ -26246,6 +26372,9 @@ pci:v000010DEd00001140sv000017AAsd00003983*
- pci:v000010DEd00001140sv000017AAsd00005003*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-+pci:v000010DEd00001140sv000017AAsd00005005*
-+ ID_MODEL_FROM_DATABASE=GeForce 705M
-+
- pci:v000010DEd00001140sv000017AAsd0000500D*
-  ID_MODEL_FROM_DATABASE=GeForce GT 620M
- 
-@@ -26334,13 +26463,13 @@ pci:v000010DEd0000118A*
-  ID_MODEL_FROM_DATABASE=GK104GL [GRID K520]
- 
- pci:v000010DEd0000118B*
-- ID_MODEL_FROM_DATABASE=GK104 [GeForce K2 USM]
-+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 GeForce USM]
- 
- pci:v000010DEd0000118C*
-- ID_MODEL_FROM_DATABASE=GK104 [NVS K2 USM]
-+ ID_MODEL_FROM_DATABASE=GK104 [GRID K2 NVS USM]
- 
- pci:v000010DEd0000118D*
-- ID_MODEL_FROM_DATABASE=GK104GL [GRID K2]
-+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K200 vGPU]
- 
- pci:v000010DEd0000118Dsv000010DEsd0000101D*
-  ID_MODEL_FROM_DATABASE=GRID K200
-@@ -26351,6 +26480,9 @@ pci:v000010DEd0000118E*
- pci:v000010DEd0000118F*
-  ID_MODEL_FROM_DATABASE=GK104GL [Tesla K10]
- 
-+pci:v000010DEd00001193*
-+ ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
-+
- pci:v000010DEd0000119D*
-  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M]
- 
-@@ -26379,7 +26511,7 @@ pci:v000010DEd000011A7*
-  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 675MX]
- 
- pci:v000010DEd000011B0*
-- ID_MODEL_FROM_DATABASE=GK104GL [Quadro K2 USM]
-+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K240Q\K260Q vGPU]
- 
- pci:v000010DEd000011B0sv000010DEsd0000101A*
-  ID_MODEL_FROM_DATABASE=GRID K240Q
-@@ -26388,7 +26520,7 @@ pci:v000010DEd000011B0sv000010DEsd0000101B*
-  ID_MODEL_FROM_DATABASE=GRID K260Q
- 
- pci:v000010DEd000011B1*
-- ID_MODEL_FROM_DATABASE=GK104GL [Tesla K2 USM]
-+ ID_MODEL_FROM_DATABASE=GK104GL [GRID K2 Tesla USM]
- 
- pci:v000010DEd000011B6*
-  ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K3100M]
-@@ -32642,6 +32774,9 @@ pci:v00001179d00000618*
- pci:v00001179d00000701*
-  ID_MODEL_FROM_DATABASE=FIR Port Type-O
- 
-+pci:v00001179d00000803*
-+ ID_MODEL_FROM_DATABASE=TC6371AF SD Host Controller
-+
- pci:v00001179d00000804*
-  ID_MODEL_FROM_DATABASE=TC6371AF SmartMedia Controller
- 
-@@ -40046,6 +40181,9 @@ pci:v000013F6d00008788sv000014C3sd00001710*
- pci:v000013F6d00008788sv000014C3sd00001711*
-  ID_MODEL_FROM_DATABASE=HiFier Serenade
- 
-+pci:v000013F6d00008788sv000014C3sd00001713*
-+ ID_MODEL_FROM_DATABASE=HiFier Serenade III
-+
- pci:v000013F6d00008788sv00001A58sd00000910*
-  ID_MODEL_FROM_DATABASE=Barracuda AC-1
- 
-@@ -50711,8 +50849,11 @@ pci:v00001A41d00000002*
- pci:v00001A41d00000200*
-  ID_MODEL_FROM_DATABASE=TILE-Gx processor
- 
-+pci:v00001A41d00000201*
-+ ID_MODEL_FROM_DATABASE=TILE-Gx Processor Virtual Function
-+
- pci:v00001A41d00002000*
-- ID_MODEL_FROM_DATABASE=TILE-Gx PCI Express Bridge
-+ ID_MODEL_FROM_DATABASE=TILE-Gx PCI Express Root Port
- 
- pci:v00001A4A*
-  ID_VENDOR_FROM_DATABASE=SLAC National Accelerator Lab PPA-REG
-@@ -51353,6 +51494,15 @@ pci:v00001CC5*
- pci:v00001CC5d00000100*
-  ID_MODEL_FROM_DATABASE=CAN-PCIe-02
- 
-+pci:v00001CE4*
-+ ID_VENDOR_FROM_DATABASE=Exablaze
-+
-+pci:v00001CE4d00000001*
-+ ID_MODEL_FROM_DATABASE=ExaNIC X4
-+
-+pci:v00001CE4d00000002*
-+ ID_MODEL_FROM_DATABASE=ExaNIC X2
-+
- pci:v00001D44*
-  ID_VENDOR_FROM_DATABASE=DPT
- 
-@@ -54131,6 +54281,9 @@ pci:v00008086d000008B4sv00008086sd00000270*
- pci:v00008086d000008B4sv00008086sd00008270*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160
- 
-+pci:v00008086d000008CF*
-+ ID_MODEL_FROM_DATABASE=Atom Processor Z2760 Integrated Graphics Controller
-+
- pci:v00008086d00000960*
-  ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge
- 
-@@ -56369,6 +56522,9 @@ pci:v00008086d000010FBsv0000103Csd0000211B*
- pci:v00008086d000010FBsv0000103Csd00002147*
-  ID_MODEL_FROM_DATABASE=Ethernet 10Gb 1-port 561i Adapter
- 
-+pci:v00008086d000010FBsv0000103Csd00002159*
-+ ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 562i Adapter
-+
- pci:v00008086d000010FBsv0000108Esd00007B11*
-  ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2
- 
-@@ -57290,6 +57446,9 @@ pci:v00008086d00001528sv00001028sd00001F61*
- pci:v00008086d00001528sv0000103Csd0000192D*
-  ID_MODEL_FROM_DATABASE=561FLR-T 2-port 10Gb Ethernet Adapter
- 
-+pci:v00008086d00001528sv0000103Csd00002004*
-+ ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561i Adapter
-+
- pci:v00008086d00001528sv0000103Csd0000211A*
-  ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561T Adapter
- 
-@@ -57416,6 +57575,9 @@ pci:v00008086d0000155D*
- pci:v00008086d0000155Dsv00008086sd00000001*
-  ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-SR2
- 
-+pci:v00008086d0000155Dsv00008086sd00000002*
-+ ID_MODEL_FROM_DATABASE=Ethernet Server Bypass Adapter X520-LR2
-+
- pci:v00008086d00001560*
-  ID_MODEL_FROM_DATABASE=Ethernet Controller X540
- 
-@@ -69747,7 +69909,7 @@ pci:v00009005d00000285sv0000103Csd00003227*
-  ID_MODEL_FROM_DATABASE=AAR-2610SA
- 
- pci:v00009005d00000285sv0000108Esd00000286*
-- ID_MODEL_FROM_DATABASE=STK RAID INT
-+ ID_MODEL_FROM_DATABASE=Sun StorageTek SAS RAID HBA, Internal
- 
- pci:v00009005d00000285sv0000108Esd00000287*
-  ID_MODEL_FROM_DATABASE=STK RAID EXT
diff --git a/SOURCES/0076-rules-remove-pointless-MODE-settings.patch b/SOURCES/0076-rules-remove-pointless-MODE-settings.patch
deleted file mode 100644
index e2f5e28..0000000
--- a/SOURCES/0076-rules-remove-pointless-MODE-settings.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From d5ac78410cbf19b9e9e420286ad1afce03764c6d Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Mon, 21 Oct 2013 03:49:03 +0200
-Subject: [PATCH] rules: remove pointless MODE= settings
-
-Changing the default MODE= for the group accessi, but not specifying
-a GROUP= does not provide anything.
-
-It disables the default logic that the mode switches to 0660 as soon
-as a GROUP= is specifed, which make custom rules uneccesarily complicated.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=70665
----
- rules/50-udev-default.rules | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules
-index f764789..679dfdf 100644
---- a/rules/50-udev-default.rules
-+++ b/rules/50-udev-default.rules
-@@ -20,9 +20,7 @@ KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP=
- 
- SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640"
- 
--SUBSYSTEM=="input", KERNEL=="mouse*|mice|event*", MODE="0640"
--SUBSYSTEM=="input", KERNEL=="ts[0-9]*|uinput", MODE="0640"
--SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0644"
-+SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0664"
- 
- SUBSYSTEM=="video4linux", GROUP="video"
- SUBSYSTEM=="misc", KERNEL=="agpgart", GROUP="video"
-@@ -63,7 +61,7 @@ SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk"
- SUBSYSTEM=="aoe", GROUP="disk", MODE="0220"
- SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
- 
--KERNEL=="rfkill", MODE="0644"
-+KERNEL=="rfkill", MODE="0664"
- KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun"
- 
- KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse"
diff --git a/SOURCES/0076-tmpfiles-Fix-handling-of-duplicate-lines.patch b/SOURCES/0076-tmpfiles-Fix-handling-of-duplicate-lines.patch
new file mode 100644
index 0000000..ee6b829
--- /dev/null
+++ b/SOURCES/0076-tmpfiles-Fix-handling-of-duplicate-lines.patch
@@ -0,0 +1,32 @@
+From 339b62c8f336bb51dc7a925062abeb3ce76145e6 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu, 5 Mar 2015 14:58:56 +0100
+Subject: [PATCH] tmpfiles: Fix handling of duplicate lines
+
+Commit 3f93da987 accidentally dropped the "return 0" after detection of a
+duplicate line. Put it back, to get back the documented and intended "first
+match wins" behaviour.
+
+https://launchpad.net/bugs/1428540
+(cherry picked from commit 6487ada88d63e4998113f4c57fa10b7c865f8026)
+---
+ src/tmpfiles/tmpfiles.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 187997e..1e10968 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -1750,9 +1750,11 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
+                 unsigned n;
+ 
+                 for (n = 0; n < existing->count; n++) {
+-                        if (!item_compatible(existing->items + n, &i))
++                        if (!item_compatible(existing->items + n, &i)) {
+                                 log_warning("[%s:%u] Duplicate line for path \"%s\", ignoring.",
+                                             fname, line, i.path);
++                                return 0;
++                        }
+                 }
+         } else {
+                 existing = new0(ItemArray, 1);
diff --git a/SOURCES/0077-catalog-remove-links-to-non-existent-wiki-pages.patch b/SOURCES/0077-catalog-remove-links-to-non-existent-wiki-pages.patch
deleted file mode 100644
index 242ab4f..0000000
--- a/SOURCES/0077-catalog-remove-links-to-non-existent-wiki-pages.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From c1dfe1e12f7f37d3f3ad13160146a551a396f3c0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 24 Oct 2013 00:45:10 -0400
-Subject: [PATCH] catalog: remove links to non-existent wiki pages
-
-AFAIK, we don't have even one page with message explanations.
-If/when we add them, we can add links.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1017161
----
- catalog/systemd.catalog | 9 ---------
- 1 file changed, 9 deletions(-)
-
-diff --git a/catalog/systemd.catalog b/catalog/systemd.catalog
-index 892b2ad..3c2fe64 100644
---- a/catalog/systemd.catalog
-+++ b/catalog/systemd.catalog
-@@ -204,7 +204,6 @@ Unit @UNIT@ has begun shutting down.
- Subject: Unit @UNIT@ has finished shutting down
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- Unit @UNIT@ has finished shutting down.
- 
-@@ -212,7 +211,6 @@ Unit @UNIT@ has finished shutting down.
- Subject: Unit @UNIT@ has failed
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- Unit @UNIT@ has failed.
- 
-@@ -222,7 +220,6 @@ The result is @RESULT@.
- Subject: Unit @UNIT@ has begun with reloading its configuration
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- Unit @UNIT@ has begun with reloading its configuration
- 
-@@ -230,7 +227,6 @@ Unit @UNIT@ has begun with reloading its configuration
- Subject: Unit @UNIT@ has finished reloading its configuration
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- Unit @UNIT@ has finished reloading its configuration
- 
-@@ -240,7 +236,6 @@ The result is @RESULT@.
- Subject: Process @EXECUTABLE@ could not be executed
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- The process @EXECUTABLE@ could not be executed and failed.
- 
-@@ -250,7 +245,6 @@ The error number returned while executing this process is @ERRNO@.
- Subject: One or more messages could not be forwarded to syslog
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- One or more messages could not be forwarded to the syslog service
- running side-by-side with journald. This usually indicates that the
-@@ -261,7 +255,6 @@ messages queued.
- Subject: Mount point is not empty
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- The directory @WHERE@ is specified as the mount point (second field in
- /etc/fstab or Where= field in systemd unit file) and is not empty.
-@@ -274,7 +267,6 @@ location.
- Subject: A virtual machine or container has been started
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- The virtual machine @NAME@ with its leader PID @LEADER@ has been
- started is now ready to use.
-@@ -283,7 +275,6 @@ started is now ready to use.
- Subject: A virtual machine or container has been terminated
- Defined-By: systemd
- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@
- 
- The virtual machine @NAME@ with its leader PID @LEADER@ has been
- shut down.
diff --git a/SOURCES/0077-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch b/SOURCES/0077-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch
new file mode 100644
index 0000000..40c282d
--- /dev/null
+++ b/SOURCES/0077-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch
@@ -0,0 +1,23 @@
+From 01dd8dc414460df51940c64e73cf318a9f587270 Mon Sep 17 00:00:00 2001
+From: Peter Hutterer <peter.hutterer@who-t.net>
+Date: Fri, 6 Mar 2015 11:02:04 +1000
+Subject: [PATCH] hwdb: add Lenovo W451 to TOUCHPAD_HAS_TRACKPOINT_BUTTONS list
+
+(cherry picked from commit 9638ee90862e4a24f5796e87beebc4c47e2728c2)
+---
+ hwdb/70-touchpad.hwdb | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/hwdb/70-touchpad.hwdb b/hwdb/70-touchpad.hwdb
+index 9fcb5fd..8a32446 100644
+--- a/hwdb/70-touchpad.hwdb
++++ b/hwdb/70-touchpad.hwdb
+@@ -36,6 +36,8 @@
+ 
+ # Lenovo X1 Carbon 3rd
+ touchpad:pnpid:*LEN0048*:
++# Lenovo W541
++touchpad:pnpid:*LEN004a*:
+ # Lenovo T450s
+ touchpad:pnpid:*LEN200f*:
+  TOUCHPAD_HAS_TRACKPOINT_BUTTONS=1
diff --git a/SOURCES/0078-udev-builtin-path_id-add-support-for-bcma-bus.patch b/SOURCES/0078-udev-builtin-path_id-add-support-for-bcma-bus.patch
deleted file mode 100644
index b3d3af9..0000000
--- a/SOURCES/0078-udev-builtin-path_id-add-support-for-bcma-bus.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 8e98bfcd1771a460ccf99fa7df7d46cac2e1754a Mon Sep 17 00:00:00 2001
-From: Tom Gundersen <teg@jklm.no>
-Date: Sat, 26 Oct 2013 12:22:04 +0200
-Subject: [PATCH] udev-builtin: path_id - add support for bcma bus
-
-This matches the bcma support in the network device naming.
-
-Eventually wa want to make sure ID_PATH is equivalent to ID_NET_NAME_PATH,
-so we never need to match on the latter.
----
- src/udev/udev-builtin-path_id.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
-index 0659967..763f3c3 100644
---- a/src/udev/udev-builtin-path_id.c
-+++ b/src/udev/udev-builtin-path_id.c
-@@ -452,6 +452,19 @@ static struct udev_device *handle_usb(struct udev_device *parent, char **path)
-         return parent;
- }
- 
-+static struct udev_device *handle_bcma(struct udev_device *parent, char **path)
-+{
-+        const char *sysname;
-+        unsigned int core;
-+
-+        sysname = udev_device_get_sysname(parent);
-+        if (sscanf(sysname, "bcma%*u:%u", &core) != 1)
-+                return NULL;
-+
-+        path_prepend(path, "bcma-%u", core);
-+        return parent;
-+}
-+
- static struct udev_device *handle_ccw(struct udev_device *parent, struct udev_device *dev, char **path)
- {
-         struct udev_device *scsi_dev;
-@@ -509,6 +522,9 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
-                 } else if (streq(subsys, "usb")) {
-                         parent = handle_usb(parent, &path);
-                         some_transport = true;
-+                } else if (streq(subsys, "bcma")) {
-+                        parent = handle_bcma(parent, &path);
-+                        some_transport = true;
-                 } else if (streq(subsys, "serio")) {
-                         path_prepend(&path, "serio-%s", udev_device_get_sysnum(parent));
-                         parent = skip_subsystem(parent, "serio");
diff --git a/SOURCES/0078-vconsole-match-on-vtcon-events-not-fbcon-ones.patch b/SOURCES/0078-vconsole-match-on-vtcon-events-not-fbcon-ones.patch
new file mode 100644
index 0000000..303208c
--- /dev/null
+++ b/SOURCES/0078-vconsole-match-on-vtcon-events-not-fbcon-ones.patch
@@ -0,0 +1,39 @@
+From 5e6503d0d2efb5cbff945df42423640ffb138073 Mon Sep 17 00:00:00 2001
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Tue, 24 Feb 2015 17:49:02 +0100
+Subject: [PATCH] vconsole: match on vtcon events, not fbcon ones
+
+I observe that upon loading of framebuffer drivers, I do not get the
+desired system font, but the kernel-level defaults (usually
+lib/fonts/font_8x16.c, but your mileage may vary depending on kernel
+config and boot options).
+
+The fbcon driver may be loaded at a time way before the first
+framebuffer device is active, such that the vconsole setup helper
+runs too early.
+
+The existing rule is non-fitting. The going live of the fbcon kernel
+component does not indicate the proper time at which to load the
+visuals, which really ought to be done when a new vtcon object comes
+into existence. (The font table is a per-vtcon property.)
+
+(cherry picked from commit a52750d1483ff139df33149afc0b675531e9cd79)
+---
+ src/vconsole/90-vconsole.rules.in | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/src/vconsole/90-vconsole.rules.in b/src/vconsole/90-vconsole.rules.in
+index 0620096..35b9ad5 100644
+--- a/src/vconsole/90-vconsole.rules.in
++++ b/src/vconsole/90-vconsole.rules.in
+@@ -5,7 +5,6 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ 
+-# Kernel resets vconsole state when changing console drivers so run
+-# systemd-vconsole-setup when fbcon loads
+-
+-ACTION=="add", SUBSYSTEM=="graphics", KERNEL=="fbcon", RUN+="@rootlibexecdir@/systemd-vconsole-setup"
++# Each vtcon keeps its own state of fonts.
++#
++ACTION=="add", SUBSYSTEM=="vtconsole", KERNEL=="vtcon*", RUN+="@rootlibexecdir@/systemd-vconsole-setup"
diff --git a/SOURCES/0079-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch b/SOURCES/0079-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch
new file mode 100644
index 0000000..b446593
--- /dev/null
+++ b/SOURCES/0079-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch
@@ -0,0 +1,375 @@
+From f997080b4d17a40b59b398e4354b6368d9c85f69 Mon Sep 17 00:00:00 2001
+From: Ivan Shapovalov <intelfx100@gmail.com>
+Date: Sat, 7 Mar 2015 08:44:52 -0500
+Subject: [PATCH] core: do not spawn jobs or touch other units during
+ coldplugging
+
+Because the order of coldplugging is not defined, we can reference a
+not-yet-coldplugged unit and read its state while it has not yet been
+set to a meaningful value.
+
+This way, already active units may get started again.
+
+We fix this by deferring such actions until all units have been at
+least somehow coldplugged.
+
+Fixes https://bugs.freedesktop.org/show_bug.cgi?id=88401
+
+(cherry picked from commit 6e392c9c45643d106673c6643ac8bf4e65da13c1)
+---
+ src/core/automount.c |  2 +-
+ src/core/busname.c   |  2 +-
+ src/core/device.c    |  2 +-
+ src/core/manager.c   | 35 +++++++++++++++++++++++++++++++++--
+ src/core/mount.c     |  2 +-
+ src/core/path.c      | 14 ++++++++++----
+ src/core/scope.c     |  2 +-
+ src/core/service.c   |  2 +-
+ src/core/slice.c     |  2 +-
+ src/core/snapshot.c  |  2 +-
+ src/core/socket.c    |  2 +-
+ src/core/swap.c      |  2 +-
+ src/core/target.c    |  2 +-
+ src/core/timer.c     | 14 ++++++++++----
+ src/core/unit.c      | 25 ++++++++++++++++---------
+ src/core/unit.h      | 12 +++++++++---
+ 16 files changed, 89 insertions(+), 33 deletions(-)
+
+diff --git a/src/core/automount.c b/src/core/automount.c
+index 9f6bd84..e4c7941 100644
+--- a/src/core/automount.c
++++ b/src/core/automount.c
+@@ -235,7 +235,7 @@ static void automount_set_state(Automount *a, AutomountState state) {
+         unit_notify(UNIT(a), state_translation_table[old_state], state_translation_table[state], true);
+ }
+ 
+-static int automount_coldplug(Unit *u) {
++static int automount_coldplug(Unit *u, Hashmap *deferred_work) {
+         Automount *a = AUTOMOUNT(u);
+         int r;
+ 
+diff --git a/src/core/busname.c b/src/core/busname.c
+index 1d77292..43d7607 100644
+--- a/src/core/busname.c
++++ b/src/core/busname.c
+@@ -335,7 +335,7 @@ static void busname_set_state(BusName *n, BusNameState state) {
+         unit_notify(UNIT(n), state_translation_table[old_state], state_translation_table[state], true);
+ }
+ 
+-static int busname_coldplug(Unit *u) {
++static int busname_coldplug(Unit *u, Hashmap *deferred_work) {
+         BusName *n = BUSNAME(u);
+         int r;
+ 
+diff --git a/src/core/device.c b/src/core/device.c
+index 1cc103c..4ff8827 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -142,7 +142,7 @@ static void device_set_state(Device *d, DeviceState state) {
+         unit_notify(UNIT(d), state_translation_table[old_state], state_translation_table[state], true);
+ }
+ 
+-static int device_coldplug(Unit *u) {
++static int device_coldplug(Unit *u, Hashmap *deferred_work) {
+         Device *d = DEVICE(u);
+ 
+         assert(d);
+diff --git a/src/core/manager.c b/src/core/manager.c
+index bc9b7ec..203a6a0 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -983,7 +983,28 @@ static int manager_coldplug(Manager *m) {
+         Unit *u;
+         char *k;
+ 
+-        assert(m);
++        /*
++         * Some unit types tend to spawn jobs or check other units' state
++         * during coldplug. This is wrong because it is undefined whether the
++         * units in question have been already coldplugged (i. e. their state
++         * restored). This way, we can easily re-start an already started unit
++         * or otherwise make a wrong decision based on the unit's state.
++         *
++         * Solve this by providing a way for coldplug functions to defer
++         * such actions until after all units have been coldplugged.
++         *
++         * We store Unit* -> int(*)(Unit*).
++         *
++         * https://bugs.freedesktop.org/show_bug.cgi?id=88401
++         */
++        _cleanup_hashmap_free_ Hashmap *deferred_work = NULL;
++        int(*proc)(Unit*);
++
++        assert(m);
++
++        deferred_work = hashmap_new(&trivial_hash_ops);
++        if (!deferred_work)
++                return -ENOMEM;
+ 
+         /* Then, let's set up their initial state. */
+         HASHMAP_FOREACH_KEY(u, k, m->units, i) {
+@@ -993,7 +1014,17 @@ static int manager_coldplug(Manager *m) {
+                 if (u->id != k)
+                         continue;
+ 
+-                q = unit_coldplug(u);
++                q = unit_coldplug(u, deferred_work);
++                if (q < 0)
++                        r = q;
++        }
++
++        /* After coldplugging and setting up initial state of the units,
++         * let's perform operations which spawn jobs or query units' state. */
++        HASHMAP_FOREACH_KEY(proc, u, deferred_work, i) {
++                int q;
++
++                q = proc(u);
+                 if (q < 0)
+                         r = q;
+         }
+diff --git a/src/core/mount.c b/src/core/mount.c
+index c971330..3ae0eb4 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -617,7 +617,7 @@ static void mount_set_state(Mount *m, MountState state) {
+         m->reload_result = MOUNT_SUCCESS;
+ }
+ 
+-static int mount_coldplug(Unit *u) {
++static int mount_coldplug(Unit *u, Hashmap *deferred_work) {
+         Mount *m = MOUNT(u);
+         MountState new_state = MOUNT_DEAD;
+         int r;
+diff --git a/src/core/path.c b/src/core/path.c
+index e5ea79f..51e36fa 100644
+--- a/src/core/path.c
++++ b/src/core/path.c
+@@ -440,7 +440,12 @@ static void path_set_state(Path *p, PathState state) {
+ 
+ static void path_enter_waiting(Path *p, bool initial, bool recheck);
+ 
+-static int path_coldplug(Unit *u) {
++static int path_enter_waiting_coldplug(Unit *u) {
++        path_enter_waiting(PATH(u), true, true);
++        return 0;
++}
++
++static int path_coldplug(Unit *u, Hashmap *deferred_work) {
+         Path *p = PATH(u);
+ 
+         assert(p);
+@@ -449,9 +454,10 @@ static int path_coldplug(Unit *u) {
+         if (p->deserialized_state != p->state) {
+ 
+                 if (p->deserialized_state == PATH_WAITING ||
+-                    p->deserialized_state == PATH_RUNNING)
+-                        path_enter_waiting(p, true, true);
+-                else
++                    p->deserialized_state == PATH_RUNNING) {
++                        hashmap_put(deferred_work, u, &path_enter_waiting_coldplug);
++                        path_set_state(p, PATH_WAITING);
++                } else
+                         path_set_state(p, p->deserialized_state);
+         }
+ 
+diff --git a/src/core/scope.c b/src/core/scope.c
+index b41db78..ae6614f 100644
+--- a/src/core/scope.c
++++ b/src/core/scope.c
+@@ -173,7 +173,7 @@ static int scope_load(Unit *u) {
+         return scope_verify(s);
+ }
+ 
+-static int scope_coldplug(Unit *u) {
++static int scope_coldplug(Unit *u, Hashmap *deferred_work) {
+         Scope *s = SCOPE(u);
+         int r;
+ 
+diff --git a/src/core/service.c b/src/core/service.c
+index 15e29be..7781b4e 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -879,7 +879,7 @@ static void service_set_state(Service *s, ServiceState state) {
+         s->reload_result = SERVICE_SUCCESS;
+ }
+ 
+-static int service_coldplug(Unit *u) {
++static int service_coldplug(Unit *u, Hashmap *deferred_work) {
+         Service *s = SERVICE(u);
+         int r;
+ 
+diff --git a/src/core/slice.c b/src/core/slice.c
+index ae9819d..61ff9d3 100644
+--- a/src/core/slice.c
++++ b/src/core/slice.c
+@@ -153,7 +153,7 @@ static int slice_load(Unit *u) {
+         return slice_verify(s);
+ }
+ 
+-static int slice_coldplug(Unit *u) {
++static int slice_coldplug(Unit *u, Hashmap *deferred_work) {
+         Slice *t = SLICE(u);
+ 
+         assert(t);
+diff --git a/src/core/snapshot.c b/src/core/snapshot.c
+index b70c3be..b1d8448 100644
+--- a/src/core/snapshot.c
++++ b/src/core/snapshot.c
+@@ -75,7 +75,7 @@ static int snapshot_load(Unit *u) {
+         return 0;
+ }
+ 
+-static int snapshot_coldplug(Unit *u) {
++static int snapshot_coldplug(Unit *u, Hashmap *deferred_work) {
+         Snapshot *s = SNAPSHOT(u);
+ 
+         assert(s);
+diff --git a/src/core/socket.c b/src/core/socket.c
+index 88aae48..760de02 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -1326,7 +1326,7 @@ static void socket_set_state(Socket *s, SocketState state) {
+         unit_notify(UNIT(s), state_translation_table[old_state], state_translation_table[state], true);
+ }
+ 
+-static int socket_coldplug(Unit *u) {
++static int socket_coldplug(Unit *u, Hashmap *deferred_work) {
+         Socket *s = SOCKET(u);
+         int r;
+ 
+diff --git a/src/core/swap.c b/src/core/swap.c
+index 5c19af5..369abf0 100644
+--- a/src/core/swap.c
++++ b/src/core/swap.c
+@@ -513,7 +513,7 @@ static void swap_set_state(Swap *s, SwapState state) {
+                         job_add_to_run_queue(UNIT(other)->job);
+ }
+ 
+-static int swap_coldplug(Unit *u) {
++static int swap_coldplug(Unit *u, Hashmap *deferred_work) {
+         Swap *s = SWAP(u);
+         SwapState new_state = SWAP_DEAD;
+         int r;
+diff --git a/src/core/target.c b/src/core/target.c
+index 33fb66b..2411a8e 100644
+--- a/src/core/target.c
++++ b/src/core/target.c
+@@ -107,7 +107,7 @@ static int target_load(Unit *u) {
+         return 0;
+ }
+ 
+-static int target_coldplug(Unit *u) {
++static int target_coldplug(Unit *u, Hashmap *deferred_work) {
+         Target *t = TARGET(u);
+ 
+         assert(t);
+diff --git a/src/core/timer.c b/src/core/timer.c
+index 45744c7..48cf9c1 100644
+--- a/src/core/timer.c
++++ b/src/core/timer.c
+@@ -268,7 +268,12 @@ static void timer_set_state(Timer *t, TimerState state) {
+ 
+ static void timer_enter_waiting(Timer *t, bool initial);
+ 
+-static int timer_coldplug(Unit *u) {
++static int timer_enter_waiting_coldplug(Unit *u) {
++        timer_enter_waiting(TIMER(u), false);
++        return 0;
++}
++
++static int timer_coldplug(Unit *u, Hashmap *deferred_work) {
+         Timer *t = TIMER(u);
+ 
+         assert(t);
+@@ -276,9 +281,10 @@ static int timer_coldplug(Unit *u) {
+ 
+         if (t->deserialized_state != t->state) {
+ 
+-                if (t->deserialized_state == TIMER_WAITING)
+-                        timer_enter_waiting(t, false);
+-                else
++                if (t->deserialized_state == TIMER_WAITING) {
++                        hashmap_put(deferred_work, u, &timer_enter_waiting_coldplug);
++                        timer_set_state(t, TIMER_WAITING);
++                } else
+                         timer_set_state(t, t->deserialized_state);
+         }
+ 
+diff --git a/src/core/unit.c b/src/core/unit.c
+index a6558ee..565455b 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2859,27 +2859,34 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) {
+         return 0;
+ }
+ 
+-int unit_coldplug(Unit *u) {
++static int unit_add_deserialized_job_coldplug(Unit *u) {
++        int r;
++
++        r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL);
++        if (r < 0)
++                return r;
++
++        u->deserialized_job = _JOB_TYPE_INVALID;
++
++        return 0;
++}
++
++int unit_coldplug(Unit *u, Hashmap *deferred_work) {
+         int r;
+ 
+         assert(u);
+ 
+         if (UNIT_VTABLE(u)->coldplug)
+-                if ((r = UNIT_VTABLE(u)->coldplug(u)) < 0)
++                if ((r = UNIT_VTABLE(u)->coldplug(u, deferred_work)) < 0)
+                         return r;
+ 
+         if (u->job) {
+                 r = job_coldplug(u->job);
+                 if (r < 0)
+                         return r;
+-        } else if (u->deserialized_job >= 0) {
++        } else if (u->deserialized_job >= 0)
+                 /* legacy */
+-                r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL);
+-                if (r < 0)
+-                        return r;
+-
+-                u->deserialized_job = _JOB_TYPE_INVALID;
+-        }
++                hashmap_put(deferred_work, u, &unit_add_deserialized_job_coldplug);
+ 
+         return 0;
+ }
+diff --git a/src/core/unit.h b/src/core/unit.h
+index 291bc77..7ebc489 100644
+--- a/src/core/unit.h
++++ b/src/core/unit.h
+@@ -307,8 +307,14 @@ struct UnitVTable {
+         int (*load)(Unit *u);
+ 
+         /* If a lot of units got created via enumerate(), this is
+-         * where to actually set the state and call unit_notify(). */
+-        int (*coldplug)(Unit *u);
++         * where to actually set the state and call unit_notify().
++         *
++         * This must not reference other units (maybe implicitly through spawning
++         * jobs), because it is possible that they are not yet coldplugged.
++         * Such actions must be deferred until the end of coldplug bу adding
++         * a "Unit* -> int(*)(Unit*)" entry into the hashmap.
++         */
++        int (*coldplug)(Unit *u, Hashmap *deferred_work);
+ 
+         void (*dump)(Unit *u, FILE *f, const char *prefix);
+ 
+@@ -544,7 +550,7 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds);
+ 
+ int unit_add_node_link(Unit *u, const char *what, bool wants);
+ 
+-int unit_coldplug(Unit *u);
++int unit_coldplug(Unit *u, Hashmap *deferred_work);
+ 
+ void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format) _printf_(3, 0);
+ 
diff --git a/SOURCES/0079-libudev-default-log_priority-to-INFO.patch b/SOURCES/0079-libudev-default-log_priority-to-INFO.patch
deleted file mode 100644
index e680015..0000000
--- a/SOURCES/0079-libudev-default-log_priority-to-INFO.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 1842d7a64410f099a454f341ecf0ad9d6682f8ec Mon Sep 17 00:00:00 2001
-From: Tom Gundersen <teg@jklm.no>
-Date: Wed, 30 Oct 2013 15:09:01 +0100
-Subject: [PATCH] libudev: default log_priority to INFO
-
-This brings it in sync with the default config file.
----
- src/libudev/libudev.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c
-index 208039a..bc73a5a 100644
---- a/src/libudev/libudev.c
-+++ b/src/libudev/libudev.c
-@@ -125,7 +125,7 @@ _public_ struct udev *udev_new(void)
-                 return NULL;
-         udev->refcount = 1;
-         udev->log_fn = log_stderr;
--        udev->log_priority = LOG_ERR;
-+        udev->log_priority = LOG_INFO;
-         udev_list_init(udev, &udev->properties_list, true);
- 
-         f = fopen("/etc/udev/udev.conf", "re");
diff --git a/SOURCES/0080-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch b/SOURCES/0080-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch
new file mode 100644
index 0000000..2414db8
--- /dev/null
+++ b/SOURCES/0080-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch
@@ -0,0 +1,28 @@
+From 5857b7843b35d84f976a399765f1c9a5365742a2 Mon Sep 17 00:00:00 2001
+From: Ivan Shapovalov <intelfx100@gmail.com>
+Date: Thu, 26 Feb 2015 02:46:24 +0300
+Subject: [PATCH] firstboot: set all spwd fields to -1 for consistency with
+ sysusers
+
+(cherry picked from commit ad525df851a1bef7369fe21b5cde382941e7b073)
+---
+ src/firstboot/firstboot.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/firstboot/firstboot.c b/src/firstboot/firstboot.c
+index a765d6d..a37ca17 100644
+--- a/src/firstboot/firstboot.c
++++ b/src/firstboot/firstboot.c
+@@ -525,9 +525,9 @@ static int process_root_password(void) {
+ 
+         struct spwd item = {
+                 .sp_namp = (char*) "root",
+-                .sp_min = 0,
+-                .sp_max = 99999,
+-                .sp_warn = 7,
++                .sp_min = -1,
++                .sp_max = -1,
++                .sp_warn = -1,
+                 .sp_inact = -1,
+                 .sp_expire = -1,
+                 .sp_flag = (unsigned long) -1, /* this appears to be what everybody does ... */
diff --git a/SOURCES/0080-nspawn-only-pass-in-slice-setting-if-it-is-set.patch b/SOURCES/0080-nspawn-only-pass-in-slice-setting-if-it-is-set.patch
deleted file mode 100644
index 7888d44..0000000
--- a/SOURCES/0080-nspawn-only-pass-in-slice-setting-if-it-is-set.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From d5e2897030849371bc976ecb8de3ca2fbf16b6bb Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 30 Oct 2013 18:40:21 +0100
-Subject: [PATCH] nspawn: only pass in slice setting if it is set
-
----
- src/nspawn/nspawn.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index eb9605c..9616dbf 100644
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -1202,7 +1202,7 @@ static int register_machine(void) {
-                         "container",
-                         (uint32_t) 0,
-                         strempty(arg_directory),
--                        1, "Slice", "s", strempty(arg_slice));
-+                        !isempty(arg_slice), "Slice", "s", arg_slice);
-         if (r < 0) {
-                 log_error("Failed to register machine: %s", error.message ? error.message : strerror(-r));
-                 return r;
diff --git a/SOURCES/0081-sysusers-do-not-reject-users-with-already-present-et.patch b/SOURCES/0081-sysusers-do-not-reject-users-with-already-present-et.patch
new file mode 100644
index 0000000..b84cd49
--- /dev/null
+++ b/SOURCES/0081-sysusers-do-not-reject-users-with-already-present-et.patch
@@ -0,0 +1,77 @@
+From 169e74d772eac561a24f461ac65118d3d83a5980 Mon Sep 17 00:00:00 2001
+From: Ivan Shapovalov <intelfx100@gmail.com>
+Date: Sat, 7 Mar 2015 18:11:32 +0300
+Subject: [PATCH] sysusers: do not reject users with already present
+ /etc/shadow entries
+
+This is needed to interoperate firstboot and sysusers. The former one is started
+first, and it writes only /etc/shadow when it is told to set the root password.
+It's better to relax checks here than to duplicate functionality in firstboot.
+
+(cherry picked from commit c5abf22514b3925aa6f0d4a3f36f76799bf1911b)
+---
+ src/sysusers/sysusers.c | 23 +++++++++--------------
+ 1 file changed, 9 insertions(+), 14 deletions(-)
+
+diff --git a/src/sysusers/sysusers.c b/src/sysusers/sysusers.c
+index e47bcb4..76b5962 100644
+--- a/src/sysusers/sysusers.c
++++ b/src/sysusers/sysusers.c
+@@ -605,6 +605,8 @@ static int write_files(void) {
+                 if (r < 0)
+                         goto finish;
+ 
++                lstchg = (long) (now(CLOCK_REALTIME) / USEC_PER_DAY);
++
+                 original = fopen(shadow_path, "re");
+                 if (original) {
+                         struct spwd *sp;
+@@ -618,8 +620,13 @@ static int write_files(void) {
+ 
+                                 i = hashmap_get(users, sp->sp_namp);
+                                 if (i && i->todo_user) {
+-                                        r = -EEXIST;
+-                                        goto finish;
++                                        /* we will update the existing entry */
++                                        sp->sp_lstchg = lstchg;
++
++                                        /* only the /etc/shadow stage is left, so we can
++                                         * safely remove the item from the todo set */
++                                        i->todo_user = false;
++                                        hashmap_remove(todo_uids, UID_TO_PTR(i->uid));
+                                 }
+ 
+                                 errno = 0;
+@@ -642,7 +649,6 @@ static int write_files(void) {
+                         goto finish;
+                 }
+ 
+-                lstchg = (long) (now(CLOCK_REALTIME) / USEC_PER_DAY);
+                 HASHMAP_FOREACH(i, todo_uids, iterator) {
+                         struct spwd n = {
+                                 .sp_namp = i->name,
+@@ -879,7 +885,6 @@ static int add_user(Item *i) {
+ 
+         if (!arg_root) {
+                 struct passwd *p;
+-                struct spwd *sp;
+ 
+                 /* Also check NSS */
+                 errno = 0;
+@@ -895,16 +900,6 @@ static int add_user(Item *i) {
+                 }
+                 if (!IN_SET(errno, 0, ENOENT))
+                         return log_error_errno(errno, "Failed to check if user %s already exists: %m", i->name);
+-
+-                /* And shadow too, just to be sure */
+-                errno = 0;
+-                sp = getspnam(i->name);
+-                if (sp) {
+-                        log_error("User %s already exists in shadow database, but not in user database.", i->name);
+-                        return -EBADMSG;
+-                }
+-                if (!IN_SET(errno, 0, ENOENT))
+-                        return log_error_errno(errno, "Failed to check if user %s already exists in shadow database: %m", i->name);
+         }
+ 
+         /* Try to use the suggested numeric uid */
diff --git a/SOURCES/0081-zsh-completion-add-systemd-run.patch b/SOURCES/0081-zsh-completion-add-systemd-run.patch
deleted file mode 100644
index 697c4a7..0000000
--- a/SOURCES/0081-zsh-completion-add-systemd-run.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From d437087966e4a5f7ad0b37b4254988de41e16228 Mon Sep 17 00:00:00 2001
-From: Ronny Chevalier <chevalier.ronny@gmail.com>
-Date: Wed, 30 Oct 2013 21:57:44 +0100
-Subject: [PATCH] zsh-completion: add systemd-run
-
----
- Makefile.am                       |  1 +
- shell-completion/zsh/_systemd-run | 31 +++++++++++++++++++++++++++++++
- 2 files changed, 32 insertions(+)
- create mode 100644 shell-completion/zsh/_systemd-run
-
-diff --git a/Makefile.am b/Makefile.am
-index 8d9c587..0c11477 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -352,6 +352,7 @@ dist_zshcompletion_DATA = \
- 	shell-completion/zsh/_kernel-install \
- 	shell-completion/zsh/_systemd-nspawn \
- 	shell-completion/zsh/_systemd-analyze \
-+	shell-completion/zsh/_systemd-run \
- 	shell-completion/zsh/_sd_hosts_or_user_at_host \
- 	shell-completion/zsh/_systemd-delta \
- 	shell-completion/zsh/_systemd
-diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run
-new file mode 100644
-index 0000000..0c81c54
---- /dev/null
-+++ b/shell-completion/zsh/_systemd-run
-@@ -0,0 +1,31 @@
-+#compdef systemd-run
-+
-+__systemctl() {
-+        local -a _modes
-+        _modes=("--user" "--system")
-+        systemctl ${words:*_modes} --full --no-legend --no-pager "$@" 2>/dev/null
-+}
-+
-+__get_slices () {
-+        __systemctl list-units --all -t slice \
-+        | { while read -r a b; do echo $a; done; };
-+}
-+
-+__slices () {
-+        local -a _slices
-+        _slices=(${(fo)"$(__get_slices)"})
-+        typeset -U _slices
-+        _describe 'slices' _slices
-+}
-+
-+_arguments \
-+        {-h,--help}'[Show help message]' \
-+        '--version[Show package version]' \
-+        '--user[Run as user unit]' \
-+        '--scope[Run this as scope rather than service]' \
-+        '--unit=[Run under the specified unit name]:unit name' \
-+        '--description=[Description for unit]:description' \
-+        '--slice=[Run in the specified slice]:slices:__slices' \
-+        {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \
-+        '--send-sighup[Send SIGHUP when terminating]' \
-+        '*::command:_command'
diff --git a/SOURCES/0082-nspawn-fix-use-after-free-and-leak-in-error-paths.patch b/SOURCES/0082-nspawn-fix-use-after-free-and-leak-in-error-paths.patch
new file mode 100644
index 0000000..2c64837
--- /dev/null
+++ b/SOURCES/0082-nspawn-fix-use-after-free-and-leak-in-error-paths.patch
@@ -0,0 +1,40 @@
+From 28b5692e9ab3dbb07e4d6b8e44b370637c04ba86 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 7 Mar 2015 14:19:20 -0500
+Subject: [PATCH] nspawn: fix use-after-free and leak in error paths
+
+CID #1257765.
+
+(cherry picked from commit 8a16a7b4e7f6702a7e6edaead80ecf04be7d3ba2)
+---
+ src/nspawn/nspawn.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index 7724df9..78bd584 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -3627,7 +3627,7 @@ int main(int argc, char *argv[]) {
+                 }
+ 
+                 if (arg_ephemeral) {
+-                        char *np;
++                        _cleanup_free_ char *np = NULL;
+ 
+                         /* If the specified path is a mount point we
+                          * generate the new snapshot immediately
+@@ -3657,13 +3657,13 @@ int main(int argc, char *argv[]) {
+ 
+                         r = btrfs_subvol_snapshot(arg_directory, np, arg_read_only, true);
+                         if (r < 0) {
+-                                free(np);
+                                 log_error_errno(r, "Failed to create snapshot %s from %s: %m", np, arg_directory);
+                                 goto finish;
+                         }
+ 
+                         free(arg_directory);
+                         arg_directory = np;
++                        np = NULL;
+ 
+                         remove_subvol = true;
+ 
diff --git a/SOURCES/0082-systemctl-fix-typo-in-help-text.patch b/SOURCES/0082-systemctl-fix-typo-in-help-text.patch
deleted file mode 100644
index fe90610..0000000
--- a/SOURCES/0082-systemctl-fix-typo-in-help-text.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9e6ece2b9eb8d57a9d724d6b7bbb92524ac52ad3 Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Fri, 1 Nov 2013 20:46:49 +0100
-Subject: [PATCH] systemctl: fix typo in help text
-
----
- src/systemctl/systemctl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index 036828b..36040db 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -4743,7 +4743,7 @@ static int systemctl_help(void) {
-                "  -f --force          When enabling unit files, override existing symlinks\n"
-                "                      When shutting down, execute action immediately\n"
-                "     --root=PATH      Enable unit files in the specified root directory\n"
--               "  -n --lines=INTEGER  Numer of journal entries to show\n"
-+               "  -n --lines=INTEGER  Number of journal entries to show\n"
-                "  -o --output=STRING  Change journal output mode (short, short-monotonic,\n"
-                "                      verbose, export, json, json-pretty, json-sse, cat)\n\n"
-                "Unit Commands:\n"
diff --git a/SOURCES/0083-detect_virtualization-returns-NULL-pass-empty-string.patch b/SOURCES/0083-detect_virtualization-returns-NULL-pass-empty-string.patch
deleted file mode 100644
index 55bd8bd..0000000
--- a/SOURCES/0083-detect_virtualization-returns-NULL-pass-empty-string.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 98ec954cba5abf87f29cf5122825eb565b5bdf64 Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Sat, 2 Nov 2013 00:01:32 +0100
-Subject: [PATCH] detect_virtualization() returns NULL; pass empty string to
- dbus
-
----
- src/core/dbus-manager.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
-index 7be5d13..6d16c2a 100644
---- a/src/core/dbus-manager.c
-+++ b/src/core/dbus-manager.c
-@@ -466,7 +466,7 @@ static int bus_manager_append_progress(DBusMessageIter *i, const char *property,
- 
- static int bus_manager_append_virt(DBusMessageIter *i, const char *property, void *data) {
-         Manager *m = data;
--        const char *id = "";
-+        const char *id = NULL;
- 
-         assert(i);
-         assert(property);
-@@ -474,6 +474,8 @@ static int bus_manager_append_virt(DBusMessageIter *i, const char *property, voi
- 
-         detect_virtualization(&id);
- 
-+        if (!id)
-+                id = "";
-         if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &id))
-                 return -ENOMEM;
- 
diff --git a/SOURCES/0083-login-fix-copy-pasto-in-error-path.patch b/SOURCES/0083-login-fix-copy-pasto-in-error-path.patch
new file mode 100644
index 0000000..609ac40
--- /dev/null
+++ b/SOURCES/0083-login-fix-copy-pasto-in-error-path.patch
@@ -0,0 +1,25 @@
+From d67968957aece7a1d4da581d86ad719c9a7fad21 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 7 Mar 2015 14:23:38 -0500
+Subject: [PATCH] login: fix copy-pasto in error path
+
+CID #1256583.
+
+(cherry picked from commit dcee01125dde502bd8108c36ddf2026c1348865f)
+---
+ src/login/inhibit.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/login/inhibit.c b/src/login/inhibit.c
+index 44bda34..88af23e 100644
+--- a/src/login/inhibit.c
++++ b/src/login/inhibit.c
+@@ -260,7 +260,7 @@ int main(int argc, char *argv[]) {
+ 
+                 fd = inhibit(bus, &error);
+                 if (fd < 0) {
+-                        log_error("Failed to inhibit: %s", bus_error_message(&error, -r));
++                        log_error("Failed to inhibit: %s", bus_error_message(&error, fd));
+                         return EXIT_FAILURE;
+                 }
+ 
diff --git a/SOURCES/0084-journalctl-update-hint-now-that-we-set-ACL-everywher.patch b/SOURCES/0084-journalctl-update-hint-now-that-we-set-ACL-everywher.patch
new file mode 100644
index 0000000..fbdd2f0
--- /dev/null
+++ b/SOURCES/0084-journalctl-update-hint-now-that-we-set-ACL-everywher.patch
@@ -0,0 +1,63 @@
+From cf04c51fb2d5ce08a8b8aafec999e2007ef53c83 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 8 Mar 2015 11:04:59 -0400
+Subject: [PATCH] journalctl: update hint now that we set ACL everywhere
+
+(cherry picked from commit 05c1853093d8c4e4aa16876b5129b65dac5abd01)
+---
+ src/journal/journalctl.c | 25 +++++++++++--------------
+ 1 file changed, 11 insertions(+), 14 deletions(-)
+
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 55c7786..12c869f 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -1542,10 +1542,17 @@ static int access_check_var_log_journal(sd_journal *j) {
+         have_access = in_group("systemd-journal") > 0;
+ 
+         if (!have_access) {
++                const char* dir;
++
++                if (access("/run/log/journal", F_OK) >= 0)
++                        dir = "/run/log/journal";
++                else
++                        dir = "/var/log/journal";
++
+                 /* Let's enumerate all groups from the default ACL of
+                  * the directory, which generally should allow access
+                  * to most journal files too */
+-                r = search_acl_groups(&g, "/var/log/journal/", &have_access);
++                r = search_acl_groups(&g, dir, &have_access);
+                 if (r < 0)
+                         return r;
+         }
+@@ -1571,7 +1578,7 @@ static int access_check_var_log_journal(sd_journal *j) {
+                                 return log_oom();
+ 
+                         log_notice("Hint: You are currently not seeing messages from other users and the system.\n"
+-                                   "      Users in the groups '%s' can see all messages.\n"
++                                   "      Users in groups '%s' can see all messages.\n"
+                                    "      Pass -q to turn off this notice.", s);
+                 }
+         }
+@@ -1595,18 +1602,8 @@ static int access_check(sd_journal *j) {
+ 
+         if (set_contains(j->errors, INT_TO_PTR(-EACCES))) {
+ #ifdef HAVE_ACL
+-                /* If /var/log/journal doesn't even exist,
+-                 * unprivileged users have no access at all */
+-                if (access("/var/log/journal", F_OK) < 0 &&
+-                    geteuid() != 0 &&
+-                    in_group("systemd-journal") <= 0) {
+-                        log_error("Unprivileged users cannot access messages, unless persistent log storage is\n"
+-                                  "enabled. Users in the 'systemd-journal' group may always access messages.");
+-                        return -EACCES;
+-                }
+-
+-                /* If /var/log/journal exists, try to pring a nice
+-                   notice if the user lacks access to it */
++                /* If /run/log/journal or /var/log/journal exist, try
++                   to pring a nice notice if the user lacks access to it. */
+                 if (!arg_quiet && geteuid() != 0) {
+                         r = access_check_var_log_journal(j);
+                         if (r < 0)
diff --git a/SOURCES/0084-udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch b/SOURCES/0084-udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch
deleted file mode 100644
index 648a718..0000000
--- a/SOURCES/0084-udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4b2a44e3fa0e56b638dab29def3f499788a03334 Mon Sep 17 00:00:00 2001
-From: Martin Pitt <martinpitt@gnome.org>
-Date: Mon, 4 Nov 2013 07:25:45 +0100
-Subject: [PATCH] udev-builtin-keyboard: Fix large scan codes on 32 bit
- architectures
-
-Use strtoul(), as scan codes are always positive. On 32 bit architectures
-strtol gives wrong results:
-
-  strtol("fffffff0", &endptr, 16)
-
-returns 2147483647 instead of 4294967280.
-
-https://launchpad.net/bugs/1247676
----
- src/udev/udev-builtin-keyboard.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/udev/udev-builtin-keyboard.c b/src/udev/udev-builtin-keyboard.c
-index ddd8535..8f457ab 100644
---- a/src/udev/udev-builtin-keyboard.c
-+++ b/src/udev/udev-builtin-keyboard.c
-@@ -88,7 +88,7 @@ static int builtin_keyboard(struct udev_device *dev, int argc, char *argv[], boo
-                         continue;
- 
-                 /* KEYBOARD_KEY_<hex scan code>=<key identifier string> */
--                scancode = strtol(key + 13, &endptr, 16);
-+                scancode = strtoul(key + 13, &endptr, 16);
-                 if (endptr[0] != '\0') {
-                         log_error("Error, unable to parse scan code from '%s'\n", key);
-                         continue;
diff --git a/SOURCES/0085-nspawn-log-out-of-memory-errors.patch b/SOURCES/0085-nspawn-log-out-of-memory-errors.patch
deleted file mode 100644
index 3e6ba0c..0000000
--- a/SOURCES/0085-nspawn-log-out-of-memory-errors.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 472b443a7e1949f6d35d5216b6323424719d1b8c Mon Sep 17 00:00:00 2001
-From: Djalal Harouni <tixxdz@opendz.org>
-Date: Tue, 5 Nov 2013 15:26:37 +0100
-Subject: [PATCH] nspawn: log out of memory errors
-
----
- src/nspawn/nspawn.c | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index 9616dbf..db47fbd 100644
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -224,6 +224,9 @@ static int parse_argv(int argc, char *argv[]) {
- 
-                 case 'S':
-                         arg_slice = strdup(optarg);
-+                        if (!arg_slice)
-+                                return log_oom();
-+
-                         break;
- 
-                 case 'M':
-@@ -315,11 +318,11 @@ static int parse_argv(int argc, char *argv[]) {
- 
-                         r = strv_extend(x, a);
-                         if (r < 0)
--                                return r;
-+                                return log_oom();
- 
-                         r = strv_extend(x, b);
-                         if (r < 0)
--                                return r;
-+                                return log_oom();
- 
-                         break;
-                 }
diff --git a/SOURCES/0085-sd-journal-return-error-when-we-cannot-open-a-file.patch b/SOURCES/0085-sd-journal-return-error-when-we-cannot-open-a-file.patch
new file mode 100644
index 0000000..71f0e41
--- /dev/null
+++ b/SOURCES/0085-sd-journal-return-error-when-we-cannot-open-a-file.patch
@@ -0,0 +1,26 @@
+From 5633544097b9c3bf3d63ef3be9e7db5d4e1f49dc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 8 Mar 2015 11:11:50 -0400
+Subject: [PATCH] sd-journal: return error when we cannot open a file
+
+Lack of this caused journalctl not to display a hint about missing groups
+properly when the user lacks permissions.
+
+(cherry picked from commit 7b300be75e6d5755778dd7da63e7147866f21351)
+---
+ src/journal/sd-journal.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
+index 9b57e59..9b9e8ac 100644
+--- a/src/journal/sd-journal.c
++++ b/src/journal/sd-journal.c
+@@ -1248,7 +1248,7 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) {
+         r = add_any_file(j, path);
+         if (r == -ENOENT)
+                 return 0;
+-        return 0;
++        return r;
+ }
+ 
+ static int remove_file(sd_journal *j, const char *prefix, const char *filename) {
diff --git a/SOURCES/0086-man-fix-typo.patch b/SOURCES/0086-man-fix-typo.patch
deleted file mode 100644
index b985a5a..0000000
--- a/SOURCES/0086-man-fix-typo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 97df020a95852dddd28787ee846691c301b58807 Mon Sep 17 00:00:00 2001
-From: Ronny Chevalier <chevalier.ronny@gmail.com>
-Date: Sun, 3 Nov 2013 15:07:31 +0100
-Subject: [PATCH] man: fix typo
-
----
- man/systemd-run.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/systemd-run.xml b/man/systemd-run.xml
-index e76a402..252335b 100644
---- a/man/systemd-run.xml
-+++ b/man/systemd-run.xml
-@@ -60,7 +60,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
-   <refsect1>
-     <title>Description</title>
- 
--    <para><command>systemd-run</command> may be used create and start
-+    <para><command>systemd-run</command> may be used to create and start
-     a transient <filename>.service</filename> or a
-     <filename>.scope</filename> unit and run the specified
-     <replaceable>COMMAND</replaceable> in it.</para>
diff --git a/SOURCES/0086-missing.h-add-NDA_.patch b/SOURCES/0086-missing.h-add-NDA_.patch
new file mode 100644
index 0000000..80ace08
--- /dev/null
+++ b/SOURCES/0086-missing.h-add-NDA_.patch
@@ -0,0 +1,70 @@
+From eceb99d70a7c0916cb626dfbcb50894e1f4e9431 Mon Sep 17 00:00:00 2001
+From: Michael Olbrich <m.olbrich@pengutronix.de>
+Date: Mon, 9 Mar 2015 12:27:25 +0100
+Subject: [PATCH] missing.h: add NDA_*
+
+This is necessary to build with older kernel headers. NDA_VLAN was
+introduced in v3.9 and NDA_PORT, NDA_VNI and NDA_IFINDEX in v3.10
+
+(cherry picked from commit cf1755bac0426132c21fdca519a336ce7d920277)
+---
+ configure.ac         |  4 +++-
+ src/shared/missing.h | 16 ++++++++++++++++
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 3201428..081ed0f 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -334,7 +334,8 @@ AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE,
+                 IFLA_VXLAN_LOCAL6,
+                 IFLA_IPTUN_6RD_RELAY_PREFIXLEN,
+                 IFLA_BRIDGE_VLAN_INFO,
+-                IFLA_BRPORT_UNICAST_FLOOD],
++                IFLA_BRPORT_UNICAST_FLOOD,
++                NDA_IFINDEX],
+ [], [], [[
+ #include <inttypes.h>
+ #include <netinet/in.h>
+@@ -345,6 +346,7 @@ AC_CHECK_DECLS([IFLA_INET6_ADDR_GEN_MODE,
+ #include <linux/if_tunnel.h>
+ #include <linux/if_link.h>
+ #include <linux/if_bridge.h>
++#include <linux/neighbour.h>
+ ]])
+ 
+ # This makes sure pkg.m4 is available.
+diff --git a/src/shared/missing.h b/src/shared/missing.h
+index 8cb0b2c..6ef4dbd 100644
+--- a/src/shared/missing.h
++++ b/src/shared/missing.h
+@@ -35,6 +35,7 @@
+ #include <linux/loop.h>
+ #include <linux/audit.h>
+ #include <linux/capability.h>
++#include <linux/neighbour.h>
+ 
+ #ifdef HAVE_AUDIT
+ #include <libaudit.h>
+@@ -687,6 +688,21 @@ static inline int setns(int fd, int nstype) {
+ #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
+ #endif
+ 
++#if !HAVE_DECL_NDA_IFINDEX
++#define NDA_UNSPEC 0
++#define NDA_DST 1
++#define NDA_LLADDR 2
++#define NDA_CACHEINFO 3
++#define NDA_PROBES 4
++#define NDA_VLAN 5
++#define NDA_PORT 6
++#define NDA_VNI 7
++#define NDA_IFINDEX 8
++#define __NDA_MAX 9
++
++#define NDA_MAX (__NDA_MAX - 1)
++#endif
++
+ #ifndef IPV6_UNICAST_IF
+ #define IPV6_UNICAST_IF 76
+ #endif
diff --git a/SOURCES/0087-man-do-not-use-term-in-para.patch b/SOURCES/0087-man-do-not-use-term-in-para.patch
deleted file mode 100644
index 20e3451..0000000
--- a/SOURCES/0087-man-do-not-use-term-in-para.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 2bdcb1a688e047a1b7712acc6d8efbcd7a437373 Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Tue, 5 Nov 2013 21:34:50 +0100
-Subject: [PATCH] man: do not use <term> in <para>
-
-Element term in namespace '' encountered in para, but no template matches.
----
- man/systemd.mount.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
-index 71a5736..df5a79e 100644
---- a/man/systemd.mount.xml
-+++ b/man/systemd.mount.xml
-@@ -261,7 +261,7 @@
-                                 a time span value such as "5min
-                                 20s". Pass 0 to disable the timeout
-                                 logic. Default value is setted up in manager configuration
--                                file via <term><varname>DefaultTimeoutStart=</varname></term>.</para></listitem>
-+                                file via <varname>DefaultTimeoutStart=</varname>.</para></listitem>
-                         </varlistentry>
-                 </variablelist>
- 
diff --git a/SOURCES/0087-udevd-close-race-in-udev-settle.patch b/SOURCES/0087-udevd-close-race-in-udev-settle.patch
new file mode 100644
index 0000000..280a322
--- /dev/null
+++ b/SOURCES/0087-udevd-close-race-in-udev-settle.patch
@@ -0,0 +1,85 @@
+From 175c446fc5ca6adbeeb25dfe0ef725e2f1914259 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Mon, 9 Mar 2015 16:16:23 +0100
+Subject: [PATCH] udevd: close race in udev settle
+
+The udev-settle guarantees that udevd is no longer processing any of the
+events casued by udev-trigger. The way this works is that it sends a
+synchronous PING to udevd after udev-trigger has ran, and when that returns
+it knows that udevd has started processing the events from udev-trigger.
+udev-settle will then wait for the event queue to empty before returning.
+
+However, there was a race here, as we would only update the /run state at
+the beginning of the event loop, before reading out new events and before
+processing the ping.
+
+That means that if the first uevent arrived in the same event-loop iteration
+as the PING, we would return the ping before updating the queue state in /run
+(which would happen on the next iteration).
+
+The race window here is tiny (as the /run state would probably get updated
+before udev-settle got a chance to read /run), but still a possibility.
+
+Fix the problem by updating the /run state as the last step before returning
+the PING.
+
+We must still update it at the beginning of the loop as well, otherwise we
+risk being stuck in poll() with a stale state in /run.
+
+Reported-by: Daniel Drake <drake@endlessm.com>
+(cherry picked from commit db93e063bdffe0a8b95fcc522aeacddf62d1a9f9)
+---
+ src/udev/udevd.c | 26 +++++++++++++++++---------
+ 1 file changed, 17 insertions(+), 9 deletions(-)
+
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index 99d4c89..e98c1fd 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -909,6 +909,17 @@ static void handle_signal(struct udev *udev, int signo) {
+         }
+ }
+ 
++static void event_queue_update(void) {
++        if (!udev_list_node_is_empty(&event_list)) {
++                int fd;
++
++                fd = open("/run/udev/queue", O_WRONLY|O_CREAT|O_CLOEXEC|O_TRUNC|O_NOFOLLOW, 0444);
++                if (fd >= 0)
++                       close(fd);
++        } else
++                unlink("/run/udev/queue");
++}
++
+ static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink) {
+         int ctrl = -1, netlink = -1;
+         int fd, n;
+@@ -1369,15 +1380,7 @@ int main(int argc, char *argv[]) {
+                 }
+ 
+                 /* tell settle that we are busy or idle */
+-                if (!udev_list_node_is_empty(&event_list)) {
+-                        int fd;
+-
+-                        fd = open("/run/udev/queue", O_WRONLY|O_CREAT|O_CLOEXEC|O_TRUNC|O_NOFOLLOW, 0444);
+-                        if (fd >= 0)
+-                                close(fd);
+-                } else {
+-                        unlink("/run/udev/queue");
+-                }
++                event_queue_update();
+ 
+                 fdcount = epoll_wait(fd_ep, ev, ELEMENTSOF(ev), timeout);
+                 if (fdcount < 0)
+@@ -1502,6 +1505,11 @@ int main(int argc, char *argv[]) {
+                 if (is_inotify)
+                         handle_inotify(udev);
+ 
++                /* tell settle that we are busy or idle, this needs to be before the
++                 * PING handling
++                 */
++                event_queue_update();
++
+                 /*
+                  * This needs to be after the inotify handling, to make sure,
+                  * that the ping is send back after the possibly generated
diff --git a/SOURCES/0088-man-document-that-ExecStartPre-is-not-the-place-to-s.patch b/SOURCES/0088-man-document-that-ExecStartPre-is-not-the-place-to-s.patch
new file mode 100644
index 0000000..c115ee4
--- /dev/null
+++ b/SOURCES/0088-man-document-that-ExecStartPre-is-not-the-place-to-s.patch
@@ -0,0 +1,27 @@
+From 1c8b76caab7d5164ac2d0d09aff9e4ffecdf205e Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 9 Mar 2015 18:01:47 +0100
+Subject: [PATCH] man: document that ExecStartPre= is not the place to start
+ long-running processes
+
+(cherry picked from commit b481de3b22fcd838a8f059aed8745375afdb9eca)
+---
+ man/systemd.service.xml | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index c03b4e8..f598705 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -334,6 +334,11 @@
+         <para>If any of those commands (not prefixed with
+         <literal>-</literal>) fail, the rest are not executed and the
+         unit is considered failed.</para>
++
++        <para>Note that <varname>ExecStartPre=</varname> may not be
++        used to start long-running processes. All processes forked
++        off by processes invoked via <varname>ExecStartPre=</varname> will
++        be killed before the next service process is run.</para>
+         </listitem>
+       </varlistentry>
+ 
diff --git a/SOURCES/0088-shutdown-trim-the-cgroup-tree-on-loop-iteration.patch b/SOURCES/0088-shutdown-trim-the-cgroup-tree-on-loop-iteration.patch
deleted file mode 100644
index ad78f06..0000000
--- a/SOURCES/0088-shutdown-trim-the-cgroup-tree-on-loop-iteration.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 8742fc797d827ff92831af7d8af353e6bb073ddc Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 5 Nov 2013 22:17:03 +0100
-Subject: [PATCH] shutdown: trim the cgroup tree on loop iteration
-
-This way we leave the cgroup empty before exiting in a container which
-makes sure the container manager will get cgroup notification event
-
-https://bugs.freedesktop.org/show_bug.cgi?id=68370
-https://bugzilla.redhat.com/show_bug.cgi?id=988883
----
- src/core/shutdown.c | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/src/core/shutdown.c b/src/core/shutdown.c
-index 4709746..ea02b60 100644
---- a/src/core/shutdown.c
-+++ b/src/core/shutdown.c
-@@ -46,6 +46,7 @@
- #include "virt.h"
- #include "watchdog.h"
- #include "killall.h"
-+#include "cgroup-util.h"
- 
- #define FINALIZE_ATTEMPTS 50
- 
-@@ -131,12 +132,12 @@ static int pivot_to_new_root(void) {
- }
- 
- int main(int argc, char *argv[]) {
--        _cleanup_free_ char *line = NULL;
--        int cmd, r;
--        unsigned retries;
-         bool need_umount = true, need_swapoff = true, need_loop_detach = true, need_dm_detach = true;
-         bool in_container, use_watchdog = false;
-+        _cleanup_free_ char *line = NULL, *cgroup = NULL;
-         char *arguments[3];
-+        unsigned retries;
-+        int cmd, r;
- 
-         /* suppress shutdown status output if 'quiet' is used  */
-         r = read_one_line_file("/proc/cmdline", &line);
-@@ -186,6 +187,8 @@ int main(int argc, char *argv[]) {
-                 goto error;
-         }
- 
-+        cg_get_root_path(&cgroup);
-+
-         use_watchdog = !!getenv("WATCHDOG_USEC");
- 
-         /* lock us into memory */
-@@ -210,6 +213,13 @@ int main(int argc, char *argv[]) {
-                 if (use_watchdog)
-                         watchdog_ping();
- 
-+                /* Let's trim the cgroup tree on each iteration so
-+                   that we leave an empty cgroup tree around, so that
-+                   container managers get a nice notify event when we
-+                   are down */
-+                if (cgroup)
-+                        cg_trim(SYSTEMD_CGROUP_CONTROLLER, cgroup, false);
-+
-                 if (need_umount) {
-                         log_info("Unmounting file systems.");
-                         r = umount_all(&changed);
diff --git a/SOURCES/0089-journal-fix-return-code.patch b/SOURCES/0089-journal-fix-return-code.patch
new file mode 100644
index 0000000..2b26cf4
--- /dev/null
+++ b/SOURCES/0089-journal-fix-return-code.patch
@@ -0,0 +1,31 @@
+From 185e6b251907bdf6adc63866f38722e9fb3d3715 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 9 Mar 2015 17:46:30 -0400
+Subject: [PATCH] journal: fix return code
+
+Introduced in fa6ac76083b8ff.
+
+Might be related to CID #1261724, but I don't know if coverity can
+recurse this deep.
+
+(cherry picked from commit 977eaa1eae53af7f418d87fcb42f4a4d34aad739)
+---
+ src/journal/journal-file.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
+index 24c49b9..f500568 100644
+--- a/src/journal/journal-file.c
++++ b/src/journal/journal-file.c
+@@ -2652,10 +2652,8 @@ int journal_file_open(
+         }
+ 
+         r = mmap_cache_get(f->mmap, f->fd, f->prot, CONTEXT_HEADER, true, 0, PAGE_ALIGN(sizeof(Header)), &f->last_stat, &h);
+-        if (r < 0) {
+-                r = -errno;
++        if (r < 0)
+                 goto fail;
+-        }
+ 
+         f->header = h;
+ 
diff --git a/SOURCES/0089-run-support-system-to-match-other-commands-even-if-r.patch b/SOURCES/0089-run-support-system-to-match-other-commands-even-if-r.patch
deleted file mode 100644
index 74ec531..0000000
--- a/SOURCES/0089-run-support-system-to-match-other-commands-even-if-r.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From 8588ecf209ae4f8a198614b3786c58e584528f98 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 6 Nov 2013 17:31:20 +0100
-Subject: [PATCH] run: support --system to match other commands, even if
- redundant
-
-Conflicts:
-	man/systemd-run.xml
-	src/run/run.c
----
- man/systemd-run.xml |  9 +++++++++
- src/run/run.c       | 20 +++++++++++++-------
- 2 files changed, 22 insertions(+), 7 deletions(-)
-
-diff --git a/man/systemd-run.xml b/man/systemd-run.xml
-index 252335b..48a0715 100644
---- a/man/systemd-run.xml
-+++ b/man/systemd-run.xml
-@@ -113,6 +113,15 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
-       </varlistentry>
- 
-       <varlistentry>
-+        <term><option>--system</option></term>
-+
-+        <listitem>
-+          <para>Talk to the service manager of the system. This is the
-+          implied default.</para>
-+        </listitem>
-+      </varlistentry>
-+
-+      <varlistentry>
-         <term><option>--scope</option></term>
- 
-         <listitem>
-diff --git a/src/run/run.c b/src/run/run.c
-index 18a4920..a6abead 100644
---- a/src/run/run.c
-+++ b/src/run/run.c
-@@ -61,6 +61,7 @@ static int parse_argv(int argc, char *argv[]) {
-         enum {
-                 ARG_VERSION = 0x100,
-                 ARG_USER,
-+                ARG_SYSTEM,
-                 ARG_SCOPE,
-                 ARG_UNIT,
-                 ARG_DESCRIPTION,
-@@ -72,6 +73,7 @@ static int parse_argv(int argc, char *argv[]) {
-                 { "help",              no_argument,       NULL, 'h'             },
-                 { "version",           no_argument,       NULL, ARG_VERSION     },
-                 { "user",              no_argument,       NULL, ARG_USER        },
-+                { "system",            no_argument,       NULL, ARG_SYSTEM      },
-                 { "scope",             no_argument,       NULL, ARG_SCOPE       },
-                 { "unit",              required_argument, NULL, ARG_UNIT        },
-                 { "description",       required_argument, NULL, ARG_DESCRIPTION },
-@@ -103,6 +105,10 @@ static int parse_argv(int argc, char *argv[]) {
-                         arg_user = true;
-                         break;
- 
-+                case ARG_SYSTEM:
-+                        arg_user = false;
-+                        break;
-+
-                 case ARG_SCOPE:
-                         arg_scope = true;
-                         break;
-@@ -333,12 +339,12 @@ int main(int argc, char* argv[]) {
- 
-         r = parse_argv(argc, argv);
-         if (r <= 0)
--                goto fail;
-+                goto finish;
- 
-         r = find_binary(argv[optind], &command);
-         if (r < 0) {
-                 log_error("Failed to find executable %s: %s", argv[optind], strerror(-r));
--                goto fail;
-+                goto finish;
-         }
-         argv[optind] = command;
- 
-@@ -346,7 +352,7 @@ int main(int argc, char* argv[]) {
-                 description = strv_join(argv + optind, " ");
-                 if (!description) {
-                         r = log_oom();
--                        goto fail;
-+                        goto finish;
-                 }
- 
-                 arg_description = description;
-@@ -357,8 +363,8 @@ int main(int argc, char* argv[]) {
-         else
-                 r = sd_bus_open_system(&bus);
-         if (r < 0) {
--                log_error("Failed to create new bus connection: %s", strerror(-r));
--                goto fail;
-+                log_error("Failed to create bus connection: %s", strerror(-r));
-+                goto finish;
-         }
- 
-         if (arg_scope)
-@@ -368,9 +374,9 @@ int main(int argc, char* argv[]) {
-         if (r < 0) {
-                 log_error("Failed start transient unit: %s", error.message ? error.message : strerror(-r));
-                 sd_bus_error_free(&error);
--                goto fail;
-+                goto finish;
-         }
- 
--fail:
-+finish:
-         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
- }
diff --git a/SOURCES/0090-acpi-fpdt-break-on-zero-or-negative-length-read.patch b/SOURCES/0090-acpi-fpdt-break-on-zero-or-negative-length-read.patch
deleted file mode 100644
index 9807e91..0000000
--- a/SOURCES/0090-acpi-fpdt-break-on-zero-or-negative-length-read.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 113e2da2789ac680d2042993dcf76eef43072f4d Mon Sep 17 00:00:00 2001
-From: Pavel Holica <conscript89@gmail.com>
-Date: Wed, 6 Nov 2013 23:24:16 +0100
-Subject: [PATCH] acpi-fpdt: break on zero or negative length read
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1027478
----
- src/shared/acpi-fpdt.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/shared/acpi-fpdt.c b/src/shared/acpi-fpdt.c
-index 75648b4..7bae47f 100644
---- a/src/shared/acpi-fpdt.c
-+++ b/src/shared/acpi-fpdt.c
-@@ -109,6 +109,8 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
-         for (rec = (struct acpi_fpdt_header *)(buf + sizeof(struct acpi_table_header));
-              (char *)rec < buf + l;
-              rec = (struct acpi_fpdt_header *)((char *)rec + rec->length)) {
-+                if (rec->length <= 0)
-+                        break;
-                 if (rec->type != ACPI_FPDT_TYPE_BOOT)
-                         continue;
-                 if (rec->length != sizeof(struct acpi_fpdt_header))
diff --git a/SOURCES/0090-console-fix-error-code-inversion.patch b/SOURCES/0090-console-fix-error-code-inversion.patch
new file mode 100644
index 0000000..b6095ee
--- /dev/null
+++ b/SOURCES/0090-console-fix-error-code-inversion.patch
@@ -0,0 +1,27 @@
+From 6e2893aa4e1d6471b174e56c5132da31f890d620 Mon Sep 17 00:00:00 2001
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Tue, 16 Dec 2014 16:14:48 +0100
+Subject: [PATCH] console: fix error-code inversion
+
+The error-code propagated via sysview is always negative. Avoid
+multiplying by -1 before returning it. Otherwise, we will return >0
+instead of <0, which will not be detected as error by sysview-core.
+
+(cherry picked from commit 84c3561c58dd992b339afe5bb4c41971a2ebc486)
+---
+ src/console/consoled-manager.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/console/consoled-manager.c b/src/console/consoled-manager.c
+index 9dd62f0..25de0a2 100644
+--- a/src/console/consoled-manager.c
++++ b/src/console/consoled-manager.c
+@@ -228,7 +228,7 @@ static int manager_sysview_session_control(Manager *m, sysview_event *event) {
+                                 sysview_session_get_name(session));
+                 session_free(s);
+                 sysview_session_set_userdata(session, NULL);
+-                return -error;
++                return error;
+         }
+ 
+         return 0;
diff --git a/SOURCES/0091-bus-proxy-complain-only-once-about-queue-overflows.patch b/SOURCES/0091-bus-proxy-complain-only-once-about-queue-overflows.patch
new file mode 100644
index 0000000..d087b18
--- /dev/null
+++ b/SOURCES/0091-bus-proxy-complain-only-once-about-queue-overflows.patch
@@ -0,0 +1,72 @@
+From 4c6c21f92a8204abf031e42bb4949a0ecf039f7a Mon Sep 17 00:00:00 2001
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Wed, 11 Mar 2015 13:53:21 +0100
+Subject: [PATCH] bus-proxy: complain only once about queue overflows
+
+If the local peer does not dispatch its incoming queue, the bus-proxy will
+slowly fill its outgoing queue. Once its full, it will continously
+complain that it cannot forward its messages.
+
+As it turns out, pulseaudio does have an idle background dbus connection
+that is not integrated into any mainloop (and given that gdbus and
+libdbus1 both support background shared connections, PA is probably not
+the only example), therefore, the bus-proxy will loudly complain if it
+cannot forward NameOwnerChanged events once the queue is full.
+
+This commit makes the proxy track queue-state and complain only once the
+queue runs full, not if it is already full.
+
+A PA bug-report (and patch) has been filed, and other applications should
+be fixed similarly. Hence, lets keep the error message, instead of
+dropping it. It's unused resources we really want to get rid of, so
+silencing the message does not really help (which is actually what
+dbus-daemon does).
+
+(cherry picked from commit ec2c7b56599981a7d9e76b15c75af3e1af3e6f81)
+---
+ src/bus-proxyd/proxy.c | 16 ++++++++++++----
+ src/bus-proxyd/proxy.h |  1 +
+ 2 files changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/src/bus-proxyd/proxy.c b/src/bus-proxyd/proxy.c
+index 3dea908..e13cf5e 100644
+--- a/src/bus-proxyd/proxy.c
++++ b/src/bus-proxyd/proxy.c
+@@ -729,13 +729,21 @@ static int proxy_process_destination_to_local(Proxy *p) {
+ 
+                 /* Return the error to the client, if we can */
+                 synthetic_reply_method_errnof(m, r, "Failed to forward message we got from destination: %m");
+-                log_error_errno(r,
+-                         "Failed to forward message we got from destination: uid=" UID_FMT " gid=" GID_FMT" message=%s destination=%s path=%s interface=%s member=%s: %m",
+-                         p->local_creds.uid, p->local_creds.gid, bus_message_type_to_string(m->header->type),
+-                         strna(m->destination), strna(m->path), strna(m->interface), strna(m->member));
++                if (r == -ENOBUFS) {
++                        /* if local dbus1 peer does not dispatch its queue, warn only once */
++                        if (!p->queue_overflow)
++                                log_error("Dropped messages due to queue overflow of local peer (pid: "PID_FMT" uid: "UID_FMT")", p->local_creds.pid, p->local_creds.uid);
++                        p->queue_overflow = true;
++                } else
++                        log_error_errno(r,
++                                 "Failed to forward message we got from destination: uid=" UID_FMT " gid=" GID_FMT" message=%s destination=%s path=%s interface=%s member=%s: %m",
++                                 p->local_creds.uid, p->local_creds.gid, bus_message_type_to_string(m->header->type),
++                                 strna(m->destination), strna(m->path), strna(m->interface), strna(m->member));
++
+                 return 1;
+         }
+ 
++        p->queue_overflow = false;
+         return 1;
+ }
+ 
+diff --git a/src/bus-proxyd/proxy.h b/src/bus-proxyd/proxy.h
+index 913d470..782c4e6 100644
+--- a/src/bus-proxyd/proxy.h
++++ b/src/bus-proxyd/proxy.h
+@@ -40,6 +40,7 @@ struct Proxy {
+         SharedPolicy *policy;
+ 
+         bool got_hello : 1;
++        bool queue_overflow : 1;
+ };
+ 
+ int proxy_new(Proxy **out, int in_fd, int out_fd, const char *dest);
diff --git a/SOURCES/0091-man-add-rationale-into-systemd-halt-8.patch b/SOURCES/0091-man-add-rationale-into-systemd-halt-8.patch
deleted file mode 100644
index d678ec3..0000000
--- a/SOURCES/0091-man-add-rationale-into-systemd-halt-8.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From e701defc239f63731940b8d0867405e0b36b9ada Mon Sep 17 00:00:00 2001
-From: Jan Engelhardt <jengelh@inai.de>
-Date: Thu, 7 Nov 2013 01:17:49 +0100
-Subject: [PATCH] man: add rationale into systemd-halt(8)
-
-The explanation is from
-http://people.debian.org/~stapelberg/docs/systemd-dependencies.html
----
- man/systemd-halt.service.xml | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml
-index 812281e..90b443f 100644
---- a/man/systemd-halt.service.xml
-+++ b/man/systemd-halt.service.xml
-@@ -83,6 +83,12 @@
-                 remaining swap devices, detach all remaining storage
-                 devices and kill all remaining processes.</para>
- 
-+                <para>It is necessary to have this code in a separate binary
-+                because otherwise rebooting after an upgrade might be broken —
-+                the running PID 1 could still depend on libraries which are not
-+                available any more, thus keeping the filesystem busy, which
-+                then cannot be re-mounted read-only.</para>
-+
-                 <para>Immediately before executing the actual system
-                 halt/poweroff/reboot/kexec
-                 <filename>systemd-shutdown</filename> will run all
diff --git a/SOURCES/0092-cgtop-fix-assert-when-not-on-tty.patch b/SOURCES/0092-cgtop-fix-assert-when-not-on-tty.patch
new file mode 100644
index 0000000..1418d3d
--- /dev/null
+++ b/SOURCES/0092-cgtop-fix-assert-when-not-on-tty.patch
@@ -0,0 +1,31 @@
+From 33088d83ecaf03611e3d20a893e675e4d7c3ae9a Mon Sep 17 00:00:00 2001
+From: Umut Tezduyar Lindskog <umut.tezduyar@axis.com>
+Date: Wed, 11 Mar 2015 11:24:18 +0100
+Subject: [PATCH] cgtop: fix assert when not on tty
+
+systemd-cgtop --dept=1 -b -n 10 -d 0.1 | cat
+
+Assertion 'new_length >= 3' failed at src/shared/util.c:3 \
+595, function ellipsize_mem(). Aborting.
+Aborted (core dumped)
+
+(David: add comment)
+
+(cherry picked from commit 510c4a0f1e7e7efe2897d2fbb9067f121467b103)
+---
+ src/cgtop/cgtop.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c
+index 3c7ad40..f951c37 100644
+--- a/src/cgtop/cgtop.c
++++ b/src/cgtop/cgtop.c
+@@ -447,7 +447,7 @@ static int display(Hashmap *a) {
+         Group *g;
+         Group **array;
+         signed path_columns;
+-        unsigned rows, n = 0, j, maxtcpu = 0, maxtpath = 0;
++        unsigned rows, n = 0, j, maxtcpu = 0, maxtpath = 3; /* 3 for ellipsize() to work properly */
+         char buffer[MAX3(21, FORMAT_BYTES_MAX, FORMAT_TIMESPAN_MAX)];
+ 
+         assert(a);
diff --git a/SOURCES/0092-systemd-python-convert-keyword-value-to-string.patch b/SOURCES/0092-systemd-python-convert-keyword-value-to-string.patch
deleted file mode 100644
index ab97a86..0000000
--- a/SOURCES/0092-systemd-python-convert-keyword-value-to-string.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From f9c5cdfe9fe4d3ac8b075ed55d58f79cc067cdae Mon Sep 17 00:00:00 2001
-From: Richard Marko <rmarko@fedoraproject.org>
-Date: Tue, 5 Nov 2013 15:41:20 +0100
-Subject: [PATCH] systemd-python: convert keyword value to string
-
-Allows using journal.send('msg', PRIORITY=journal.LOG_CRIT)
-
-Before this commit this results in
-TypeError: cannot concatenate 'str' and 'int' objects
-and requires passing PRIORITY value as string to work.
----
- src/python-systemd/journal.py | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py
-index d0bcd24..9c7e004 100644
---- a/src/python-systemd/journal.py
-+++ b/src/python-systemd/journal.py
-@@ -352,6 +352,8 @@ def get_catalog(mid):
- def _make_line(field, value):
-         if isinstance(value, bytes):
-                 return field.encode('utf-8') + b'=' + value
-+        elif isinstance(value, int):
-+                return field + '=' + str(value)
-         else:
-                 return field + '=' + value
- 
diff --git a/SOURCES/0093-Make-hibernation-test-work-for-swap-files.patch b/SOURCES/0093-Make-hibernation-test-work-for-swap-files.patch
deleted file mode 100644
index 08a6534..0000000
--- a/SOURCES/0093-Make-hibernation-test-work-for-swap-files.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 4baeb24c8002e602d9eca1ba240aa2e166de4ae6 Mon Sep 17 00:00:00 2001
-From: Jan Janssen <medhefgo@web.de>
-Date: Thu, 31 Oct 2013 17:22:03 +0100
-Subject: [PATCH] Make hibernation test work for swap files
-
-Suspend to disk works for swap files too (even if it is located
-on an ecrypted file system):
-https://www.kernel.org/doc/Documentation/power/swsusp-and-swap-files.txt
----
- src/shared/sleep-config.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
-index d068bfc..2bb0493 100644
---- a/src/shared/sleep-config.c
-+++ b/src/shared/sleep-config.c
-@@ -206,7 +206,7 @@ static int hibernation_partition_size(size_t *size, size_t *used) {
-                 if (!d)
-                         return -ENOMEM;
- 
--                if (!streq(type, "partition")) {
-+                if (!streq(type, "partition") && !streq(type, "file")) {
-                         log_debug("Partition %s has type %s, ignoring.", d, type);
-                         continue;
-                 }
diff --git a/SOURCES/0093-man-split-paragraph.patch b/SOURCES/0093-man-split-paragraph.patch
new file mode 100644
index 0000000..8833a00
--- /dev/null
+++ b/SOURCES/0093-man-split-paragraph.patch
@@ -0,0 +1,28 @@
+From 682a699e71147673f8de5fa12dbec8f2a4c28d9c Mon Sep 17 00:00:00 2001
+From: David Herrmann <dh.herrmann@gmail.com>
+Date: Thu, 12 Mar 2015 12:46:46 +0100
+Subject: [PATCH] man: split paragraph
+
+Explicitly put the "multiple EnvironmentFile=" description into its own
+paragraph to make it much easier to find.
+
+(cherry picked from commit f407824d751a9cb31abfdf0343fe179e0efef259)
+---
+ man/systemd.exec.xml | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index 11b160e..fdb1578 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -283,7 +283,9 @@
+         shortly before the process is executed (more specifically,
+         after all processes from a previous unit state terminated.
+         This means you can generate these files in one unit state, and
+-        read it with this option in the next). Settings from these
++        read it with this option in the next).</para>
++
++        <para>Settings from these
+         files override settings made with
+         <varname>Environment=</varname>. If the same variable is set
+         twice from these files, the files will be read in the order
diff --git a/SOURCES/0094-hwdb-update.patch b/SOURCES/0094-hwdb-update.patch
new file mode 100644
index 0000000..7b5c751
--- /dev/null
+++ b/SOURCES/0094-hwdb-update.patch
@@ -0,0 +1,3156 @@
+From 31eb7c2966a9a52b57cc4ac1f678c9149b8e57ed Mon Sep 17 00:00:00 2001
+From: Kay Sievers <kay@vrfy.org>
+Date: Thu, 12 Mar 2015 18:34:23 +0100
+Subject: [PATCH] hwdb: update
+
+(cherry picked from commit b83cbcb7d95482baa588706227f01bbbe44b9d12)
+---
+ hwdb/20-OUI.hwdb               | 247 ++++++++++-
+ hwdb/20-pci-vendor-model.hwdb  | 936 +++++++++++++++++++++++++++--------------
+ hwdb/20-sdio-vendor-model.hwdb |  30 ++
+ hwdb/20-usb-vendor-model.hwdb  | 181 +++++++-
+ 4 files changed, 1060 insertions(+), 334 deletions(-)
+
+diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
+index 6976bdf..deb323d 100644
+--- a/hwdb/20-OUI.hwdb
++++ b/hwdb/20-OUI.hwdb
+@@ -28829,7 +28829,7 @@ OUI:0013EB*
+  ID_OUI_FROM_DATABASE=Sysmaster Corporation
+ 
+ OUI:0013EC*
+- ID_OUI_FROM_DATABASE=Sunbay Software AG
++ ID_OUI_FROM_DATABASE=Netsnapper Technologies SARL
+ 
+ OUI:0013ED*
+  ID_OUI_FROM_DATABASE=PSIA
+@@ -44296,6 +44296,9 @@ OUI:0030FE*
+ OUI:0030FF*
+  ID_OUI_FROM_DATABASE=DATAFAB SYSTEMS, INC.
+ 
++OUI:00323A*
++ ID_OUI_FROM_DATABASE=so-logic
++
+ OUI:00336C*
+  ID_OUI_FROM_DATABASE=SynapSense Corporation
+ 
+@@ -44513,7 +44516,7 @@ OUI:004035*
+  ID_OUI_FROM_DATABASE=OPCOM
+ 
+ OUI:004036*
+- ID_OUI_FROM_DATABASE=TRIBE COMPUTER WORKS, INC.
++ ID_OUI_FROM_DATABASE=Zoom Telephonics, Inc
+ 
+ OUI:004037*
+  ID_OUI_FROM_DATABASE=SEA-ILAN, INC.
+@@ -50456,7 +50459,7 @@ OUI:00D093*
+  ID_OUI_FROM_DATABASE=TQ - COMPONENTS GMBH
+ 
+ OUI:00D094*
+- ID_OUI_FROM_DATABASE=TIMELINE VISTA, INC.
++ ID_OUI_FROM_DATABASE=Seeion Control LLC
+ 
+ OUI:00D095*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent, Enterprise Business Group
+@@ -52561,6 +52564,9 @@ OUI:082719*
+ OUI:082AD0*
+  ID_OUI_FROM_DATABASE=SRD Innovations Inc.
+ 
++OUI:082CB0*
++ ID_OUI_FROM_DATABASE=Network Instruments
++
+ OUI:082E5F*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
+ 
+@@ -52699,6 +52705,9 @@ OUI:088E4F*
+ OUI:088F2C*
+  ID_OUI_FROM_DATABASE=Hills Sound Vision & Lighting
+ 
++OUI:08952A*
++ ID_OUI_FROM_DATABASE=Technicolor CH USA Inc
++
+ OUI:0896D7*
+  ID_OUI_FROM_DATABASE=AVM GmbH
+ 
+@@ -52804,6 +52813,9 @@ OUI:08EB74*
+ OUI:08EBED*
+  ID_OUI_FROM_DATABASE=World Elite Technology Co.,LTD
+ 
++OUI:08ECA9*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:08EDB9*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+ 
+@@ -53320,6 +53332,9 @@ OUI:103DEA*
+ OUI:1040F3*
+  ID_OUI_FROM_DATABASE=Apple
+ 
++OUI:10417F*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:104369*
+  ID_OUI_FROM_DATABASE=Soundmax Electronic Limited
+ 
+@@ -53611,6 +53626,9 @@ OUI:141330*
+ OUI:14144B*
+  ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD
+ 
++OUI:14157C*
++ ID_OUI_FROM_DATABASE=TOKYO COSMOS ELECTRIC CO.,LTD.
++
+ OUI:141A51*
+  ID_OUI_FROM_DATABASE=Treetech Sistemas Digitais
+ 
+@@ -53656,6 +53674,9 @@ OUI:14307A*
+ OUI:1430C6*
+  ID_OUI_FROM_DATABASE=Motorola Mobility LLC
+ 
++OUI:1432D1*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:14358B*
+  ID_OUI_FROM_DATABASE=Mediabridge Products, LLC.
+ 
+@@ -53716,6 +53737,9 @@ OUI:1458D0*
+ OUI:145A05*
+  ID_OUI_FROM_DATABASE=Apple
+ 
++OUI:145A83*
++ ID_OUI_FROM_DATABASE=Logi-D inc
++
+ OUI:145BD1*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+ 
+@@ -53929,6 +53953,9 @@ OUI:181420*
+ OUI:181456*
+  ID_OUI_FROM_DATABASE=Nokia Corporation
+ 
++OUI:1816C9*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:181714*
+  ID_OUI_FROM_DATABASE=DAEWOOIS
+ 
+@@ -54049,6 +54076,9 @@ OUI:185936*
+ OUI:185AE8*
+  ID_OUI_FROM_DATABASE=Zenotech.Co.,Ltd
+ 
++OUI:185D9A*
++ ID_OUI_FROM_DATABASE=BobjGear LLC
++
+ OUI:18622C*
+  ID_OUI_FROM_DATABASE=SAGEMCOM SAS
+ 
+@@ -54532,6 +54562,9 @@ OUI:1CAB01*
+ OUI:1CABA7*
+  ID_OUI_FROM_DATABASE=Apple
+ 
++OUI:1CADD1*
++ ID_OUI_FROM_DATABASE=Bosung Electronics Co., Ltd.
++
+ OUI:1CAF05*
+  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
+ 
+@@ -54937,6 +54970,9 @@ OUI:20DCE6*
+ OUI:20DF3F*
+  ID_OUI_FROM_DATABASE=Nanjing SAC Power Grid Automation Co., Ltd.
+ 
++OUI:20E407*
++ ID_OUI_FROM_DATABASE=Spark srl
++
+ OUI:20E52A*
+  ID_OUI_FROM_DATABASE=NETGEAR INC.,
+ 
+@@ -55252,6 +55288,9 @@ OUI:24E271*
+ OUI:24E314*
+  ID_OUI_FROM_DATABASE=Apple
+ 
++OUI:24E5AA*
++ ID_OUI_FROM_DATABASE=Philips Oral Healthcare, Inc.
++
+ OUI:24E6BA*
+  ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky
+ 
+@@ -56185,6 +56224,9 @@ OUI:308730*
+ OUI:308999*
+  ID_OUI_FROM_DATABASE=Guangdong East Power Co.,
+ 
++OUI:3089D3*
++ ID_OUI_FROM_DATABASE=Shenzhen ucloudlink new technology co.,LTD
++
+ OUI:308CFB*
+  ID_OUI_FROM_DATABASE=Dropcam
+ 
+@@ -56461,6 +56503,9 @@ OUI:3476C5*
+ OUI:347877*
+  ID_OUI_FROM_DATABASE=O-NET Communications(Shenzhen) Limited
+ 
++OUI:347A60*
++ ID_OUI_FROM_DATABASE=Pace plc
++
+ OUI:347E39*
+  ID_OUI_FROM_DATABASE=Nokia Danmark A/S
+ 
+@@ -56506,6 +56551,9 @@ OUI:3499D7*
+ OUI:349A0D*
+  ID_OUI_FROM_DATABASE=ZBD Displays Ltd
+ 
++OUI:349B5B*
++ ID_OUI_FROM_DATABASE=Maquet GmbH
++
+ OUI:349D90*
+  ID_OUI_FROM_DATABASE=Heinzmann GmbH & CO. KG
+ 
+@@ -57256,6 +57304,9 @@ OUI:3CA10D*
+ OUI:3CA315*
+  ID_OUI_FROM_DATABASE=Bless Information & Communications Co., Ltd
+ 
++OUI:3CA31A*
++ ID_OUI_FROM_DATABASE=Oilfind International LLC
++
+ OUI:3CA72B*
+  ID_OUI_FROM_DATABASE=MRV Communications (Networks) LTD
+ 
+@@ -57343,6 +57394,9 @@ OUI:3CD92B*
+ OUI:3CD9CE*
+  ID_OUI_FROM_DATABASE=Eclipse WiFi
+ 
++OUI:3CDA2A*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:3CDF1E*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+ 
+@@ -57592,6 +57646,9 @@ OUI:408B07*
+ OUI:408BF6*
+  ID_OUI_FROM_DATABASE=Shenzhen TCL New Technology Co; Ltd.
+ 
++OUI:408D5C*
++ ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD.
++
+ OUI:409558*
+  ID_OUI_FROM_DATABASE=Aisino Corporation
+ 
+@@ -58093,6 +58150,9 @@ OUI:44ED57*
+ OUI:44EE30*
+  ID_OUI_FROM_DATABASE=Budelmann Elektronik GmbH
+ 
++OUI:44F436*
++ ID_OUI_FROM_DATABASE=zte corporation
++
+ OUI:44F459*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+ 
+@@ -58117,6 +58177,9 @@ OUI:48066A*
+ OUI:480C49*
+  ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC
+ 
++OUI:480FCF*
++ ID_OUI_FROM_DATABASE=Hewlett Packard
++
+ OUI:481249*
+  ID_OUI_FROM_DATABASE=Luxcom Technologies Inc.
+ 
+@@ -58171,6 +58234,9 @@ OUI:4846F1*
+ OUI:4846FB*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+ 
++OUI:485073*
++ ID_OUI_FROM_DATABASE=Microsoft Corporation
++
+ OUI:4851B7*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+ 
+@@ -58636,6 +58702,9 @@ OUI:4CB199*
+ OUI:4CB4EA*
+  ID_OUI_FROM_DATABASE=HRD (S) PTE., LTD.
+ 
++OUI:4CB76D*
++ ID_OUI_FROM_DATABASE=Novi Security
++
+ OUI:4CB81C*
+  ID_OUI_FROM_DATABASE=SAM Electronics GmbH
+ 
+@@ -58705,6 +58774,9 @@ OUI:4CEB42*
+ OUI:4CEDDE*
+  ID_OUI_FROM_DATABASE=Askey Computer Corp
+ 
++OUI:4CEEB0*
++ ID_OUI_FROM_DATABASE=SHC Netzwerktechnik GmbH
++
+ OUI:4CF02E*
+  ID_OUI_FROM_DATABASE=Vifa Denmark A/S
+ 
+@@ -59032,6 +59104,9 @@ OUI:50ED94*
+ OUI:50F003*
+  ID_OUI_FROM_DATABASE=Open Stack, Inc.
+ 
++OUI:50F0D3*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:50F43C*
+  ID_OUI_FROM_DATABASE=Leeo Inc
+ 
+@@ -59137,6 +59212,9 @@ OUI:5439DF*
+ OUI:543D37*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
+ 
++OUI:5440AD*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:544249*
+  ID_OUI_FROM_DATABASE=Sony Corporation
+ 
+@@ -59170,6 +59248,9 @@ OUI:545EBD*
+ OUI:545FA9*
+  ID_OUI_FROM_DATABASE=Teracom Limited
+ 
++OUI:546172*
++ ID_OUI_FROM_DATABASE=ZODIAC AEROSPACE SAS
++
+ OUI:5461EA*
+  ID_OUI_FROM_DATABASE=Zaplox AB
+ 
+@@ -59284,6 +59365,9 @@ OUI:54BEF7*
+ OUI:54C80F*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+ 
++OUI:54CD10*
++ ID_OUI_FROM_DATABASE=Panasonic Mobile Communications Co.,Ltd.
++
+ OUI:54CDA7*
+  ID_OUI_FROM_DATABASE=Fujian Shenzhou Electronic Co.,Ltd
+ 
+@@ -59794,6 +59878,9 @@ OUI:5C41E7*
+ OUI:5C43D2*
+  ID_OUI_FROM_DATABASE=HAZEMEYER
+ 
++OUI:5C4527*
++ ID_OUI_FROM_DATABASE=Juniper Networks
++
+ OUI:5C4A26*
+  ID_OUI_FROM_DATABASE=Enguity Technology Corp
+ 
+@@ -59911,6 +59998,9 @@ OUI:5CAAFD*
+ OUI:5CAC4C*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
+ 
++OUI:5CB395*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:5CB43E*
+  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
+ 
+@@ -60859,6 +60949,9 @@ OUI:64F970*
+ OUI:64F987*
+  ID_OUI_FROM_DATABASE=Avvasi Inc.
+ 
++OUI:64FB81*
++ ID_OUI_FROM_DATABASE=IEEE REGISTRATION AUTHORITY  - Please see MAM public listing for more information.
++
+ OUI:64FC8C*
+  ID_OUI_FROM_DATABASE=Zonar Systems
+ 
+@@ -61417,6 +61510,9 @@ OUI:6C9CE9*
+ OUI:6C9CED*
+  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
+ 
++OUI:6CA100*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:6CA682*
+  ID_OUI_FROM_DATABASE=EDAM information & communications
+ 
+@@ -61507,6 +61603,9 @@ OUI:6CD68A*
+ OUI:6CDC6A*
+  ID_OUI_FROM_DATABASE=Promethean Limited
+ 
++OUI:6CE01E*
++ ID_OUI_FROM_DATABASE=Modcam AB
++
+ OUI:6CE0B0*
+  ID_OUI_FROM_DATABASE=SOUND4
+ 
+@@ -62119,6 +62218,9 @@ OUI:747E2D*
+ OUI:748114*
+  ID_OUI_FROM_DATABASE=Apple
+ 
++OUI:74852A*
++ ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
++
+ OUI:74867A*
+  ID_OUI_FROM_DATABASE=Dell Inc
+ 
+@@ -62548,6 +62650,9 @@ OUI:789ED0*
+ OUI:789F4C*
+  ID_OUI_FROM_DATABASE=HOERBIGER Elektronik GmbH
+ 
++OUI:789F70*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:789F87*
+  ID_OUI_FROM_DATABASE=Siemens AG I IA PP PRM
+ 
+@@ -62620,6 +62725,12 @@ OUI:78B81A*
+ OUI:78BAD0*
+  ID_OUI_FROM_DATABASE=Shinybow Technology Co. Ltd.
+ 
++OUI:78BAF9*
++ ID_OUI_FROM_DATABASE=Cisco
++
++OUI:78BDBC*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:78BEB6*
+  ID_OUI_FROM_DATABASE=Enhanced Vision
+ 
+@@ -63002,7 +63113,7 @@ OUI:7CB21B*
+  ID_OUI_FROM_DATABASE=Cisco SPVTG
+ 
+ OUI:7CB232*
+- ID_OUI_FROM_DATABASE=TCL King High Frequency EI,Co.,LTD
++ ID_OUI_FROM_DATABASE=Hui Zhou Gaoshengda Technology Co.,LTD
+ 
+ OUI:7CB542*
+  ID_OUI_FROM_DATABASE=ACES Technology
+@@ -63133,6 +63244,9 @@ OUI:7CF429*
+ OUI:7CF854*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+ 
++OUI:7CF90E*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:7CFADF*
+  ID_OUI_FROM_DATABASE=Apple
+ 
+@@ -63235,6 +63349,9 @@ OUI:8038FD*
+ OUI:8039E5*
+  ID_OUI_FROM_DATABASE=PATLITE CORPORATION
+ 
++OUI:803B2A*
++ ID_OUI_FROM_DATABASE=ABB Xiamen Low Voltage Equipment Co.,Ltd.
++
+ OUI:803B9A*
+  ID_OUI_FROM_DATABASE=ghe-ces electronic ag
+ 
+@@ -63262,6 +63379,9 @@ OUI:804971*
+ OUI:804B20*
+  ID_OUI_FROM_DATABASE=Ventilation Control
+ 
++OUI:804E81*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:804F58*
+  ID_OUI_FROM_DATABASE=ThinkEco, Inc.
+ 
+@@ -63514,6 +63634,9 @@ OUI:840B2D*
+ OUI:840F45*
+  ID_OUI_FROM_DATABASE=Shanghai GMT Digital Technologies Co., Ltd
+ 
++OUI:84119E*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:841715*
+  ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd.
+ 
+@@ -63580,6 +63703,9 @@ OUI:842B50*
+ OUI:842BBC*
+  ID_OUI_FROM_DATABASE=Modelleisenbahn GmbH
+ 
++OUI:842E27*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:842F75*
+  ID_OUI_FROM_DATABASE=Innokas Group
+ 
+@@ -63943,6 +64069,9 @@ OUI:883612*
+ OUI:883B8B*
+  ID_OUI_FROM_DATABASE=Cheering Connection Co. Ltd.
+ 
++OUI:884157*
++ ID_OUI_FROM_DATABASE=Shenzhen Atsmart Technology Co.,Ltd.
++
+ OUI:8841C1*
+  ID_OUI_FROM_DATABASE=ORBISAT DA AMAZONIA IND E AEROL SA
+ 
+@@ -64006,6 +64135,9 @@ OUI:88708C*
+ OUI:8870EF*
+  ID_OUI_FROM_DATABASE=SC Professional Trading Co., Ltd.
+ 
++OUI:887384*
++ ID_OUI_FROM_DATABASE=Toshiba
++
+ OUI:887398*
+  ID_OUI_FROM_DATABASE=K2E Tekpoint
+ 
+@@ -64039,6 +64171,9 @@ OUI:888B5D*
+ OUI:888C19*
+  ID_OUI_FROM_DATABASE=Brady Corp Asia Pacific Ltd
+ 
++OUI:88908D*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:889166*
+  ID_OUI_FROM_DATABASE=Viewcooper Corp.
+ 
+@@ -64075,6 +64210,9 @@ OUI:889FFA*
+ OUI:88A25E*
+  ID_OUI_FROM_DATABASE=juniper networks
+ 
++OUI:88A2D7*
++ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
++
+ OUI:88A3CC*
+  ID_OUI_FROM_DATABASE=Amatis Controls
+ 
+@@ -64591,6 +64729,9 @@ OUI:90203A*
+ OUI:902083*
+  ID_OUI_FROM_DATABASE=General Engine Management Systems Ltd.
+ 
++OUI:902106*
++ ID_OUI_FROM_DATABASE=BSkyB Ltd
++
+ OUI:902155*
+  ID_OUI_FROM_DATABASE=HTC Corporation
+ 
+@@ -64711,6 +64852,9 @@ OUI:9067F3*
+ OUI:9068C3*
+  ID_OUI_FROM_DATABASE=Motorola Mobility LLC
+ 
++OUI:906CAC*
++ ID_OUI_FROM_DATABASE=Fortinet, Inc.
++
+ OUI:906DC8*
+  ID_OUI_FROM_DATABASE=DLG Automação Industrial Ltda
+ 
+@@ -65254,6 +65398,9 @@ OUI:94E711*
+ OUI:94E848*
+  ID_OUI_FROM_DATABASE=FYLDE MICRO LTD
+ 
++OUI:94E96A*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:94E98C*
+  ID_OUI_FROM_DATABASE=Alcatel-Lucent
+ 
+@@ -65935,6 +66082,9 @@ OUI:9CF938*
+ OUI:9CFBF1*
+  ID_OUI_FROM_DATABASE=MESOMATIC GmbH & Co.KG
+ 
++OUI:9CFC01*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:9CFFBE*
+  ID_OUI_FROM_DATABASE=OTSL Inc.
+ 
+@@ -65977,6 +66127,9 @@ OUI:A0143D*
+ OUI:A0165C*
+  ID_OUI_FROM_DATABASE=Triteka LTD
+ 
++OUI:A01828*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:A01859*
+  ID_OUI_FROM_DATABASE=Shenzhen Yidashi Electronics Co Ltd
+ 
+@@ -66178,6 +66331,9 @@ OUI:A0A23C*
+ OUI:A0A3E2*
+  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
+ 
++OUI:A0A65C*
++ ID_OUI_FROM_DATABASE=Supercomputing Systems AG
++
+ OUI:A0A763*
+  ID_OUI_FROM_DATABASE=Polytron Vertrieb GmbH
+ 
+@@ -66382,6 +66538,9 @@ OUI:A42305*
+ OUI:A424B3*
+  ID_OUI_FROM_DATABASE=FlatFrog Laboratories AB
+ 
++OUI:A424DD*
++ ID_OUI_FROM_DATABASE=Cambrionix Ltd
++
+ OUI:A4251B*
+  ID_OUI_FROM_DATABASE=Avaya, Inc
+ 
+@@ -66397,6 +66556,9 @@ OUI:A42B8C*
+ OUI:A42C08*
+  ID_OUI_FROM_DATABASE=Masterwork Automodules
+ 
++OUI:A43135*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:A433D1*
+  ID_OUI_FROM_DATABASE=Fibrlink Communications Co.,Ltd.
+ 
+@@ -66475,6 +66637,9 @@ OUI:A46032*
+ OUI:A46706*
+  ID_OUI_FROM_DATABASE=Apple
+ 
++OUI:A46C2A*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:A46CC1*
+  ID_OUI_FROM_DATABASE=LTi REEnergy GmbH
+ 
+@@ -67066,6 +67231,9 @@ OUI:AC20AA*
+ OUI:AC220B*
+  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+ 
++OUI:AC293A*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:AC2DA3*
+  ID_OUI_FROM_DATABASE=TXTR GmbH
+ 
+@@ -67144,6 +67312,9 @@ OUI:AC562C*
+ OUI:AC583B*
+  ID_OUI_FROM_DATABASE=Human Assembler, Inc.
+ 
++OUI:AC5A14*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:AC5D10*
+  ID_OUI_FROM_DATABASE=Pace Americas
+ 
+@@ -67153,6 +67324,9 @@ OUI:AC5E8C*
+ OUI:AC6123*
+  ID_OUI_FROM_DATABASE=Drivven, Inc.
+ 
++OUI:AC620D*
++ ID_OUI_FROM_DATABASE=Jabil Circuit (Wuxi) Co. LTD
++
+ OUI:AC6706*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
+ 
+@@ -67180,6 +67354,9 @@ OUI:AC7289*
+ OUI:AC7A42*
+  ID_OUI_FROM_DATABASE=iConnectivity
+ 
++OUI:AC7A4D*
++ ID_OUI_FROM_DATABASE=ALPS ELECTRIC CO.,LTD.
++
+ OUI:AC7BA1*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+ 
+@@ -67402,6 +67579,9 @@ OUI:ACF7F3*
+ OUI:ACF97E*
+  ID_OUI_FROM_DATABASE=ELESYS INC.
+ 
++OUI:ACFD93*
++ ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd.
++
+ OUI:ACFDCE*
+  ID_OUI_FROM_DATABASE=Intel Corporate
+ 
+@@ -67688,7 +67868,7 @@ OUI:B0D59D*
+  ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co., Ltd
+ 
+ OUI:B0D7C5*
+- ID_OUI_FROM_DATABASE=STP KFT
++ ID_OUI_FROM_DATABASE=Logipix Ltd
+ 
+ OUI:B0DA00*
+  ID_OUI_FROM_DATABASE=CERA ELECTRONIQUE
+@@ -67891,6 +68071,9 @@ OUI:B467E9*
+ OUI:B46D35*
+  ID_OUI_FROM_DATABASE=Dalian Seasky Automation Co;Ltd
+ 
++OUI:B46D83*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:B47356*
+  ID_OUI_FROM_DATABASE=Hangzhou Treebear Networking Co., Ltd.
+ 
+@@ -68569,6 +68752,9 @@ OUI:BC38D2*
+ OUI:BC39A6*
+  ID_OUI_FROM_DATABASE=CSUN System Technology Co.,LTD
+ 
++OUI:BC3AEA*
++ ID_OUI_FROM_DATABASE=GUANGDONG OPPO MOBILE TELECOMMUNICATIONS CORP.,LTD.
++
+ OUI:BC3BAF*
+  ID_OUI_FROM_DATABASE=Apple
+ 
+@@ -69211,6 +69397,9 @@ OUI:C40F09*
+ OUI:C4108A*
+  ID_OUI_FROM_DATABASE=Ruckus Wireless
+ 
++OUI:C412F5*
++ ID_OUI_FROM_DATABASE=D-Link International
++
+ OUI:C413E2*
+  ID_OUI_FROM_DATABASE=Aerohive Networks Inc.
+ 
+@@ -69520,6 +69709,9 @@ OUI:C4E92F*
+ OUI:C4E984*
+  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
+ 
++OUI:C4EA1D*
++ ID_OUI_FROM_DATABASE=Technicolor
++
+ OUI:C4EBE3*
+  ID_OUI_FROM_DATABASE=RRCN SAS
+ 
+@@ -69586,6 +69778,9 @@ OUI:C81B6B*
+ OUI:C81E8E*
+  ID_OUI_FROM_DATABASE=ADV Security (S) Pte Ltd
+ 
++OUI:C81EE7*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:C81F66*
+  ID_OUI_FROM_DATABASE=Dell Inc
+ 
+@@ -69610,6 +69805,9 @@ OUI:C83232*
+ OUI:C8334B*
+  ID_OUI_FROM_DATABASE=Apple
+ 
++OUI:C8348E*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:C835B8*
+  ID_OUI_FROM_DATABASE=Ericsson, EAB/RWI/K
+ 
+@@ -70018,6 +70216,9 @@ OUI:CC4BFB*
+ OUI:CC4E24*
+  ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc.
+ 
++OUI:CC4EEC*
++ ID_OUI_FROM_DATABASE=HUMAX Co., Ltd.
++
+ OUI:CC501C*
+  ID_OUI_FROM_DATABASE=KVH Industries, Inc.
+ 
+@@ -70279,6 +70480,9 @@ OUI:CCFCB1*
+ OUI:CCFE3C*
+  ID_OUI_FROM_DATABASE=Samsung Electronics
+ 
++OUI:D0034B*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:D00790*
+  ID_OUI_FROM_DATABASE=Texas Instruments
+ 
+@@ -70321,6 +70525,9 @@ OUI:D023DB*
+ OUI:D02516*
+  ID_OUI_FROM_DATABASE=SHENZHEN MERCURY COMMUNICATION TECHNOLOGIES CO.,LTD.
+ 
++OUI:D02598*
++ ID_OUI_FROM_DATABASE=Apple Inc
++
+ OUI:D02788*
+  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
+ 
+@@ -70342,6 +70549,9 @@ OUI:D03972*
+ OUI:D039B3*
+  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
+ 
++OUI:D0431E*
++ ID_OUI_FROM_DATABASE=Dell Inc.
++
+ OUI:D046DC*
+  ID_OUI_FROM_DATABASE=Southwest Research Institute
+ 
+@@ -70501,6 +70711,9 @@ OUI:D09C30*
+ OUI:D09D0A*
+  ID_OUI_FROM_DATABASE=LINKCOM
+ 
++OUI:D09DAB*
++ ID_OUI_FROM_DATABASE=TCT mobile ltd
++
+ OUI:D0A0D6*
+  ID_OUI_FROM_DATABASE=Chengdu TD Tech Ltd.
+ 
+@@ -71266,6 +71479,9 @@ OUI:D8977C*
+ OUI:D897BA*
+  ID_OUI_FROM_DATABASE=PEGATRON CORPORATION
+ 
++OUI:D89A34*
++ ID_OUI_FROM_DATABASE=Beijing SHENQI Technology Co., Ltd.
++
+ OUI:D89D67*
+  ID_OUI_FROM_DATABASE=Hewlett Packard
+ 
+@@ -72028,6 +72244,9 @@ OUI:E0D9A2*
+ OUI:E0DADC*
+  ID_OUI_FROM_DATABASE=JVC KENWOOD Corporation
+ 
++OUI:E0DB10*
++ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
++
+ OUI:E0DB55*
+  ID_OUI_FROM_DATABASE=Dell Inc
+ 
+@@ -72367,6 +72586,9 @@ OUI:E4F4C6*
+ OUI:E4F7A1*
+  ID_OUI_FROM_DATABASE=Datafox GmbH
+ 
++OUI:E4F89C*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:E4F8EF*
+  ID_OUI_FROM_DATABASE=Samsung Elec Co.,Ltd
+ 
+@@ -72376,6 +72598,9 @@ OUI:E4F939*
+ OUI:E4FA1D*
+  ID_OUI_FROM_DATABASE=PAD Peripheral Advanced Design Inc.
+ 
++OUI:E4FAFD*
++ ID_OUI_FROM_DATABASE=Intel Corporate
++
+ OUI:E4FED9*
+  ID_OUI_FROM_DATABASE=EDMI Europe Ltd
+ 
+@@ -72739,6 +72964,9 @@ OUI:E8F1B0*
+ OUI:E8F226*
+  ID_OUI_FROM_DATABASE=MILLSON CUSTOM SOLUTIONS INC.
+ 
++OUI:E8F2E3*
++ ID_OUI_FROM_DATABASE=Starcor Beijing Co.,Limited
++
+ OUI:E8F928*
+  ID_OUI_FROM_DATABASE=RFTECH SRL
+ 
+@@ -72874,6 +73102,9 @@ OUI:EC5A86*
+ OUI:EC5C69*
+  ID_OUI_FROM_DATABASE=MITSUBISHI HEAVY INDUSTRIES MECHATRONICS SYSTEMS,LTD.
+ 
++OUI:EC60E0*
++ ID_OUI_FROM_DATABASE=AVI-ON LABS
++
+ OUI:EC6264*
+  ID_OUI_FROM_DATABASE=Global411 Internet Services, LLC
+ 
+@@ -73213,6 +73444,9 @@ OUI:F07765*
+ OUI:F077D0*
+  ID_OUI_FROM_DATABASE=Xcellen
+ 
++OUI:F07816*
++ ID_OUI_FROM_DATABASE=Cisco
++
+ OUI:F07959*
+  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
+ 
+@@ -73279,6 +73513,9 @@ OUI:F09FC2*
+ OUI:F0A764*
+  ID_OUI_FROM_DATABASE=GST Co., Ltd.
+ 
++OUI:F0AB54*
++ ID_OUI_FROM_DATABASE=MITSUMI ELECTRIC CO.,LTD.
++
+ OUI:F0ACA4*
+  ID_OUI_FROM_DATABASE=HBC-radiomatic
+ 
+diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
+index 6c22088..3b35b26 100644
+--- a/hwdb/20-pci-vendor-model.hwdb
++++ b/hwdb/20-pci-vendor-model.hwdb
+@@ -4361,6 +4361,9 @@ pci:v00001002d0000665Csv00001787sd00002329*
+ pci:v00001002d0000665D*
+  ID_MODEL_FROM_DATABASE=Bonaire [Radeon R7 200 Series]
+ 
++pci:v00001002d0000665F*
++ ID_MODEL_FROM_DATABASE=Tobago [Radeon R7 300 Series]
++
+ pci:v00001002d00006660*
+  ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M]
+ 
+@@ -5984,6 +5987,63 @@ pci:v00001002d000067AA*
+ pci:v00001002d000067B0*
+  ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X]
+ 
++pci:v00001002d000067B0sv00001043sd0000046A*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X DirectCU II)
++
++pci:v00001002d000067B0sv00001043sd0000046C*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X DirectCU II OC)
++
++pci:v00001002d000067B0sv00001043sd00000474*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Matrix R9 290X Platinum)
++
++pci:v00001002d000067B0sv00001043sd00000476*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (ARES III)
++
++pci:v00001002d000067B0sv00001458sd0000227C*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X OC)
++
++pci:v00001002d000067B0sv00001458sd00002281*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X OC)
++
++pci:v00001002d000067B0sv00001458sd0000228C*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X)
++
++pci:v00001002d000067B0sv00001458sd0000228D*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X OC)
++
++pci:v00001002d000067B0sv00001458sd00002290*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X WindForce 3X)
++
++pci:v00001002d000067B0sv00001462sd00003070*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Lightning)
++
++pci:v00001002d000067B0sv00001462sd00003071*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Lightning)
++
++pci:v00001002d000067B0sv00001462sd00003072*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Lightning LE)
++
++pci:v00001002d000067B0sv00001462sd00003080*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Gaming)
++
++pci:v00001002d000067B0sv00001462sd00003082*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Gaming OC)
++
++pci:v00001002d000067B0sv0000148Csd00002347*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Devil 13 Dual Core R9 290X)
++
++pci:v00001002d000067B0sv00001682sd00009290*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Double Dissipation R9 290X)
++
++pci:v00001002d000067B0sv0000174Bsd0000E282*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (Vapor-X R9 290X Tri-X OC)
++
++pci:v00001002d000067B0sv0000174Bsd0000E285*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X Tri-X OC)
++
++pci:v00001002d000067B0sv00001787sd00002020*
++ ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X] (R9 290X IceQ X² Turbo)
++
+ pci:v00001002d000067B1*
+  ID_MODEL_FROM_DATABASE=Hawaii PRO [Radeon R9 290]
+ 
+@@ -9092,6 +9152,9 @@ pci:v00001002d0000985E*
+ pci:v00001002d0000985F*
+  ID_MODEL_FROM_DATABASE=Mullins
+ 
++pci:v00001002d00009874*
++ ID_MODEL_FROM_DATABASE=Carrizo
++
+ pci:v00001002d00009900*
+  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7660G]
+ 
+@@ -10272,10 +10335,10 @@ pci:v00001014d000000A6*
+  ID_MODEL_FROM_DATABASE=ATM 155MBPS MM Controller (1410a600)
+ 
+ pci:v00001014d000000B7*
+- ID_MODEL_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1]
++ ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter
+ 
+ pci:v00001014d000000B7sv00001092sd000000B8*
+- ID_MODEL_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1] (FireGL1 AGP 32Mb)
++ ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter (FireGL1 AGP 32Mb)
+ 
+ pci:v00001014d000000B8*
+  ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter
+@@ -10325,6 +10388,15 @@ pci:v00001014d00000170*
+ pci:v00001014d00000170sv00001092sd00000172*
+  ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL2)
+ 
++pci:v00001014d00000170sv00001092sd00000173*
++ ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL3)
++
++pci:v00001014d00000170sv00001092sd00000174*
++ ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL4)
++
++pci:v00001014d00000170sv00001092sd00000184*
++ ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter (Fire GL4s)
++
+ pci:v00001014d0000017D*
+  ID_MODEL_FROM_DATABASE=GXT300P Graphics Adapter
+ 
+@@ -28542,913 +28614,934 @@ pci:v000010DEd000010D8*
+  ID_MODEL_FROM_DATABASE=GT218 [NVS 300]
+ 
+ pci:v000010DEd00001140*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M]
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M]
+ 
+ pci:v000010DEd00001140sv00001019sd0000999F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000600*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000606*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000064A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000064C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000067A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000680*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000686*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000689*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000068B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000068D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000068E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000691*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000692*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000694*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000702*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000719*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000725*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000728*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000072B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000072E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000732*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000763*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000773*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000774*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000776*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000077A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000077B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000077C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000077D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000077E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000077F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000781*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000798*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000799*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000079B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000079C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000807*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000821*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000823*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000830*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000833*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000837*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000083E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000841*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000854*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000855*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000856*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000857*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000858*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000868*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000869*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 810M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 810M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000873*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000878*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000087B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000087C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 810M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 810M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000881*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000088A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000089B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000090F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000921*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000092E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 810M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 810M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000092F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000093A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000093C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd0000093F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000941*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000945*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000954*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001025sd00000965*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001028sd0000054D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv00001028sd0000054E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000554*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000557*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000562*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000565*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000568*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000590*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000592*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000594*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000595*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005A2*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005B1*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005B3*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 625M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005DA*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005DE*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005E0*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005E8*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv00001028sd000005F4*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001028sd0000060F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001028sd0000064E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000652*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000653*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000655*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001028sd0000065E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001028sd00000662*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001028sd0000068D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000103Csd000018EF*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000103Csd000018F9*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000103Csd000018FB*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000103Csd000018FD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000103Csd000018FF*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000103Csd00002335*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000103Csd00002337*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000103Csd00002AEF*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A)
+ 
+ pci:v000010DEd00001140sv0000103Csd00002AF9*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710A)
+ 
+ pci:v000010DEd00001140sv00001043sd000010DD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ 
+ pci:v000010DEd00001140sv00001043sd000010ED*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ 
+ pci:v000010DEd00001140sv00001043sd000011FD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000124D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000126D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000131D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd000013FD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd000014C7*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd00001507*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001043sd000015AD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd000015ED*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000160D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000163D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000166D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd000016CD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd000016DD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000170D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000176D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000178D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000179D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd000017DD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd00002132*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001043sd00002136*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ 
+ pci:v000010DEd00001140sv00001043sd000021BA*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd000021FA*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000220A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000221A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000223A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000224A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000227A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000228A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000232A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000233A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000236A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000238A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd00008595*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd000085EA*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd000085EB*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd000085EC*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd000085EE*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001043sd000085F3*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000860E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000861A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000861B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd00008628*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd00008643*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd0000864C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001043sd00008652*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000105Bsd00000DAC*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv0000105Bsd00000DAD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv0000105Bsd00000EF3*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001072sd0000152D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000010CFsd000017F5*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA01*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA02*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA03*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA05*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA11*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA13*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA18*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA19*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA21*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA23*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA2A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA32*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA33*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA36*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA38*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA42*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA43*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA45*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA47*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA49*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA58*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA59*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA88*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001179sd0000FA89*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000B092*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C0D5*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C0D7*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C0E2*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C0E3*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C0E4*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C10D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C652*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C709*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C711*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C736*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C737*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C745*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000144Dsd0000C750*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001462sd000010B8*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 710M)
+ 
+ pci:v000010DEd00001140sv00001462sd000010E9*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001462sd00001116*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000AA33*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000AAA2*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000AAA3*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000ACB2*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000ACC1*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000AE61*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000AE65*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000AE6A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001462sd0000AE71*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000014C0sd00000083*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00000926*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 620M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00000982*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00000983*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001005*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 820M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001012*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001019*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001030*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 630M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001055*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001067*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001072*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001086*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv0000152Dsd00001092*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00002200*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (NVS 5200M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00002213*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00002220*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000309C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720A)
+ 
+ pci:v000010DEd00001140sv000017AAsd000030B4*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++
++pci:v000010DEd00001140sv000017AAsd000030B7*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720A)
++
++pci:v000010DEd00001140sv000017AAsd0000361B*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++
++pci:v000010DEd00001140sv000017AAsd0000361C*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003656*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000365A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000365E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
++
++pci:v000010DEd00001140sv000017AAsd00003661*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000366C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003685*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003686*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 800M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003687*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705A)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003696*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000369B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000369C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000369D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000369E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd000036A9*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++
++pci:v000010DEd00001140sv000017AAsd000036AF*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++
++pci:v000010DEd00001140sv000017AAsd000036B0*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
++
++pci:v000010DEd00001140sv000017AAsd000036B6*
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820A)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003800*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003801*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003802*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003803*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003804*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003806*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003808*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000380D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000380E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000380F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003811*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003812*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003813*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003816*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003818*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000381A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000381C*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003901*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M / GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M / GT 620M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003902*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003903*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M/710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M/710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003904*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M/625M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M/625M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003905*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003907*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003910*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003912*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003913*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003915*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003977*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00003983*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005001*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 610M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 610M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005003*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005005*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000500D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005014*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005017*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005019*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000501A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000501F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005025*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005027*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000502A*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000502B*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000502D*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000502E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000502F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005030*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005031*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 705M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005032*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005033*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000503E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv000017AAsd0000503F*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv000017AAsd00005040*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001854sd00000177*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001854sd00000180*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 710M)
+ 
+ pci:v000010DEd00001140sv00001854sd00000190*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001854sd00000192*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001B0Asd000020DD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001B0Asd000020DF*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 620M)
+ 
+ pci:v000010DEd00001140sv00001B0Asd0000210E*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001B0Asd00002202*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce GT 720M)
+ 
+ pci:v000010DEd00001140sv00001B0Asd000090D7*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001140sv00001B0Asd000090DD*
+- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
++ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] (GeForce 820M)
+ 
+ pci:v000010DEd00001180*
+  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680]
+@@ -29654,6 +29747,9 @@ pci:v000010DEd000011E3*
+ pci:v000010DEd000011E3sv000017AAsd00003683*
+  ID_MODEL_FROM_DATABASE=GK106M [GeForce GTX 760M] (GeForce GTX 760A)
+ 
++pci:v000010DEd000011E7*
++ ID_MODEL_FROM_DATABASE=GK106M
++
+ pci:v000010DEd000011FA*
+  ID_MODEL_FROM_DATABASE=GK106GL [Quadro K4000]
+ 
+@@ -30014,6 +30110,9 @@ pci:v000010DFd00000720sv000017AAsd00001057*
+ pci:v000010DFd00000720sv000017AAsd00001059*
+  ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) (ThinkServer OCm14104-UT-L AnyFabric)
+ 
++pci:v000010DFd00000720sv000017AAsd00004014*
++ ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) (ThinkServer OCm14102-NX-L AnyFabric)
++
+ pci:v000010DFd00000722*
+  ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk)
+ 
+@@ -30755,6 +30854,9 @@ pci:v000010ECd00008168sv00001775sd000011CC*
+ pci:v000010ECd00008168sv00001849sd00008168*
+  ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Motherboard (one of many))
+ 
++pci:v000010ECd00008168sv00007470sd00003468*
++ ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (TG-3468 Gigabit PCI Express Network Adapter)
++
+ pci:v000010ECd00008168sv00008086sd0000D615*
+  ID_MODEL_FROM_DATABASE=RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (Desktop Board D510MO/D525MW)
+ 
+@@ -31278,7 +31380,7 @@ pci:v00001102d00007005sv00001102sd00001002*
+  ID_MODEL_FROM_DATABASE=SB Audigy LS Game Port (SB0312 Audigy LS MIDI/Game port)
+ 
+ pci:v00001102d00007006*
+- ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG PCI to PCIe Bridge
++ ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG PCIe to PCI Bridge
+ 
+ pci:v00001102d00008938*
+  ID_MODEL_FROM_DATABASE=Ectiva EV1938
+@@ -33896,6 +33998,9 @@ pci:v0000111Dd00008088sv00001093sd00007600*
+ pci:v0000111Dd00008088sv00001093sd00007602*
+  ID_MODEL_FROM_DATABASE=PES32NT8BG2 PCI Express Switch (PXIe-8384)
+ 
++pci:v0000111Dd0000808F*
++ ID_MODEL_FROM_DATABASE=PES32NT8AG2
++
+ pci:v0000111E*
+  ID_VENDOR_FROM_DATABASE=Eldec
+ 
+@@ -34664,9 +34769,12 @@ pci:v00001131d00007164sv00000070sd000089A0*
+ pci:v00001131d00007164sv00000070sd000089A1*
+  ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2200)
+ 
+-pci:v00001131d00007164sv00000070sd0000F123*
++pci:v00001131d00007164sv00000070sd0000F120*
+  ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2205)
+ 
++pci:v00001131d00007164sv00000070sd0000F123*
++ ID_MODEL_FROM_DATABASE=SAA7164 (WinTV HVR-2215)
++
+ pci:v00001131d00007231*
+  ID_MODEL_FROM_DATABASE=SAA7231
+ 
+@@ -39923,6 +40031,15 @@ pci:v0000125E*
+ pci:v0000125F*
+  ID_VENDOR_FROM_DATABASE=Concurrent Technologies, Inc.
+ 
++pci:v0000125Fd00002071*
++ ID_MODEL_FROM_DATABASE=CC PMC/232
++
++pci:v0000125Fd00002084*
++ ID_MODEL_FROM_DATABASE=CC PMC/23P
++
++pci:v0000125Fd00002091*
++ ID_MODEL_FROM_DATABASE=CC PMC/422
++
+ pci:v00001260*
+  ID_VENDOR_FROM_DATABASE=Intersil Corporation
+ 
+@@ -43145,17 +43262,56 @@ pci:v00001397*
+ pci:v00001397d000008B4*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S]
+ 
++pci:v00001397d000008B4sv00001397sd000008B4*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Cologne Chip HFC-4S Eval. Board])
++
++pci:v00001397d000008B4sv00001397sd0000B51A*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Allo.com BRI card])
++
+ pci:v00001397d000008B4sv00001397sd0000B520*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [IOB4ST])
+ 
+ pci:v00001397d000008B4sv00001397sd0000B540*
+- ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Swyx 4xS0 SX2 QuadBri])
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Swyx SX2 QuadBri])
+ 
+ pci:v00001397d000008B4sv00001397sd0000B550*
+- ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns quadBRI])
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET quadBRI])
+ 
+ pci:v00001397d000008B4sv00001397sd0000B556*
+- ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns DuoDBRI])
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET duoBRI])
++
++pci:v00001397d000008B4sv00001397sd0000B559*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET duoBRI miniPCI])
++
++pci:v00001397d000008B4sv00001397sd0000B560*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN4S0])
++
++pci:v00001397d000008B4sv00001397sd0000B566*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN2S0])
++
++pci:v00001397d000008B4sv00001397sd0000B567*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN1S0 miniPCI])
++
++pci:v00001397d000008B4sv00001397sd0000B568*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN4S0 miniPCI])
++
++pci:v00001397d000008B4sv00001397sd0000B569*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN2S0 miniPCI])
++
++pci:v00001397d000008B4sv00001397sd0000B620*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S)
++
++pci:v00001397d000008B4sv00001397sd0000B752*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [Junghanns.NET quadBRI PCIe])
++
++pci:v00001397d000008B4sv00001397sd0000B761*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN2S0 PCIe])
++
++pci:v00001397d000008B4sv00001397sd0000B762*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [BeroNet BN4S0 PCIe])
++
++pci:v00001397d000008B4sv00001397sd0000E884*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [OpenVox B200P])
+ 
+ pci:v00001397d000008B4sv00001397sd0000E888*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] (HFC-4S [OpenVox B200P / B400P])
+@@ -43163,9 +43319,33 @@ pci:v00001397d000008B4sv00001397sd0000E888*
+ pci:v00001397d000016B8*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S]
+ 
+-pci:v00001397d000016B8sv00001397sd0000B562*
++pci:v00001397d000016B8sv00001397sd000016B8*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [Cologne Chip HFC-8S Eval. Board])
++
++pci:v00001397d000016B8sv00001397sd0000B521*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [IOB4ST Recording])
++
++pci:v00001397d000016B8sv00001397sd0000B522*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [IOB8ST])
+ 
++pci:v00001397d000016B8sv00001397sd0000B552*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [Junghanns.NET octoBRI])
++
++pci:v00001397d000016B8sv00001397sd0000B55B*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [Junghanns.NET octoBRI])
++
++pci:v00001397d000016B8sv00001397sd0000B562*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [BeroNet BN8S0])
++
++pci:v00001397d000016B8sv00001397sd0000B56B*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [BeroNet BN8S0+])
++
++pci:v00001397d000016B8sv00001397sd0000B622*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S)
++
++pci:v00001397d000016B8sv00001397sd0000E998*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] (HFC-8S [OpenVox B800P])
++
+ pci:v00001397d00002BD0*
+  ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI]
+ 
+@@ -43184,6 +43364,42 @@ pci:v00001397d00002BD0sv0000E4BFsd00001000*
+ pci:v00001397d000030B1*
+  ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1]
+ 
++pci:v00001397d000030B1sv00001397sd000030B1*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Cologne Chip HFC-E1 Eval. Board])
++
++pci:v00001397d000030B1sv00001397sd0000B523*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [IOB1E1])
++
++pci:v00001397d000030B1sv00001397sd0000B543*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Swyx SX2 SinglePRI V2])
++
++pci:v00001397d000030B1sv00001397sd0000B544*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Swyx SX2 DualPRI V2])
++
++pci:v00001397d000030B1sv00001397sd0000B553*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET singleE1])
++
++pci:v00001397d000030B1sv00001397sd0000B554*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET doubleE1])
++
++pci:v00001397d000030B1sv00001397sd0000B555*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET doubleE1 2.0])
++
++pci:v00001397d000030B1sv00001397sd0000B55A*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [Junghanns.NET singleE1 miniPCI])
++
++pci:v00001397d000030B1sv00001397sd0000B563*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN1E1])
++
++pci:v00001397d000030B1sv00001397sd0000B564*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN2E1])
++
++pci:v00001397d000030B1sv00001397sd0000B565*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN2E1+])
++
++pci:v00001397d000030B1sv00001397sd0000B56A*
++ ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] (HFC-E1 [beroNet BN1E1 miniPCI])
++
+ pci:v00001397d0000B700*
+  ID_MODEL_FROM_DATABASE=ISDN network controller PrimuX S0 [HFC-PCI]
+ 
+@@ -45206,6 +45422,9 @@ pci:v00001425d00005088*
+ pci:v00001425d00005089*
+  ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller
+ 
++pci:v00001425d00005090*
++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller
++
+ pci:v00001425d00005401*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
+ 
+@@ -45299,6 +45518,9 @@ pci:v00001425d00005488*
+ pci:v00001425d00005489*
+  ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller
+ 
++pci:v00001425d00005490*
++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller
++
+ pci:v00001425d00005501*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
+ 
+@@ -45392,6 +45614,9 @@ pci:v00001425d00005588*
+ pci:v00001425d00005589*
+  ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Storage Controller
+ 
++pci:v00001425d00005590*
++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Storage Controller
++
+ pci:v00001425d00005601*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller
+ 
+@@ -45485,6 +45710,9 @@ pci:v00001425d00005688*
+ pci:v00001425d00005689*
+  ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Storage Controller
+ 
++pci:v00001425d00005690*
++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Storage Controller
++
+ pci:v00001425d00005701*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller
+ 
+@@ -45578,6 +45806,9 @@ pci:v00001425d00005788*
+ pci:v00001425d00005789*
+  ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller
+ 
++pci:v00001425d00005790*
++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller
++
+ pci:v00001425d00005801*
+  ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller [VF]
+ 
+@@ -45671,6 +45902,9 @@ pci:v00001425d00005888*
+ pci:v00001425d00005889*
+  ID_MODEL_FROM_DATABASE=T520-5089 Unified Wire Ethernet Controller [VF]
+ 
++pci:v00001425d00005890*
++ ID_MODEL_FROM_DATABASE=T540-5090 Unified Wire Ethernet Controller [VF]
++
+ pci:v00001425d0000A000*
+  ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller
+ 
+@@ -51930,7 +52164,10 @@ pci:v0000168Cd0000003C*
+  ID_MODEL_FROM_DATABASE=QCA988x 802.11ac Wireless Network Adapter
+ 
+ pci:v0000168Cd0000003E*
+- ID_MODEL_FROM_DATABASE=Killer N1525 Wireless-AC
++ ID_MODEL_FROM_DATABASE=QCA6174 802.11ac Wireless Network Adapter
++
++pci:v0000168Cd0000003Esv00001A56sd00001525*
++ ID_MODEL_FROM_DATABASE=QCA6174 802.11ac Wireless Network Adapter (Killer N1525 Wireless-AC)
+ 
+ pci:v0000168Cd00000207*
+  ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a]
+@@ -54326,6 +54563,12 @@ pci:v00001924d00000903sv00001924sd00008009*
+ pci:v00001924d00000903sv00001924sd0000800A*
+  ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R2 Flareon 7000 Series 10G Adapter)
+ 
++pci:v00001924d00000903sv00001924sd0000800B*
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x22F-R3 Flareon Ultra 7000 Series 10G Adapter)
++
++pci:v00001924d00000903sv00001924sd0000800C*
++ ID_MODEL_FROM_DATABASE=SFC9120 (SFN7x02F-R3 Flareon 7000 Series 10G Adapter)
++
+ pci:v00001924d00000923*
+  ID_MODEL_FROM_DATABASE=SFC9140
+ 
+@@ -55940,6 +56183,27 @@ pci:v00001BB0d00000002*
+ pci:v00001BB0d00000010*
+  ID_MODEL_FROM_DATABASE=OmniCube Accelerator OA-3000-2
+ 
++pci:v00001BB1*
++ ID_VENDOR_FROM_DATABASE=Seagate Technology PLC
++
++pci:v00001BB1d0000005D*
++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage
++
++pci:v00001BB1d0000005Dsv00001BB1sd00006501*
++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XP6500-8A1536 1.5TB)
++
++pci:v00001BB1d0000005Dsv00001BB1sd00006502*
++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XP6500-8A2048)
++
++pci:v00001BB1d0000005Dsv00001BB1sd00006503*
++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XP6500-8A4096)
++
++pci:v00001BB1d0000005Dsv00001BB1sd00006511*
++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XH6550-2GB DRAM)
++
++pci:v00001BB1d0000005Dsv00001BB1sd00006512*
++ ID_MODEL_FROM_DATABASE=Nytro PCIe Flash Storage (Nytro XH6550-8GB DRAM)
++
+ pci:v00001BB3*
+  ID_VENDOR_FROM_DATABASE=Bluecherry
+ 
+@@ -57905,6 +58169,9 @@ pci:v00007401*
+ pci:v00007401d0000E100*
+  ID_MODEL_FROM_DATABASE=PTP3100 PCIe PTP Slave Clock
+ 
++pci:v00007470*
++ ID_VENDOR_FROM_DATABASE=TP-LINK Technologies Co., Ltd.
++
+ pci:v00007604*
+  ID_VENDOR_FROM_DATABASE=O.N. Electronic Co Ltd.
+ 
+@@ -58434,13 +58701,13 @@ pci:v00008086d00000341*
+  ID_MODEL_FROM_DATABASE=41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge)
+ 
+ pci:v00008086d00000370*
+- ID_MODEL_FROM_DATABASE=80333 Segment-A PCI Express-to-PCI Express Bridge
++ ID_MODEL_FROM_DATABASE=80333 Segment-A PCIe Express to PCI-X bridge
+ 
+ pci:v00008086d00000371*
+  ID_MODEL_FROM_DATABASE=80333 A-Bus IOAPIC
+ 
+ pci:v00008086d00000372*
+- ID_MODEL_FROM_DATABASE=80333 Segment-B PCI Express-to-PCI Express Bridge
++ ID_MODEL_FROM_DATABASE=80333 Segment-B PCIe Express to PCI-X bridge
+ 
+ pci:v00008086d00000373*
+  ID_MODEL_FROM_DATABASE=80333 B-Bus IOAPIC
+@@ -62285,6 +62552,9 @@ pci:v00008086d00001521sv0000103Csd00003380*
+ pci:v00008086d00001521sv0000103Csd0000339E*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 2-port 361T Adapter)
+ 
++pci:v00008086d00001521sv0000103Csd00008157*
++ ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Ethernet 1Gb 4-port 366T Adapter)
++
+ pci:v00008086d00001521sv0000108Esd00007B16*
+  ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection (Quad Port GbE PCIe 2.0 ExpressModule, UTP)
+ 
+@@ -62588,6 +62858,12 @@ pci:v00008086d00001572*
+ pci:v00008086d00001572sv00001028sd00001F99*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet 10G 4P X710/I350 rNDC)
+ 
++pci:v00008086d00001572sv00001137sd00000000*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4)
++
++pci:v00008086d00001572sv00001137sd0000013B*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (Ethernet Converged NIC X710-4)
++
+ pci:v00008086d00001572sv000017AAsd00000000*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE SFP+ (ThinkServer XL710 AnyFabric)
+ 
+@@ -62636,6 +62912,18 @@ pci:v00008086d00001581sv00001028sd00001F98*
+ pci:v00008086d00001583*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+
+ 
++pci:v00008086d00001583sv0000108Esd00000000*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Oracle 10 Gb and 40 Gb Ethernet Adapter)
++
++pci:v00008086d00001583sv0000108Esd00007B1B*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Oracle 10 Gb and 40 Gb Ethernet Adapter)
++
++pci:v00008086d00001583sv00001137sd00000000*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged NIC XL710-Q2)
++
++pci:v00008086d00001583sv00001137sd0000013C*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged NIC XL710-Q2)
++
+ pci:v00008086d00001583sv00008086sd00000000*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet Converged Network Adapter XL710-Q2)
+ 
+@@ -62664,7 +62952,16 @@ pci:v00008086d00001584sv00008086sd00000003*
+  ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 40GbE QSFP+ (Ethernet I/O Module XL710-Q1)
+ 
+ pci:v00008086d00001585*
+- ID_MODEL_FROM_DATABASE=Ethernet Controller XL710 for 10GbE QSFP+
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GbE QSFP+
++
++pci:v00008086d00001586*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T
++
++pci:v00008086d00001586sv0000108Esd00000000*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T
++
++pci:v00008086d00001586sv0000108Esd00004857*
++ ID_MODEL_FROM_DATABASE=Ethernet Controller X710 for 10GBASE-T
+ 
+ pci:v00008086d000015A0*
+  ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM
+@@ -77396,6 +77693,15 @@ pci:v00009412*
+ pci:v00009412d00006565*
+  ID_MODEL_FROM_DATABASE=6565
+ 
++pci:v00009413*
++ ID_VENDOR_FROM_DATABASE=Softlogic Co., Ltd.
++
++pci:v00009413d00006010*
++ ID_MODEL_FROM_DATABASE=SOLO6010 MPEG-4 Video encoder/decoder
++
++pci:v00009413d00006110*
++ ID_MODEL_FROM_DATABASE=SOLO6110 H.264 Video encoder/decoder
++
+ pci:v00009618*
+  ID_VENDOR_FROM_DATABASE=JusonTech Corporation
+ 
+diff --git a/hwdb/20-sdio-vendor-model.hwdb b/hwdb/20-sdio-vendor-model.hwdb
+index 626d673..9cf34b2 100644
+--- a/hwdb/20-sdio-vendor-model.hwdb
++++ b/hwdb/20-sdio-vendor-model.hwdb
+@@ -80,6 +80,36 @@ sdio:c*v02D0*
+ sdio:c*v02D0d044B*
+  ID_MODEL_FROM_DATABASE=Nintendo Wii WLAN daughter card
+ 
++sdio:c*v02D0dA887*
++ ID_MODEL_FROM_DATABASE=BCM43143 WLAN card
++
++sdio:c*v02D0d4324*
++ ID_MODEL_FROM_DATABASE=BCM43241 WLAN card
++
++sdio:c*v02D0d4329*
++ ID_MODEL_FROM_DATABASE=BCM4329 WLAN card
++
++sdio:c*v02D0d4330*
++ ID_MODEL_FROM_DATABASE=BCM4330 WLAN card
++
++sdio:c*v02D0d4334*
++ ID_MODEL_FROM_DATABASE=BCM4334 WLAN card
++
++sdio:c*v02D0dA94C*
++ ID_MODEL_FROM_DATABASE=BCM43340 WLAN card
++
++sdio:c*v02D0dA94D*
++ ID_MODEL_FROM_DATABASE=BCM43341 WLAN card
++
++sdio:c*v02D0d4335*
++ ID_MODEL_FROM_DATABASE=BCM4335/BCM4339 WLAN card
++
++sdio:c*v02D0dA962*
++ ID_MODEL_FROM_DATABASE=BCM43362 WLAN card
++
++sdio:c*v02D0d4354*
++ ID_MODEL_FROM_DATABASE=BCM4354 WLAN card
++
+ sdio:c*v02DB*
+  ID_VENDOR_FROM_DATABASE=SyChip Inc.
+ 
+diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
+index 94e0269..8867531 100644
+--- a/hwdb/20-usb-vendor-model.hwdb
++++ b/hwdb/20-usb-vendor-model.hwdb
+@@ -503,6 +503,9 @@ usb:v03F0p0217*
+ usb:v03F0p0218*
+  ID_MODEL_FROM_DATABASE=APOLLO P2500/2600
+ 
++usb:v03F0p022A*
++ ID_MODEL_FROM_DATABASE=Laserjet CP1525nw
++
+ usb:v03F0p0241*
+  ID_MODEL_FROM_DATABASE=Link-5 micro dongle
+ 
+@@ -1320,7 +1323,7 @@ usb:v03F0p4002*
+  ID_MODEL_FROM_DATABASE=PhotoSmart 635/715/720/735/935 (storage)
+ 
+ usb:v03F0p4004*
+- ID_MODEL_FROM_DATABASE=cp1160
++ ID_MODEL_FROM_DATABASE=CP1160
+ 
+ usb:v03F0p4102*
+  ID_MODEL_FROM_DATABASE=PhotoSmart 618
+@@ -2075,6 +2078,9 @@ usb:v0403p1060*
+ usb:v0403p1234*
+  ID_MODEL_FROM_DATABASE=IronLogic RFID Adapter [Z-2 USB]
+ 
++usb:v0403p1235*
++ ID_MODEL_FROM_DATABASE=Iron Logic Z-397 RS-485/422 converter
++
+ usb:v0403p6001*
+  ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC
+ 
+@@ -2147,6 +2153,9 @@ usb:v0403p8B2B*
+ usb:v0403p8B2C*
+  ID_MODEL_FROM_DATABASE=Alpermann+Velte TCC70
+ 
++usb:v0403p9090*
++ ID_MODEL_FROM_DATABASE=SNAP Stick 200
++
+ usb:v0403p9132*
+  ID_MODEL_FROM_DATABASE=LCD and Temperature Interface
+ 
+@@ -3311,6 +3320,9 @@ usb:v0411p00E8*
+ usb:v0411p0105*
+  ID_MODEL_FROM_DATABASE=External Hard Drive HD-CEU2 [Drive Station]
+ 
++usb:v0411p012C*
++ ID_MODEL_FROM_DATABASE=SATA Bridge
++
+ usb:v0411p012E*
+  ID_MODEL_FROM_DATABASE=WLI-UC-AG300N Wireless LAN Adapter
+ 
+@@ -5378,6 +5390,12 @@ usb:v0451p625F*
+ usb:v0451p8042*
+  ID_MODEL_FROM_DATABASE=Hub
+ 
++usb:v0451p8142*
++ ID_MODEL_FROM_DATABASE=TUSB8041 4-Port Hub
++
++usb:v0451p926B*
++ ID_MODEL_FROM_DATABASE=TUSB9260 Boot Loader
++
+ usb:v0451pDBC0*
+  ID_MODEL_FROM_DATABASE=Device Bay Controller
+ 
+@@ -7364,6 +7382,9 @@ usb:v046Dp0A1F*
+ usb:v046Dp0A29*
+  ID_MODEL_FROM_DATABASE=H600 [Wireless Headset]
+ 
++usb:v046Dp0A37*
++ ID_MODEL_FROM_DATABASE=USB Headset H540
++
+ usb:v046Dp0A38*
+  ID_MODEL_FROM_DATABASE=Headset H340
+ 
+@@ -7608,7 +7629,7 @@ usb:v046DpC122*
+  ID_MODEL_FROM_DATABASE=Harmony 650/700 Remote
+ 
+ usb:v046DpC124*
+- ID_MODEL_FROM_DATABASE=Harmony 300 Remote
++ ID_MODEL_FROM_DATABASE=Harmony 300/350 Remote
+ 
+ usb:v046DpC125*
+  ID_MODEL_FROM_DATABASE=Harmony 200 Remote
+@@ -8432,6 +8453,9 @@ usb:v0471p20E3*
+ usb:v0471p20E4*
+  ID_MODEL_FROM_DATABASE=GoGear ViBE 8GB
+ 
++usb:v0471p2160*
++ ID_MODEL_FROM_DATABASE=Mio LINK Heart Rate Monitor
++
+ usb:v0471p262C*
+  ID_MODEL_FROM_DATABASE=SPC230NC Webcam
+ 
+@@ -8948,6 +8972,9 @@ usb:v0483p2018*
+ usb:v0483p2302*
+  ID_MODEL_FROM_DATABASE=Portable Flash Device (PFD)
+ 
++usb:v0483p347B*
++ ID_MODEL_FROM_DATABASE=ST-LINK/V2-1
++
+ usb:v0483p3744*
+  ID_MODEL_FROM_DATABASE=STLINK Pseudo disk
+ 
+@@ -9044,6 +9071,9 @@ usb:v0489pE016*
+ usb:v0489pE02C*
+  ID_MODEL_FROM_DATABASE=Atheros AR5BBU12 Bluetooth Device
+ 
++usb:v0489pE04D*
++ ID_MODEL_FROM_DATABASE=Atheros AR3012 Bluetooth
++
+ usb:v048A*
+  ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc.
+ 
+@@ -13277,6 +13307,9 @@ usb:v04D8pF4B5*
+ usb:v04D8pF8DA*
+  ID_MODEL_FROM_DATABASE=Hughski Ltd. ColorHug
+ 
++usb:v04D8pF8E8*
++ ID_MODEL_FROM_DATABASE=Harmony 300/350 Remote
++
+ usb:v04D8pF91C*
+  ID_MODEL_FROM_DATABASE=SPROG IIv3
+ 
+@@ -14376,7 +14409,7 @@ usb:v04E8p6632*
+  ID_MODEL_FROM_DATABASE=MITs Sync
+ 
+ usb:v04E8p663E*
+- ID_MODEL_FROM_DATABASE=D900e Phone
++ ID_MODEL_FROM_DATABASE=D900e/B2100 Phone
+ 
+ usb:v04E8p663F*
+  ID_MODEL_FROM_DATABASE=SGH-E720/SGH-E840
+@@ -14400,10 +14433,10 @@ usb:v04E8p6734*
+  ID_MODEL_FROM_DATABASE=Juke
+ 
+ usb:v04E8p6759*
+- ID_MODEL_FROM_DATABASE=D900e Media Player
++ ID_MODEL_FROM_DATABASE=D900e/B2100 Media Player
+ 
+ usb:v04E8p675A*
+- ID_MODEL_FROM_DATABASE=D900e Mass Storage
++ ID_MODEL_FROM_DATABASE=D900e/B2100 Mass Storage
+ 
+ usb:v04E8p675B*
+  ID_MODEL_FROM_DATABASE=D900e Camera
+@@ -17153,6 +17186,9 @@ usb:v054Cp04CB*
+ usb:v054Cp0541*
+  ID_MODEL_FROM_DATABASE=DSC-HX100V [Cybershot Digital Still Camera]
+ 
++usb:v054Cp05C4*
++ ID_MODEL_FROM_DATABASE=DualShock 4
++
+ usb:v054Cp0689*
+  ID_MODEL_FROM_DATABASE=Walkman NWZ-B173F
+ 
+@@ -17870,6 +17906,9 @@ usb:v056Ap00F6*
+ usb:v056Ap00F8*
+  ID_MODEL_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) tablet
+ 
++usb:v056Ap0302*
++ ID_MODEL_FROM_DATABASE=Intuos CTH480S2 [Manga]
++
+ usb:v056Ap0307*
+  ID_MODEL_FROM_DATABASE=Cintiq Companion Hybrid 13HD (DTH-A1300) tablet
+ 
+@@ -20511,7 +20550,7 @@ usb:v05B4p4857*
+  ID_MODEL_FROM_DATABASE=M-Any DAH-210
+ 
+ usb:v05B4p6001*
+- ID_MODEL_FROM_DATABASE=Digisette DUO-MP3 AR-100
++ ID_MODEL_FROM_DATABASE=HYUNDAI GDS30C6001 SSFDC / MMC I/F Controller
+ 
+ usb:v05B5*
+  ID_VENDOR_FROM_DATABASE=Dialogic Corp.
+@@ -20618,6 +20657,9 @@ usb:v05C6p9001*
+ usb:v05C6p9002*
+  ID_MODEL_FROM_DATABASE=Gobi Wireless Modem
+ 
++usb:v05C6p9003*
++ ID_MODEL_FROM_DATABASE=Quectel UC20
++
+ usb:v05C6p9008*
+  ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode)
+ 
+@@ -21548,6 +21590,9 @@ usb:v05DCpA813*
+ usb:v05DCpA815*
+  ID_MODEL_FROM_DATABASE=JumpDrive V10
+ 
++usb:v05DCpA833*
++ ID_MODEL_FROM_DATABASE=JumpDrive S23 64GB
++
+ usb:v05DCpB002*
+  ID_MODEL_FROM_DATABASE=USB CF Reader
+ 
+@@ -22589,6 +22634,9 @@ usb:v064EpA219*
+ usb:v064EpC107*
+  ID_MODEL_FROM_DATABASE=HP webcam [dv6-1190en]
+ 
++usb:v064EpC335*
++ ID_MODEL_FROM_DATABASE=HP TrueVision HD
++
+ usb:v064EpD101*
+  ID_MODEL_FROM_DATABASE=Acer CrystalEye Webcam
+ 
+@@ -25850,6 +25898,9 @@ usb:v0764p0005*
+ usb:v0764p0501*
+  ID_MODEL_FROM_DATABASE=CP1500 AVR UPS
+ 
++usb:v0764p0601*
++ ID_MODEL_FROM_DATABASE=PR1500LCDRT2U UPS
++
+ usb:v0765*
+  ID_VENDOR_FROM_DATABASE=X-Rite, Inc.
+ 
+@@ -26900,6 +26951,9 @@ usb:v07B3p0A06*
+ usb:v07B3p0B00*
+  ID_MODEL_FROM_DATABASE=SmartPhoto F50
+ 
++usb:v07B3p0C00*
++ ID_MODEL_FROM_DATABASE=OpticPro ST64 Scanner
++
+ usb:v07B3p0C03*
+  ID_MODEL_FROM_DATABASE=OpticPro ST64+ Scanner
+ 
+@@ -26946,7 +27000,7 @@ usb:v07B4p0112*
+  ID_MODEL_FROM_DATABASE=MAUSB-100 xD Card Reader
+ 
+ usb:v07B4p0113*
+- ID_MODEL_FROM_DATABASE=Mju 500
++ ID_MODEL_FROM_DATABASE=Mju 500 / Stylus Digital Camera (PTP)
+ 
+ usb:v07B4p0114*
+  ID_MODEL_FROM_DATABASE=C-350Z Camera
+@@ -28589,6 +28643,9 @@ usb:v0846p9041*
+ usb:v0846p9042*
+  ID_MODEL_FROM_DATABASE=On Networks N150MA 802.11bgn [Realtek RTL8188CUS]
+ 
++usb:v0846p9043*
++ ID_MODEL_FROM_DATABASE=WNA1000Mv2 802.11bgn [Realtek RTL8188CUS?]
++
+ usb:v0846p9050*
+  ID_MODEL_FROM_DATABASE=A6200 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
+ 
+@@ -29432,6 +29489,9 @@ usb:v08E3p0301*
+ usb:v08E4*
+  ID_VENDOR_FROM_DATABASE=Pioneer Corp.
+ 
++usb:v08E4p0184*
++ ID_MODEL_FROM_DATABASE=DDJ-WeGO
++
+ usb:v08E4p0185*
+  ID_MODEL_FROM_DATABASE=DDJ-WeGO2
+ 
+@@ -29990,6 +30050,9 @@ usb:v090Cp037A*
+ usb:v090Cp037B*
+  ID_MODEL_FROM_DATABASE=Silicon Motion Camera
+ 
++usb:v090Cp037C*
++ ID_MODEL_FROM_DATABASE=300k Pixel Camera
++
+ usb:v090Cp1000*
+  ID_MODEL_FROM_DATABASE=Flash Drive
+ 
+@@ -30032,6 +30095,9 @@ usb:v090CpB370*
+ usb:v090CpB371*
+  ID_MODEL_FROM_DATABASE=Silicon Motion SM371 Camera
+ 
++usb:v090CpF37D*
++ ID_MODEL_FROM_DATABASE=Endoscope camera
++
+ usb:v090D*
+  ID_VENDOR_FROM_DATABASE=Multiport Computer Vertriebs GmbH
+ 
+@@ -30323,6 +30389,9 @@ usb:v0928*
+ usb:v0928p8000*
+  ID_MODEL_FROM_DATABASE=Firmware uploader
+ 
++usb:v0928pFFFF*
++ ID_MODEL_FROM_DATABASE=Blank Oxford Device
++
+ usb:v0929*
+  ID_VENDOR_FROM_DATABASE=American Biometric Co.
+ 
+@@ -35774,6 +35843,15 @@ usb:v0C4Bp0500*
+ usb:v0C4Bp0501*
+  ID_MODEL_FROM_DATABASE=cyberJack RFID comfort dual interface smartcard reader
+ 
++usb:v0C4Bp0502*
++ ID_MODEL_FROM_DATABASE=cyberJack compact
++
++usb:v0C4Bp0504*
++ ID_MODEL_FROM_DATABASE=cyberJack go / go plus
++
++usb:v0C4Bp0505*
++ ID_MODEL_FROM_DATABASE=cyberJack wave
++
+ usb:v0C4Bp9102*
+  ID_MODEL_FROM_DATABASE=cyberJack RFID basis contactless smartcard reader
+ 
+@@ -35981,6 +36059,36 @@ usb:v0C5E*
+ usb:v0C60*
+  ID_VENDOR_FROM_DATABASE=Apogee Electronics Corp.
+ 
++usb:v0C60p0001*
++ ID_MODEL_FROM_DATABASE=MiniMe
++
++usb:v0C60p0002*
++ ID_MODEL_FROM_DATABASE=MiniDAC
++
++usb:v0C60p0003*
++ ID_MODEL_FROM_DATABASE=ONE
++
++usb:v0C60p0004*
++ ID_MODEL_FROM_DATABASE=GiO
++
++usb:v0C60p0007*
++ ID_MODEL_FROM_DATABASE=Duet
++
++usb:v0C60p0009*
++ ID_MODEL_FROM_DATABASE=Jam
++
++usb:v0C60p000A*
++ ID_MODEL_FROM_DATABASE=Jam Bootloader
++
++usb:v0C60p000B*
++ ID_MODEL_FROM_DATABASE=MiC
++
++usb:v0C60p000C*
++ ID_MODEL_FROM_DATABASE=MiC Bootloader
++
++usb:v0C60p8007*
++ ID_MODEL_FROM_DATABASE=Duet DFU Mode
++
+ usb:v0C62*
+  ID_VENDOR_FROM_DATABASE=Chant Sincere Co., Ltd
+ 
+@@ -37524,7 +37632,7 @@ usb:v0DA3*
+  ID_VENDOR_FROM_DATABASE=Nippon Electro-Sensory Devices Corp.
+ 
+ usb:v0DA4*
+- ID_VENDOR_FROM_DATABASE=Polar Electro OY
++ ID_VENDOR_FROM_DATABASE=Polar Electro Oy
+ 
+ usb:v0DA4p0001*
+  ID_MODEL_FROM_DATABASE=Interface
+@@ -37667,6 +37775,18 @@ usb:v0DB3*
+ usb:v0DB4*
+  ID_VENDOR_FROM_DATABASE=Chung Fu Chen Yeh Enterprise Corp.
+ 
++usb:v0DB5*
++ ID_VENDOR_FROM_DATABASE=Access IS
++
++usb:v0DB5p0139*
++ ID_MODEL_FROM_DATABASE=LSR116 CDC
++
++usb:v0DB5p013A*
++ ID_MODEL_FROM_DATABASE=LSR116 Keyboard
++
++usb:v0DB5p013B*
++ ID_MODEL_FROM_DATABASE=LSR116 HID
++
+ usb:v0DB7*
+  ID_VENDOR_FROM_DATABASE=ELCON Systemtechnik
+ 
+@@ -38510,6 +38630,9 @@ usb:v0E6Fp0005*
+ usb:v0E6Fp0006*
+  ID_MODEL_FROM_DATABASE=Edge wireless Controller
+ 
++usb:v0E6Fp0128*
++ ID_MODEL_FROM_DATABASE=Wireless PS3 Controller
++
+ usb:v0E70*
+  ID_VENDOR_FROM_DATABASE=Tokyo Electronic Industry Co., Ltd
+ 
+@@ -38618,6 +38741,9 @@ usb:v0E8Fp0020*
+ usb:v0E8Fp0021*
+  ID_MODEL_FROM_DATABASE=Multimedia Keyboard Controller
+ 
++usb:v0E8Fp0022*
++ ID_MODEL_FROM_DATABASE=multimedia keyboard controller
++
+ usb:v0E8Fp0201*
+  ID_MODEL_FROM_DATABASE=SmartJoy Frag Xpad/PS2 adaptor
+ 
+@@ -38858,6 +38984,9 @@ usb:v0EE3p1000*
+ usb:v0EE4*
+  ID_VENDOR_FROM_DATABASE=Sunrich Technology, Ltd
+ 
++usb:v0EE4p0690*
++ ID_MODEL_FROM_DATABASE=SATA 3 Adapter
++
+ usb:v0EEE*
+  ID_VENDOR_FROM_DATABASE=Digital Stream Technology, Inc.
+ 
+@@ -39663,7 +39792,7 @@ usb:v0FCEpE19B*
+  ID_MODEL_FROM_DATABASE=C2005 [Xperia M dual] (Mass Storage)
+ 
+ usb:v0FCEpF0FA*
+- ID_MODEL_FROM_DATABASE=Liveview micro display MN800 in DFU mode
++ ID_MODEL_FROM_DATABASE=MN800 / Smartwatch 2 (DFU mode)
+ 
+ usb:v0FCF*
+  ID_VENDOR_FROM_DATABASE=Dynastream Innovations, Inc.
+@@ -39884,6 +40013,9 @@ usb:v1004p61C6*
+ usb:v1004p61CC*
+  ID_MODEL_FROM_DATABASE=Optimus S
+ 
++usb:v1004p61DA*
++ ID_MODEL_FROM_DATABASE=G2 Android Phone [tethering mode]
++
+ usb:v1004p61F1*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone [LG Software mode]
+ 
+@@ -39900,13 +40032,13 @@ usb:v1004p6300*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone
+ 
+ usb:v1004p631C*
+- ID_MODEL_FROM_DATABASE=Optimus Android Phone [MTP mode]
++ ID_MODEL_FROM_DATABASE=G2/Optimus Android Phone [MTP mode]
+ 
+ usb:v1004p631D*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone (Camera/PTP Mode)
+ 
+ usb:v1004p631E*
+- ID_MODEL_FROM_DATABASE=Optimus Android Phone [Camera/PTP mode]
++ ID_MODEL_FROM_DATABASE=G2/Optimus Android Phone [Camera/PTP mode]
+ 
+ usb:v1004p631F*
+  ID_MODEL_FROM_DATABASE=Optimus Android Phone (Charge Mode)
+@@ -40241,6 +40373,9 @@ usb:v1046p9967*
+ usb:v1048*
+  ID_VENDOR_FROM_DATABASE=Targus Group International
+ 
++usb:v1048p2010*
++ ID_MODEL_FROM_DATABASE=4-Port hub
++
+ usb:v104B*
+  ID_VENDOR_FROM_DATABASE=Mylex / Buslogic
+ 
+@@ -40287,13 +40422,22 @@ usb:v1050p0010*
+  ID_MODEL_FROM_DATABASE=Yubikey
+ 
+ usb:v1050p0110*
+- ID_MODEL_FROM_DATABASE=Yubikey NEO OTP
++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) OTP
+ 
+ usb:v1050p0111*
+- ID_MODEL_FROM_DATABASE=Yubikey NEO OTP+CCID
++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) OTP+CCID
+ 
+ usb:v1050p0112*
+- ID_MODEL_FROM_DATABASE=Yubikey NEO CCID
++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) CCID
++
++usb:v1050p0113*
++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) U2F
++
++usb:v1050p0114*
++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) OTP+U2F
++
++usb:v1050p0115*
++ ID_MODEL_FROM_DATABASE=Yubikey NEO(-N) U2F+CCID
+ 
+ usb:v1050p0200*
+  ID_MODEL_FROM_DATABASE=U2F Gnubby
+@@ -50777,6 +50921,15 @@ usb:v2931p0A05*
+ usb:v2931p0AFE*
+  ID_MODEL_FROM_DATABASE=Jolla charging only
+ 
++usb:v2A03*
++ ID_VENDOR_FROM_DATABASE=dog hunter AG
++
++usb:v2A03p0001*
++ ID_MODEL_FROM_DATABASE=Linino One (CDC ACM)
++
++usb:v2A03p8001*
++ ID_MODEL_FROM_DATABASE=Linino ONE board
++
+ usb:v2C02*
+  ID_VENDOR_FROM_DATABASE=Planex Communications
+ 
diff --git a/SOURCES/0094-man-add-docs-for-sd_is_special-and-some-man-page-sym.patch b/SOURCES/0094-man-add-docs-for-sd_is_special-and-some-man-page-sym.patch
deleted file mode 100644
index 2b774d0..0000000
--- a/SOURCES/0094-man-add-docs-for-sd_is_special-and-some-man-page-sym.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From 5b154beab0557c51f18012e7d01d29d48d1910f3 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 7 Nov 2013 17:51:09 +0100
-Subject: [PATCH] man: add docs for sd_is_special() and some man page symlinks
-
-Conflicts:
-	Makefile.am
----
- Makefile-man.am            | 15 +++++++++++++++
- man/sd_is_fifo.xml         | 17 +++++++++++++++++
- man/sd_seat_get_active.xml |  2 ++
- 3 files changed, 34 insertions(+)
-
-diff --git a/Makefile-man.am b/Makefile-man.am
-index c8a4342..b8c8acc 100644
---- a/Makefile-man.am
-+++ b/Makefile-man.am
-@@ -138,6 +138,7 @@ MANPAGES_ALIAS += \
- 	man/sd_is_socket.3 \
- 	man/sd_is_socket_inet.3 \
- 	man/sd_is_socket_unix.3 \
-+	man/sd_is_special.3 \
- 	man/sd_journal.3 \
- 	man/sd_journal_add_conjunction.3 \
- 	man/sd_journal_add_disjunction.3 \
-@@ -238,6 +239,7 @@ man/sd_is_mq.3: man/sd_is_fifo.3
- man/sd_is_socket.3: man/sd_is_fifo.3
- man/sd_is_socket_inet.3: man/sd_is_fifo.3
- man/sd_is_socket_unix.3: man/sd_is_fifo.3
-+man/sd_is_special.3: man/sd_is_fifo.3
- man/sd_journal.3: man/sd_journal_open.3
- man/sd_journal_add_conjunction.3: man/sd_journal_add_match.3
- man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3
-@@ -410,6 +412,9 @@ man/sd_is_socket_inet.html: man/sd_is_fifo.html
- man/sd_is_socket_unix.html: man/sd_is_fifo.html
- 	$(html-alias)
- 
-+man/sd_is_special.html: man/sd_is_fifo.html
-+	$(html-alias)
-+
- man/sd_journal.html: man/sd_journal_open.html
- 	$(html-alias)
- 
-@@ -844,7 +849,9 @@ MANPAGES_ALIAS += \
- 	man/sd_pid_get_slice.3 \
- 	man/sd_pid_get_unit.3 \
- 	man/sd_pid_get_user_unit.3 \
-+	man/sd_seat_can_graphical.3 \
- 	man/sd_seat_can_multi_session.3 \
-+	man/sd_seat_can_tty.3 \
- 	man/sd_seat_get_sessions.3 \
- 	man/sd_session_get_class.3 \
- 	man/sd_session_get_display.3 \
-@@ -873,7 +880,9 @@ man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3
- man/sd_pid_get_slice.3: man/sd_pid_get_session.3
- man/sd_pid_get_unit.3: man/sd_pid_get_session.3
- man/sd_pid_get_user_unit.3: man/sd_pid_get_session.3
-+man/sd_seat_can_graphical.3: man/sd_seat_get_active.3
- man/sd_seat_can_multi_session.3: man/sd_seat_get_active.3
-+man/sd_seat_can_tty.3: man/sd_seat_get_active.3
- man/sd_seat_get_sessions.3: man/sd_seat_get_active.3
- man/sd_session_get_class.3: man/sd_session_is_active.3
- man/sd_session_get_display.3: man/sd_session_is_active.3
-@@ -930,9 +939,15 @@ man/sd_pid_get_unit.html: man/sd_pid_get_session.html
- man/sd_pid_get_user_unit.html: man/sd_pid_get_session.html
- 	$(html-alias)
- 
-+man/sd_seat_can_graphical.html: man/sd_seat_get_active.html
-+	$(html-alias)
-+
- man/sd_seat_can_multi_session.html: man/sd_seat_get_active.html
- 	$(html-alias)
- 
-+man/sd_seat_can_tty.html: man/sd_seat_get_active.html
-+	$(html-alias)
-+
- man/sd_seat_get_sessions.html: man/sd_seat_get_active.html
- 	$(html-alias)
- 
-diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
-index 2bc860c..4d9cd79 100644
---- a/man/sd_is_fifo.xml
-+++ b/man/sd_is_fifo.xml
-@@ -48,6 +48,7 @@
-                 <refname>sd_is_socket_inet</refname>
-                 <refname>sd_is_socket_unix</refname>
-                 <refname>sd_is_mq</refname>
-+                <refname>sd_is_special</refname>
-                 <refpurpose>Check the type of a file descriptor</refpurpose>
-         </refnamediv>
- 
-@@ -93,6 +94,12 @@
-                                 <paramdef>const char *<parameter>path</parameter></paramdef>
-                         </funcprototype>
- 
-+                        <funcprototype>
-+                                <funcdef>int <function>sd_is_special</function></funcdef>
-+                                <paramdef>int <parameter>fd</parameter></paramdef>
-+                                <paramdef>const char *<parameter>path</parameter></paramdef>
-+                        </funcprototype>
-+
-                 </funcsynopsis>
-         </refsynopsisdiv>
- 
-@@ -153,6 +160,16 @@
-                 <parameter>path</parameter> parameter is not
-                 <constant>NULL</constant>, it is checked whether the
-                 message queue is bound to the specified name.</para>
-+
-+                <para><function>sd_is_special()</function> may be
-+                called to check whether the specified file descriptor
-+                refers to a special file. If the
-+                <parameter>path</parameter> parameter is not
-+                <constant>NULL</constant>, it is checked whether file
-+                descriptor is bound to the specified file
-+                name. Special files in this context are character
-+                device nodes and files in <filename>/proc</filename>
-+                or <filename>/sys</filename>.</para>
-         </refsect1>
- 
-         <refsect1>
-diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
-index 1610d3e..cd87696 100644
---- a/man/sd_seat_get_active.xml
-+++ b/man/sd_seat_get_active.xml
-@@ -46,6 +46,8 @@
-                 <refname>sd_seat_get_active</refname>
-                 <refname>sd_seat_get_sessions</refname>
-                 <refname>sd_seat_can_multi_session</refname>
-+                <refname>sd_seat_can_tty</refname>
-+                <refname>sd_seat_can_graphical</refname>
-                 <refpurpose>Determine state of a specific seat</refpurpose>
-         </refnamediv>
- 
diff --git a/SOURCES/0095-networkd-Begin-with-serial-number-1-for-netlink-requ.patch b/SOURCES/0095-networkd-Begin-with-serial-number-1-for-netlink-requ.patch
new file mode 100644
index 0000000..b93ebee
--- /dev/null
+++ b/SOURCES/0095-networkd-Begin-with-serial-number-1-for-netlink-requ.patch
@@ -0,0 +1,45 @@
+From 0dd3b68d80bd32ecc5db65d634072390dad581aa Mon Sep 17 00:00:00 2001
+From: Richard Maw <richard.maw@codethink.co.uk>
+Date: Thu, 12 Mar 2015 18:14:58 +0000
+Subject: [PATCH] networkd: Begin with serial number 1 for netlink requests
+
+"Notifications are of informal nature and no reply is expected, therefore the
+sequence number is typically set to 0."[1]
+
+If networkd is started soon after recent netlink activity, then there
+will be messages with sequence number 0 in the buffer.
+
+The first thing networkd does is to request a dump of all the links. If
+it uses sequence number 0 for this, then it may confuse the dump request's
+response with that of a notification.
+
+This will result in it failing to properly enumerate all the links,
+but more importantly, when it comes to enumerate all the addresses, it
+will still have the link dump in progress, so the address enumeration
+will fail with -EBUSY.
+
+[1]: http://www.infradead.org/~tgr/libnl/doc/core.html#core_msg_types
+
+[tomegun: sequence -> serial]
+
+(cherry picked from commit d422e52a3523ad0955bec4f9fbed46e234d28590)
+---
+ src/libsystemd/sd-rtnl/sd-rtnl.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/libsystemd/sd-rtnl/sd-rtnl.c b/src/libsystemd/sd-rtnl/sd-rtnl.c
+index ae49c77..7cdcc5d 100644
+--- a/src/libsystemd/sd-rtnl/sd-rtnl.c
++++ b/src/libsystemd/sd-rtnl/sd-rtnl.c
+@@ -61,6 +61,11 @@ static int sd_rtnl_new(sd_rtnl **ret) {
+                             sizeof(struct nlmsghdr), sizeof(uint8_t)))
+                 return -ENOMEM;
+ 
++        /* Change notification responses have sequence 0, so we must
++         * start our request sequence numbers at 1, or we may confuse our
++         * responses with notifications from the kernel */
++        rtnl->serial = 1;
++
+         *ret = rtnl;
+         rtnl = NULL;
+ 
diff --git a/SOURCES/0095-systemctl-return-r-instead-of-always-returning-0.patch b/SOURCES/0095-systemctl-return-r-instead-of-always-returning-0.patch
deleted file mode 100644
index 53cec6a..0000000
--- a/SOURCES/0095-systemctl-return-r-instead-of-always-returning-0.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 72002c70f780a73efc8357fe0249228e6d0a6924 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Wed, 6 Nov 2013 11:18:02 +0100
-Subject: [PATCH] systemctl: return r instead of always returning 0
-
----
- src/systemctl/systemctl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index 36040db..1d68b38 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -1362,7 +1362,7 @@ static int list_jobs(DBusConnection *bus, char **args) {
-         }
-         free(jobs);
- 
--        return 0;
-+        return r;
- }
- 
- static int cancel_job(DBusConnection *bus, char **args) {
diff --git a/SOURCES/0096-journal-fix-minor-memory-leak.patch b/SOURCES/0096-journal-fix-minor-memory-leak.patch
deleted file mode 100644
index 4b99d8c..0000000
--- a/SOURCES/0096-journal-fix-minor-memory-leak.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9d2d041c768d1597cd556a322e4eb3d1d623f318 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 8 Nov 2013 13:53:25 +0100
-Subject: [PATCH] journal: fix minor memory leak
-
----
- src/journal/sd-journal.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
-index 7700d6c..9676f0f 100644
---- a/src/journal/sd-journal.c
-+++ b/src/journal/sd-journal.c
-@@ -1276,7 +1276,7 @@ static void check_network(sd_journal *j, int fd) {
- static bool file_has_type_prefix(const char *prefix, const char *filename) {
-         const char *full, *tilded, *atted;
- 
--        full = strappend(prefix, ".journal");
-+        full = strappenda(prefix, ".journal");
-         tilded = strappenda(full, "~");
-         atted = strappenda(prefix, "@");
- 
diff --git a/SOURCES/0096-journal-remote-downgrade-routine-messages-to-debug.patch b/SOURCES/0096-journal-remote-downgrade-routine-messages-to-debug.patch
new file mode 100644
index 0000000..42f7036
--- /dev/null
+++ b/SOURCES/0096-journal-remote-downgrade-routine-messages-to-debug.patch
@@ -0,0 +1,179 @@
+From c546fffcff0d2e3522738aac30391d5996bdf4a6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 12 Mar 2015 21:29:28 -0400
+Subject: [PATCH] journal-remote: downgrade routine messages to debug
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89486
+(cherry picked from commit 0e72da6fe8671d49b4d458519f5ac7600fd04f03)
+---
+ src/journal-remote/journal-remote-parse.c |  2 +-
+ src/journal-remote/journal-remote-write.c |  2 +-
+ src/journal-remote/journal-remote.c       | 36 +++++++++++++++----------------
+ src/journal-remote/microhttpd-util.c      |  4 ++--
+ 4 files changed, 22 insertions(+), 22 deletions(-)
+
+diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c
+index afded7e..6c096de 100644
+--- a/src/journal-remote/journal-remote-parse.c
++++ b/src/journal-remote/journal-remote-parse.c
+@@ -443,7 +443,7 @@ int process_source(RemoteSource *source, bool compress, bool seal) {
+                 return r;
+ 
+         /* We have a full event */
+-        log_trace("Received a full event from source@%p fd:%d (%s)",
++        log_trace("Received full event from source@%p fd:%d (%s)",
+                   source, source->fd, source->name);
+ 
+         if (!source->iovw.count) {
+diff --git a/src/journal-remote/journal-remote-write.c b/src/journal-remote/journal-remote-write.c
+index df30049..99820fa 100644
+--- a/src/journal-remote/journal-remote-write.c
++++ b/src/journal-remote/journal-remote-write.c
+@@ -156,7 +156,7 @@ int writer_write(Writer *w,
+         if (r < 0)
+                 return r;
+         else
+-                log_info("%s: Successfully rotated journal", w->journal->path);
++                log_debug("%s: Successfully rotated journal", w->journal->path);
+ 
+         log_debug("Retrying write.");
+         r = journal_file_append_entry(w->journal, ts, iovw->iovec, iovw->count,
+diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c
+index 8f32a9a..d1486e7 100644
+--- a/src/journal-remote/journal-remote.c
++++ b/src/journal-remote/journal-remote.c
+@@ -207,7 +207,7 @@ static int open_output(Writer *w, const char* host) {
+                 log_error_errno(r, "Failed to open output journal %s: %m",
+                                 output);
+         else
+-                log_info("Opened output file %s", w->journal->path);
++                log_debug("Opened output file %s", w->journal->path);
+         return r;
+ }
+ 
+@@ -747,7 +747,7 @@ static int setup_microhttpd_socket(RemoteServer *s,
+                                    const char *trust) {
+         int fd;
+ 
+-        fd = make_socket_fd(LOG_INFO, address, SOCK_STREAM | SOCK_CLOEXEC);
++        fd = make_socket_fd(LOG_DEBUG, address, SOCK_STREAM | SOCK_CLOEXEC);
+         if (fd < 0)
+                 return fd;
+ 
+@@ -844,7 +844,7 @@ static int remoteserver_init(RemoteServer *s,
+         if (n < 0)
+                 return log_error_errno(n, "Failed to read listening file descriptors from environment: %m");
+         else
+-                log_info("Received %d descriptors", n);
++                log_debug("Received %d descriptors", n);
+ 
+         if (MAX(http_socket, https_socket) >= SD_LISTEN_FDS_START + n) {
+                 log_error("Received fewer sockets than expected");
+@@ -853,7 +853,7 @@ static int remoteserver_init(RemoteServer *s,
+ 
+         for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd++) {
+                 if (sd_is_socket(fd, AF_UNSPEC, 0, true)) {
+-                        log_info("Received a listening socket (fd:%d)", fd);
++                        log_debug("Received a listening socket (fd:%d)", fd);
+ 
+                         if (fd == http_socket)
+                                 r = setup_microhttpd_server(s, fd, NULL, NULL, NULL);
+@@ -868,7 +868,7 @@ static int remoteserver_init(RemoteServer *s,
+                         if (r < 0)
+                                 return log_error_errno(r, "Failed to retrieve remote name: %m");
+ 
+-                        log_info("Received a connection socket (fd:%d) from %s", fd, hostname);
++                        log_debug("Received a connection socket (fd:%d) from %s", fd, hostname);
+ 
+                         r = add_source(s, fd, hostname, true);
+                 } else {
+@@ -908,7 +908,7 @@ static int remoteserver_init(RemoteServer *s,
+         }
+ 
+         if (arg_listen_raw) {
+-                log_info("Listening on a socket...");
++                log_debug("Listening on a socket...");
+                 r = setup_raw_socket(s, arg_listen_raw);
+                 if (r < 0)
+                         return r;
+@@ -930,12 +930,12 @@ static int remoteserver_init(RemoteServer *s,
+                 const char *output_name;
+ 
+                 if (streq(*file, "-")) {
+-                        log_info("Using standard input as source.");
++                        log_debug("Using standard input as source.");
+ 
+                         fd = STDIN_FILENO;
+                         output_name = "stdin";
+                 } else {
+-                        log_info("Reading file %s...", *file);
++                        log_debug("Reading file %s...", *file);
+ 
+                         fd = open(*file, O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NONBLOCK);
+                         if (fd < 0)
+@@ -1014,22 +1014,22 @@ static int dispatch_raw_source_event(sd_event_source *event,
+         if (source->state == STATE_EOF) {
+                 size_t remaining;
+ 
+-                log_info("EOF reached with source fd:%d (%s)",
+-                         source->fd, source->name);
++                log_debug("EOF reached with source fd:%d (%s)",
++                          source->fd, source->name);
+ 
+                 remaining = source_non_empty(source);
+                 if (remaining > 0)
+-                        log_warning("Premature EOF. %zu bytes lost.", remaining);
++                        log_notice("Premature EOF. %zu bytes lost.", remaining);
+                 remove_source(s, source->fd);
+-                log_info("%zu active sources remaining", s->active);
++                log_debug("%zu active sources remaining", s->active);
+                 return 0;
+         } else if (r == -E2BIG) {
+-                log_error("Entry too big, skipped");
++                log_notice_errno(E2BIG, "Entry too big, skipped");
+                 return 1;
+         } else if (r == -EAGAIN) {
+                 return 0;
+         } else if (r < 0) {
+-                log_info_errno(r, "Closing connection: %m");
++                log_debug_errno(r, "Closing connection: %m");
+                 remove_source(server, fd);
+                 return 0;
+         } else
+@@ -1071,10 +1071,10 @@ static int accept_connection(const char* type, int fd,
+                         return r;
+                 }
+ 
+-                log_info("Accepted %s %s connection from %s",
+-                         type,
+-                         socket_address_family(addr) == AF_INET ? "IP" : "IPv6",
+-                         a);
++                log_debug("Accepted %s %s connection from %s",
++                          type,
++                          socket_address_family(addr) == AF_INET ? "IP" : "IPv6",
++                          a);
+ 
+                 *hostname = b;
+ 
+diff --git a/src/journal-remote/microhttpd-util.c b/src/journal-remote/microhttpd-util.c
+index a95fff1..b45c38d 100644
+--- a/src/journal-remote/microhttpd-util.c
++++ b/src/journal-remote/microhttpd-util.c
+@@ -178,7 +178,7 @@ static int verify_cert_authorized(gnutls_session_t session) {
+         if (r < 0)
+                 return log_error_errno(r, "gnutls_certificate_verification_status_print failed: %m");
+ 
+-        log_info("Certificate status: %s", out.data);
++        log_debug("Certificate status: %s", out.data);
+         gnutls_free(out.data);
+ 
+         return status == 0 ? 0 : -EPERM;
+@@ -280,7 +280,7 @@ int check_permissions(struct MHD_Connection *connection, int *code, char **hostn
+                 return -EPERM;
+         }
+ 
+-        log_info("Connection from %s", buf);
++        log_debug("Connection from %s", buf);
+ 
+         if (hostname) {
+                 *hostname = buf;
diff --git a/SOURCES/0097-journal-remote-process-events-without-delay.patch b/SOURCES/0097-journal-remote-process-events-without-delay.patch
new file mode 100644
index 0000000..620048e
--- /dev/null
+++ b/SOURCES/0097-journal-remote-process-events-without-delay.patch
@@ -0,0 +1,156 @@
+From 47ac92420da9ecbffaf3aa0046d170be358639a2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 13 Mar 2015 00:02:28 -0400
+Subject: [PATCH] journal-remote: process events without delay
+
+journal-remote buffers input, and then parses it handling one journal entry at a time.
+It was possible for useful data to be left in the buffer after some entries were
+processesed. But all data would be already read from the fd, so there would be
+no reason for the event loop to call the handler again. After some new data came in,
+the handler would be called again, and would then process the "old" data in the buffer.
+
+Fix this by enabling a handler wherever we process input data and do not exhaust data
+from the input buffer (i.e. when EAGAIN was not encountered). The handler runs until
+we encounter EAGAIN.
+
+Looping over the input data is done in this roundabout way to allow the event loop
+to dispatch other events in the meanwhile. If the loop was inside the handler, a
+source which produced data fast enough could completely monopolize the process.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89516
+(cherry picked from commit 043945b93824e33e040954612aaa934cd1a43a1b)
+---
+ src/journal-remote/journal-remote-parse.c |  1 +
+ src/journal-remote/journal-remote-parse.h |  1 +
+ src/journal-remote/journal-remote.c       | 65 +++++++++++++++++++++++++++----
+ 3 files changed, 59 insertions(+), 8 deletions(-)
+
+diff --git a/src/journal-remote/journal-remote-parse.c b/src/journal-remote/journal-remote-parse.c
+index 6c096de..7e62954 100644
+--- a/src/journal-remote/journal-remote-parse.c
++++ b/src/journal-remote/journal-remote-parse.c
+@@ -41,6 +41,7 @@ void source_free(RemoteSource *source) {
+         writer_unref(source->writer);
+ 
+         sd_event_source_unref(source->event);
++        sd_event_source_unref(source->buffer_event);
+ 
+         free(source);
+ }
+diff --git a/src/journal-remote/journal-remote-parse.h b/src/journal-remote/journal-remote-parse.h
+index 22db550..06a5029 100644
+--- a/src/journal-remote/journal-remote-parse.h
++++ b/src/journal-remote/journal-remote-parse.h
+@@ -54,6 +54,7 @@ typedef struct RemoteSource {
+         Writer *writer;
+ 
+         sd_event_source *event;
++        sd_event_source *buffer_event;
+ } RemoteSource;
+ 
+ RemoteSource* source_new(int fd, bool passive_fd, char *name, Writer *writer);
+diff --git a/src/journal-remote/journal-remote.c b/src/journal-remote/journal-remote.c
+index d1486e7..b7cc6d7 100644
+--- a/src/journal-remote/journal-remote.c
++++ b/src/journal-remote/journal-remote.c
+@@ -289,6 +289,8 @@ static int dispatch_raw_source_event(sd_event_source *event,
+                                      int fd,
+                                      uint32_t revents,
+                                      void *userdata);
++static int dispatch_raw_source_until_block(sd_event_source *event,
++                                           void *userdata);
+ static int dispatch_blocking_source_event(sd_event_source *event,
+                                           void *userdata);
+ static int dispatch_raw_connection_event(sd_event_source *event,
+@@ -376,8 +378,15 @@ static int add_source(RemoteServer *s, int fd, char* name, bool own_name) {
+ 
+         r = sd_event_add_io(s->events, &source->event,
+                             fd, EPOLLIN|EPOLLRDHUP|EPOLLPRI,
+-                            dispatch_raw_source_event, s);
+-        if (r == -EPERM) {
++                            dispatch_raw_source_event, source);
++        if (r == 0) {
++                /* Add additional source for buffer processing. It will be
++                 * enabled later. */
++                r = sd_event_add_defer(s->events, &source->buffer_event,
++                                       dispatch_raw_source_until_block, source);
++                if (r == 0)
++                        sd_event_source_set_enabled(source->buffer_event, SD_EVENT_OFF);
++        } else if (r == -EPERM) {
+                 log_debug("Falling back to sd_event_add_defer for fd:%d (%s)", fd, name);
+                 r = sd_event_add_defer(s->events, &source->event,
+                                        dispatch_blocking_source_event, source);
+@@ -997,15 +1006,18 @@ static void server_destroy(RemoteServer *s) {
+  **********************************************************************
+  **********************************************************************/
+ 
+-static int dispatch_raw_source_event(sd_event_source *event,
+-                                     int fd,
+-                                     uint32_t revents,
+-                                     void *userdata) {
++static int handle_raw_source(sd_event_source *event,
++                             int fd,
++                             uint32_t revents,
++                             RemoteServer *s) {
+ 
+-        RemoteServer *s = userdata;
+         RemoteSource *source;
+         int r;
+ 
++        /* Returns 1 if there might be more data pending,
++         * 0 if data is currently exhausted, negative on error.
++         */
++
+         assert(fd >= 0 && fd < (ssize_t) s->sources_size);
+         source = s->sources[fd];
+         assert(source->fd == fd);
+@@ -1036,11 +1048,48 @@ static int dispatch_raw_source_event(sd_event_source *event,
+                 return 1;
+ }
+ 
++static int dispatch_raw_source_until_block(sd_event_source *event,
++                                           void *userdata) {
++        RemoteSource *source = userdata;
++        int r;
++
++        /* Make sure event stays around even if source is destroyed */
++        sd_event_source_ref(event);
++
++        r = handle_raw_source(event, source->fd, EPOLLIN, server);
++        if (r != 1)
++                /* No more data for now */
++                sd_event_source_set_enabled(event, SD_EVENT_OFF);
++
++        sd_event_source_unref(event);
++
++        return r;
++}
++
++static int dispatch_raw_source_event(sd_event_source *event,
++                                     int fd,
++                                     uint32_t revents,
++                                     void *userdata) {
++        RemoteSource *source = userdata;
++        int r;
++
++        assert(source->event);
++        assert(source->buffer_event);
++
++        r = handle_raw_source(event, fd, EPOLLIN, server);
++        if (r == 1)
++                /* Might have more data. We need to rerun the handler
++                 * until we are sure the buffer is exhausted. */
++                sd_event_source_set_enabled(source->buffer_event, SD_EVENT_ON);
++
++        return r;
++}
++
+ static int dispatch_blocking_source_event(sd_event_source *event,
+                                           void *userdata) {
+         RemoteSource *source = userdata;
+ 
+-        return dispatch_raw_source_event(event, source->fd, EPOLLIN, server);
++        return handle_raw_source(event, source->fd, EPOLLIN, server);
+ }
+ 
+ static int accept_connection(const char* type, int fd,
diff --git a/SOURCES/0097-man-units-fix-installation-of-systemd-nspawn-.servic.patch b/SOURCES/0097-man-units-fix-installation-of-systemd-nspawn-.servic.patch
deleted file mode 100644
index 956462c..0000000
--- a/SOURCES/0097-man-units-fix-installation-of-systemd-nspawn-.servic.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From a3794196f13a2fd47d61517a304c15e162a6c06a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 7 Nov 2013 23:57:19 -0500
-Subject: [PATCH] man,units: fix installation of systemd-nspawn@.service and
- add example
-
----
- TODO                             |  1 +
- man/systemd-nspawn.xml           | 12 ++++++++++++
- units/systemd-nspawn@.service.in |  2 +-
- 3 files changed, 14 insertions(+), 1 deletion(-)
-
-diff --git a/TODO b/TODO
-index 07269f4..ad4b733 100644
---- a/TODO
-+++ b/TODO
-@@ -493,6 +493,7 @@ Features:
-   - nspawn: maybe add a way to drop additional caps, in addition to add additional caps
-   - nspawn: maybe explicitly reset loginuid?
-   - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context
-+  - refuses to boot containers without /etc/machine-id (OK?), and with empty /etc/machine-id (not OK).
- 
- * cryptsetup:
-   - cryptsetup-generator: allow specification of passwords in crypttab itself
-diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
-index 7d450f9..ba9e516 100644
---- a/man/systemd-nspawn.xml
-+++ b/man/systemd-nspawn.xml
-@@ -428,6 +428,18 @@
-         </refsect1>
- 
-         <refsect1>
-+                <title>Example 4</title>
-+
-+                <programlisting># mv ~/arch-tree /var/lib/container/arch
-+# systemctl enable systemd-nspawn@arch.service
-+# systemctl start systemd-nspawn@arch.service</programlisting>
-+
-+                <para>This makes the Arch Linux container part of the
-+                <filename>multi-user.target</filename> on the host.
-+                </para>
-+        </refsect1>
-+
-+        <refsect1>
-                 <title>Exit status</title>
- 
-                 <para>The exit code of the program executed in the
-diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in
-index eca62e3..8e00736 100644
---- a/units/systemd-nspawn@.service.in
-+++ b/units/systemd-nspawn@.service.in
-@@ -14,4 +14,4 @@ ExecStart=@bindir@/systemd-nspawn -bjD /var/lib/container/%i
- Type=notify
- 
- [Install]
--Also=multi-user.target
-+WantedBy=multi-user.target
diff --git a/SOURCES/0098-man-update-example-2-in-systemd.network-5.patch b/SOURCES/0098-man-update-example-2-in-systemd.network-5.patch
new file mode 100644
index 0000000..ff6a9b4
--- /dev/null
+++ b/SOURCES/0098-man-update-example-2-in-systemd.network-5.patch
@@ -0,0 +1,26 @@
+From 131de4184e86e7096d987973d7c4918f8303fa4b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 13 Mar 2015 00:25:31 -0400
+Subject: [PATCH] man: update example 2 in systemd.network(5)
+
+none/both/v4/v6 are deprecated in favour of no/yes/ipv4/ipv6.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89221
+(cherry picked from commit 9c8ca3f7a69f82ca181b3cd2d5e1d3e621938abb)
+---
+ man/systemd.network.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemd.network.xml b/man/systemd.network.xml
+index 485876b..24f8416 100644
+--- a/man/systemd.network.xml
++++ b/man/systemd.network.xml
+@@ -643,7 +643,7 @@ Gateway=192.168.0.1</programlisting>
+ Name=en*
+ 
+ [Network]
+-DHCP=both</programlisting>
++DHCP=yes</programlisting>
+     </example>
+ 
+     <example>
diff --git a/SOURCES/0098-systemd-fix-memory-leak-in-cgroup-code.patch b/SOURCES/0098-systemd-fix-memory-leak-in-cgroup-code.patch
deleted file mode 100644
index 069e194..0000000
--- a/SOURCES/0098-systemd-fix-memory-leak-in-cgroup-code.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 19a5f184904952d20cf1a6ea81e6e295fe991765 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 8 Nov 2013 08:41:13 -0500
-Subject: [PATCH] systemd: fix memory leak in cgroup code
-
-If the unit already was in the hashmap, path would be leaked.
----
- src/core/cgroup.c | 24 +++++++++++++-----------
- 1 file changed, 13 insertions(+), 11 deletions(-)
-
-diff --git a/src/core/cgroup.c b/src/core/cgroup.c
-index 8bf4d89..b60707c 100644
---- a/src/core/cgroup.c
-+++ b/src/core/cgroup.c
-@@ -376,23 +376,23 @@ static CGroupControllerMask unit_get_siblings_mask(Unit *u) {
- }
- 
- static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) {
--        char *path = NULL;
-+        _cleanup_free_ char *path;
-         int r;
--        bool is_in_hash = false;
-+        bool was_in_hash = false;
- 
-         assert(u);
- 
-         path = unit_default_cgroup_path(u);
-         if (!path)
--                return -ENOMEM;
-+                return log_oom();
- 
-         r = hashmap_put(u->manager->cgroup_unit, path, u);
-         if (r == 0)
--                is_in_hash = true;
--
--        if (r < 0) {
--                log_error("cgroup %s exists already: %s", path, strerror(-r));
--                free(path);
-+                was_in_hash = true;
-+        else if (r < 0) {
-+                log_error(r == -EEXIST ?
-+                          "cgroup %s exists already: %s" : "hashmap_put failed for %s: %s",
-+                          path, strerror(-r));
-                 return r;
-         }
- 
-@@ -405,13 +405,15 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) {
-         if (u->cgroup_path) {
-                 r = cg_migrate_everywhere(u->manager->cgroup_supported, u->cgroup_path, path);
-                 if (r < 0)
--                        log_error("Failed to migrate cgroup %s: %s", path, strerror(-r));
-+                        log_error("Failed to migrate cgroup from %s to %s: %s",
-+                                  u->cgroup_path, path, strerror(-r));
-         }
- 
--        if (!is_in_hash) {
--                /* And remember the new data */
-+        if (!was_in_hash) {
-+                /* Remember the new data */
-                 free(u->cgroup_path);
-                 u->cgroup_path = path;
-+                path = NULL;
-         }
- 
-         u->cgroup_realized = true;
diff --git a/SOURCES/0099-button-don-t-exit-if-we-cannot-handle-a-button-press.patch b/SOURCES/0099-button-don-t-exit-if-we-cannot-handle-a-button-press.patch
deleted file mode 100644
index 3a1167c..0000000
--- a/SOURCES/0099-button-don-t-exit-if-we-cannot-handle-a-button-press.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 47be95beb25c23acbd7a47fa226a5523eb4a6e35 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Sun, 10 Nov 2013 23:05:08 +0100
-Subject: [PATCH] button: don't exit if we cannot handle a button press
-
----
- src/login/logind-button.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/logind-button.c b/src/login/logind-button.c
-index ea45c28..4f456d2 100644
---- a/src/login/logind-button.c
-+++ b/src/login/logind-button.c
-@@ -172,7 +172,7 @@ static int button_handle(
-                  * execute another one until the lid is opened/closed again */
-                 b->lid_close_queued = false;
- 
--        return r;
-+        return 0;
- }
- 
- int button_process(Button *b) {
diff --git a/SOURCES/0099-gpt-auto-generator-fix-detection-of-srv.patch b/SOURCES/0099-gpt-auto-generator-fix-detection-of-srv.patch
new file mode 100644
index 0000000..b3e8549
--- /dev/null
+++ b/SOURCES/0099-gpt-auto-generator-fix-detection-of-srv.patch
@@ -0,0 +1,24 @@
+From a9c2be5c2e43bd5fb37dd45f84e6787f4abec23f Mon Sep 17 00:00:00 2001
+From: Mathieu Chevrier <chevrier.mathieu@gmail.com>
+Date: Fri, 13 Mar 2015 00:33:44 -0400
+Subject: [PATCH] gpt-auto-generator: fix detection of /srv
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89226
+(cherry picked from commit d736e4f3e76daca4ab1b1fc444737e5ee20a27cd)
+---
+ src/gpt-auto-generator/gpt-auto-generator.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index 7d5a6c6..cceeeb8 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -549,7 +549,7 @@ static int enumerate_partitions(dev_t devnum) {
+                         srv_rw = !(flags & GPT_FLAG_READ_ONLY),
+ 
+                         free(srv);
+-                        srv = strdup(node);
++                        srv = strdup(subnode);
+                         if (!srv)
+                                 return log_oom();
+                 }
diff --git a/SOURCES/0100-sd-rtnl-never-set-serial-to-0.patch b/SOURCES/0100-sd-rtnl-never-set-serial-to-0.patch
new file mode 100644
index 0000000..fbaa11b
--- /dev/null
+++ b/SOURCES/0100-sd-rtnl-never-set-serial-to-0.patch
@@ -0,0 +1,28 @@
+From fc9d7a3891dc293cccd4e127cfb1e2355f4e93da Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Fri, 13 Mar 2015 15:49:07 +0100
+Subject: [PATCH] sd-rtnl: never set serial to 0
+
+In the unlikely event that we wrap the counter, skip 0 as this is used
+for broadcasts.
+
+Suggested by Richard Maw.
+
+(cherry picked from commit 913b0eef1a01e0c78f0453b0174e75d5caae1023)
+---
+ src/libsystemd/sd-rtnl/sd-rtnl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/libsystemd/sd-rtnl/sd-rtnl.c b/src/libsystemd/sd-rtnl/sd-rtnl.c
+index 7cdcc5d..5df39e1 100644
+--- a/src/libsystemd/sd-rtnl/sd-rtnl.c
++++ b/src/libsystemd/sd-rtnl/sd-rtnl.c
+@@ -262,7 +262,7 @@ static void rtnl_seal_message(sd_rtnl *rtnl, sd_rtnl_message *m) {
+         assert(m);
+         assert(m->hdr);
+ 
+-        m->hdr->nlmsg_seq = rtnl->serial++;
++        m->hdr->nlmsg_seq = rtnl->serial++ ? : rtnl->serial++;
+ 
+         rtnl_message_seal(m);
+ 
diff --git a/SOURCES/0100-timer-properly-format-relative-timestamps-in-the-fut.patch b/SOURCES/0100-timer-properly-format-relative-timestamps-in-the-fut.patch
deleted file mode 100644
index 8d9b3a7..0000000
--- a/SOURCES/0100-timer-properly-format-relative-timestamps-in-the-fut.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From dc7bf475eda82d02b5a0f243fee6741fab56729c Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 11 Nov 2013 03:02:52 +0100
-Subject: [PATCH] timer: properly format relative timestamps in the future
-
----
- src/shared/time-util.c | 69 ++++++++++++++++++++++++++++++++------------------
- 1 file changed, 44 insertions(+), 25 deletions(-)
-
-diff --git a/src/shared/time-util.c b/src/shared/time-util.c
-index 860be61..b8a6bd7 100644
---- a/src/shared/time-util.c
-+++ b/src/shared/time-util.c
-@@ -191,55 +191,62 @@ char *format_timestamp_us(char *buf, size_t l, usec_t t) {
- }
- 
- char *format_timestamp_relative(char *buf, size_t l, usec_t t) {
-+        const char *s;
-         usec_t n, d;
- 
-         n = now(CLOCK_REALTIME);
- 
--        if (t <= 0 || t > n || t + USEC_PER_DAY*7 <= t)
-+        if (t <= 0 || (t == (usec_t) -1))
-                 return NULL;
- 
--        d = n - t;
-+        if (n > t) {
-+                d = n - t;
-+                s = "ago";
-+        } else {
-+                d = t - n;
-+                s = "left";
-+        }
- 
-         if (d >= USEC_PER_YEAR)
--                snprintf(buf, l, "%llu years %llu months ago",
-+                snprintf(buf, l, "%llu years %llu months %s",
-                          (unsigned long long) (d / USEC_PER_YEAR),
--                         (unsigned long long) ((d % USEC_PER_YEAR) / USEC_PER_MONTH));
-+                         (unsigned long long) ((d % USEC_PER_YEAR) / USEC_PER_MONTH), s);
-         else if (d >= USEC_PER_MONTH)
--                snprintf(buf, l, "%llu months %llu days ago",
-+                snprintf(buf, l, "%llu months %llu days %s",
-                          (unsigned long long) (d / USEC_PER_MONTH),
--                         (unsigned long long) ((d % USEC_PER_MONTH) / USEC_PER_DAY));
-+                         (unsigned long long) ((d % USEC_PER_MONTH) / USEC_PER_DAY), s);
-         else if (d >= USEC_PER_WEEK)
--                snprintf(buf, l, "%llu weeks %llu days ago",
-+                snprintf(buf, l, "%llu weeks %llu days %s",
-                          (unsigned long long) (d / USEC_PER_WEEK),
--                         (unsigned long long) ((d % USEC_PER_WEEK) / USEC_PER_DAY));
-+                         (unsigned long long) ((d % USEC_PER_WEEK) / USEC_PER_DAY), s);
-         else if (d >= 2*USEC_PER_DAY)
--                snprintf(buf, l, "%llu days ago", (unsigned long long) (d / USEC_PER_DAY));
-+                snprintf(buf, l, "%llu days %s", (unsigned long long) (d / USEC_PER_DAY), s);
-         else if (d >= 25*USEC_PER_HOUR)
--                snprintf(buf, l, "1 day %lluh ago",
--                         (unsigned long long) ((d - USEC_PER_DAY) / USEC_PER_HOUR));
-+                snprintf(buf, l, "1 day %lluh %s",
-+                         (unsigned long long) ((d - USEC_PER_DAY) / USEC_PER_HOUR), s);
-         else if (d >= 6*USEC_PER_HOUR)
--                snprintf(buf, l, "%lluh ago",
--                         (unsigned long long) (d / USEC_PER_HOUR));
-+                snprintf(buf, l, "%lluh %s",
-+                         (unsigned long long) (d / USEC_PER_HOUR), s);
-         else if (d >= USEC_PER_HOUR)
--                snprintf(buf, l, "%lluh %llumin ago",
-+                snprintf(buf, l, "%lluh %llumin %s",
-                          (unsigned long long) (d / USEC_PER_HOUR),
--                         (unsigned long long) ((d % USEC_PER_HOUR) / USEC_PER_MINUTE));
-+                         (unsigned long long) ((d % USEC_PER_HOUR) / USEC_PER_MINUTE), s);
-         else if (d >= 5*USEC_PER_MINUTE)
--                snprintf(buf, l, "%llumin ago",
--                         (unsigned long long) (d / USEC_PER_MINUTE));
-+                snprintf(buf, l, "%llumin %s",
-+                         (unsigned long long) (d / USEC_PER_MINUTE), s);
-         else if (d >= USEC_PER_MINUTE)
--                snprintf(buf, l, "%llumin %llus ago",
-+                snprintf(buf, l, "%llumin %llus %s",
-                          (unsigned long long) (d / USEC_PER_MINUTE),
--                         (unsigned long long) ((d % USEC_PER_MINUTE) / USEC_PER_SEC));
-+                         (unsigned long long) ((d % USEC_PER_MINUTE) / USEC_PER_SEC), s);
-         else if (d >= USEC_PER_SEC)
--                snprintf(buf, l, "%llus ago",
--                         (unsigned long long) (d / USEC_PER_SEC));
-+                snprintf(buf, l, "%llus %s",
-+                         (unsigned long long) (d / USEC_PER_SEC), s);
-         else if (d >= USEC_PER_MSEC)
--                snprintf(buf, l, "%llums ago",
--                         (unsigned long long) (d / USEC_PER_MSEC));
-+                snprintf(buf, l, "%llums %s",
-+                         (unsigned long long) (d / USEC_PER_MSEC), s);
-         else if (d > 0)
--                snprintf(buf, l, "%lluus ago",
--                         (unsigned long long) d);
-+                snprintf(buf, l, "%lluus %s",
-+                         (unsigned long long) d, s);
-         else
-                 snprintf(buf, l, "now");
- 
-@@ -479,6 +486,18 @@ int parse_timestamp(const char *t, usec_t *usec) {
-                         return r;
- 
-                 goto finish;
-+        } else if (endswith(t, " left")) {
-+                _cleanup_free_ char *z;
-+
-+                z = strndup(t, strlen(t) - 4);
-+                if (!z)
-+                        return -ENOMEM;
-+
-+                r = parse_sec(z, &plus);
-+                if (r < 0)
-+                        return r;
-+
-+                goto finish;
-         }
- 
-         for (i = 0; i < ELEMENTSOF(day_nr); i++) {
diff --git a/SOURCES/0101-gpt-auto-generator-allow-type-check-to-fail.patch b/SOURCES/0101-gpt-auto-generator-allow-type-check-to-fail.patch
new file mode 100644
index 0000000..e1e35cc
--- /dev/null
+++ b/SOURCES/0101-gpt-auto-generator-allow-type-check-to-fail.patch
@@ -0,0 +1,45 @@
+From e2353e7c13808e47efb844f8fb10b7aa2142e619 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 13 Mar 2015 21:10:13 -0500
+Subject: [PATCH] gpt-auto-generator: allow type check to fail
+
+add_mount() is OK with unknow file type, but we have to initalize
+the variable to NULL not to pass garbage on error.
+
+(cherry picked from commit a0b1209c4a59754f428894e0485413542da50014)
+---
+ src/gpt-auto-generator/gpt-auto-generator.c | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
+index cceeeb8..00a2141 100644
+--- a/src/gpt-auto-generator/gpt-auto-generator.c
++++ b/src/gpt-auto-generator/gpt-auto-generator.c
+@@ -291,7 +291,7 @@ static int probe_and_add_mount(
+                 const char *post) {
+ 
+         _cleanup_blkid_free_probe_ blkid_probe b = NULL;
+-        const char *fstype;
++        const char *fstype = NULL;
+         int r;
+ 
+         assert(id);
+@@ -324,14 +324,11 @@ static int probe_and_add_mount(
+         r = blkid_do_safeprobe(b);
+         if (r == -2 || r == 1) /* no result or uncertain */
+                 return 0;
+-        else if (r != 0) {
+-                if (errno == 0)
+-                        errno = EIO;
+-                log_error_errno(errno, "Failed to probe %s: %m", what);
+-                return -errno;
+-        }
++        else if (r != 0)
++                return log_error_errno(errno ?: EIO, "Failed to probe %s: %m", what);
+ 
+-        blkid_probe_lookup_value(b, "TYPE", &fstype, NULL);
++        /* add_mount is OK with fstype being NULL. */
++        (void) blkid_probe_lookup_value(b, "TYPE", &fstype, NULL);
+ 
+         return add_mount(
+                         id,
diff --git a/SOURCES/0101-timer-consider-usec_t-1-an-invalid-timestamp.patch b/SOURCES/0101-timer-consider-usec_t-1-an-invalid-timestamp.patch
deleted file mode 100644
index 40d0397..0000000
--- a/SOURCES/0101-timer-consider-usec_t-1-an-invalid-timestamp.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From eaae0683686ccd07d1cf79f2247032586162f854 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 11 Nov 2013 03:03:17 +0100
-Subject: [PATCH] timer: consider (usec_t) -1 an invalid timestamp
-
----
- src/shared/time-util.c | 4 ++--
- src/shared/time-util.h | 5 ++++-
- 2 files changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/src/shared/time-util.c b/src/shared/time-util.c
-index b8a6bd7..81d4ede 100644
---- a/src/shared/time-util.c
-+++ b/src/shared/time-util.c
-@@ -157,7 +157,7 @@ char *format_timestamp(char *buf, size_t l, usec_t t) {
-         assert(buf);
-         assert(l > 0);
- 
--        if (t <= 0)
-+        if (t <= 0 || t == (usec_t) -1)
-                 return NULL;
- 
-         sec = (time_t) (t / USEC_PER_SEC);
-@@ -175,7 +175,7 @@ char *format_timestamp_us(char *buf, size_t l, usec_t t) {
-         assert(buf);
-         assert(l > 0);
- 
--        if (t <= 0)
-+        if (t <= 0 || t == (usec_t) -1)
-                 return NULL;
- 
-         sec = (time_t) (t / USEC_PER_SEC);
-diff --git a/src/shared/time-util.h b/src/shared/time-util.h
-index 7660fe1..bc10d22 100644
---- a/src/shared/time-util.h
-+++ b/src/shared/time-util.h
-@@ -64,7 +64,10 @@ dual_timestamp* dual_timestamp_get(dual_timestamp *ts);
- dual_timestamp* dual_timestamp_from_realtime(dual_timestamp *ts, usec_t u);
- dual_timestamp* dual_timestamp_from_monotonic(dual_timestamp *ts, usec_t u);
- 
--#define dual_timestamp_is_set(ts) ((ts)->realtime > 0)
-+static inline bool dual_timestamp_is_set(dual_timestamp *ts) {
-+        return ((ts->realtime > 0 && ts->realtime != (usec_t) -1) ||
-+                (ts->monotonic > 0 && ts->monotonic != (usec_t) -1));
-+}
- 
- usec_t timespec_load(const struct timespec *ts) _pure_;
- struct timespec *timespec_store(struct timespec *ts, usec_t u);
diff --git a/SOURCES/0102-Resolve-dev-console-to-the-active-tty-instead-of-jus.patch b/SOURCES/0102-Resolve-dev-console-to-the-active-tty-instead-of-jus.patch
deleted file mode 100644
index 405308f..0000000
--- a/SOURCES/0102-Resolve-dev-console-to-the-active-tty-instead-of-jus.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 41882edd0421d7f611bcec8cba9379ac8bfa24a9 Mon Sep 17 00:00:00 2001
-From: Olivier Brunel <jjk@jjacky.com>
-Date: Fri, 20 Sep 2013 22:18:28 +0200
-Subject: [PATCH] Resolve /dev/console to the active tty instead of just "tty0"
-
-When resolving /dev/console one would often get "tty0" meaning the active VT.
-Resolving to the actual tty (e.g. "tty1") will notably help on boot when
-determining whether or not PID1 can output to the console.
----
- src/shared/util.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index b1a4006..8a542da 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -3627,6 +3627,16 @@ char *resolve_dev_console(char **active) {
-         else
-                 tty = *active;
- 
-+        if (streq(tty, "tty0")) {
-+                char *tmp;
-+
-+                /* Get the active VC (e.g. tty1) */
-+                if (read_one_line_file("/sys/class/tty/tty0/active", &tmp) >= 0) {
-+                        free(*active);
-+                        tty = *active = tmp;
-+                }
-+        }
-+
-         return tty;
- }
- 
diff --git a/SOURCES/0102-man-fix-a-bunch-of-links.patch b/SOURCES/0102-man-fix-a-bunch-of-links.patch
new file mode 100644
index 0000000..6b6b610
--- /dev/null
+++ b/SOURCES/0102-man-fix-a-bunch-of-links.patch
@@ -0,0 +1,1453 @@
+From a0def1365a2c50f7e1d4ec14c104bfe5cbd8bf8a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 13 Mar 2015 21:22:39 -0500
+Subject: [PATCH] man: fix a bunch of links
+
+All hail linkchecker!
+
+(cherry picked from commit 3ba3a79df4ae094d1008c04a9af8d1ff970124c4)
+
+Conflicts:
+	man/systemd-efi-boot-generator.xml
+---
+ man/busctl.xml                             |  4 ++--
+ man/crypttab.xml                           | 20 +++++++++----------
+ man/file-hierarchy.xml                     |  2 +-
+ man/kernel-command-line.xml                |  2 +-
+ man/locale.conf.xml                        |  8 ++++----
+ man/localectl.xml                          |  8 ++++----
+ man/logind.conf.xml                        |  2 +-
+ man/machine-id.xml                         |  4 ++--
+ man/modules-load.d.xml                     |  2 +-
+ man/os-release.xml                         |  2 +-
+ man/sd_bus_message_append.xml              |  2 +-
+ man/sd_bus_open_user.xml                   |  2 +-
+ man/sd_event_add_signal.xml                |  4 ++--
+ man/sd_journal_get_catalog.xml             |  2 +-
+ man/sd_journal_get_cursor.xml              |  2 +-
+ man/sd_journal_print.xml                   | 14 ++++++-------
+ man/sysctl.d.xml                           |  8 ++++----
+ man/systemctl.xml                          |  6 +++---
+ man/systemd-activate.xml                   |  2 +-
+ man/systemd-analyze.xml                    |  4 ++--
+ man/systemd-cat.xml                        |  2 +-
+ man/systemd-cryptsetup-generator.xml       |  2 +-
+ man/systemd-cryptsetup@.service.xml        |  2 +-
+ man/systemd-efi-boot-generator.xml         |  4 ++--
+ man/systemd-firstboot.xml                  | 14 ++++++-------
+ man/systemd-fstab-generator.xml            |  4 ++--
+ man/systemd-gpt-auto-generator.xml         |  8 ++++----
+ man/systemd-hibernate-resume-generator.xml |  2 +-
+ man/systemd-journald.service.xml           |  2 +-
+ man/systemd-localed.service.xml            |  8 ++++----
+ man/systemd-nspawn.xml                     |  4 ++--
+ man/systemd-quotacheck.service.xml         |  2 +-
+ man/systemd-remount-fs.service.xml         |  6 +++---
+ man/systemd-socket-proxyd.xml              |  8 ++++----
+ man/systemd-sysctl.service.xml             |  8 ++++----
+ man/systemd-system.conf.xml                |  2 +-
+ man/systemd-update-utmp.service.xml        |  2 +-
+ man/systemd-vconsole-setup.service.xml     |  8 ++++----
+ man/systemd.automount.xml                  |  6 +++---
+ man/systemd.exec.xml                       | 16 +++++++--------
+ man/systemd.generator.xml                  |  2 +-
+ man/systemd.journal-fields.xml             |  2 +-
+ man/systemd.kill.xml                       |  4 ++--
+ man/systemd.mount.xml                      | 14 ++++++-------
+ man/systemd.network.xml                    |  8 ++++----
+ man/systemd.path.xml                       |  4 ++--
+ man/systemd.socket.xml                     | 32 +++++++++++++++---------------
+ man/systemd.swap.xml                       | 10 +++++-----
+ man/systemd.unit.xml                       |  4 ++--
+ man/systemd.xml                            |  6 +++---
+ man/vconsole.conf.xml                      |  6 +++---
+ 51 files changed, 151 insertions(+), 151 deletions(-)
+
+diff --git a/man/busctl.xml b/man/busctl.xml
+index 251233b..cc1844b 100644
+--- a/man/busctl.xml
++++ b/man/busctl.xml
+@@ -288,7 +288,7 @@
+         url="http://wiki.wireshark.org/Development/LibpcapFileFormat">Libpcap
+         File Format</ulink> description. Make sure to redirect the
+         output to STDOUT to a file. Tools like
+-        <citerefentry><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+         may be used to dissect and view the generated
+         files.</para></listitem>
+       </varlistentry>
+@@ -472,7 +472,7 @@ o "/org/freedesktop/systemd1/job/42684"</programlisting>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-bus-proxyd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++      <citerefentry project='die-net'><refentrytitle>wireshark</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ </refentry>
+diff --git a/man/crypttab.xml b/man/crypttab.xml
+index aeacc57..3e249ad 100644
+--- a/man/crypttab.xml
++++ b/man/crypttab.xml
+@@ -75,7 +75,7 @@
+ 
+     <para>Setting up encrypted block devices using this file supports
+     three encryption modes: LUKS, TrueCrypt and plain. See
+-    <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++    <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     for more information about each mode. When no mode is specified in
+     the options field and the block device contains a LUKS signature,
+     it is opened as a LUKS device; otherwise, it is assumed to be in
+@@ -117,7 +117,7 @@
+         <term><option>cipher=</option></term>
+ 
+         <listitem><para>Specifies the cipher to use. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for possible values and the default value of this option. A
+         cipher with unpredictable IV values, such as
+         <literal>aes-cbc-essiv:sha256</literal>, is
+@@ -129,7 +129,7 @@
+ 
+         <listitem><para>Specifies the hash to use for password
+         hashing. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for possible values and the default value of this
+         option.</para></listitem>
+       </varlistentry>
+@@ -140,7 +140,7 @@
+         <listitem><para>Use a detached (separated) metadata device or
+         file where the LUKS header is stored. This option is only
+         relevant for LUKS devices. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for possible values and the default value of this
+         option.</para></listitem>
+       </varlistentry>
+@@ -150,7 +150,7 @@
+ 
+         <listitem><para>Specifies the number of bytes to skip at the
+         start of the key file. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for possible values and the default value of this
+         option.</para></listitem>
+       </varlistentry>
+@@ -160,7 +160,7 @@
+ 
+         <listitem><para>Specifies the maximum number of bytes to read
+         from the key file. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for possible values and the default value of this option. This
+         option is ignored in plain encryption mode, as the key file
+         size is then given by the key size.</para></listitem>
+@@ -174,7 +174,7 @@
+         given passphrase or key, but another would, the setup of the
+         device will fail regardless. This option implies
+         <option>luks</option>. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for possible values. The default is to try all key slots in
+         sequential order.</para></listitem>
+       </varlistentry>
+@@ -221,7 +221,7 @@
+         <term><option>size=</option></term>
+ 
+         <listitem><para>Specifies the key size in bits. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for possible values and the default value of this
+         option.</para></listitem>
+       </varlistentry>
+@@ -278,7 +278,7 @@
+         volume provided in the second field. Please note that there is
+         no protection for the hidden volume if the outer volume is
+         mounted instead. See
+-        <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for more information on this limitation.</para></listitem>
+       </varlistentry>
+ 
+@@ -383,7 +383,7 @@ hidden     /mnt/tc_hidden  /dev/null    tcrypt-hidden,tcrypt-keyfile=/etc/keyfil
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-cryptsetup@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-cryptsetup-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>mkswap</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>mke2fs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+diff --git a/man/file-hierarchy.xml b/man/file-hierarchy.xml
+index e9c894f..364e130 100644
+--- a/man/file-hierarchy.xml
++++ b/man/file-hierarchy.xml
+@@ -397,7 +397,7 @@
+         <term><filename>/dev/shm</filename></term>
+         <listitem><para>Place for POSIX shared memory segments, as
+         created via
+-        <citerefentry><refentrytitle>shm_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
++        <citerefentry project='die-net'><refentrytitle>shm_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+         This directory is flushed on boot, and is a
+         <literal>tmpfs</literal> file system. Since all users have
+         write access to this directory, special care should be taken
+diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
+index 3741cf9..919bd13 100644
+--- a/man/kernel-command-line.xml
++++ b/man/kernel-command-line.xml
+@@ -336,7 +336,7 @@
+         <listitem>
+           <para>Enables resume from hibernation using the specified
+           device. All
+-          <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>-like
++          <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>-like
+           paths are supported. For details, see
+           <citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
+         </listitem>
+diff --git a/man/locale.conf.xml b/man/locale.conf.xml
+index 48c0006..2c32d16 100644
+--- a/man/locale.conf.xml
++++ b/man/locale.conf.xml
+@@ -91,7 +91,7 @@
+     might be checked for locale configuration as well, however only as
+     fallback.</para>
+ 
+-    <para><citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++    <para><citerefentry project='man-pages'><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     may be used to alter the settings in this file during runtime from
+     the command line. Use
+     <citerefentry><refentrytitle>systemd-firstboot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+@@ -121,7 +121,7 @@
+     Note that <varname>LC_ALL</varname> may not be configured in this
+     file. For details about the meaning and semantics of these
+     settings, refer to
+-    <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
++    <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.</para>
+   </refsect1>
+ 
+   <refsect1>
+@@ -142,8 +142,8 @@ LC_MESSAGES=en_US.UTF-8</programlisting>
+       <title>See Also</title>
+       <para>
+         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-localed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-firstboot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+       </para>
+diff --git a/man/localectl.xml b/man/localectl.xml
+index aae6e06..7def047 100644
+--- a/man/localectl.xml
++++ b/man/localectl.xml
+@@ -124,7 +124,7 @@
+         <listitem><para>Set the system locale. This takes one or more
+         assignments such as "LANG=de_DE.utf8",
+         "LC_MESSAGES=en_GB.utf8", and so on. See
+-        <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details on the available settings and their meanings. Use
+         <command>list-locales</command> for a list of available
+         locales (see below). </para></listitem>
+@@ -204,10 +204,10 @@
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>vconsole.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='mankier'><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>kbd</refentrytitle><manvolnum>4</manvolnum></citerefentry>,
+       <ulink url="http://www.x.org/releases/current/doc/xorg-docs/input/XKB-Config.html">
+         The XKB Configuration Guide
+diff --git a/man/logind.conf.xml b/man/logind.conf.xml
+index ca2b187..d02d573 100644
+--- a/man/logind.conf.xml
++++ b/man/logind.conf.xml
+@@ -126,7 +126,7 @@
+ 
+         <para>Note that setting <varname>KillUserProcesses=1</varname>
+         will break tools like
+-        <citerefentry><refentrytitle>screen</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para></listitem>
++        <citerefentry project='die-net'><refentrytitle>screen</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para></listitem>
+       </varlistentry>
+ 
+       <varlistentry>
+diff --git a/man/machine-id.xml b/man/machine-id.xml
+index 83e0b26..92d67a3 100644
+--- a/man/machine-id.xml
++++ b/man/machine-id.xml
+@@ -75,7 +75,7 @@
+     globally unique ID in the network, which does not change even if
+     the local network configuration changes. Due to this and its
+     greater length, it is a more useful replacement for the
+-    <citerefentry><refentrytitle>gethostid</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>gethostid</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+     call that POSIX specifies.</para>
+ 
+     <para>The
+@@ -127,7 +127,7 @@ id[8] = (id[8] &amp; 0x3F) | 0x80;</programlisting>
+       <para>
+         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-machine-id-setup</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>gethostid</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>gethostid</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>machine-info</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>os-release</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml
+index 34a937d..4b722aa 100644
+--- a/man/modules-load.d.xml
++++ b/man/modules-load.d.xml
+@@ -94,7 +94,7 @@ virtio-net</programlisting>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-modules-load.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-delta</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>modprobe</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>modprobe</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/os-release.xml b/man/os-release.xml
+index 1b71a49..8f4ab10 100644
+--- a/man/os-release.xml
++++ b/man/os-release.xml
+@@ -316,7 +316,7 @@ BUG_REPORT_URL="https://bugzilla.redhat.com/"</programlisting>
+       <title>See Also</title>
+       <para>
+         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>lsb_release</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++        <citerefentry project='die-net'><refentrytitle>lsb_release</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>machine-info</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+diff --git a/man/sd_bus_message_append.xml b/man/sd_bus_message_append.xml
+index 0c49a0c..11fa07c 100644
+--- a/man/sd_bus_message_append.xml
++++ b/man/sd_bus_message_append.xml
+@@ -245,7 +245,7 @@ sd_bus_message_append(m, "ynqiuxtd", y, n, q, i, u, x, t, d);</programlisting>
+       <citerefentry><refentrytitle>sd_bus_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_bus_ref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_bus_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>ssh</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>ssh</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-machined.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+diff --git a/man/sd_bus_open_user.xml b/man/sd_bus_open_user.xml
+index e7a7659..2bbb010 100644
+--- a/man/sd_bus_open_user.xml
++++ b/man/sd_bus_open_user.xml
+@@ -208,7 +208,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+       <citerefentry><refentrytitle>sd_bus_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_bus_ref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_bus_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>ssh</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>ssh</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-machined.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+diff --git a/man/sd_event_add_signal.xml b/man/sd_event_add_signal.xml
+index 0299aa5..7c8df7d 100644
+--- a/man/sd_event_add_signal.xml
++++ b/man/sd_event_add_signal.xml
+@@ -86,7 +86,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     the <parameter>source</parameter> parameter. The
+     <parameter>signal</parameter> parameter specifies the signal to be handled
+     (see
+-    <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
++    <citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
+     The <parameter>handler</parameter> must reference a function to
+     call when the signal is delivered or be <constant>NULL</constant>.
+     The handler function will be passed the
+@@ -94,7 +94,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     freely by the caller. The handler also receives a pointer to a
+     <structname>const struct signalfd_siginfo</structname> containing
+     the information about the received signal. See
+-    <citerefentry><refentrytitle>signalfd</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>signalfd</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+     for further information.</para>
+ 
+     <para>Only a single handler may be installed for a specific
+diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml
+index 1dcbadd..c19eb11 100644
+--- a/man/sd_journal_get_catalog.xml
++++ b/man/sd_journal_get_catalog.xml
+@@ -130,7 +130,7 @@
+       <citerefentry><refentrytitle>sd_journal_open</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_journal_next</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>malloc</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>malloc</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/sd_journal_get_cursor.xml b/man/sd_journal_get_cursor.xml
+index 2b7f443..a400d8b 100644
+--- a/man/sd_journal_get_cursor.xml
++++ b/man/sd_journal_get_cursor.xml
+@@ -84,7 +84,7 @@
+     time) available entry. The call takes two arguments: a journal
+     context object and a pointer to a string pointer where the cursor
+     string will be placed. The string is allocated via libc
+-    <citerefentry><refentrytitle>malloc</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>malloc</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+     and should be freed after use with
+     <citerefentry project='man-pages'><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
+ 
+diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml
+index 068b10e..0cd0b45 100644
+--- a/man/sd_journal_print.xml
++++ b/man/sd_journal_print.xml
+@@ -119,7 +119,7 @@
+     <function>sd_journal_print()</function> but takes a variable
+     argument list encapsulated in an object of type
+     <varname>va_list</varname> (see
+-    <citerefentry><refentrytitle>stdarg</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>stdarg</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+     for more information) instead of the format string. It is
+     otherwise equivalent in behavior.</para>
+ 
+@@ -145,7 +145,7 @@
+     <function>sd_journal_send()</function> but takes an array of
+     <varname>struct iovec</varname> (as defined in
+     <filename>uio.h</filename>, see
+-    <citerefentry><refentrytitle>readv</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>readv</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+     for details) instead of the format string. Each structure should
+     reference one field of the entry to submit. The second argument
+     specifies the number of structures in the array.
+@@ -154,7 +154,7 @@
+     necessary.</para>
+ 
+     <para><function>sd_journal_perror()</function> is a similar to
+-    <citerefentry><refentrytitle>perror</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++    <citerefentry project='die-net'><refentrytitle>perror</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+     and writes a message to the journal that consists of the passed
+     string, suffixed with ": " and a human readable representation of
+     the current error code stored in
+@@ -219,7 +219,7 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
+     <title>Async signal safety</title>
+     <para><function>sd_journal_sendv()</function> is "async signal
+     safe" in the meaning of
+-    <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
++    <citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
+     </para>
+ 
+     <para><function>sd_journal_print</function>,
+@@ -249,11 +249,11 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
+       <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_journal_stream_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>perror</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>perror</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml
+index 5a35cfe..8a13179 100644
+--- a/man/sysctl.d.xml
++++ b/man/sysctl.d.xml
+@@ -57,7 +57,7 @@
+     <para>At boot,
+     <citerefentry><refentrytitle>systemd-sysctl.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     reads configuration files from the above directories to configure
+-    <citerefentry><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     kernel parameters.</para>
+   </refsect1>
+ 
+@@ -162,9 +162,9 @@ net.bridge.bridge-nf-call-arptables = 0
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-sysctl.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-delta</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>sysctl.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>modprobe</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>sysctl.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>modprobe</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 6f30474..07eb431 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -1703,9 +1703,9 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+         <varname>$VISUAL</varname> are present or if it is set to an empty
+         string or if their execution failed, systemctl will try to execute well
+         known editors in this order:
+-        <citerefentry><refentrytitle>nano</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>vim</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>vi</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
++        <citerefentry project='die-net'><refentrytitle>nano</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++        <citerefentry project='die-net'><refentrytitle>vim</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++        <citerefentry project='die-net'><refentrytitle>vi</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+         </para></listitem>
+       </varlistentry>
+     </variablelist>
+diff --git a/man/systemd-activate.xml b/man/systemd-activate.xml
+index e64894a..cb68a79 100644
+--- a/man/systemd-activate.xml
++++ b/man/systemd-activate.xml
+@@ -165,7 +165,7 @@
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>cat</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>cat</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ </refentry>
+diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml
+index 1ff81d3..1983150 100644
+--- a/man/systemd-analyze.xml
++++ b/man/systemd-analyze.xml
+@@ -145,7 +145,7 @@
+     <para><command>systemd-analyze dot</command> generates textual
+     dependency graph description in dot format for further processing
+     with the GraphViz
+-    <citerefentry><refentrytitle>dot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++    <citerefentry project='die-net'><refentrytitle>dot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     tool. Use a command line like <command>systemd-analyze dot | dot
+     -Tsvg > systemd.svg</command> to generate a graphical dependency
+     tree. Unless <option>--order</option> or
+@@ -229,7 +229,7 @@
+         <command>dot</command> command (see above), this selects which
+         relationships are shown in the dependency graph. Both options
+         require a
+-        <citerefentry><refentrytitle>glob</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>glob</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         pattern as an argument, which will be matched against the
+         left-hand and the right-hand, respectively, nodes of a
+         relationship.</para>
+diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml
+index 38ddf66..9b1a880 100644
+--- a/man/systemd-cat.xml
++++ b/man/systemd-cat.xml
+@@ -171,7 +171,7 @@
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>logger</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>logger</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml
+index 1974cd7..b627035 100644
+--- a/man/systemd-cryptsetup-generator.xml
++++ b/man/systemd-cryptsetup-generator.xml
+@@ -185,7 +185,7 @@
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>crypttab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-cryptsetup@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+diff --git a/man/systemd-cryptsetup@.service.xml b/man/systemd-cryptsetup@.service.xml
+index bd03637..ea52485 100644
+--- a/man/systemd-cryptsetup@.service.xml
++++ b/man/systemd-cryptsetup@.service.xml
+@@ -78,7 +78,7 @@
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-cryptsetup-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>crypttab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+      </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-efi-boot-generator.xml b/man/systemd-efi-boot-generator.xml
+index fd7ba79..3431c3c 100644
+--- a/man/systemd-efi-boot-generator.xml
++++ b/man/systemd-efi-boot-generator.xml
+@@ -62,7 +62,7 @@
+     does not communicate the used ESP to the OS, on systems where
+     <filename>/boot</filename> is an explicitly configured mount (for
+     example, listed in
+-    <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>)
++    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>)
+     or where the <filename>/boot</filename> mount point is non-empty.
+     Since this generator creates an automount unit, the mount will
+     only be activated on-demand, when accessed.</para>
+@@ -79,7 +79,7 @@
+       <citerefentry><refentrytitle>systemd.automount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>gummiboot</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-firstboot.xml b/man/systemd-firstboot.xml
+index 67d38ba..67289da 100644
+--- a/man/systemd-firstboot.xml
++++ b/man/systemd-firstboot.xml
+@@ -91,7 +91,7 @@
+ 
+     <para>Note that this tool operates directly on the file system and
+     does not involve any running system services, unlike
+-    <citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++    <citerefentry project='man-pages'><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+     <citerefentry><refentrytitle>timedatectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     or
+     <citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+@@ -125,7 +125,7 @@
+         <varname>LANG=</varname> and <varname>LC_MESSAGES</varname>
+         settings. The argument should be a valid locale identifier,
+         such as <literal>de_DE.UTF-8</literal>. This controls the
+-        <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+         configuration file.</para></listitem>
+       </varlistentry>
+ 
+@@ -163,7 +163,7 @@
+ 
+         <listitem><para>Sets the password of the system's root user.
+         This creates a
+-        <citerefentry><refentrytitle>shadow</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>shadow</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+         file. This setting exists in two forms:
+         <option>--root-password=</option> accepts the password to set
+         directly on the command line,
+@@ -171,7 +171,7 @@
+         Note that it is not recommended specifying passwords on the
+         command line as other users might be able to see them simply
+         by invoking
+-        <citerefentry><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para></listitem>
++        <citerefentry project='die-net'><refentrytitle>ps</refentrytitle><manvolnum>1</manvolnum></citerefentry>.</para></listitem>
+       </varlistentry>
+ 
+       <varlistentry>
+@@ -244,13 +244,13 @@
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>localtime</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>hostname</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>shadow</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>shadow</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-machine-id-setup</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>timedatectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>hostnamectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml
+index 022efb4..bdc2dc1 100644
+--- a/man/systemd-fstab-generator.xml
++++ b/man/systemd-fstab-generator.xml
+@@ -54,7 +54,7 @@
+ 
+     <para><filename>systemd-fstab-generator</filename> is a generator
+     that translates <filename>/etc/fstab</filename> (see
+-    <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     for details) into native systemd units early at boot and when
+     configuration of the system manager is reloaded. This will
+     instantiate mount and swap units as necessary.</para>
+@@ -173,7 +173,7 @@
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.swap</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-cryptsetup-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+diff --git a/man/systemd-gpt-auto-generator.xml b/man/systemd-gpt-auto-generator.xml
+index 8d2eaca..bcc64ec 100644
+--- a/man/systemd-gpt-auto-generator.xml
++++ b/man/systemd-gpt-auto-generator.xml
+@@ -66,7 +66,7 @@
+     Partitions Specification</ulink>. Note that this generator has no
+     effect on non-GPT systems, on systems where the units are
+     explicitly configured (for example, listed in
+-    <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>),
++    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>),
+     or where the mount points are non-empty.</para>
+ 
+     <para>This generator will only look for root partitions on the
+@@ -169,9 +169,9 @@
+       <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-efi-boot-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-cryptsetup@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry project='die-net'><refentrytitle>cryptsetup</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-hibernate-resume-generator.xml b/man/systemd-hibernate-resume-generator.xml
+index a21782c..d811b9b 100644
+--- a/man/systemd-hibernate-resume-generator.xml
++++ b/man/systemd-hibernate-resume-generator.xml
+@@ -73,7 +73,7 @@
+         <listitem><para>Takes a path to the resume device. Both
+         persistent block device paths like
+         <filename>/dev/disk/by-foo/bar</filename> and
+-        <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>-style
++        <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>-style
+         specifiers like <literal>FOO=bar</literal> are
+         supported.</para></listitem>
+       </varlistentry>
+diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml
+index 6b250b6..8280d6c 100644
+--- a/man/systemd-journald.service.xml
++++ b/man/systemd-journald.service.xml
+@@ -241,7 +241,7 @@
+       <citerefentry><refentrytitle>systemd.journal-fields</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd-journal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>setfacl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>setfacl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>sd_journal_print</refentrytitle><manvolnum>4</manvolnum></citerefentry>,
+       <command>pydoc systemd.journal</command>.
+     </para>
+diff --git a/man/systemd-localed.service.xml b/man/systemd-localed.service.xml
+index 8999166..06aa78c 100644
+--- a/man/systemd-localed.service.xml
++++ b/man/systemd-localed.service.xml
+@@ -64,7 +64,7 @@
+     unused.</para>
+ 
+     <para>The tool
+-    <citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     is a command line client to this service.</para>
+ 
+     <para>See the <ulink
+@@ -77,10 +77,10 @@
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>vconsole.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='mankier'><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
+index 4a936d3..65b4c2f 100644
+--- a/man/systemd-nspawn.xml
++++ b/man/systemd-nspawn.xml
+@@ -598,7 +598,7 @@
+ 
+         <listitem><para>Control the architecture ("personality")
+         reported by
+-        <citerefentry><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+         in the container. Currently, only <literal>x86</literal> and
+         <literal>x86-64</literal> are supported. This is useful when
+         running a 32-bit container on a 64-bit host. If this setting
+@@ -735,7 +735,7 @@
+       <citerefentry project='archlinux'><refentrytitle>pacman</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.slice</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-quotacheck.service.xml b/man/systemd-quotacheck.service.xml
+index 2179f11..9d49762 100644
+--- a/man/systemd-quotacheck.service.xml
++++ b/man/systemd-quotacheck.service.xml
+@@ -86,7 +86,7 @@
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>quotacheck</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>quotacheck</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-fsck@.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+diff --git a/man/systemd-remount-fs.service.xml b/man/systemd-remount-fs.service.xml
+index 7b88ac3..8e60e31 100644
+--- a/man/systemd-remount-fs.service.xml
++++ b/man/systemd-remount-fs.service.xml
+@@ -56,7 +56,7 @@
+ 
+     <para><filename>systemd-remount-fs.service</filename> is an
+     early-boot service that applies mount options listed in
+-    <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     to the root file system, the <filename>/usr</filename> file system
+     and the kernel API file systems. This is required so that the
+     mount options of these file systems -- which are pre-mounted by
+@@ -80,8 +80,8 @@
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-socket-proxyd.xml b/man/systemd-socket-proxyd.xml
+index 1c78b65..0b852e6 100644
+--- a/man/systemd-socket-proxyd.xml
++++ b/man/systemd-socket-proxyd.xml
+@@ -72,7 +72,7 @@
+     to a configured server for each client, and then bidirectionally
+     forwards data between the two.</para>
+     <para>This utility's behavior is similar to
+-    <citerefentry><refentrytitle>socat</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
++    <citerefentry project='die-net'><refentrytitle>socat</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+     The main differences for <command>systemd-socket-proxyd</command>
+     are support for socket activation with
+     <literal>Accept=false</literal> and an event-driven
+@@ -183,9 +183,9 @@ $ curl http://localhost:80/]]></programlisting>
+       <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>socat</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>nginx</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>curl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++      <citerefentry project='die-net'><refentrytitle>socat</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>nginx</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>curl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ </refentry>
+diff --git a/man/systemd-sysctl.service.xml b/man/systemd-sysctl.service.xml
+index f35a18a..d4c1a7e 100644
+--- a/man/systemd-sysctl.service.xml
++++ b/man/systemd-sysctl.service.xml
+@@ -56,11 +56,11 @@
+ 
+     <para><filename>systemd-sysctl.service</filename> is an early-boot
+     service that configures
+-    <citerefentry><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     kernel parameters.</para>
+ 
+     <para>See
+-    <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     for information about the configuration of this service.</para>
+   </refsect1>
+ 
+@@ -68,8 +68,8 @@
+     <title>See Also</title>
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
+index c7bcfae..1b74ed3 100644
+--- a/man/systemd-system.conf.xml
++++ b/man/systemd-system.conf.xml
+@@ -172,7 +172,7 @@
+         <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details. Takes a whitespace-separated list of capability
+         names as read by
+-        <citerefentry><refentrytitle>cap_from_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
++        <citerefentry project='mankier'><refentrytitle>cap_from_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+         Capabilities listed will be included in the bounding set, all
+         others are removed. If the list of capabilities is prefixed
+         with ~, all but the listed capabilities will be included, the
+diff --git a/man/systemd-update-utmp.service.xml b/man/systemd-update-utmp.service.xml
+index b842d29..c8a9cb7 100644
+--- a/man/systemd-update-utmp.service.xml
++++ b/man/systemd-update-utmp.service.xml
+@@ -69,7 +69,7 @@
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>utmp</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>auditd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>auditd</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml
+index 59bb5e4..7c6ed08 100644
+--- a/man/systemd-vconsole-setup.service.xml
++++ b/man/systemd-vconsole-setup.service.xml
+@@ -57,9 +57,9 @@
+     <para><filename>systemd-vconsole-setup.service</filename> is an
+     early-boot service that configures the virtual console font and
+     console keymap. Internally it calls
+-    <citerefentry><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++    <citerefentry project='mankier'><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     and
+-    <citerefentry><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
++    <citerefentry project='die-net'><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
+ 
+     <para>See
+     <citerefentry><refentrytitle>vconsole.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+@@ -105,8 +105,8 @@
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>vconsole.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++      <citerefentry project='mankier'><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='die-net'><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-localed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml
+index 3db65d9..b5b5885 100644
+--- a/man/systemd.automount.xml
++++ b/man/systemd.automount.xml
+@@ -96,7 +96,7 @@
+ 
+     <para>Automount units may either be configured via unit files, or
+     via <filename>/etc/fstab</filename> (see
+-    <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     for details).</para>
+ 
+     <para>For details how systemd parses
+@@ -145,8 +145,8 @@
+         <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>automount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++        <citerefentry project='die-net'><refentrytitle>automount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+       </para>
+   </refsect1>
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index fdb1578..56b53e6 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -663,7 +663,7 @@
+         <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details. Takes a whitespace-separated list of capability
+         names as read by
+-        <citerefentry><refentrytitle>cap_from_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
++        <citerefentry project='mankier'><refentrytitle>cap_from_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+         e.g. <constant>CAP_SYS_ADMIN</constant>,
+         <constant>CAP_DAC_OVERRIDE</constant>,
+         <constant>CAP_SYS_PTRACE</constant>. Capabilities listed will
+@@ -711,7 +711,7 @@
+         set for the executed process. Take a capability string
+         describing the effective, permitted and inherited capability
+         sets as documented in
+-        <citerefentry><refentrytitle>cap_from_text</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
++        <citerefentry project='mankier'><refentrytitle>cap_from_text</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+         Note that these capability sets are usually influenced (and
+         filtered) by the capabilities attached to the executed file.
+         Due to that <varname>CapabilityBoundingSet=</varname> is
+@@ -881,7 +881,7 @@
+         <option>private</option>, which control whether mounts in the
+         file system namespace set up for this unit's processes will
+         receive or propagate mounts or unmounts. See
+-        <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+         for details. Defaults to <option>shared</option>. Use
+         <option>shared</option> to ensure that mounts and unmounts are
+         propagated from the host to the container and vice versa. Use
+@@ -929,7 +929,7 @@
+         authorize the transition. This directive is ignored if SELinux
+         is disabled. If prefixed by <literal>-</literal>, all errors
+         will be ignored. See
+-        <citerefentry><refentrytitle>setexeccon</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>setexeccon</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+         for details.</para></listitem>
+       </varlistentry>
+ 
+@@ -1076,7 +1076,7 @@
+         prefixed with <constant>~</constant> the listed address
+         families will be applied as blacklist, otherwise as whitelist.
+         Note that this restricts access to the
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+         system call only. Sockets passed into the process by other
+         means (for example, by using socket activation with socket
+         units, see
+@@ -1104,7 +1104,7 @@
+         <term><varname>Personality=</varname></term>
+ 
+         <listitem><para>Controls which kernel architecture
+-        <citerefentry><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+         shall report, when invoked by unit processes. Takes one of
+         <constant>x86</constant> and <constant>x86-64</constant>. This
+         is useful when running 32-bit services on a 64-bit host
+@@ -1166,7 +1166,7 @@
+         <term><varname>$LANG</varname></term>
+ 
+         <listitem><para>Locale. Can be set in
+-        <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+         or on the kernel command line (see
+         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+         and
+@@ -1184,7 +1184,7 @@
+         login shell. The variables are set for the units that have
+         <varname>User=</varname> set, which includes user
+         <command>systemd</command> instances. See
+-        <citerefentry><refentrytitle>passwd</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++        <citerefentry project='die-net'><refentrytitle>passwd</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+         </para></listitem>
+       </varlistentry>
+ 
+diff --git a/man/systemd.generator.xml b/man/systemd.generator.xml
+index ccb6987..9b39e73 100644
+--- a/man/systemd.generator.xml
++++ b/man/systemd.generator.xml
+@@ -333,7 +333,7 @@ find $dir</programlisting>
+       <citerefentry><refentrytitle>systemd-debug-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-efi-boot-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-getty-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-gpt-auto-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-hibernate-resume-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml
+index 1fd46de..7d6c5c7 100644
+--- a/man/systemd.journal-fields.xml
++++ b/man/systemd.journal-fields.xml
+@@ -134,7 +134,7 @@
+           derived from glibc's
+           <varname>program_invocation_short_name</varname> variable,
+           see
+-          <citerefentry><refentrytitle>program_invocation_short_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>.)</para>
++          <citerefentry project='die-net'><refentrytitle>program_invocation_short_name</refentrytitle><manvolnum>3</manvolnum></citerefentry>.)</para>
+         </listitem>
+ 
+       </varlistentry>
+diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml
+index c974e22..e57f0e7 100644
+--- a/man/systemd.kill.xml
++++ b/man/systemd.kill.xml
+@@ -135,7 +135,7 @@
+         of shutting down a unit (see above), and is usually followed
+         by <constant>SIGKILL</constant> (see above and below). For a
+         list of valid signals, see
+-        <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
++        <citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
+         Defaults to <constant>SIGTERM</constant>. </para></listitem>
+       </varlistentry>
+ 
+@@ -176,7 +176,7 @@
+         <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>kill</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+       </para>
+   </refsect1>
+ 
+diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
+index 5cbde8b..fcb9a44 100644
+--- a/man/systemd.mount.xml
++++ b/man/systemd.mount.xml
+@@ -68,7 +68,7 @@
+     <para>Additional options are listed in
+     <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+     which define the execution environment the
+-    <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     binary is executed in, and in
+     <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+     which define the way the processes are terminated, and in
+@@ -78,7 +78,7 @@
+     particularly useful for mount units specifying a
+     <literal>Type=</literal> option or using configuration not
+     specified in <filename>/etc/fstab</filename>;
+-    <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     will refuse options that are not listed in
+     <filename>/etc/fstab</filename> if it is not run as UID 0.</para>
+ 
+@@ -118,7 +118,7 @@
+ 
+     <para>Mount units may either be configured via unit files, or via
+     <filename>/etc/fstab</filename> (see
+-    <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     for details). Mounts listed in <filename>/etc/fstab</filename>
+     will be converted into native units dynamically at boot and when
+     the configuration of the system manager is reloaded. In general,
+@@ -231,7 +231,7 @@
+         <term><varname>What=</varname></term>
+         <listitem><para>Takes an absolute path of a device node, file
+         or other resource to mount. See
+-        <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for details. If this refers to a device node, a dependency on
+         the respective device unit is automatically created. (See
+         <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+@@ -251,7 +251,7 @@
+       <varlistentry>
+         <term><varname>Type=</varname></term>
+         <listitem><para>Takes a string for the file system type. See
+-        <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for details. This setting is optional.</para></listitem>
+       </varlistentry>
+ 
+@@ -270,7 +270,7 @@
+         the options specified in <varname>Options=</varname> is
+         relaxed, and unknown mount options are tolerated. This
+         corresponds with
+-        <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>'s
++        <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>'s
+         <parameter>-s</parameter> switch. Defaults to
+         off.</para></listitem>
+       </varlistentry>
+@@ -321,7 +321,7 @@
+         <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry project='man-pages'><refentrytitle>proc</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>mount</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+       </para>
+diff --git a/man/systemd.network.xml b/man/systemd.network.xml
+index 24f8416..9738627 100644
+--- a/man/systemd.network.xml
++++ b/man/systemd.network.xml
+@@ -286,7 +286,7 @@
+             separated by a <literal>/</literal> character. Specify
+             this key more than once to configure several addresses.
+             The format of the address must be as described in
+-            <citerefentry><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
++            <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+             This is a short-hand for an [Address] section only
+             containing an Address key (see below). This option may be
+             specified more than once.
+@@ -312,7 +312,7 @@
+           <listitem>
+             <para>The gateway address, which must be in the format
+             described in
+-            <citerefentry><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
++            <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+             This is a short-hand for a [Route] section only containing
+             a Gateway key. This option may be specified more than
+             once.</para>
+@@ -323,7 +323,7 @@
+           <listitem>
+             <para>A DNS server address, which must be in the format
+             described in
+-            <citerefentry><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
++            <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+             This option may be specified more than once.</para>
+           </listitem>
+         </varlistentry>
+@@ -429,7 +429,7 @@
+           <listitem>
+             <para>The broadcast address, which must be in the format
+             described in
+-            <citerefentry><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
++            <citerefentry project='man-pages'><refentrytitle>inet_pton</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
+             This key only applies to IPv4 addresses. If it is not
+             given, it is derived from the <literal>Address</literal>
+             key.</para>
+diff --git a/man/systemd.path.xml b/man/systemd.path.xml
+index 08a7ec8..d02bc92 100644
+--- a/man/systemd.path.xml
++++ b/man/systemd.path.xml
+@@ -74,7 +74,7 @@
+     (see below).</para>
+ 
+     <para>Internally, path units use the
+-    <citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+     API to monitor file systems. Due to that, it suffers by the same
+     limitations as inotify, and for example cannot be used to monitor
+     files or directories changed by other machines on remote NFS file
+@@ -187,7 +187,7 @@
+         <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+       </para>
+   </refsect1>
+diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
+index 3938345..2f54193 100644
+--- a/man/systemd.socket.xml
++++ b/man/systemd.socket.xml
+@@ -265,7 +265,7 @@
+         <listitem><para>Takes a one of <option>default</option>,
+         <option>both</option> or <option>ipv6-only</option>. Controls
+         the IPV6_V6ONLY socket option (see
+-        <citerefentry><refentrytitle>ipv6</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>ipv6</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details). If <option>both</option>, IPv6 sockets bound
+         will be accessible via both IPv4 and IPv6. If
+         <option>ipv6-only</option>, they will be accessible via IPv6
+@@ -294,7 +294,7 @@
+         this socket to. If set, traffic will only be accepted from the
+         specified network interfaces. This controls the
+         SO_BINDTODEVICE socket option (see
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details). If this option is used, an automatic dependency
+         from this socket unit on the network interface device unit
+         (<citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+@@ -380,7 +380,7 @@
+         <filename>/proc/sys/net/ipv4/tcp_keepalive_time</filename>)
+         for all TCP streams accepted on this socket. This controls the
+         SO_KEEPALIVE socket option (see
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         and the <ulink
+         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
+         Keepalive HOWTO</ulink> for details.) Defaults to
+@@ -392,7 +392,7 @@
+         <listitem><para>Takes time (in seconds) as argument . The connection needs to remain
+         idle before TCP starts sending keepalive probes. This controls the TCP_KEEPIDLE
+         socket option (see
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         and the <ulink
+         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
+         Keepalive HOWTO</ulink> for details.)
+@@ -405,7 +405,7 @@
+         individual keepalive probes, if the socket option SO_KEEPALIVE
+         has been set on this socket seconds as argument. This controls
+         the TCP_KEEPINTVL socket option (see
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         and the <ulink
+         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
+         Keepalive HOWTO</ulink> for details.) Defaults value is 75
+@@ -418,7 +418,7 @@
+         unacknowledged probes to send before considering the
+         connection dead and notifying the application layer. This
+         controls the TCP_KEEPCNT socket option (see
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         and the <ulink
+         url="http://www.tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/">TCP
+         Keepalive HOWTO</ulink> for details.) Defaults value is
+@@ -431,7 +431,7 @@
+         algorithm works by combining a number of small outgoing
+         messages, and sending them all at once. This controls the
+         TCP_NODELAY socket option (see
+-        <citerefentry><refentrytitle>tcp</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>tcp</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         Defaults to <option>false</option>.</para></listitem>
+       </varlistentry>
+ 
+@@ -440,7 +440,7 @@
+         <listitem><para>Takes an integer argument controlling the
+         priority for all traffic sent from this socket. This controls
+         the SO_PRIORITY socket option (see
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details.).</para></listitem>
+       </varlistentry>
+ 
+@@ -453,7 +453,7 @@
+         established. When this option is set, the
+         <constant>TCP_DEFER_ACCEPT</constant> socket option will be
+         used (see
+-        <citerefentry><refentrytitle>tcp</refentrytitle><manvolnum>7</manvolnum></citerefentry>),
++        <citerefentry project='die-net'><refentrytitle>tcp</refentrytitle><manvolnum>7</manvolnum></citerefentry>),
+         and the kernel will ignore initial ACK packets without any
+         data. The argument specifies the approximate amount of time
+         the kernel should wait for incoming data before falling back
+@@ -480,7 +480,7 @@
+         <listitem><para>Takes an integer argument controlling the
+         receive or send buffer sizes of this socket, respectively.
+         This controls the SO_RCVBUF and SO_SNDBUF socket options (see
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details.). The usual suffixes K, M, G are supported and
+         are understood to the base of 1024.</para></listitem>
+       </varlistentry>
+@@ -490,7 +490,7 @@
+         <listitem><para>Takes an integer argument controlling the IP
+         Type-Of-Service field for packets generated from this socket.
+         This controls the IP_TOS socket option (see
+-        <citerefentry><refentrytitle>ip</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>ip</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details.). Either a numeric string or one of
+         <option>low-delay</option>, <option>throughput</option>,
+         <option>reliability</option> or <option>low-cost</option> may
+@@ -503,9 +503,9 @@
+         Time-To-Live/IPv6 Hop-Count field for packets generated from
+         this socket. This sets the IP_TTL/IPV6_UNICAST_HOPS socket
+         options (see
+-        <citerefentry><refentrytitle>ip</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>ip</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         and
+-        <citerefentry><refentrytitle>ipv6</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>ipv6</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details.)</para></listitem>
+       </varlistentry>
+ 
+@@ -515,7 +515,7 @@
+         mark of packets generated by this socket. This can be used in
+         the firewall logic to filter packets from this socket. This
+         sets the SO_MARK socket option. See
+-        <citerefentry><refentrytitle>iptables</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>iptables</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for details.</para></listitem>
+       </varlistentry>
+ 
+@@ -526,7 +526,7 @@
+         <citerefentry><refentrytitle>bind</refentrytitle><manvolnum>2</manvolnum></citerefentry>s
+         to this TCP or UDP port. This controls the SO_REUSEPORT socket
+         option. See
+-        <citerefentry><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>socket</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+         for details.</para></listitem>
+       </varlistentry>
+ 
+@@ -578,7 +578,7 @@
+         control the mq_maxmsg field or the mq_msgsize field,
+         respectively, when creating the message queue. Note that
+         either none or both of these variables need to be set. See
+-        <citerefentry><refentrytitle>mq_setattr</refentrytitle><manvolnum>3</manvolnum></citerefentry>
++        <citerefentry project='die-net'><refentrytitle>mq_setattr</refentrytitle><manvolnum>3</manvolnum></citerefentry>
+         for details.</para></listitem>
+       </varlistentry>
+ 
+diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
+index 23b9c71..5016f45 100644
+--- a/man/systemd.swap.xml
++++ b/man/systemd.swap.xml
+@@ -69,7 +69,7 @@
+     <para>Additional options are listed in
+     <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+     which define the execution environment the
+-    <citerefentry><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+     binary is executed in, and in
+     <citerefentry><refentrytitle>systemd.kill</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+     which define the way the processes are terminated, and in
+@@ -100,7 +100,7 @@
+ 
+     <para>Swap units may either be configured via unit files, or via
+     <filename>/etc/fstab</filename> (see
+-    <citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++    <citerefentry project='man-pages'><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     for details). Swaps listed in <filename>/etc/fstab</filename> will
+     be converted into native units dynamically at boot and when the
+     configuration of the system manager is reloaded. See
+@@ -161,7 +161,7 @@
+         <term><varname>What=</varname></term>
+         <listitem><para>Takes an absolute path of a device node or
+         file to use for paging. See
+-        <citerefentry><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for details. If this refers to a device node, a dependency on
+         the respective device unit is automatically created. (See
+         <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+@@ -187,7 +187,7 @@
+         device. This may be used for controlling discard options among
+         other functionality, if the swap backing device supports the
+         discard or trim operation. (See
+-        <citerefentry><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+         for more information.) </para></listitem>
+       </varlistentry>
+ 
+@@ -229,7 +229,7 @@
+         <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.device</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>swapon</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>
+       </para>
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index a452f87..c2e374a 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -826,7 +826,7 @@
+         <varname>cris</varname> to test
+         against a specific architecture. The architecture is
+         determined from the information returned by
+-        <citerefentry><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>2</manvolnum></citerefentry>
+         and is thus subject to
+         <citerefentry><refentrytitle>personality</refentrytitle><manvolnum>2</manvolnum></citerefentry>.
+         Note that a <varname>Personality=</varname> setting in the
+@@ -1438,7 +1438,7 @@ PrivateTmp=yes</programlisting>
+       <citerefentry><refentrytitle>systemd-analyze</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>capabilities</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.directives</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>uname</refentrytitle><manvolnum>1</manvolnum></citerefentry>
++      <citerefentry project='man-pages'><refentrytitle>uname</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ 
+diff --git a/man/systemd.xml b/man/systemd.xml
+index 9b92140..d006b0b 100644
+--- a/man/systemd.xml
++++ b/man/systemd.xml
+@@ -1012,9 +1012,9 @@
+         <listitem><para>Set the system locale to use. This overrides
+         the settings in <filename>/etc/locale.conf</filename>. For
+         more information see
+-        <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++        <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+         and
+-        <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
++        <citerefentry project='man-pages'><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>.
+         </para></listitem>
+       </varlistentry>
+     </variablelist>
+@@ -1077,7 +1077,7 @@
+     <para>
+       The <ulink url="http://www.freedesktop.org/wiki/Software/systemd/">systemd Homepage</ulink>,
+       <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-notify</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+diff --git a/man/vconsole.conf.xml b/man/vconsole.conf.xml
+index 17bea8b..27196d4 100644
+--- a/man/vconsole.conf.xml
++++ b/man/vconsole.conf.xml
+@@ -129,9 +129,9 @@ FONT=eurlatgr</programlisting>
+       <para>
+         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-vconsole-setup.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-        <citerefentry><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++        <citerefentry project='mankier'><refentrytitle>loadkeys</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++        <citerefentry project='die-net'><refentrytitle>setfont</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
++        <citerefentry project='man-pages'><refentrytitle>locale.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+         <citerefentry><refentrytitle>systemd-localed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+       </para>
+   </refsect1>
diff --git a/SOURCES/0103-Only-disable-output-on-console-during-boot-if-needed.patch b/SOURCES/0103-Only-disable-output-on-console-during-boot-if-needed.patch
deleted file mode 100644
index 446b085..0000000
--- a/SOURCES/0103-Only-disable-output-on-console-during-boot-if-needed.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 6a2697e8d12f8a09caa26394ecdbbb6d0721f757 Mon Sep 17 00:00:00 2001
-From: Olivier Brunel <jjk@jjacky.com>
-Date: Fri, 20 Sep 2013 22:18:29 +0200
-Subject: [PATCH] Only disable output on console during boot if needed
-
-If there are no more jobs on console, no need/we shouldn't disable output.
----
- src/core/manager.c | 2 +-
- src/core/unit.c    | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index 58dacdc..ce32baf 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -1761,7 +1761,7 @@ static int process_event(Manager *m, struct epoll_event *ev) {
-         }
- 
-         case WATCH_IDLE_PIPE: {
--                m->no_console_output = true;
-+                m->no_console_output = m->n_on_console > 0;
- 
-                 manager_unwatch_idle_pipe(m);
-                 close_idle_pipe(m);
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 0f57b06..acd9c74 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1457,7 +1457,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
- 
-                                 if (m->n_on_console == 0)
-                                         /* unset no_console_output flag, since the console is free */
--                                        m->no_console_output = 0;
-+                                        m->no_console_output = false;
-                         } else
-                                 m->n_on_console ++;
-                 }
diff --git a/SOURCES/0103-man-link-to-fd.o-for-dbus-stuff.patch b/SOURCES/0103-man-link-to-fd.o-for-dbus-stuff.patch
new file mode 100644
index 0000000..9e34a20
--- /dev/null
+++ b/SOURCES/0103-man-link-to-fd.o-for-dbus-stuff.patch
@@ -0,0 +1,90 @@
+From ec79f8b26d793d2e2ee1705ca86437049e0153c6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 13 Mar 2015 21:24:30 -0500
+Subject: [PATCH] man: link to fd.o for dbus stuff
+
+(cherry picked from commit 3b5cfcdb580f5b766ff7fb1a2839bd37d74a98de)
+---
+ man/busctl.xml                      |  2 +-
+ man/custom-html.xsl                 | 13 +++++++++++++
+ man/systemd-bus-proxyd.xml          |  2 +-
+ man/systemd-bus-proxyd@.service.xml |  2 +-
+ man/systemd-machine-id-setup.xml    |  2 +-
+ 5 files changed, 17 insertions(+), 4 deletions(-)
+
+diff --git a/man/busctl.xml b/man/busctl.xml
+index cc1844b..807fc78 100644
+--- a/man/busctl.xml
++++ b/man/busctl.xml
+@@ -465,7 +465,7 @@ o "/org/freedesktop/systemd1/job/42684"</programlisting>
+     <title>See Also</title>
+ 
+     <para>
+-      <citerefentry><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='dbus'><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <ulink url="http://freedesktop.org/wiki/Software/dbus">D-Bus</ulink>,
+       <ulink url="https://code.google.com/p/d-bus/">kdbus</ulink>,
+       <citerefentry><refentrytitle>sd-bus</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
+diff --git a/man/custom-html.xsl b/man/custom-html.xsl
+index 32299db..706b95a 100644
+--- a/man/custom-html.xsl
++++ b/man/custom-html.xsl
+@@ -91,6 +91,19 @@
+   <xsl:call-template name="inline.charseq"/>
+ </xsl:template>
+ 
++<xsl:template match="citerefentry[@project='dbus']">
++  <a>
++    <xsl:attribute name="href">
++      <xsl:text>http://dbus.freedesktop.org/doc/</xsl:text>
++      <xsl:value-of select="refentrytitle"/>
++      <xsl:text>.</xsl:text>
++      <xsl:value-of select="manvolnum"/>
++      <xsl:text>.html</xsl:text>
++    </xsl:attribute>
++    <xsl:call-template name="inline.charseq"/>
++  </a>
++</xsl:template>
++
+ <xsl:template match="refsect1/title|refsect1/info/title">
+   <!-- the ID is output in the block.object call for refsect1 -->
+   <h2>
+diff --git a/man/systemd-bus-proxyd.xml b/man/systemd-bus-proxyd.xml
+index 2c77640..e0efe99 100644
+--- a/man/systemd-bus-proxyd.xml
++++ b/man/systemd-bus-proxyd.xml
+@@ -101,7 +101,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
+     <title>See Also</title>
+ 
+     <para>
+-      <citerefentry><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='dbus'><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <ulink url="http://freedesktop.org/wiki/Software/dbus">D-Bus</ulink>,
+       <ulink url="https://code.google.com/p/d-bus/">kdbus</ulink>
+     </para>
+diff --git a/man/systemd-bus-proxyd@.service.xml b/man/systemd-bus-proxyd@.service.xml
+index 141b43f..dc4f07f 100644
+--- a/man/systemd-bus-proxyd@.service.xml
++++ b/man/systemd-bus-proxyd@.service.xml
+@@ -73,7 +73,7 @@
+ 
+     <para>
+       <citerefentry><refentrytitle>systemd-bus-proxyd</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='dbus'><refentrytitle>dbus-daemon</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <ulink url="http://freedesktop.org/wiki/Software/dbus">D-Bus</ulink>,
+       <ulink url="https://code.google.com/p/d-bus/">kdbus</ulink>
+     </para>
+diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
+index 22bad3e..182717f 100644
+--- a/man/systemd-machine-id-setup.xml
++++ b/man/systemd-machine-id-setup.xml
+@@ -122,7 +122,7 @@
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>machine-id</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>dbus-uuidgen</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++      <citerefentry project='dbus'><refentrytitle>dbus-uuidgen</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-firstboot</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+     </para>
+   </refsect1>
diff --git a/SOURCES/0104-Fix-possible-lack-of-status-messages-on-shutdown-reb.patch b/SOURCES/0104-Fix-possible-lack-of-status-messages-on-shutdown-reb.patch
deleted file mode 100644
index d3e1a98..0000000
--- a/SOURCES/0104-Fix-possible-lack-of-status-messages-on-shutdown-reb.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f64dc9cfd4f2fb79c3b46b2657961b407c6b3235 Mon Sep 17 00:00:00 2001
-From: Olivier Brunel <jjk@jjacky.com>
-Date: Fri, 20 Sep 2013 22:18:30 +0200
-Subject: [PATCH] Fix possible lack of status messages on shutdown/reboot
-
-Since 31a7eb86 the output on console can be disabled to avoid colliding with
-gettys. However, it could also lead to a lack of messages during
-shutdown/reboot.
----
- src/core/job.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/core/job.c b/src/core/job.c
-index 5ea9803..7d2b994 100644
---- a/src/core/job.c
-+++ b/src/core/job.c
-@@ -1099,6 +1099,9 @@ void job_shutdown_magic(Job *j) {
-         if (!unit_has_name(j->unit, SPECIAL_SHUTDOWN_TARGET))
-                 return;
- 
-+        /* In case messages on console has been disabled on boot */
-+        j->unit->manager->no_console_output = false;
-+
-         if (detect_container(NULL) > 0)
-                 return;
- 
diff --git a/SOURCES/0104-man-fix-name-of-systemd.resource-control-5.patch b/SOURCES/0104-man-fix-name-of-systemd.resource-control-5.patch
new file mode 100644
index 0000000..b468029
--- /dev/null
+++ b/SOURCES/0104-man-fix-name-of-systemd.resource-control-5.patch
@@ -0,0 +1,23 @@
+From 28dd732dd917b9832c4c39b7fd44a566516815db Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 13 Mar 2015 21:25:37 -0500
+Subject: [PATCH] man: fix name of systemd.resource-control(5)
+
+(cherry picked from commit ee41f6028189819c728316e917ca09b9eb0a7850)
+---
+ man/systemctl.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 07eb431..3c4c9cb 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -1732,7 +1732,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+       <citerefentry><refentrytitle>loginctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>machinectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+-      <citerefentry><refentrytitle>systemd.resource-management</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++      <citerefentry><refentrytitle>systemd.resource-control</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.special</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>wall</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd.preset</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
diff --git a/SOURCES/0105-random-seed-improve-debugging-messages-a-bit.patch b/SOURCES/0105-random-seed-improve-debugging-messages-a-bit.patch
deleted file mode 100644
index 08eb783..0000000
--- a/SOURCES/0105-random-seed-improve-debugging-messages-a-bit.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 03269523c0f254846613ae3ae0183f4724e47ed8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 12 Nov 2013 22:05:16 -0500
-Subject: [PATCH] random-seed: improve debugging messages a bit
-
----
- Makefile.am                   | 2 ++
- src/random-seed/random-seed.c | 8 ++++----
- 2 files changed, 6 insertions(+), 4 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index 0c11477..3103bac 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -159,6 +159,7 @@ AM_CPPFLAGS = \
- 	-DSYSTEMD_TTY_ASK_PASSWORD_AGENT_BINARY_PATH=\"$(rootbindir)/systemd-tty-ask-password-agent\" \
- 	-DSYSTEMD_STDIO_BRIDGE_BINARY_PATH=\"$(bindir)/systemd-stdio-bridge\" \
- 	-DROOTPREFIX=\"$(rootprefix)\" \
-+	-DRANDOM_SEED_DIR=\"$(localstatedir)/lib/systemd/\" \
- 	-DRANDOM_SEED=\"$(localstatedir)/lib/systemd/random-seed\" \
- 	-DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" \
- 	-DSYSTEM_GENERATOR_PATH=\"$(systemgeneratordir)\" \
-@@ -4227,6 +4228,7 @@ substitutions = \
-        '|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \
-        '|PACKAGE_NAME=$(PACKAGE_NAME)|' \
-        '|PACKAGE_URL=$(PACKAGE_URL)|' \
-+       '|RANDOM_SEED_DIR=$(localstatedir)/lib/systemd/|' \
-        '|RANDOM_SEED=$(localstatedir)/lib/systemd/random-seed|' \
-        '|prefix=$(prefix)|' \
-        '|exec_prefix=$(exec_prefix)|' \
-diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c
-index afbd500..af79ecf 100644
---- a/src/random-seed/random-seed.c
-+++ b/src/random-seed/random-seed.c
-@@ -72,7 +72,7 @@ int main(int argc, char *argv[]) {
- 
-         r = mkdir_parents_label(RANDOM_SEED, 0755);
-         if (r < 0) {
--                log_error("Failed to create parent directory of " RANDOM_SEED ": %s", strerror(-r));
-+                log_error("Failed to create directory " RANDOM_SEED_DIR ": %s", strerror(-r));
-                 goto finish;
-         }
- 
-@@ -86,7 +86,7 @@ int main(int argc, char *argv[]) {
-                 if (seed_fd < 0) {
-                         seed_fd = open(RANDOM_SEED, O_RDONLY|O_CLOEXEC|O_NOCTTY);
-                         if (seed_fd < 0) {
--                                log_error("Failed to open random seed: %m");
-+                                log_error("Failed to open " RANDOM_SEED ": %m");
-                                 r = -errno;
-                                 goto finish;
-                         }
-@@ -106,7 +106,7 @@ int main(int argc, char *argv[]) {
-                 if (k <= 0) {
- 
-                         if (r != 0)
--                                log_error("Failed to read seed file: %m");
-+                                log_error("Failed to read seed from " RANDOM_SEED ": %m");
- 
-                         r = k == 0 ? -EIO : (int) k;
- 
-@@ -125,7 +125,7 @@ int main(int argc, char *argv[]) {
- 
-                 seed_fd = open(RANDOM_SEED, O_WRONLY|O_CLOEXEC|O_NOCTTY|O_CREAT, 0600);
-                 if (seed_fd < 0) {
--                        log_error("Failed to open random seed: %m");
-+                        log_error("Failed to open " RANDOM_SEED ": %m");
-                         r = -errno;
-                         goto finish;
-                 }
diff --git a/SOURCES/0105-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch b/SOURCES/0105-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch
new file mode 100644
index 0000000..d8dfba6
--- /dev/null
+++ b/SOURCES/0105-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch
@@ -0,0 +1,37 @@
+From 3a82f8be03b07b84fa470c6e42cd87865aeaf701 Mon Sep 17 00:00:00 2001
+From: Will Woods <wwoods@redhat.com>
+Date: Fri, 13 Mar 2015 17:24:46 -0400
+Subject: [PATCH] selinux: fix SEGV during switch-root if SELinux policy loaded
+
+If you've got SELinux policy loaded, label_hnd is your labeling handle.
+When systemd is shutting down, we free that handle via mac_selinux_finish().
+
+But: switch_root() calls mkdir_p_label(), which tries to look up a label
+using that freed handle, and so we get a bunch of garbage and eventually
+SEGV in libselinux.
+
+(This doesn't happen in the switch-root from initramfs to real root because
+there's no SELinux policy loaded in initramfs, so label_hnd is NULL and we
+never attempt any lookups.)
+
+So: make sure that mac_selinux_finish() actually sets label_hnd to NULL, so
+nobody tries to use it after it becomes invalid.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1185604
+(cherry picked from commit f5ce2b49585a14cefb6d02f61c8dcdf7628a8605)
+---
+ src/shared/selinux-util.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/shared/selinux-util.c b/src/shared/selinux-util.c
+index a2233e0..a46ddf8 100644
+--- a/src/shared/selinux-util.c
++++ b/src/shared/selinux-util.c
+@@ -117,6 +117,7 @@ void mac_selinux_finish(void) {
+                 return;
+ 
+         selabel_close(label_hnd);
++        label_hnd = NULL;
+ #endif
+ }
+ 
diff --git a/SOURCES/0106-Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch b/SOURCES/0106-Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch
deleted file mode 100644
index 86dead0..0000000
--- a/SOURCES/0106-Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 210dca6fd02254b8c4d145064cdfadbfef68dbd3 Mon Sep 17 00:00:00 2001
-From: Olivier Brunel <jjk@jjacky.com>
-Date: Thu, 14 Nov 2013 15:52:54 +0100
-Subject: [PATCH] Fix RemainAfterExit services keeping a hold on console
-
-When a service exits succesfully and has RemainAfterExit set, its hold
-on the console (in m->n_on_console) wasn't released since the unit state
-didn't change.
----
- src/core/service.c | 16 ++++++++++++++++
- src/core/unit.c    |  3 +++
- 2 files changed, 19 insertions(+)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 5662180..62ae8f0 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -1570,6 +1570,22 @@ static void service_set_state(Service *s, ServiceState state) {
-         if (state == SERVICE_EXITED && UNIT(s)->manager->n_reloading <= 0)
-                 unit_destroy_cgroup(UNIT(s));
- 
-+        /* For remain_after_exit services, let's see if we can "release" the
-+         * hold on the console, since unit_notify() only does that in case of
-+         * change of state */
-+        if (state == SERVICE_EXITED && s->remain_after_exit &&
-+            UNIT(s)->manager->n_on_console > 0) {
-+                ExecContext *ec = unit_get_exec_context(UNIT(s));
-+                if (ec && exec_context_may_touch_console(ec)) {
-+                        Manager *m = UNIT(s)->manager;
-+
-+                        m->n_on_console --;
-+                        if (m->n_on_console == 0)
-+                                /* unset no_console_output flag, since the console is free */
-+                                m->no_console_output = false;
-+                }
-+        }
-+
-         if (old_state != state)
-                 log_debug_unit(UNIT(s)->id,
-                                "%s changed %s -> %s", UNIT(s)->id,
-diff --git a/src/core/unit.c b/src/core/unit.c
-index acd9c74..6c2c4a0 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1449,6 +1449,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
-         if (UNIT_IS_INACTIVE_OR_FAILED(ns))
-                 unit_destroy_cgroup(u);
- 
-+        /* Note that this doesn't apply to RemainAfterExit services exiting
-+         * sucessfully, since there's no change of state in that case. Which is
-+         * why it is handled in service_set_state() */
-         if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) {
-                 ExecContext *ec = unit_get_exec_context(u);
-                 if (ec && exec_context_may_touch_console(ec)) {
diff --git a/SOURCES/0106-service-don-t-add-After-dependencies-on-.busname-uni.patch b/SOURCES/0106-service-don-t-add-After-dependencies-on-.busname-uni.patch
new file mode 100644
index 0000000..3b404e3
--- /dev/null
+++ b/SOURCES/0106-service-don-t-add-After-dependencies-on-.busname-uni.patch
@@ -0,0 +1,35 @@
+From 7c1b21bad54714f04d0d2a8c77008408affe7067 Mon Sep 17 00:00:00 2001
+From: Michael Biebl <biebl@debian.org>
+Date: Sat, 14 Mar 2015 16:48:54 +0100
+Subject: [PATCH] service: don't add After= dependencies on .busname units if
+ kdbus support is disabled
+
+(cherry picked from commit 6962fd3bd28cb5d3aaff69c1e3b6cc006e7c8426)
+---
+ src/core/service.c | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/service.c b/src/core/service.c
+index 7781b4e..ae5e610 100644
+--- a/src/core/service.c
++++ b/src/core/service.c
+@@ -556,14 +556,16 @@ static int service_add_extras(Service *s) {
+                 s->notify_access = NOTIFY_MAIN;
+ 
+         if (s->bus_name) {
++#ifdef ENABLE_KDBUS
+                 const char *n;
+ 
+-                r = unit_watch_bus_name(UNIT(s), s->bus_name);
++                n = strjoina(s->bus_name, ".busname");
++                r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, n, NULL, true);
+                 if (r < 0)
+                         return r;
++#endif
+ 
+-                n = strjoina(s->bus_name, ".busname");
+-                r = unit_add_dependency_by_name(UNIT(s), UNIT_AFTER, n, NULL, true);
++                r = unit_watch_bus_name(UNIT(s), s->bus_name);
+                 if (r < 0)
+                         return r;
+         }
diff --git a/SOURCES/0107-keymap-Add-Toshiba-Satellite-U940.patch b/SOURCES/0107-keymap-Add-Toshiba-Satellite-U940.patch
deleted file mode 100644
index 7419cb1..0000000
--- a/SOURCES/0107-keymap-Add-Toshiba-Satellite-U940.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From d76eefd8a937c6ed75cb24a2c14fa37291e663be Mon Sep 17 00:00:00 2001
-From: Jose Ignacio Naranjo <joseignacio.naranjo@gmail.com>
-Date: Sun, 17 Nov 2013 21:11:34 +0100
-Subject: [PATCH] keymap: Add Toshiba Satellite U940
-
-Signed-off-by: Martin Pitt <martinpitt@gnome.org>
----
- hwdb/60-keyboard.hwdb | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index b497f92..d4d948d 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -1031,6 +1031,13 @@ keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite*P75-A:pvr*
-  KEYBOARD_KEY_a9=switchvideomode                        # switch display outputs
-  KEYBOARD_KEY_d4=wlan                                   # RF Switch Off
- 
-+# Satellite U940
-+keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSATELLITEU940:pvr*
-+ KEYBOARD_KEY_13c=brightnessdown
-+ KEYBOARD_KEY_13d=brightnessup
-+ KEYBOARD_KEY_13e=switchvideomode
-+ KEYBOARD_KEY_13f=f21                                   # Touchpad toggle
-+
- ###########################################################
- # VIA
- ###########################################################
diff --git a/SOURCES/0107-libudev-monitor-fix-error-path-in-send_device.patch b/SOURCES/0107-libudev-monitor-fix-error-path-in-send_device.patch
new file mode 100644
index 0000000..41cca7b
--- /dev/null
+++ b/SOURCES/0107-libudev-monitor-fix-error-path-in-send_device.patch
@@ -0,0 +1,38 @@
+From dfd0017561730f675d65cc826815ce7c932892aa Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Wed, 11 Mar 2015 22:23:38 +0100
+Subject: [PATCH] libudev: monitor - fix error path in send_device
+
+Return -errno rather than -1 in case sendmsg() fails.
+
+(cherry picked from commit a4445e88cece0444c66d70876b03065158dd4685)
+---
+ src/libudev/libudev-monitor.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
+index 3f1fee7..d0486e3 100644
+--- a/src/libudev/libudev-monitor.c
++++ b/src/libudev/libudev-monitor.c
+@@ -749,12 +749,20 @@ int udev_monitor_send_device(struct udev_monitor *udev_monitor,
+          * If we send to a multicast group, we will get
+          * ECONNREFUSED, which is expected.
+          */
+-        if (destination != NULL)
++        if (destination)
+                 smsg.msg_name = &destination->snl;
+         else
+                 smsg.msg_name = &udev_monitor->snl_destination;
+         smsg.msg_namelen = sizeof(struct sockaddr_nl);
+         count = sendmsg(udev_monitor->sock, &smsg, 0);
++        if (count < 0) {
++                if (!destination && errno == ECONNREFUSED) {
++                        log_debug("passed unknown number of bytes to netlink monitor %p", udev_monitor);
++                        return 0;
++                } else
++                        return -errno;
++        }
++
+         log_debug("passed %zi bytes to netlink monitor %p", count, udev_monitor);
+         return count;
+ }
diff --git a/SOURCES/0108-calendar-support-yearly-and-annually-names-the-same-.patch b/SOURCES/0108-calendar-support-yearly-and-annually-names-the-same-.patch
deleted file mode 100644
index 7ed6206..0000000
--- a/SOURCES/0108-calendar-support-yearly-and-annually-names-the-same-.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 9e4b36ca509cdcb39afaa9fc7a0f1901b8855647 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 19 Nov 2013 01:13:42 +0100
-Subject: [PATCH] calendar: support 'yearly' and 'annually' names the same way
- as cron
-
----
- src/shared/calendarspec.c | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c
-index 7979e23..7075159 100644
---- a/src/shared/calendarspec.c
-+++ b/src/shared/calendarspec.c
-@@ -686,6 +686,23 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
-                 if (r < 0)
-                         goto fail;
- 
-+        } else if (strcaseeq(p, "anually") || strcaseeq(p, "yearly")) {
-+                r = const_chain(1, &c->month);
-+                if (r < 0)
-+                        goto fail;
-+                r = const_chain(1, &c->day);
-+                if (r < 0)
-+                        goto fail;
-+                r = const_chain(0, &c->hour);
-+                if (r < 0)
-+                        goto fail;
-+                r = const_chain(0, &c->minute);
-+                if (r < 0)
-+                        goto fail;
-+                r = const_chain(0, &c->second);
-+                if (r < 0)
-+                        goto fail;
-+
-         } else if (strcaseeq(p, "weekly")) {
- 
-                 c->weekdays_bits = 1;
diff --git a/SOURCES/0108-core-remove-left-over-debug-message.patch b/SOURCES/0108-core-remove-left-over-debug-message.patch
new file mode 100644
index 0000000..4774156
--- /dev/null
+++ b/SOURCES/0108-core-remove-left-over-debug-message.patch
@@ -0,0 +1,23 @@
+From ea76eeb44ef5c8e5fc8e44328c2c455a2b9a0db0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 17:41:53 -0400
+Subject: [PATCH] core: remove left-over debug message
+
+(cherry picked from commit bdb26d423a7f992bec5c28e17894c684d770d6f3)
+---
+ src/core/load-fragment.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
+index 90bf563..f17a82f 100644
+--- a/src/core/load-fragment.c
++++ b/src/core/load-fragment.c
+@@ -634,8 +634,6 @@ int config_parse_exec(const char *unit,
+ 
+                 n[k] = NULL;
+ 
+-                log_debug("path: %s", path ?: n[0]);
+-
+                 if (!n[0])
+                         reason = "Empty executable name or zeroeth argument";
+                 else if (!string_is_safe(path ?: n[0]))
diff --git a/SOURCES/0109-hashmap-be-a-bit-more-conservative-with-pre-allocati.patch b/SOURCES/0109-hashmap-be-a-bit-more-conservative-with-pre-allocati.patch
deleted file mode 100644
index 49110a5..0000000
--- a/SOURCES/0109-hashmap-be-a-bit-more-conservative-with-pre-allocati.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 79d427226ea91530362d41e778e1064a396aad09 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 19 Nov 2013 21:02:59 +0100
-Subject: [PATCH] hashmap: be a bit more conservative with pre-allocating hash
- tables and items
-
----
- src/shared/hashmap.c | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/src/shared/hashmap.c b/src/shared/hashmap.c
-index f06fce6..8f5957b 100644
---- a/src/shared/hashmap.c
-+++ b/src/shared/hashmap.c
-@@ -66,13 +66,14 @@ static void *first_hashmap_tile = NULL;
- static struct pool *first_entry_pool = NULL;
- static void *first_entry_tile = NULL;
- 
--static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t tile_size) {
-+static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t tile_size, unsigned at_least) {
-         unsigned i;
- 
-         /* When a tile is released we add it to the list and simply
-          * place the next pointer at its offset 0. */
- 
-         assert(tile_size >= sizeof(void*));
-+        assert(at_least > 0);
- 
-         if (*first_tile) {
-                 void *r;
-@@ -88,7 +89,7 @@ static void* allocate_tile(struct pool **first_pool, void **first_tile, size_t t
-                 struct pool *p;
- 
-                 n = *first_pool ? (*first_pool)->n_tiles : 0;
--                n = MAX(512U, n * 2);
-+                n = MAX(at_least, n * 2);
-                 size = PAGE_ALIGN(ALIGN(sizeof(struct pool)) + n*tile_size);
-                 n = (size - ALIGN(sizeof(struct pool))) / tile_size;
- 
-@@ -191,7 +192,7 @@ Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func) {
-         size = ALIGN(sizeof(Hashmap)) + INITIAL_N_BUCKETS * sizeof(struct hashmap_entry*);
- 
-         if (b) {
--                h = allocate_tile(&first_hashmap_pool, &first_hashmap_tile, size);
-+                h = allocate_tile(&first_hashmap_pool, &first_hashmap_tile, size, 8);
-                 if (!h)
-                         return NULL;
- 
-@@ -476,7 +477,7 @@ int hashmap_put(Hashmap *h, const void *key, void *value) {
-                 hash = bucket_hash(h, key);
- 
-         if (h->from_pool)
--                e = allocate_tile(&first_entry_pool, &first_entry_tile, sizeof(struct hashmap_entry));
-+                e = allocate_tile(&first_entry_pool, &first_entry_tile, sizeof(struct hashmap_entry), 64U);
-         else
-                 e = new(struct hashmap_entry, 1);
- 
diff --git a/SOURCES/0109-units-there-is-no-systemd-udev-hwdb-update.service.patch b/SOURCES/0109-units-there-is-no-systemd-udev-hwdb-update.service.patch
new file mode 100644
index 0000000..a3e0e65
--- /dev/null
+++ b/SOURCES/0109-units-there-is-no-systemd-udev-hwdb-update.service.patch
@@ -0,0 +1,23 @@
+From e2d3644c855b9262508448abc5044e3e21103680 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 17:56:13 -0400
+Subject: [PATCH] units: there is no systemd-udev-hwdb-update.service
+
+(cherry picked from commit d99ce93383028f08470b6d334bc1a31ca8d16b22)
+---
+ units/systemd-udevd.service.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in
+index f6acd6f..2791f73 100644
+--- a/units/systemd-udevd.service.in
++++ b/units/systemd-udevd.service.in
+@@ -10,7 +10,7 @@ Description=udev Kernel Device Manager
+ Documentation=man:systemd-udevd.service(8) man:udev(7)
+ DefaultDependencies=no
+ Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket
+-After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udev-hwdb-update.service systemd-sysusers.service
++After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-hwdb-update.service systemd-sysusers.service
+ Before=sysinit.target
+ ConditionPathIsReadWrite=/sys
+ 
diff --git a/SOURCES/0110-manager-don-t-do-plymouth-in-a-container.patch b/SOURCES/0110-manager-don-t-do-plymouth-in-a-container.patch
deleted file mode 100644
index e2393a2..0000000
--- a/SOURCES/0110-manager-don-t-do-plymouth-in-a-container.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From d4b53c89833bf8dc934eee8a19bd3b112135fe71 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 20 Nov 2013 03:44:11 +0100
-Subject: [PATCH] manager: don't do plymouth in a container
-
-Given that plymouth listens on an abstract namespace socket and if
-CLONE_NEWNET is not used the abstract namespace is shared with the host
-we might actually end up send plymouth data to the host.
----
- src/core/manager.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index ce32baf..944c196 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -1966,6 +1966,9 @@ void manager_send_unit_plymouth(Manager *m, Unit *u) {
-         if (m->running_as != SYSTEMD_SYSTEM)
-                 return;
- 
-+        if (detect_container(NULL) > 0)
-+                return;
-+
-         if (u->type != UNIT_SERVICE &&
-             u->type != UNIT_MOUNT &&
-             u->type != UNIT_SWAP)
diff --git a/SOURCES/0110-util-remove-redundant-debug-message.patch b/SOURCES/0110-util-remove-redundant-debug-message.patch
new file mode 100644
index 0000000..70cfea3
--- /dev/null
+++ b/SOURCES/0110-util-remove-redundant-debug-message.patch
@@ -0,0 +1,29 @@
+From 5ad9a98a4c77949fd3519e11b44b8e0564dfc3a6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 20:14:39 -0400
+Subject: [PATCH] util: remove redundant debug message
+
+mar 14 20:05:34 fedora22 systemd[4058]: /usr/lib/systemd/system-generators/kdump-dep-generator.sh will be executed.
+mar 14 20:05:34 fedora22 systemd[4058]: Spawned /usr/lib/systemd/system-generators/kdump-dep-generator.sh as 4059.
+
+The second line already says everything.
+
+(cherry picked from commit 7034e9db51d0b6f8e1dbbe9127393c6fbc06fe28)
+---
+ src/shared/util.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 8548723..1e1bf94 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -4115,8 +4115,7 @@ static int do_execute(char **directories, usec_t timeout, char *argv[]) {
+                         if (null_or_empty_path(path)) {
+                                 log_debug("%s is empty (a mask).", path);
+                                 continue;
+-                        } else
+-                                log_debug("%s will be executed.", path);
++                        }
+ 
+                         pid = fork();
+                         if (pid < 0) {
diff --git a/SOURCES/0111-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/SOURCES/0111-hwdb-Update-database-of-Bluetooth-company-identifier.patch
deleted file mode 100644
index 4ebe150..0000000
--- a/SOURCES/0111-hwdb-Update-database-of-Bluetooth-company-identifier.patch
+++ /dev/null
@@ -1,327 +0,0 @@
-From 9151c0ff148c20cdeb6e9fbc5909d56133718780 Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Sat, 21 Sep 2013 11:45:05 -0700
-Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
-
----
- hwdb/20-bluetooth-vendor-product.hwdb | 209 +++++++++++++++++++++++++++++++---
- 1 file changed, 193 insertions(+), 16 deletions(-)
-
-diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
-index c8cb322..faecf42 100644
---- a/hwdb/20-bluetooth-vendor-product.hwdb
-+++ b/hwdb/20-bluetooth-vendor-product.hwdb
-@@ -46,7 +46,7 @@ bluetooth:v000D*
-  ID_VENDOR_FROM_DATABASE=Texas Instruments Inc.
- 
- bluetooth:v000E*
-- ID_VENDOR_FROM_DATABASE=Ceva, Inc. (formerly Parthus Technologies Inc.)
-+ ID_VENDOR_FROM_DATABASE=Ceva, Inc. (formerly Parthus Technologies, Inc.)
- 
- bluetooth:v000F*
-  ID_VENDOR_FROM_DATABASE=Broadcom Corporation
-@@ -55,7 +55,7 @@ bluetooth:v0010*
-  ID_VENDOR_FROM_DATABASE=Mitel Semiconductor
- 
- bluetooth:v0011*
-- ID_VENDOR_FROM_DATABASE=Widcomm, Inc.
-+ ID_VENDOR_FROM_DATABASE=Widcomm, Inc
- 
- bluetooth:v0012*
-  ID_VENDOR_FROM_DATABASE=Zeevo, Inc.
-@@ -73,13 +73,13 @@ bluetooth:v0016*
-  ID_VENDOR_FROM_DATABASE=KC Technology Inc.
- 
- bluetooth:v0017*
-- ID_VENDOR_FROM_DATABASE=Newlogic
-+ ID_VENDOR_FROM_DATABASE=NewLogic
- 
- bluetooth:v0018*
-  ID_VENDOR_FROM_DATABASE=Transilica, Inc.
- 
- bluetooth:v0019*
-- ID_VENDOR_FROM_DATABASE=Rohde & Schwartz GmbH & Co. KG
-+ ID_VENDOR_FROM_DATABASE=Rohde & Schwarz GmbH & Co. KG
- 
- bluetooth:v001A*
-  ID_VENDOR_FROM_DATABASE=TTPCom Limited
-@@ -151,7 +151,7 @@ bluetooth:v0030*
-  ID_VENDOR_FROM_DATABASE=ST Microelectronics
- 
- bluetooth:v0031*
-- ID_VENDOR_FROM_DATABASE=Synopsys
-+ ID_VENDOR_FROM_DATABASE=Synopsis
- 
- bluetooth:v0032*
-  ID_VENDOR_FROM_DATABASE=Red-M (Communications) Ltd
-@@ -190,16 +190,16 @@ bluetooth:v003D*
-  ID_VENDOR_FROM_DATABASE=IPextreme, Inc.
- 
- bluetooth:v003E*
-- ID_VENDOR_FROM_DATABASE=Systems and Chips, Inc
-+ ID_VENDOR_FROM_DATABASE=Systems and Chips, Inc.
- 
- bluetooth:v003F*
-- ID_VENDOR_FROM_DATABASE=Bluetooth SIG, Inc
-+ ID_VENDOR_FROM_DATABASE=Bluetooth SIG, Inc.
- 
- bluetooth:v0040*
-  ID_VENDOR_FROM_DATABASE=Seiko Epson Corporation
- 
- bluetooth:v0041*
-- ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution Taiwain, Inc.
-+ ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution Taiwan, Inc.
- 
- bluetooth:v0042*
-  ID_VENDOR_FROM_DATABASE=CONWISE Technology Corporation Ltd
-@@ -244,7 +244,7 @@ bluetooth:v004F*
-  ID_VENDOR_FROM_DATABASE=APT Licensing Ltd.
- 
- bluetooth:v0050*
-- ID_VENDOR_FROM_DATABASE=SiRF Technology, Inc.
-+ ID_VENDOR_FROM_DATABASE=SiRF Technology
- 
- bluetooth:v0051*
-  ID_VENDOR_FROM_DATABASE=Tzero Technologies, Inc.
-@@ -379,7 +379,7 @@ bluetooth:v007C*
-  ID_VENDOR_FROM_DATABASE=A & R Cambridge
- 
- bluetooth:v007D*
-- ID_VENDOR_FROM_DATABASE=Seers Technology Co. Ltd.
-+ ID_VENDOR_FROM_DATABASE=Seers Technology Co. Ltd
- 
- bluetooth:v007E*
-  ID_VENDOR_FROM_DATABASE=Sports Tracking Technologies Ltd.
-@@ -406,7 +406,7 @@ bluetooth:v0085*
-  ID_VENDOR_FROM_DATABASE=BlueRadios, Inc.
- 
- bluetooth:v0086*
-- ID_VENDOR_FROM_DATABASE=equinux AG
-+ ID_VENDOR_FROM_DATABASE=equinox AG
- 
- bluetooth:v0087*
-  ID_VENDOR_FROM_DATABASE=Garmin International, Inc.
-@@ -421,7 +421,7 @@ bluetooth:v008A*
-  ID_VENDOR_FROM_DATABASE=Jawbone
- 
- bluetooth:v008B*
-- ID_VENDOR_FROM_DATABASE=Topcon Positioning Systems, LLC
-+ ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC
- 
- bluetooth:v008C*
-  ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc.
-@@ -433,13 +433,13 @@ bluetooth:v008E*
-  ID_VENDOR_FROM_DATABASE=Quintic Corp.
- 
- bluetooth:v008F*
-- ID_VENDOR_FROM_DATABASE=Stollmann E+V GmbH
-+ ID_VENDOR_FROM_DATABASE=Stollman E+V GmbH
- 
- bluetooth:v0090*
-  ID_VENDOR_FROM_DATABASE=Funai Electric Co., Ltd.
- 
- bluetooth:v0091*
-- ID_VENDOR_FROM_DATABASE=Advanced PANMOBIL systems GmbH & Co. KG
-+ ID_VENDOR_FROM_DATABASE=Advanced PANMOBIL Systems GmbH & Co. KG
- 
- bluetooth:v0092*
-  ID_VENDOR_FROM_DATABASE=ThinkOptics, Inc.
-@@ -460,7 +460,7 @@ bluetooth:v0097*
-  ID_VENDOR_FROM_DATABASE=Bluetrek Technologies Limited
- 
- bluetooth:v0098*
-- ID_VENDOR_FROM_DATABASE=zero1.tv GmbH
-+ ID_VENDOR_FROM_DATABASE=zer01.tv GmbH
- 
- bluetooth:v0099*
-  ID_VENDOR_FROM_DATABASE=i.Tech Dynamic Global Distribution Ltd.
-@@ -511,7 +511,7 @@ bluetooth:v00A8*
-  ID_VENDOR_FROM_DATABASE=ARP Devices Limited
- 
- bluetooth:v00A9*
-- ID_VENDOR_FROM_DATABASE=Magneti Marelli S.p.A.
-+ ID_VENDOR_FROM_DATABASE=Magneti Marelli S.p.A
- 
- bluetooth:v00AA*
-  ID_VENDOR_FROM_DATABASE=CAEN RFID srl
-@@ -539,3 +539,180 @@ bluetooth:v00B1*
- 
- bluetooth:v00B2*
-  ID_VENDOR_FROM_DATABASE=Bekey A/S
-+
-+bluetooth:v00B3*
-+ ID_VENDOR_FROM_DATABASE=Clarinox Technologies Pty. Ltd.
-+
-+bluetooth:v00B4*
-+ ID_VENDOR_FROM_DATABASE=BDE Technology Co., Ltd.
-+
-+bluetooth:v00B5*
-+ ID_VENDOR_FROM_DATABASE=Swirl Networks
-+
-+bluetooth:v00B6*
-+ ID_VENDOR_FROM_DATABASE=Meso international
-+
-+bluetooth:v00B7*
-+ ID_VENDOR_FROM_DATABASE=TreLab Ltd
-+
-+bluetooth:v00B8*
-+ ID_VENDOR_FROM_DATABASE=Qualcomm Innovation Center, Inc. (QuIC)
-+
-+bluetooth:v00B9*
-+ ID_VENDOR_FROM_DATABASE=Johnson Controls, Inc.
-+
-+bluetooth:v00BA*
-+ ID_VENDOR_FROM_DATABASE=Starkey Laboratories Inc.
-+
-+bluetooth:v00BB*
-+ ID_VENDOR_FROM_DATABASE=S-Power Electronics Limited
-+
-+bluetooth:v00BC*
-+ ID_VENDOR_FROM_DATABASE=Ace Sensor Inc
-+
-+bluetooth:v00BD*
-+ ID_VENDOR_FROM_DATABASE=Aplix Corporation
-+
-+bluetooth:v00BE*
-+ ID_VENDOR_FROM_DATABASE=AAMP of America
-+
-+bluetooth:v00BF*
-+ ID_VENDOR_FROM_DATABASE=Stalmart Technology Limited
-+
-+bluetooth:v00C0*
-+ ID_VENDOR_FROM_DATABASE=AMICCOM Electronics Corporation
-+
-+bluetooth:v00C1*
-+ ID_VENDOR_FROM_DATABASE=Shenzhen Excelsecu Data Technology Co.,Ltd
-+
-+bluetooth:v00C2*
-+ ID_VENDOR_FROM_DATABASE=Geneq Inc.
-+
-+bluetooth:v00C3*
-+ ID_VENDOR_FROM_DATABASE=adidas AG
-+
-+bluetooth:v00C4*
-+ ID_VENDOR_FROM_DATABASE=LG Electronics
-+
-+bluetooth:v00C5*
-+ ID_VENDOR_FROM_DATABASE=Onset Computer Corporation
-+
-+bluetooth:v00C6*
-+ ID_VENDOR_FROM_DATABASE=Selfly BV
-+
-+bluetooth:v00C7*
-+ ID_VENDOR_FROM_DATABASE=Quuppa Oy.
-+
-+bluetooth:v00C8*
-+ ID_VENDOR_FROM_DATABASE=GeLo Inc
-+
-+bluetooth:v00C9*
-+ ID_VENDOR_FROM_DATABASE=Evluma
-+
-+bluetooth:v00CA*
-+ ID_VENDOR_FROM_DATABASE=MC10
-+
-+bluetooth:v00CB*
-+ ID_VENDOR_FROM_DATABASE=Binauric SE
-+
-+bluetooth:v00CC*
-+ ID_VENDOR_FROM_DATABASE=Beats Electronics
-+
-+bluetooth:v00CD*
-+ ID_VENDOR_FROM_DATABASE=Microchip Technology Inc.
-+
-+bluetooth:v00CE*
-+ ID_VENDOR_FROM_DATABASE=Elgato Systems GmbH
-+
-+bluetooth:v00CF*
-+ ID_VENDOR_FROM_DATABASE=ARCHOS SA
-+
-+bluetooth:v00D1*
-+ ID_VENDOR_FROM_DATABASE=Polar Electro Europe B.V.
-+
-+bluetooth:v00D2*
-+ ID_VENDOR_FROM_DATABASE=Dialog Semiconductor B.V.
-+
-+bluetooth:v00D3*
-+ ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD.
-+
-+bluetooth:v00D4*
-+ ID_VENDOR_FROM_DATABASE=Kawantech
-+
-+bluetooth:v00D5*
-+ ID_VENDOR_FROM_DATABASE=Austco Communication Systems
-+
-+bluetooth:v00D6*
-+ ID_VENDOR_FROM_DATABASE=Timex Group USA, Inc.
-+
-+bluetooth:v00D7*
-+ ID_VENDOR_FROM_DATABASE=Qualcomm Technologies, Inc.
-+
-+bluetooth:v00D8*
-+ ID_VENDOR_FROM_DATABASE=Qualcomm Connected Experiences, Inc.
-+
-+bluetooth:v00D9*
-+ ID_VENDOR_FROM_DATABASE=Voyetra Turtle Beach
-+
-+bluetooth:v00DA*
-+ ID_VENDOR_FROM_DATABASE=txtr GmbH
-+
-+bluetooth:v00DB*
-+ ID_VENDOR_FROM_DATABASE=Biosentronics
-+
-+bluetooth:v00DC*
-+ ID_VENDOR_FROM_DATABASE=Procter & Gamble
-+
-+bluetooth:v00DD*
-+ ID_VENDOR_FROM_DATABASE=Hosiden Corporation
-+
-+bluetooth:v00DE*
-+ ID_VENDOR_FROM_DATABASE=Muzik LLC
-+
-+bluetooth:v00DF*
-+ ID_VENDOR_FROM_DATABASE=Misfit Wearables Corp
-+
-+bluetooth:v00E0*
-+ ID_VENDOR_FROM_DATABASE=Google
-+
-+bluetooth:v00E1*
-+ ID_VENDOR_FROM_DATABASE=Danlers Ltd
-+
-+bluetooth:v00E2*
-+ ID_VENDOR_FROM_DATABASE=Semilink Inc
-+
-+bluetooth:v00E3*
-+ ID_VENDOR_FROM_DATABASE=inMusic Brands, Inc
-+
-+bluetooth:v00E4*
-+ ID_VENDOR_FROM_DATABASE=L.S. Research Inc.
-+
-+bluetooth:v00E5*
-+ ID_VENDOR_FROM_DATABASE=Eden Software Consultants Ltd.
-+
-+bluetooth:v00E6*
-+ ID_VENDOR_FROM_DATABASE=Freshtemp
-+
-+bluetooth:v00E7*
-+ ID_VENDOR_FROM_DATABASE=KS Technologies
-+
-+bluetooth:v00E8*
-+ ID_VENDOR_FROM_DATABASE=ACTS Technologies
-+
-+bluetooth:v00E9*
-+ ID_VENDOR_FROM_DATABASE=Vtrack Systems
-+
-+bluetooth:v00EA*
-+ ID_VENDOR_FROM_DATABASE=Nielsen-Kellerman Company
-+
-+bluetooth:v00EB*
-+ ID_VENDOR_FROM_DATABASE=Server Technology, Inc.
-+
-+bluetooth:v00EC*
-+ ID_VENDOR_FROM_DATABASE=BioResearch Associates
-+
-+bluetooth:v00ED*
-+ ID_VENDOR_FROM_DATABASE=Jolly Logic, LLC
-+
-+bluetooth:v00EE*
-+ ID_VENDOR_FROM_DATABASE=Above Average Outcomes, Inc.
diff --git a/SOURCES/0111-tmpfiles-remove-redundant-debug-message.patch b/SOURCES/0111-tmpfiles-remove-redundant-debug-message.patch
new file mode 100644
index 0000000..15a637a
--- /dev/null
+++ b/SOURCES/0111-tmpfiles-remove-redundant-debug-message.patch
@@ -0,0 +1,26 @@
+From b9de0cce0292983b62842990b9ce71c99b1bc434 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 20:24:47 -0400
+Subject: [PATCH] tmpfiles: remove redundant debug message
+
+Mar 13 19:48:30 adam.happyassassin.net systemd-tmpfiles[970]: "/var/lib/machines" has right mode 40700
+Mar 13 19:48:30 adam.happyassassin.net systemd-tmpfiles[970]: /var/lib/machines created successfully.
+
+(cherry picked from commit 51bfdaf66c381793d2f39ad891f3411a55927da6)
+---
+ src/tmpfiles/tmpfiles.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 1e10968..73a9c9d 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -1209,8 +1209,6 @@ static int create_item(Item *i) {
+                 break;
+         }
+ 
+-        log_debug("%s created successfully.", i->path);
+-
+         return 0;
+ }
+ 
diff --git a/SOURCES/0112-automount-log-info-about-triggering-process.patch b/SOURCES/0112-automount-log-info-about-triggering-process.patch
deleted file mode 100644
index 08de3c9..0000000
--- a/SOURCES/0112-automount-log-info-about-triggering-process.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 46405e5b293eeb66eb10e79f824a51cbaf5147ab Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Thu, 28 Nov 2013 01:25:10 +0100
-Subject: [PATCH] automount: log info about triggering process
-
-Conflicts:
-	src/core/automount.c
----
- src/core/automount.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/core/automount.c b/src/core/automount.c
-index d1379e0..203104e 100644
---- a/src/core/automount.c
-+++ b/src/core/automount.c
-@@ -776,8 +776,8 @@ static void automount_fd_event(Unit *u, int fd, uint32_t events, Watch *w) {
-                         _cleanup_free_ char *p = NULL;
- 
-                         get_process_comm(packet.v5_packet.pid, &p);
--                        log_debug_unit(u->id,
--                                       "Got direct mount request on %s, triggered by %lu (%s)",
-+                        log_info_unit(u->id,
-+                                       "Got automount request for %s, triggered by %lu (%s)",
-                                        a->where, (unsigned long) packet.v5_packet.pid, strna(p));
-                 } else
-                         log_debug_unit(u->id, "Got direct mount request on %s", a->where);
diff --git a/SOURCES/0112-sysv-generator-initialize-LookupPaths-just-once.patch b/SOURCES/0112-sysv-generator-initialize-LookupPaths-just-once.patch
new file mode 100644
index 0000000..453fdf9
--- /dev/null
+++ b/SOURCES/0112-sysv-generator-initialize-LookupPaths-just-once.patch
@@ -0,0 +1,275 @@
+From f8fd91c9f0f1f7feabf8567bdad61f57fe922011 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 21:46:59 -0400
+Subject: [PATCH] sysv-generator: initialize LookupPaths just once
+
+With debugging on, sysv-generator would print the full set of
+lookup paths for *every* sysv script.
+
+While at it, pass LookupPaths as a pointer in sysv-generator,
+and constify it everywhere.
+
+(cherry picked from commit a8ffe6fbcbfdba39aef8dce8b298b3e0cb377c0e)
+---
+ src/shared/install.c                | 55 ++++++++++++++++++++++---------------
+ src/shared/install.h                | 11 +++++++-
+ src/shared/path-lookup.c            |  1 +
+ src/shared/path-lookup.h            |  3 +-
+ src/sysv-generator/sysv-generator.c | 14 +++++-----
+ 5 files changed, 53 insertions(+), 31 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 65f1c24..92b8d6e 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -1084,7 +1084,7 @@ static int unit_file_load(
+ static int unit_file_search(
+                 InstallContext *c,
+                 InstallInfo *info,
+-                LookupPaths *paths,
++                const LookupPaths *paths,
+                 const char *root_dir,
+                 bool allow_symlink,
+                 bool load,
+@@ -1153,7 +1153,7 @@ static int unit_file_search(
+ }
+ 
+ static int unit_file_can_install(
+-                LookupPaths *paths,
++                const LookupPaths *paths,
+                 const char *root_dir,
+                 const char *name,
+                 bool allow_symlink,
+@@ -1317,7 +1317,7 @@ static int install_info_symlink_wants(
+ 
+ static int install_info_symlink_link(
+                 InstallInfo *i,
+-                LookupPaths *paths,
++                const LookupPaths *paths,
+                 const char *config_path,
+                 const char *root_dir,
+                 bool force,
+@@ -1345,7 +1345,7 @@ static int install_info_symlink_link(
+ 
+ static int install_info_apply(
+                 InstallInfo *i,
+-                LookupPaths *paths,
++                const LookupPaths *paths,
+                 const char *config_path,
+                 const char *root_dir,
+                 bool force,
+@@ -1377,7 +1377,7 @@ static int install_info_apply(
+ 
+ static int install_context_apply(
+                 InstallContext *c,
+-                LookupPaths *paths,
++                const LookupPaths *paths,
+                 const char *config_path,
+                 const char *root_dir,
+                 bool force,
+@@ -1424,7 +1424,7 @@ static int install_context_apply(
+ 
+ static int install_context_mark_for_removal(
+                 InstallContext *c,
+-                LookupPaths *paths,
++                const LookupPaths *paths,
+                 Set **remove_symlinks_to,
+                 const char *config_path,
+                 const char *root_dir) {
+@@ -1785,39 +1785,28 @@ int unit_file_get_default(
+         return -ENOENT;
+ }
+ 
+-UnitFileState unit_file_get_state(
++UnitFileState unit_file_lookup_state(
+                 UnitFileScope scope,
+                 const char *root_dir,
++                const LookupPaths *paths,
+                 const char *name) {
+ 
+-        _cleanup_lookup_paths_free_ LookupPaths paths = {};
+         UnitFileState state = _UNIT_FILE_STATE_INVALID;
+         char **i;
+         _cleanup_free_ char *path = NULL;
+         int r;
+ 
+-        assert(scope >= 0);
+-        assert(scope < _UNIT_FILE_SCOPE_MAX);
+-        assert(name);
+-
+-        if (root_dir && scope != UNIT_FILE_SYSTEM)
+-                return -EINVAL;
++        assert(paths);
+ 
+         if (!unit_name_is_valid(name, TEMPLATE_VALID))
+                 return -EINVAL;
+ 
+-        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
+-        if (r < 0)
+-                return r;
+-
+-        STRV_FOREACH(i, paths.unit_path) {
++        STRV_FOREACH(i, paths->unit_path) {
+                 struct stat st;
+                 char *partial;
+                 bool also = false;
+ 
+                 free(path);
+-                path = NULL;
+-
+                 path = path_join(root_dir, *i, name);
+                 if (!path)
+                         return -ENOMEM;
+@@ -1858,7 +1847,7 @@ UnitFileState unit_file_get_state(
+                 else if (r > 0)
+                         return state;
+ 
+-                r = unit_file_can_install(&paths, root_dir, partial, true, &also);
++                r = unit_file_can_install(paths, root_dir, partial, true, &also);
+                 if (r < 0 && errno != ENOENT)
+                         return r;
+                 else if (r > 0)
+@@ -1873,6 +1862,28 @@ UnitFileState unit_file_get_state(
+         return r < 0 ? r : state;
+ }
+ 
++UnitFileState unit_file_get_state(
++                UnitFileScope scope,
++                const char *root_dir,
++                const char *name) {
++
++        _cleanup_lookup_paths_free_ LookupPaths paths = {};
++        int r;
++
++        assert(scope >= 0);
++        assert(scope < _UNIT_FILE_SCOPE_MAX);
++        assert(name);
++
++        if (root_dir && scope != UNIT_FILE_SYSTEM)
++                return -EINVAL;
++
++        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
++        if (r < 0)
++                return r;
++
++        return unit_file_lookup_state(scope, root_dir, &paths, name);
++}
++
+ int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char *name) {
+         _cleanup_strv_free_ char **files = NULL;
+         char **p;
+diff --git a/src/shared/install.h b/src/shared/install.h
+index 357be0f..3ca3939 100644
+--- a/src/shared/install.h
++++ b/src/shared/install.h
+@@ -23,6 +23,7 @@
+ 
+ #include "hashmap.h"
+ #include "unit-name.h"
++#include "path-lookup.h"
+ 
+ typedef enum UnitFileScope {
+         UNIT_FILE_SYSTEM,
+@@ -98,7 +99,15 @@ int unit_file_set_default(UnitFileScope scope, const char *root_dir, const char
+ int unit_file_get_default(UnitFileScope scope, const char *root_dir, char **name);
+ int unit_file_add_dependency(UnitFileScope scope, bool runtime, const char *root_dir, char **files, char *target, UnitDependency dep, bool force, UnitFileChange **changes, unsigned *n_changes);
+ 
+-UnitFileState unit_file_get_state(UnitFileScope scope, const char *root_dir, const char *filename);
++UnitFileState unit_file_lookup_state(
++                UnitFileScope scope,
++                const char *root_dir,
++                const LookupPaths *paths,
++                const char *name);
++UnitFileState unit_file_get_state(
++                UnitFileScope scope,
++                const char *root_dir,
++                const char *filename);
+ 
+ int unit_file_get_list(UnitFileScope scope, const char *root_dir, Hashmap *h);
+ 
+diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
+index 291a2f4..812730b 100644
+--- a/src/shared/path-lookup.c
++++ b/src/shared/path-lookup.c
+@@ -31,6 +31,7 @@
+ #include "strv.h"
+ #include "path-util.h"
+ #include "path-lookup.h"
++#include "install.h"
+ 
+ int user_config_home(char **config_home) {
+         const char *e;
+diff --git a/src/shared/path-lookup.h b/src/shared/path-lookup.h
+index 2ec888d..f1925ee 100644
+--- a/src/shared/path-lookup.h
++++ b/src/shared/path-lookup.h
+@@ -22,7 +22,8 @@
+ ***/
+ 
+ #include "macro.h"
+-#include "install.h"
++
++typedef enum UnitFileScope UnitFileScope;
+ 
+ typedef struct LookupPaths {
+         char **unit_path;
+diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c
+index 6e39b44..0125ca2 100644
+--- a/src/sysv-generator/sysv-generator.c
++++ b/src/sysv-generator/sysv-generator.c
+@@ -723,10 +723,10 @@ static int fix_order(SysvStub *s, Hashmap *all_services) {
+         return 0;
+ }
+ 
+-static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) {
++static int enumerate_sysv(const LookupPaths *lp, Hashmap *all_services) {
+         char **path;
+ 
+-        STRV_FOREACH(path, lp.sysvinit_path) {
++        STRV_FOREACH(path, lp->sysvinit_path) {
+                 _cleanup_closedir_ DIR *d = NULL;
+                 struct dirent *de;
+ 
+@@ -768,7 +768,7 @@ static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) {
+                         if (!fpath)
+                                 return log_oom();
+ 
+-                        if (unit_file_get_state(UNIT_FILE_SYSTEM, NULL, name) >= 0) {
++                        if (unit_file_lookup_state(UNIT_FILE_SYSTEM, NULL, lp, name) >= 0) {
+                                 log_debug("Native unit for %s already exists, skipping", name);
+                                 continue;
+                         }
+@@ -793,7 +793,7 @@ static int enumerate_sysv(LookupPaths lp, Hashmap *all_services) {
+         return 0;
+ }
+ 
+-static int set_dependencies_from_rcnd(LookupPaths lp, Hashmap *all_services) {
++static int set_dependencies_from_rcnd(const LookupPaths *lp, Hashmap *all_services) {
+         char **p;
+         unsigned i;
+         _cleanup_closedir_ DIR *d = NULL;
+@@ -804,7 +804,7 @@ static int set_dependencies_from_rcnd(LookupPaths lp, Hashmap *all_services) {
+         _cleanup_set_free_ Set *shutdown_services = NULL;
+         int r = 0;
+ 
+-        STRV_FOREACH(p, lp.sysvrcnd_path)
++        STRV_FOREACH(p, lp->sysvrcnd_path)
+                 for (i = 0; i < ELEMENTSOF(rcnd_table); i ++) {
+                         struct dirent *de;
+ 
+@@ -954,13 +954,13 @@ int main(int argc, char *argv[]) {
+                 return EXIT_FAILURE;
+         }
+ 
+-        r = enumerate_sysv(lp, all_services);
++        r = enumerate_sysv(&lp, all_services);
+         if (r < 0) {
+                 log_error("Failed to generate units for all init scripts.");
+                 return EXIT_FAILURE;
+         }
+ 
+-        r = set_dependencies_from_rcnd(lp, all_services);
++        r = set_dependencies_from_rcnd(&lp, all_services);
+         if (r < 0) {
+                 log_error("Failed to read runlevels from rcnd links.");
+                 return EXIT_FAILURE;
diff --git a/SOURCES/0113-core-do-not-use-quotes-around-virt-and-arch.patch b/SOURCES/0113-core-do-not-use-quotes-around-virt-and-arch.patch
new file mode 100644
index 0000000..af42855
--- /dev/null
+++ b/SOURCES/0113-core-do-not-use-quotes-around-virt-and-arch.patch
@@ -0,0 +1,31 @@
+From f7ef062a0fb0dd0a6560d00e579c496e164a1c85 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 21:49:10 -0400
+Subject: [PATCH] core: do not use quotes around virt and arch
+
+Quotes are useful when the string can contain spaces or be otherwise
+confusing. Not possible with those two.
+
+(cherry picked from commit d3f86679783aee216d60b125acfb5f39a0df555f)
+---
+ src/core/main.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index ba2de85..fd527d4 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -1537,11 +1537,11 @@ int main(int argc, char *argv[]) {
+ 
+                 detect_virtualization(&virtualization);
+                 if (virtualization)
+-                        log_info("Detected virtualization '%s'.", virtualization);
++                        log_info("Detected virtualization %s.", virtualization);
+ 
+                 write_container_id();
+ 
+-                log_info("Detected architecture '%s'.", architecture_to_string(uname_architecture()));
++                log_info("Detected architecture %s.", architecture_to_string(uname_architecture()));
+ 
+                 if (in_initrd())
+                         log_info("Running in initial RAM disk.");
diff --git a/SOURCES/0113-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/SOURCES/0113-hwdb-Update-database-of-Bluetooth-company-identifier.patch
deleted file mode 100644
index 0d0176a..0000000
--- a/SOURCES/0113-hwdb-Update-database-of-Bluetooth-company-identifier.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-From 99e5a2d023c6651d76f5a5d36fa8b0400dd3720a Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Fri, 29 Nov 2013 07:26:47 -0800
-Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
-
----
- hwdb/20-bluetooth-vendor-product.hwdb | 109 +++++++++++++++++++++++++++++++++-
- 1 file changed, 107 insertions(+), 2 deletions(-)
-
-diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
-index faecf42..dcc25bb 100644
---- a/hwdb/20-bluetooth-vendor-product.hwdb
-+++ b/hwdb/20-bluetooth-vendor-product.hwdb
-@@ -366,6 +366,9 @@ bluetooth:v0077*
- bluetooth:v0078*
-  ID_VENDOR_FROM_DATABASE=Nike, Inc.
- 
-+bluetooth:v0078p0001*
-+ ID_PRODUCT_FROM_DATABASE=Nike+ FuelBand
-+
- bluetooth:v0079*
-  ID_VENDOR_FROM_DATABASE=lesswire AG
- 
-@@ -457,7 +460,7 @@ bluetooth:v0096*
-  ID_VENDOR_FROM_DATABASE=ODM Technology, Inc.
- 
- bluetooth:v0097*
-- ID_VENDOR_FROM_DATABASE=Bluetrek Technologies Limited
-+ ID_VENDOR_FROM_DATABASE=ConnecteDevice Ltd.
- 
- bluetooth:v0098*
-  ID_VENDOR_FROM_DATABASE=zer01.tv GmbH
-@@ -634,7 +637,7 @@ bluetooth:v00D2*
-  ID_VENDOR_FROM_DATABASE=Dialog Semiconductor B.V.
- 
- bluetooth:v00D3*
-- ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD.
-+ ID_VENDOR_FROM_DATABASE=Taixingbang Technology (HK) Co,. LTD.
- 
- bluetooth:v00D4*
-  ID_VENDOR_FROM_DATABASE=Kawantech
-@@ -716,3 +719,105 @@ bluetooth:v00ED*
- 
- bluetooth:v00EE*
-  ID_VENDOR_FROM_DATABASE=Above Average Outcomes, Inc.
-+
-+bluetooth:v00EF*
-+ ID_VENDOR_FROM_DATABASE=Bitsplitters GmbH
-+
-+bluetooth:v00F0*
-+ ID_VENDOR_FROM_DATABASE=PayPal, Inc.
-+
-+bluetooth:v00F1*
-+ ID_VENDOR_FROM_DATABASE=Witron Technology Limited
-+
-+bluetooth:v00F2*
-+ ID_VENDOR_FROM_DATABASE=Morse Project Inc.
-+
-+bluetooth:v00F3*
-+ ID_VENDOR_FROM_DATABASE=Kent Displays Inc.
-+
-+bluetooth:v00F4*
-+ ID_VENDOR_FROM_DATABASE=Nautilus Inc.
-+
-+bluetooth:v00F5*
-+ ID_VENDOR_FROM_DATABASE=Smartifier Oy
-+
-+bluetooth:v00F6*
-+ ID_VENDOR_FROM_DATABASE=Elcometer Limited
-+
-+bluetooth:v00F7*
-+ ID_VENDOR_FROM_DATABASE=VSN Technologies Inc.
-+
-+bluetooth:v00F8*
-+ ID_VENDOR_FROM_DATABASE=AceUni Corp., Ltd.
-+
-+bluetooth:v00F9*
-+ ID_VENDOR_FROM_DATABASE=StickNFind
-+
-+bluetooth:v00FA*
-+ ID_VENDOR_FROM_DATABASE=Crystal Code AB
-+
-+bluetooth:v00FB*
-+ ID_VENDOR_FROM_DATABASE=KOUKAAM a.s.
-+
-+bluetooth:v00FC*
-+ ID_VENDOR_FROM_DATABASE=Delphi Corporation
-+
-+bluetooth:v00FD*
-+ ID_VENDOR_FROM_DATABASE=ValenceTech Limited
-+
-+bluetooth:v00FE*
-+ ID_VENDOR_FROM_DATABASE=Reserved
-+
-+bluetooth:v00FF*
-+ ID_VENDOR_FROM_DATABASE=Typo Products, LLC
-+
-+bluetooth:v0100*
-+ ID_VENDOR_FROM_DATABASE=TomTom International BV
-+
-+bluetooth:v0101*
-+ ID_VENDOR_FROM_DATABASE=Fugoo, Inc
-+
-+bluetooth:v0102*
-+ ID_VENDOR_FROM_DATABASE=Keiser Corporation
-+
-+bluetooth:v0103*
-+ ID_VENDOR_FROM_DATABASE=Bang & Olufsen A/S
-+
-+bluetooth:v0104*
-+ ID_VENDOR_FROM_DATABASE=PLUS Locations Systems Pty Ltd
-+
-+bluetooth:v0105*
-+ ID_VENDOR_FROM_DATABASE=Ubiquitous Computing Technology Corporation
-+
-+bluetooth:v0106*
-+ ID_VENDOR_FROM_DATABASE=Innovative Yachtter Solutions
-+
-+bluetooth:v0107*
-+ ID_VENDOR_FROM_DATABASE=William Demant Holding A/S
-+
-+bluetooth:v0108*
-+ ID_VENDOR_FROM_DATABASE=Chicony Electronics Co., Ltd.
-+
-+bluetooth:v0109*
-+ ID_VENDOR_FROM_DATABASE=Atus BV
-+
-+bluetooth:v010A*
-+ ID_VENDOR_FROM_DATABASE=Codegate Ltd.
-+
-+bluetooth:v010B*
-+ ID_VENDOR_FROM_DATABASE=ERi, Inc.
-+
-+bluetooth:v010C*
-+ ID_VENDOR_FROM_DATABASE=Transducers Direct, LLC
-+
-+bluetooth:v010D*
-+ ID_VENDOR_FROM_DATABASE=Fujitsu Ten Limited
-+
-+bluetooth:v010E*
-+ ID_VENDOR_FROM_DATABASE=Audi AG
-+
-+bluetooth:v010F*
-+ ID_VENDOR_FROM_DATABASE=HiSilicon Technologies Co., Ltd.
-+
-+bluetooth:v0110*
-+ ID_VENDOR_FROM_DATABASE=Nippon Seiki Co., Ltd.
diff --git a/SOURCES/0114-journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch b/SOURCES/0114-journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch
deleted file mode 100644
index a164ad5..0000000
--- a/SOURCES/0114-journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From d57b2e82e42d68555c92da2b19e07dbfdd74ab12 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 3 Dec 2013 08:07:32 -0500
-Subject: [PATCH] journal: fail silently in sd_j_sendv() if journal is
- unavailable
-
-"syslog(3) and sd_journal_print() may largely be used interchangeably
-functionality-wise" according to sd_journal_print(3). This socket
-should be always available except in rare circumstatances, and we
-don't random applications to fail on logging, so let's do what syslog
-did. The alternative of forcing all callers to do error handling for
-this rare case doesn't really have any benefits, since if they can't
-log there isn't much they can do anyway.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1023041
----
- src/journal/journal-send.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
-index d00e26f..d99ff0c 100644
---- a/src/journal/journal-send.c
-+++ b/src/journal/journal-send.c
-@@ -305,6 +305,10 @@ _public_ int sd_journal_sendv(const struct iovec *iov, int n) {
-         if (k >= 0)
-                 return 0;
- 
-+        /* Fail silently if the journal is not available */
-+        if (errno == ENOENT)
-+                return 0;
-+
-         if (errno != EMSGSIZE && errno != ENOBUFS)
-                 return -errno;
- 
diff --git a/SOURCES/0114-udev-downgrade-has-devpath-and-filled-with-db-file-m.patch b/SOURCES/0114-udev-downgrade-has-devpath-and-filled-with-db-file-m.patch
new file mode 100644
index 0000000..097bfce
--- /dev/null
+++ b/SOURCES/0114-udev-downgrade-has-devpath-and-filled-with-db-file-m.patch
@@ -0,0 +1,37 @@
+From b69fafa98f1185c4e95c350aac833fdae7de0612 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 22:22:49 -0400
+Subject: [PATCH] udev: downgrade "has devpath" and "filled with db file"
+ messages
+
+Udev debug messages have to be significantly overhauled... For now
+just downgrade those two. They are responsible for approximately 25%
+of debug output during boot and are rather useless.
+
+(cherry picked from commit cdd45c1ffbf790facd1817757832aa25d9211967)
+---
+ src/libudev/libudev-device.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c
+index 9863901..e408942 100644
+--- a/src/libudev/libudev-device.c
++++ b/src/libudev/libudev-device.c
+@@ -613,7 +613,7 @@ int udev_device_read_db(struct udev_device *udev_device, const char *dbfile)
+         }
+         fclose(f);
+ 
+-        log_debug("device %p filled with db file data", udev_device);
++        log_trace("device %p filled with db file data", udev_device);
+         return 0;
+ }
+ 
+@@ -775,7 +775,7 @@ _public_ struct udev_device *udev_device_new_from_syspath(struct udev *udev, con
+                 return NULL;
+ 
+         udev_device_set_syspath(udev_device, path);
+-        log_debug("device %p has devpath '%s'", udev_device, udev_device_get_devpath(udev_device));
++        log_trace("device %p has devpath '%s'", udev_device, udev_device_get_devpath(udev_device));
+ 
+         return udev_device;
+ }
diff --git a/SOURCES/0115-Fix-memory-leak-in-stdout-journal-streams.patch b/SOURCES/0115-Fix-memory-leak-in-stdout-journal-streams.patch
deleted file mode 100644
index 186952d..0000000
--- a/SOURCES/0115-Fix-memory-leak-in-stdout-journal-streams.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From ac67da03ebc56ab45b3fbb166fe961cb753d2777 Mon Sep 17 00:00:00 2001
-From: Dan McGee <dan@archlinux.org>
-Date: Sun, 8 Dec 2013 14:33:45 -0600
-Subject: [PATCH] Fix memory leak in stdout journal streams
-
-Just as 'identifier' is strdup-ed and freed, we need to do the same for
-unit_id.
----
- src/journal/journald-stream.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
-index 9c4efec..4080622 100644
---- a/src/journal/journald-stream.c
-+++ b/src/journal/journald-stream.c
-@@ -339,6 +339,7 @@ void stdout_stream_free(StdoutStream *s) {
- #endif
- 
-         free(s->identifier);
-+        free(s->unit_id);
-         free(s);
- }
- 
diff --git a/SOURCES/0115-cryptsetup-generator-remove-warning-about-crypttab-a.patch b/SOURCES/0115-cryptsetup-generator-remove-warning-about-crypttab-a.patch
new file mode 100644
index 0000000..c890cfb
--- /dev/null
+++ b/SOURCES/0115-cryptsetup-generator-remove-warning-about-crypttab-a.patch
@@ -0,0 +1,36 @@
+From d066c82a5a5c63c50617be27409ae0bb4bd3a356 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 22:35:30 -0400
+Subject: [PATCH] cryptsetup-generator: remove warning about crypttab access
+ mode
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This file contains no privileged data — just names of devices to decrypt
+and files containing keys. On a running system most of this can be inferred from
+the device tree anyway.
+
+(cherry picked from commit 71e4e1258436e7e81d772aed52a02bb5d9c87cb8)
+---
+ src/cryptsetup/cryptsetup-generator.c | 7 -------
+ 1 file changed, 7 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c
+index dfbca87..d191def 100644
+--- a/src/cryptsetup/cryptsetup-generator.c
++++ b/src/cryptsetup/cryptsetup-generator.c
+@@ -377,13 +377,6 @@ static int add_crypttab_devices(void) {
+                 return 0;
+         }
+ 
+-        /* If we readd support for specifying passphrases
+-         * directly in crypttab we should upgrade the warning
+-         * below, though possibly only if a passphrase is
+-         * specified directly. */
+-        if (st.st_mode & 0005)
+-                log_debug("/etc/crypttab is world-readable. This is usually not a good idea.");
+-
+         for (;;) {
+                 int r, k;
+                 char line[LINE_MAX], *l, *uuid;
diff --git a/SOURCES/0116-man-document-is-enabled-output.patch b/SOURCES/0116-man-document-is-enabled-output.patch
deleted file mode 100644
index f4c79d8..0000000
--- a/SOURCES/0116-man-document-is-enabled-output.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From ce006689117c3226ddb0eb5a1f8e5963cab1c92a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 8 Dec 2013 18:56:16 -0500
-Subject: [PATCH] man: document 'is-enabled' output
-
-https://bugzilla.redhat.com/show_bug.cgi?id=953077
----
- man/systemctl.xml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
- 1 file changed, 59 insertions(+), 5 deletions(-)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index 166282c..b4bc15d 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -437,7 +437,7 @@ systemctl start foo
- 
-         <listitem>
-           <para>When used with <command>enable</command>,
--          <command>disable</command>, <command>is-enabled</command>
-+          <command>disable</command>,
-           (and related commands), make changes only temporarily, so
-           that they are lost on the next reboot. This will have the
-           effect that changes are not made in subdirectories of
-@@ -885,10 +885,64 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
- 
-           <listitem>
-             <para>Checks whether any of the specified unit files are
--            enabled (as with <command>enable</command>). Returns an exit
--            code of 0 if at least one is enabled, non-zero
--            otherwise. Prints the current enable status. To suppress
--            this output, use <option>--quiet</option>.</para>
-+            enabled (as with <command>enable</command>). Returns an
-+            exit code of 0 if at least one is enabled, non-zero
-+            otherwise. Prints the current enable status (see table).
-+            To suppress this output, use <option>--quiet</option>.
-+            </para>
-+
-+            <table>
-+              <title>
-+                <command>is-enabled</command> output
-+              </title>
-+
-+              <tgroup cols='3'>
-+                <thead>
-+                  <row>
-+                    <entry>Printed string</entry>
-+                    <entry>Meaning</entry>
-+                    <entry>Return value</entry>
-+                  </row>
-+                </thead>
-+                <tbody>
-+                  <row>
-+                    <entry><literal>enabled</literal></entry>
-+                    <entry morerows='1'>Enabled through a symlink in <filename>.wants</filename> directory (permanently or just in <filename>/run</filename>)</entry>
-+                    <entry morerows='1'>0</entry>
-+                  </row>
-+                  <row>
-+                    <entry><literal>enabled-runtime</literal></entry>
-+                  </row>
-+                  <row>
-+                    <entry><literal>linked</literal></entry>
-+                    <entry morerows='1'>Made available through a symlink to the unit file (permanently or just in <filename>/run</filename>)</entry>
-+                    <entry morerows='1'>1</entry>
-+                  </row>
-+                  <row>
-+                    <entry><literal>linked-runtime</literal></entry>
-+                  </row>
-+                  <row>
-+                    <entry><literal>masked</literal></entry>
-+                    <entry morerows='1'>Disabled entirely (permanently or just in <filename>/run</filename>)</entry>
-+                    <entry morerows='1'>1</entry>
-+                  </row>
-+                  <row>
-+                    <entry><literal>masked-runtime</literal></entry>
-+                  </row>
-+                  <row>
-+                    <entry><literal>static</literal></entry>
-+                    <entry>Unit is not enabled, but has no provisions for enabling in [Install] section</entry>
-+                    <entry>1</entry>
-+                  </row>
-+                  <row>
-+                    <entry><literal>disabled</literal></entry>
-+                    <entry>Unit is not enabled</entry>
-+                    <entry>1</entry>
-+                  </row>
-+                </tbody>
-+              </tgroup>
-+            </table>
-+
-           </listitem>
-         </varlistentry>
- 
diff --git a/SOURCES/0116-sysctl-tweak-debug-message.patch b/SOURCES/0116-sysctl-tweak-debug-message.patch
new file mode 100644
index 0000000..5dbbfcf
--- /dev/null
+++ b/SOURCES/0116-sysctl-tweak-debug-message.patch
@@ -0,0 +1,23 @@
+From bea8dcb307f5978590d7371005eac46e20b29701 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 14 Mar 2015 22:56:01 -0400
+Subject: [PATCH] sysctl: tweak debug message
+
+(cherry picked from commit 924bc14fef39373f4523664207007a6c82c2b2d5)
+---
+ src/sysctl/sysctl.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
+index b6945ed..4fb293b 100644
+--- a/src/sysctl/sysctl.c
++++ b/src/sysctl/sysctl.c
+@@ -121,7 +121,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
+                 return log_error_errno(r, "Failed to open file '%s', ignoring: %m", path);
+         }
+ 
+-        log_debug("parse: %s", path);
++        log_debug("Parsing %s", path);
+         while (!feof(f)) {
+                 char l[LINE_MAX], *p, *value, *new_value, *property, *existing;
+                 void *v;
diff --git a/SOURCES/0117-hostnamed-avoid-using-NULL-in-error-path.patch b/SOURCES/0117-hostnamed-avoid-using-NULL-in-error-path.patch
deleted file mode 100644
index 0833384..0000000
--- a/SOURCES/0117-hostnamed-avoid-using-NULL-in-error-path.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 7722552d5eade35dbb6c433e82774fcd2e157232 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 6 Jan 2014 12:16:55 +0000
-Subject: [PATCH] hostnamed: avoid using NULL in error path
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1047335
----
- src/hostname/hostnamed.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c
-index 6a43aeb..0c24b65 100644
---- a/src/hostname/hostnamed.c
-+++ b/src/hostname/hostnamed.c
-@@ -637,7 +637,7 @@ static int connect_bus(DBusConnection **_bus) {
-         if (!bus) {
-                 log_error("Failed to get system D-Bus connection: %s", bus_error_message(&error));
-                 r = -ECONNREFUSED;
--                goto fail;
-+                goto fail2;
-         }
- 
-         dbus_connection_set_exit_on_disconnect(bus, FALSE);
-@@ -669,7 +669,7 @@ static int connect_bus(DBusConnection **_bus) {
- fail:
-         dbus_connection_close(bus);
-         dbus_connection_unref(bus);
--
-+fail2:
-         dbus_error_free(&error);
- 
-         return r;
diff --git a/SOURCES/0117-journald-add-syslog-fields-for-audit-messages.patch b/SOURCES/0117-journald-add-syslog-fields-for-audit-messages.patch
new file mode 100644
index 0000000..445441c
--- /dev/null
+++ b/SOURCES/0117-journald-add-syslog-fields-for-audit-messages.patch
@@ -0,0 +1,39 @@
+From 5e565da856cf4cf919ed1045b01ab461c586395a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 4 Mar 2015 10:31:42 -0500
+Subject: [PATCH] journald: add syslog fields for audit messages
+
+Audit messages would be displayed as "unknown[1]".
+
+Also specify AUTH as facility... This seems to be the closest match
+(/* security/authorization messages */).
+
+(cherry picked from commit cd556b6ca8aec8dd371806afedec45f852f8f724)
+---
+ src/journal/journald-audit.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c
+index 151097a..77abe2e 100644
+--- a/src/journal/journald-audit.c
++++ b/src/journal/journald-audit.c
+@@ -373,7 +373,7 @@ static void process_audit_string(Server *s, int type, const char *data, size_t s
+         if (isempty(p))
+                 return;
+ 
+-        n_iov_allocated = N_IOVEC_META_FIELDS + 5;
++        n_iov_allocated = N_IOVEC_META_FIELDS + 7;
+         iov = new(struct iovec, n_iov_allocated);
+         if (!iov) {
+                 log_oom();
+@@ -392,6 +392,10 @@ static void process_audit_string(Server *s, int type, const char *data, size_t s
+         sprintf(id_field, "_AUDIT_ID=%" PRIu64, id);
+         IOVEC_SET_STRING(iov[n_iov++], id_field);
+ 
++        assert_cc(32 == LOG_AUTH);
++        IOVEC_SET_STRING(iov[n_iov++], "SYSLOG_FACILITY=32");
++        IOVEC_SET_STRING(iov[n_iov++], "SYSLOG_IDENTIFIER=audit");
++
+         m = alloca(strlen("MESSAGE=<audit-") + DECIMAL_STR_MAX(int) + strlen("> ") + strlen(p) + 1);
+         sprintf(m, "MESSAGE=<audit-%i> %s", type, p);
+         IOVEC_SET_STRING(iov[n_iov++], m);
diff --git a/SOURCES/0118-core-do-not-segfault-if-swap-activity-happens-when-p.patch b/SOURCES/0118-core-do-not-segfault-if-swap-activity-happens-when-p.patch
deleted file mode 100644
index 2e0f1ad..0000000
--- a/SOURCES/0118-core-do-not-segfault-if-swap-activity-happens-when-p.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 80b37e95f732ab5de22fda0d8d14c7d58ac29877 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 12 Jan 2014 11:38:56 -0500
-Subject: [PATCH] core: do not segfault if swap activity happens when
- /proc/swaps is not open
-
-In https://bugzilla.redhat.com/show_bug.cgi?id=969795 systemd crashes
-in swap_dispatch_reload called from manager_loop becuase m->proc_swaps
-is NULL. It can legitimately be NULL if something went wrong when
-initially enumerating swap devices when starting the manager. This
-is probably a sign of significant trouble, but let's do our best
-to recover.
----
- src/core/swap.c | 45 +++++++++++++++++++++++++++++----------------
- 1 file changed, 29 insertions(+), 16 deletions(-)
-
-diff --git a/src/core/swap.c b/src/core/swap.c
-index 147f710..f295b65 100644
---- a/src/core/swap.c
-+++ b/src/core/swap.c
-@@ -1068,14 +1068,40 @@ static int swap_load_proc_swaps(Manager *m, bool set_flags) {
-         return r;
- }
- 
-+static int open_proc_swaps(Manager *m) {
-+        if (!m->proc_swaps) {
-+                struct epoll_event ev = {
-+                        .events = EPOLLPRI,
-+                        .data.ptr = &m->swap_watch,
-+                };
-+
-+                m->proc_swaps = fopen("/proc/swaps", "re");
-+                if (!m->proc_swaps)
-+                        return (errno == ENOENT) ? 0 : -errno;
-+
-+                m->swap_watch.type = WATCH_SWAP;
-+                m->swap_watch.fd = fileno(m->proc_swaps);
-+
-+                if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->swap_watch.fd, &ev) < 0)
-+                        return -errno;
-+        }
-+
-+        return 0;
-+}
-+
- int swap_dispatch_reload(Manager *m) {
-         /* This function should go as soon as the kernel properly notifies us */
-+        int r;
- 
-         if (_likely_(!m->request_reload))
-                 return 0;
- 
-         m->request_reload = false;
- 
-+        r = open_proc_swaps(m);
-+        if (r < 0)
-+                return r;
-+
-         return swap_fd_event(m, EPOLLPRI);
- }
- 
-@@ -1225,22 +1251,9 @@ static int swap_enumerate(Manager *m) {
-         int r;
-         assert(m);
- 
--        if (!m->proc_swaps) {
--                struct epoll_event ev = {
--                        .events = EPOLLPRI,
--                        .data.ptr = &m->swap_watch,
--                };
--
--                m->proc_swaps = fopen("/proc/swaps", "re");
--                if (!m->proc_swaps)
--                        return (errno == ENOENT) ? 0 : -errno;
--
--                m->swap_watch.type = WATCH_SWAP;
--                m->swap_watch.fd = fileno(m->proc_swaps);
--
--                if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->swap_watch.fd, &ev) < 0)
--                        return -errno;
--        }
-+        r = open_proc_swaps(m);
-+        if (r < 0)
-+                return r;
- 
-         r = swap_load_proc_swaps(m, false);
-         if (r < 0)
diff --git a/SOURCES/0118-core-remove-useless-debug-message.patch b/SOURCES/0118-core-remove-useless-debug-message.patch
new file mode 100644
index 0000000..6b942f2
--- /dev/null
+++ b/SOURCES/0118-core-remove-useless-debug-message.patch
@@ -0,0 +1,32 @@
+From 5efee680aa8f55c825be62e2e714f88d5c88066b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 15 Mar 2015 12:12:19 -0400
+Subject: [PATCH] core: remove useless debug message
+
+Mar 13 19:48:28 adam.happyassassin.net systemd[1]: Collecting (null)
+Mar 13 19:48:28 adam.happyassassin.net systemd[1]: Collecting (null)
+Mar 13 19:48:28 adam.happyassassin.net systemd[1]: Collecting (null)
+Mar 13 19:48:28 adam.happyassassin.net systemd[1]: Collecting (null)
+Mar 13 19:48:28 adam.happyassassin.net systemd[1]: Collecting (null)
+Mar 13 19:48:28 adam.happyassassin.net systemd[1]: Collecting (null)
+Mar 13 19:48:28 adam.happyassassin.net systemd[1]: Collecting (null)
+
+(cherry picked from commit cc3bc3e6203e0c615e31b8b68796362e1385f28a)
+---
+ src/core/manager.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/manager.c b/src/core/manager.c
+index 203a6a0..7483a96 100644
+--- a/src/core/manager.c
++++ b/src/core/manager.c
+@@ -844,7 +844,8 @@ static unsigned manager_dispatch_gc_queue(Manager *m) {
+ 
+                 if (u->gc_marker == gc_marker + GC_OFFSET_BAD ||
+                     u->gc_marker == gc_marker + GC_OFFSET_UNSURE) {
+-                        log_unit_debug(u->id, "Collecting %s", u->id);
++                        if (u->id)
++                                log_unit_debug(u->id, "Collecting %s", u->id);
+                         u->gc_marker = gc_marker + GC_OFFSET_BAD;
+                         unit_add_to_cleanup_queue(u);
+                 }
diff --git a/SOURCES/0119-kernel-install-add-h-help.patch b/SOURCES/0119-kernel-install-add-h-help.patch
deleted file mode 100644
index 43f033b..0000000
--- a/SOURCES/0119-kernel-install-add-h-help.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From ced01b28f5e44cc708ae7af681919e4dc83da169 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 8 Dec 2013 07:46:46 -0500
-Subject: [PATCH] kernel-install: add -h/--help
-
----
- src/kernel-install/kernel-install | 21 ++++++++++++++-------
- 1 file changed, 14 insertions(+), 7 deletions(-)
-
-diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
-index 9d3e75d..f5ff362 100644
---- a/src/kernel-install/kernel-install
-+++ b/src/kernel-install/kernel-install
-@@ -21,9 +21,9 @@
- 
- usage()
- {
--    echo "Usage:" >&2
--    echo "        $0 add <kernel-version> <kernel-image>" >&2
--    echo "        $0 remove <kernel-version> <kernel-image>" >&2
-+    echo "Usage:"
-+    echo "        $0 add KERNEL-VERSION KERNEL-IMAGE"
-+    echo "        $0 remove KERNEL-VERSION KERNEL-IMAGE"
- }
- 
- dropindirs_sort()
-@@ -54,6 +54,13 @@ dropindirs_sort()
- 
- export LC_COLLATE=C
- 
-+for i in "$@"; do
-+    if [ "$i" == "--help" -o "$i" == "-h" ]; then
-+        usage
-+        exit 0
-+    fi
-+done
-+
- if [[ "${0##*/}" == 'installkernel' ]]; then
-     COMMAND='add'
- else
-@@ -75,7 +82,7 @@ if ! [[ $MACHINE_ID ]]; then
- fi
- 
- if [[ ! $COMMAND ]] || [[ ! $KERNEL_VERSION ]]; then
--    usage
-+    echo "Not enough arguments" >&2
-     exit 1
- fi
- 
-@@ -90,8 +97,8 @@ readarray -t PLUGINS < <(
- 
- case $COMMAND in
-     add)
--        if [[ ! $KERNEL_IMAGE ]]; then
--            usage
-+        if [[ ! "$KERNEL_IMAGE" ]]; then
-+            echo "Command 'add' requires an argument" >&2
-             exit 1
-         fi
- 
-@@ -121,7 +128,7 @@ case $COMMAND in
-         ;;
- 
-     *)
--        usage
-+        echo "Unknown command '$COMMAND'" >&2
-         exit 1
-         ;;
- esac
diff --git a/SOURCES/0119-man-standard-conf-change-directory-reference-to-wild.patch b/SOURCES/0119-man-standard-conf-change-directory-reference-to-wild.patch
new file mode 100644
index 0000000..ec222e8
--- /dev/null
+++ b/SOURCES/0119-man-standard-conf-change-directory-reference-to-wild.patch
@@ -0,0 +1,23 @@
+From 6cf5c5d46e6eb06411dd8b180d3f1b3de1f93652 Mon Sep 17 00:00:00 2001
+From: Alison Chaiken <alison_chaiken@mentor.com>
+Date: Sun, 15 Mar 2015 16:26:14 -0700
+Subject: [PATCH] man: standard-conf: change directory reference to wildcard
+
+(cherry picked from commit 1d940aa32913c108e0282ebd359b2eb999ffeadf)
+---
+ man/standard-conf.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/standard-conf.xml b/man/standard-conf.xml
+index 36af459..004f53f 100644
+--- a/man/standard-conf.xml
++++ b/man/standard-conf.xml
+@@ -54,7 +54,7 @@
+     directories, and has the lowest precedence; entries in a file in
+     any configuration directory override entries in the single
+     configuration file. Files in the
+-    <filename>logind.conf.d/</filename> configuration subdirectories
++    <filename>*.conf.d/</filename> configuration subdirectories
+     are sorted by their filename in lexicographic order, regardless of
+     which of the subdirectories they reside in. If multiple files
+     specify the same option, the entry in the file with the
diff --git a/SOURCES/0120-core-don-t-change-removed-devices-to-state-tentative.patch b/SOURCES/0120-core-don-t-change-removed-devices-to-state-tentative.patch
new file mode 100644
index 0000000..9a27748
--- /dev/null
+++ b/SOURCES/0120-core-don-t-change-removed-devices-to-state-tentative.patch
@@ -0,0 +1,33 @@
+From 8e184ad6e23a8248e149cd5bf4f9bf56089a6dd1 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri, 13 Mar 2015 08:35:59 +0100
+Subject: [PATCH] core: don't change removed devices to state "tentative"
+
+Commit 628c89c introduced the "tentative" device state, which caused
+devices to go from "plugged" to "tentative" on a remove uevent. This
+breaks the cleanup of stale mounts (see commit 3b48ce4), as that only
+applies to "dead" devices.
+
+The "tentative" state only really makes sense on adding a device when
+we don't know where it was coming from (i. e. not from udev). But when
+we get a device removal from udev we definitively know that it's gone,
+so change the device state back to "dead" as before 628c89c.
+
+(cherry picked from commit 496068a8288084ab3ecf8b179a8403ecff1a6be8)
+---
+ src/core/device.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/device.c b/src/core/device.c
+index 4ff8827..cc4ebd2 100644
+--- a/src/core/device.c
++++ b/src/core/device.c
+@@ -421,7 +421,7 @@ static void device_update_found_one(Device *d, bool add, DeviceFound found, bool
+         if (now) {
+                 if (d->found & DEVICE_FOUND_UDEV)
+                         device_set_state(d, DEVICE_PLUGGED);
+-                else if (d->found != DEVICE_NOT_FOUND)
++                else if (add && d->found != DEVICE_NOT_FOUND)
+                         device_set_state(d, DEVICE_TENTATIVE);
+                 else
+                         device_set_state(d, DEVICE_DEAD);
diff --git a/SOURCES/0120-kernel-install-fix-help-output.patch b/SOURCES/0120-kernel-install-fix-help-output.patch
deleted file mode 100644
index 5fb2323..0000000
--- a/SOURCES/0120-kernel-install-fix-help-output.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 13279ea569e963ac8cd7062a33108c209b9e2308 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?S=C3=A9bastien=20Luttringer?= <seblu@seblu.net>
-Date: Thu, 5 Dec 2013 02:55:05 +0100
-Subject: [PATCH] kernel-install: fix help output
-
-Kernel install doesn't need the second argument on his command line when
-removing.
-This is correctly documented in the man page.
----
- src/kernel-install/kernel-install | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
-index f5ff362..3ae1d77 100644
---- a/src/kernel-install/kernel-install
-+++ b/src/kernel-install/kernel-install
-@@ -23,7 +23,7 @@ usage()
- {
-     echo "Usage:"
-     echo "        $0 add KERNEL-VERSION KERNEL-IMAGE"
--    echo "        $0 remove KERNEL-VERSION KERNEL-IMAGE"
-+    echo "        $0 remove KERNEL-VERSION"
- }
- 
- dropindirs_sort()
diff --git a/SOURCES/0121-fstab-generator-ignore-invalid-swap-priority.patch b/SOURCES/0121-fstab-generator-ignore-invalid-swap-priority.patch
new file mode 100644
index 0000000..92e32d5
--- /dev/null
+++ b/SOURCES/0121-fstab-generator-ignore-invalid-swap-priority.patch
@@ -0,0 +1,75 @@
+From e819659256d139cd5faebb5c0ca3ad4ad95ccb27 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 21 Mar 2015 11:31:16 -0400
+Subject: [PATCH] fstab-generator: ignore invalid swap priority
+
+A failed priority is not something worth stopping boot over. Most people
+have only one swap device, in which case priority is irrelevant, and even
+if there is more than one swap device, they are all usable, and ignoring the
+priority field should only result in some loss of performance.
+
+The kernel will report the priority as -1 if not set, so it's easy for
+people to make this mistake.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1204336
+(cherry picked from commit e0952d9d021234e79f3a70f33a9e5d201872a417)
+---
+ src/fstab-generator/fstab-generator.c | 23 ++++++++++++++++-------
+ 1 file changed, 16 insertions(+), 7 deletions(-)
+
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 5662b5f..8e2f522 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -54,9 +54,10 @@ static int add_swap(
+                 bool noauto,
+                 bool nofail) {
+ 
+-        _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL;
++        _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL, *filtered = NULL;
+         _cleanup_fclose_ FILE *f = NULL;
+         int r, pri = -1;
++        const char *opts;
+ 
+         assert(what);
+         assert(me);
+@@ -71,9 +72,17 @@ static int add_swap(
+                 return 0;
+         }
+ 
+-        r = fstab_find_pri(me->mnt_opts, &pri);
+-        if (r < 0)
+-                return log_error_errno(r, "Failed to parse priority: %m");
++        opts = me->mnt_opts;
++        r = fstab_find_pri(opts, &pri);
++        if (r < 0) {
++                log_error_errno(r, "Failed to parse priority, ignoring: %m");
++
++                /* Remove invalid pri field */
++                r = fstab_filter_options(opts, "pri\0", NULL, NULL, &filtered);
++                if (r < 0)
++                        return log_error_errno(r, "Failed to parse options: %m");
++                opts = filtered;
++        }
+ 
+         name = unit_name_from_path(what, ".swap");
+         if (!name)
+@@ -106,15 +115,15 @@ static int add_swap(
+         if (pri >= 0)
+                 fprintf(f, "Priority=%i\n", pri);
+ 
+-        if (!isempty(me->mnt_opts) && !streq(me->mnt_opts, "defaults"))
+-                fprintf(f, "Options=%s\n", me->mnt_opts);
++        if (!isempty(opts) && !streq(opts, "defaults"))
++                fprintf(f, "Options=%s\n", opts);
+ 
+         r = fflush_and_check(f);
+         if (r < 0)
+                 return log_error_errno(r, "Failed to write unit file %s: %m", unit);
+ 
+         /* use what as where, to have a nicer error message */
+-        r = generator_write_timeouts(arg_dest, what, what, me->mnt_opts, NULL);
++        r = generator_write_timeouts(arg_dest, what, what, opts, NULL);
+         if (r < 0)
+                 return r;
+ 
diff --git a/SOURCES/0121-man-improve-wording-and-comma-usage-in-systemd.journ.patch b/SOURCES/0121-man-improve-wording-and-comma-usage-in-systemd.journ.patch
deleted file mode 100644
index 5eb475b..0000000
--- a/SOURCES/0121-man-improve-wording-and-comma-usage-in-systemd.journ.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 4984e8c420d3e091d5e42094bbf5e38721702dad Mon Sep 17 00:00:00 2001
-From: "Jason St. John" <jstjohn@purdue.edu>
-Date: Tue, 10 Dec 2013 00:10:03 -0500
-Subject: [PATCH] man: improve wording and comma usage in
- systemd.journal-fields(7)
-
-Improve wording under "Description" and "_KERNEL_DEVICE="
----
- man/systemd.journal-fields.xml | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml
-index 8a15598..bb89ed5 100644
---- a/man/systemd.journal-fields.xml
-+++ b/man/systemd.journal-fields.xml
-@@ -51,14 +51,14 @@
-                 <title>Description</title>
- 
-                 <para>Entries in the journal resemble an environment
--                block in their syntax, however with fields that can
-+                block in their syntax but with fields that can
-                 include binary data. Primarily, fields are formatted
-                 UTF-8 text strings, and binary formatting is used only
-                 where formatting as UTF-8 text strings makes little
-                 sense. New fields may freely be defined by
-                 applications, but a few fields have special
-                 meaning. All fields with special meanings are
--                optional. In some cases fields may appear more than
-+                optional. In some cases, fields may appear more than
-                 once per entry.</para>
-         </refsect1>
- 
-@@ -176,7 +176,7 @@
-                                 <term><varname>_UID=</varname></term>
-                                 <term><varname>_GID=</varname></term>
-                                 <listitem>
--                                        <para>The process, user and
-+                                        <para>The process, user, and
-                                         group ID of the process the
-                                         journal entry originates from
-                                         formatted as a decimal
-@@ -190,7 +190,7 @@
-                                 <term><varname>_CMDLINE=</varname></term>
-                                 <listitem>
-                                         <para>The name, the executable
--                                        path and the command line of
-+                                        path, and the command line of
-                                         the process the journal entry
-                                         originates from.</para>
-                                 </listitem>
-@@ -389,12 +389,12 @@
-                                         the major and minor of the
-                                         device node, separated by <literal>:</literal>
-                                         and prefixed by <literal>b</literal>. Similar
--                                        for character devices, but
-+                                        for character devices but
-                                         prefixed by <literal>c</literal>. For network
--                                        devices the interface index,
-+                                        devices, this is the interface index
-                                         prefixed by <literal>n</literal>. For all other
--                                        devices <literal>+</literal> followed by the
--                                        subsystem name, followed by
-+                                        devices, this is the subsystem name
-+                                        prefixed by <literal>+</literal>, followed by
-                                         <literal>:</literal>, followed by the kernel
-                                         device name.</para>
-                                 </listitem>
diff --git a/SOURCES/0122-drop-several-entries-from-kbd-model-map-whose-kbd-la.patch b/SOURCES/0122-drop-several-entries-from-kbd-model-map-whose-kbd-la.patch
deleted file mode 100644
index 1d3fb33..0000000
--- a/SOURCES/0122-drop-several-entries-from-kbd-model-map-whose-kbd-la.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From b39fc4c896dffbe14d14b17dab68961027194856 Mon Sep 17 00:00:00 2001
-From: Adam Williamson <awilliam@redhat.com>
-Date: Mon, 9 Dec 2013 21:58:34 -0800
-Subject: [PATCH] drop several entries from kbd-model-map whose kbd layouts do
- not exist
-
-kbd-model-map was generated from system-config-keyboard's keyboard_models.py.
-Several of the kbd layouts referred in that file do not exist and, so far as I
-can tell, never did. I believe these entries existed simply to provide the xkb
-configuration information for those layouts, and there never were matching kbd
-entries; the kbd names were entirely notional, to satisfy the need for some
-entry or other in that field.
-
-For systemd, the only function of kbd-model-map is to 'match' kbd and xkb
-configurations, so it does not make any sense to maintain entries for cases
-where only one or the other exists in this context.
----
- src/locale/kbd-model-map | 12 ------------
- 1 file changed, 12 deletions(-)
-
-diff --git a/src/locale/kbd-model-map b/src/locale/kbd-model-map
-index 1fe9bca..78c7887 100644
---- a/src/locale/kbd-model-map
-+++ b/src/locale/kbd-model-map
-@@ -4,22 +4,18 @@ sg			ch	pc105		de_nodeadkeys	terminate:ctrl_alt_bksp
- nl			nl	pc105		-		terminate:ctrl_alt_bksp
- mk-utf			mk,us	pc105		-		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- trq			tr	pc105		-		terminate:ctrl_alt_bksp
--guj			in,us	pc105		guj		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- uk			gb	pc105		-		terminate:ctrl_alt_bksp
- is-latin1		is	pc105		-		terminate:ctrl_alt_bksp
- de			de	pc105		-		terminate:ctrl_alt_bksp
--gur			gur,us	pc105		-		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- la-latin1		latam	pc105		-		terminate:ctrl_alt_bksp
- us			us	pc105+inet	-		terminate:ctrl_alt_bksp
- ko			kr	pc105		-		terminate:ctrl_alt_bksp
- ro-std			ro	pc105		std		terminate:ctrl_alt_bksp
- de-latin1		de	pc105		-		terminate:ctrl_alt_bksp
--tml-inscript		in,us	pc105		tam		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- slovene			si	pc105		-		terminate:ctrl_alt_bksp
- hu101			hu	pc105		qwerty		terminate:ctrl_alt_bksp
- jp106			jp	jp106		-		terminate:ctrl_alt_bksp
- croat			hr	pc105		-		terminate:ctrl_alt_bksp
--ben-probhat		in,us	pc105		ben_probhat	terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- fi-latin1		fi	pc105		-		terminate:ctrl_alt_bksp
- it2			it	pc105		-		terminate:ctrl_alt_bksp
- hu			hu	pc105		-		terminate:ctrl_alt_bksp
-@@ -29,7 +25,6 @@ fr_CH			ch	pc105		fr		terminate:ctrl_alt_bksp
- dk-latin1		dk	pc105		-		terminate:ctrl_alt_bksp
- fr			fr	pc105		-		terminate:ctrl_alt_bksp
- it			it	pc105		-		terminate:ctrl_alt_bksp
--tml-uni			in,us	pc105		tam_TAB		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- ua-utf			ua,us	pc105		-		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- fr-latin1		fr	pc105		-		terminate:ctrl_alt_bksp
- sg-latin1		ch	pc105		de_nodeadkeys	terminate:ctrl_alt_bksp
-@@ -39,16 +34,12 @@ fr-pc			fr	pc105		-		terminate:ctrl_alt_bksp
- bg_pho-utf8		bg,us	pc105		,phonetic	terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- it-ibm			it	pc105		-		terminate:ctrl_alt_bksp
- cz-us-qwertz		cz,us	pc105		-		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
--ar-digits		ara,us	pc105		digits		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- br-abnt2		br	abnt2		-		terminate:ctrl_alt_bksp
- ro			ro	pc105		-		terminate:ctrl_alt_bksp
- us-acentos		us	pc105		intl		terminate:ctrl_alt_bksp
- pt-latin1		pt	pc105		-		terminate:ctrl_alt_bksp
- ro-std-cedilla		ro	pc105		std_cedilla	terminate:ctrl_alt_bksp
- tj			tj	pc105		-		terminate:ctrl_alt_bksp
--ar-qwerty		ara,us	pc105		qwerty		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
--ar-azerty-digits	ara,us	pc105		azerty_digits	terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
--ben			in,us	pc105		ben		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- de-latin1-nodeadkeys	de	pc105		nodeadkeys	terminate:ctrl_alt_bksp
- no			no	pc105		-		terminate:ctrl_alt_bksp
- bg_bds-utf8		bg,us	pc105		-		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
-@@ -60,11 +51,8 @@ pl2			pl	pc105		-		terminate:ctrl_alt_bksp
- es			es	pc105		-		terminate:ctrl_alt_bksp
- ro-cedilla		ro	pc105		cedilla		terminate:ctrl_alt_bksp
- ie			ie	pc105		-		terminate:ctrl_alt_bksp
--ar-azerty		ara,us	pc105		azerty		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
--ar-qwerty-digits	ara,us	pc105		qwerty_digits	terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- et			ee	pc105		-		terminate:ctrl_alt_bksp
- sk-qwerty		sk	pc105		-		terminate:ctrl_alt_bksp,qwerty
--dev			dev,us	pc105		-		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
- fr-latin9		fr	pc105		latin9		terminate:ctrl_alt_bksp
- fr_CH-latin1		ch	pc105		fr		terminate:ctrl_alt_bksp
- cf			ca	pc105		-		terminate:ctrl_alt_bksp
diff --git a/SOURCES/0122-missing.h-add-more-btrfs-types-and-defines.patch b/SOURCES/0122-missing.h-add-more-btrfs-types-and-defines.patch
new file mode 100644
index 0000000..4234833
--- /dev/null
+++ b/SOURCES/0122-missing.h-add-more-btrfs-types-and-defines.patch
@@ -0,0 +1,192 @@
+From cb18a928a4db39a0eac1ab1fda1c80fd4cc4e22b Mon Sep 17 00:00:00 2001
+From: Michael Olbrich <m.olbrich@pengutronix.de>
+Date: Wed, 18 Mar 2015 14:04:55 +0100
+Subject: [PATCH] missing.h: add more btrfs types and defines
+
+(cherry picked from commit 8e8ba79229bb82248a568f5929143a66f4be45b7)
+---
+ src/shared/missing.h | 151 +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 151 insertions(+)
+
+diff --git a/src/shared/missing.h b/src/shared/missing.h
+index 6ef4dbd..4b36a9c 100644
+--- a/src/shared/missing.h
++++ b/src/shared/missing.h
+@@ -294,12 +294,59 @@ static inline int getrandom(void *buffer, size_t count, unsigned flags) {
+ #define BTRFS_UUID_SIZE 16
+ #endif
+ 
++#ifndef BTRFS_SUBVOL_RDONLY
++#define BTRFS_SUBVOL_RDONLY (1ULL << 1)
++#endif
++
++#ifndef BTRFS_SUBVOL_NAME_MAX
++#define BTRFS_SUBVOL_NAME_MAX 4039
++#endif
++
++#ifndef BTRFS_INO_LOOKUP_PATH_MAX
++#define BTRFS_INO_LOOKUP_PATH_MAX 4080
++#endif
++
++#ifndef BTRFS_SEARCH_ARGS_BUFSIZE
++#define BTRFS_SEARCH_ARGS_BUFSIZE (4096 - sizeof(struct btrfs_ioctl_search_key))
++#endif
++
+ #ifndef HAVE_LINUX_BTRFS_H
+ struct btrfs_ioctl_vol_args {
+         int64_t fd;
+         char name[BTRFS_PATH_NAME_MAX + 1];
+ };
+ 
++struct btrfs_qgroup_limit {
++        __u64 flags;
++        __u64 max_rfer;
++        __u64 max_excl;
++        __u64 rsv_rfer;
++        __u64 rsv_excl;
++};
++
++struct btrfs_qgroup_inherit {
++        __u64 flags;
++        __u64 num_qgroups;
++        __u64 num_ref_copies;
++        __u64 num_excl_copies;
++        struct btrfs_qgroup_limit lim;
++        __u64 qgroups[0];
++};
++
++struct btrfs_ioctl_vol_args_v2 {
++        __s64 fd;
++        __u64 transid;
++        __u64 flags;
++        union {
++                struct {
++                        __u64 size;
++                        struct btrfs_qgroup_inherit *qgroup_inherit;
++                };
++                __u64 unused[4];
++        };
++        char name[BTRFS_SUBVOL_NAME_MAX + 1];
++};
++
+ struct btrfs_ioctl_dev_info_args {
+         uint64_t devid;                         /* in/out */
+         uint8_t uuid[BTRFS_UUID_SIZE];          /* in/out */
+@@ -315,6 +362,68 @@ struct btrfs_ioctl_fs_info_args {
+         uint8_t fsid[BTRFS_FSID_SIZE];          /* out */
+         uint64_t reserved[124];                 /* pad to 1k */
+ };
++
++struct btrfs_ioctl_ino_lookup_args {
++        __u64 treeid;
++        __u64 objectid;
++        char name[BTRFS_INO_LOOKUP_PATH_MAX];
++};
++
++struct btrfs_ioctl_search_key {
++        /* which root are we searching.  0 is the tree of tree roots */
++        __u64 tree_id;
++
++        /* keys returned will be >= min and <= max */
++        __u64 min_objectid;
++        __u64 max_objectid;
++
++        /* keys returned will be >= min and <= max */
++        __u64 min_offset;
++        __u64 max_offset;
++
++        /* max and min transids to search for */
++        __u64 min_transid;
++        __u64 max_transid;
++
++        /* keys returned will be >= min and <= max */
++        __u32 min_type;
++        __u32 max_type;
++
++        /*
++         * how many items did userland ask for, and how many are we
++         * returning
++         */
++        __u32 nr_items;
++
++        /* align to 64 bits */
++        __u32 unused;
++
++        /* some extra for later */
++        __u64 unused1;
++        __u64 unused2;
++        __u64 unused3;
++        __u64 unused4;
++};
++
++struct btrfs_ioctl_search_header {
++        __u64 transid;
++        __u64 objectid;
++        __u64 offset;
++        __u32 type;
++        __u32 len;
++};
++
++
++struct btrfs_ioctl_search_args {
++        struct btrfs_ioctl_search_key key;
++        char buf[BTRFS_SEARCH_ARGS_BUFSIZE];
++};
++
++struct btrfs_ioctl_clone_range_args {
++        __s64 src_fd;
++        __u64 src_offset, src_length;
++        __u64 dest_offset;
++};
+ #endif
+ 
+ #ifndef BTRFS_IOC_DEFRAG
+@@ -322,6 +431,48 @@ struct btrfs_ioctl_fs_info_args {
+                                  struct btrfs_ioctl_vol_args)
+ #endif
+ 
++#ifndef BTRFS_IOC_CLONE
++#define BTRFS_IOC_CLONE _IOW(BTRFS_IOCTL_MAGIC, 9, int)
++#endif
++
++#ifndef BTRFS_IOC_CLONE_RANGE
++#define BTRFS_IOC_CLONE_RANGE _IOW(BTRFS_IOCTL_MAGIC, 13, \
++                                 struct btrfs_ioctl_clone_range_args)
++#endif
++
++#ifndef BTRFS_IOC_SUBVOL_CREATE
++#define BTRFS_IOC_SUBVOL_CREATE _IOW(BTRFS_IOCTL_MAGIC, 14, \
++                                 struct btrfs_ioctl_vol_args)
++#endif
++
++#ifndef BTRFS_IOC_SNAP_DESTROY
++#define BTRFS_IOC_SNAP_DESTROY _IOW(BTRFS_IOCTL_MAGIC, 15, \
++                                 struct btrfs_ioctl_vol_args)
++#endif
++
++#ifndef BTRFS_IOC_TREE_SEARCH
++#define BTRFS_IOC_TREE_SEARCH _IOWR(BTRFS_IOCTL_MAGIC, 17, \
++                                 struct btrfs_ioctl_search_args)
++#endif
++
++#ifndef BTRFS_IOC_INO_LOOKUP
++#define BTRFS_IOC_INO_LOOKUP _IOWR(BTRFS_IOCTL_MAGIC, 18, \
++                                 struct btrfs_ioctl_ino_lookup_args)
++#endif
++
++#ifndef BTRFS_IOC_SNAP_CREATE_V2
++#define BTRFS_IOC_SNAP_CREATE_V2 _IOW(BTRFS_IOCTL_MAGIC, 23, \
++                                 struct btrfs_ioctl_vol_args_v2)
++#endif
++
++#ifndef BTRFS_IOC_SUBVOL_GETFLAGS
++#define BTRFS_IOC_SUBVOL_GETFLAGS _IOR(BTRFS_IOCTL_MAGIC, 25, __u64)
++#endif
++
++#ifndef BTRFS_IOC_SUBVOL_SETFLAGS
++#define BTRFS_IOC_SUBVOL_SETFLAGS _IOW(BTRFS_IOCTL_MAGIC, 26, __u64)
++#endif
++
+ #ifndef BTRFS_IOC_DEV_INFO
+ #define BTRFS_IOC_DEV_INFO _IOWR(BTRFS_IOCTL_MAGIC, 30, \
+                                  struct btrfs_ioctl_dev_info_args)
diff --git a/SOURCES/0123-build-sys-add-configure-option-to-disableLTO-gold.patch b/SOURCES/0123-build-sys-add-configure-option-to-disableLTO-gold.patch
new file mode 100644
index 0000000..d8e104b
--- /dev/null
+++ b/SOURCES/0123-build-sys-add-configure-option-to-disableLTO-gold.patch
@@ -0,0 +1,42 @@
+From 2d5ee8de927f69784d8380c24ca5505b3f6e7672 Mon Sep 17 00:00:00 2001
+From: systemd team <systemd-maint@redhat.com>
+Date: Tue, 14 Apr 2015 15:00:06 +0200
+Subject: [PATCH] build-sys: add configure option to disableLTO/gold
+
+---
+ configure.ac | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index 081ed0f..9103f9b 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -208,10 +208,15 @@ AS_CASE([$CC], [*clang*],
+                -Wno-gnu-variable-sized-type-not-at-end \
+         ])])
+ 
+-AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
+-        [CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\
+-               -flto -ffat-lto-objects])],
+-        [AC_MSG_RESULT([skipping -flto, optimization not enabled])])
++AC_ARG_ENABLE([lto], AS_HELP_STRING([--disable-lto], [Disable Link time optimization]))
++AS_IF([test "x$enable_lto" != "xno"], [
++AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], [
++         CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [-flto -ffat-lto-objects])
++         CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS],[-Wl,-fuse-ld=gold])
++         ],
++[AC_MSG_RESULT([skipping -flto, optimization not enabled])])
++])
++
+ AC_SUBST([OUR_CFLAGS], "$with_cflags $sanitizer_cflags")
+ 
+ AS_CASE([$CFLAGS], [*-O[[12345sz\ ]]*],
+@@ -227,7 +232,7 @@ CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\
+         -Wl,-z,relro \
+         -Wl,-z,now \
+         -pie \
+-        -Wl,-fuse-ld=gold])
++        ])
+ AC_SUBST([OUR_LDFLAGS], "$with_ldflags $sanitizer_ldflags")
+ 
+ AC_CHECK_SIZEOF(pid_t)
diff --git a/SOURCES/0123-correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch b/SOURCES/0123-correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch
deleted file mode 100644
index b7509f7..0000000
--- a/SOURCES/0123-correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From ccc70cad7ae319fcff491bbd657b2ff06d4d3ee8 Mon Sep 17 00:00:00 2001
-From: Adam Williamson <awilliam@redhat.com>
-Date: Mon, 9 Dec 2013 22:02:25 -0800
-Subject: [PATCH] correct name of Tajik kbd layout in kbd-model-map
-
----
- src/locale/kbd-model-map | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/locale/kbd-model-map b/src/locale/kbd-model-map
-index 78c7887..322c0a9 100644
---- a/src/locale/kbd-model-map
-+++ b/src/locale/kbd-model-map
-@@ -39,7 +39,7 @@ ro			ro	pc105		-		terminate:ctrl_alt_bksp
- us-acentos		us	pc105		intl		terminate:ctrl_alt_bksp
- pt-latin1		pt	pc105		-		terminate:ctrl_alt_bksp
- ro-std-cedilla		ro	pc105		std_cedilla	terminate:ctrl_alt_bksp
--tj			tj	pc105		-		terminate:ctrl_alt_bksp
-+tj_alt-UTF8		tj	pc105		-		terminate:ctrl_alt_bksp
- de-latin1-nodeadkeys	de	pc105		nodeadkeys	terminate:ctrl_alt_bksp
- no			no	pc105		-		terminate:ctrl_alt_bksp
- bg_bds-utf8		bg,us	pc105		-		terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll
diff --git a/SOURCES/0124-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/SOURCES/0124-hwdb-Update-database-of-Bluetooth-company-identifier.patch
deleted file mode 100644
index fba8d02..0000000
--- a/SOURCES/0124-hwdb-Update-database-of-Bluetooth-company-identifier.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 3ec8c3972d2a93027ce2b07a22b3ee8fdfb447cc Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Tue, 10 Dec 2013 03:17:39 -0800
-Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
-
----
- hwdb/20-bluetooth-vendor-product.hwdb | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
-index dcc25bb..6f8301f 100644
---- a/hwdb/20-bluetooth-vendor-product.hwdb
-+++ b/hwdb/20-bluetooth-vendor-product.hwdb
-@@ -821,3 +821,21 @@ bluetooth:v010F*
- 
- bluetooth:v0110*
-  ID_VENDOR_FROM_DATABASE=Nippon Seiki Co., Ltd.
-+
-+bluetooth:v0111*
-+ ID_VENDOR_FROM_DATABASE=Steelseries ApS
-+
-+bluetooth:v0112*
-+ ID_VENDOR_FROM_DATABASE=vyzybl Inc.
-+
-+bluetooth:v0113*
-+ ID_VENDOR_FROM_DATABASE=Openbrain Technologies, Co., Ltd.
-+
-+bluetooth:v0114*
-+ ID_VENDOR_FROM_DATABASE=Xensr
-+
-+bluetooth:v0115*
-+ ID_VENDOR_FROM_DATABASE=e.solutions
-+
-+bluetooth:v0116*
-+ ID_VENDOR_FROM_DATABASE=1OAK Technologies
diff --git a/SOURCES/0124-rules-bring-back-80-net-name-slot.rules.patch b/SOURCES/0124-rules-bring-back-80-net-name-slot.rules.patch
new file mode 100644
index 0000000..2da57cf
--- /dev/null
+++ b/SOURCES/0124-rules-bring-back-80-net-name-slot.rules.patch
@@ -0,0 +1,45 @@
+From 434e13b009b4bd829c4ac827bdb53e3df61e5a6f Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 14 Apr 2015 17:11:48 +0200
+Subject: [PATCH] rules: bring back 80-net-name-slot.rules
+
+---
+ Makefile.am                  |  3 ++-
+ rules/80-net-name-slot.rules | 14 ++++++++++++++
+ 2 files changed, 16 insertions(+), 1 deletion(-)
+ create mode 100644 rules/80-net-name-slot.rules
+
+diff --git a/Makefile.am b/Makefile.am
+index 4933f76..bec32c3 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3570,7 +3570,8 @@ dist_udevrules_DATA += \
+ 	rules/80-net-setup-link.rules \
+ 	rules/95-udev-late.rules \
+ 	rules/40-redhat.rules \
+-	rules/73-idrac.rules
++	rules/73-idrac.rules \
++        rules/80-net-name-slot.rules
+ 
+ nodist_udevrules_DATA += \
+ 	rules/99-systemd.rules
+diff --git a/rules/80-net-name-slot.rules b/rules/80-net-name-slot.rules
+new file mode 100644
+index 0000000..c5f1b38
+--- /dev/null
++++ b/rules/80-net-name-slot.rules
+@@ -0,0 +1,14 @@
++# do not edit this file, it will be overwritten on update
++
++ACTION!="add", GOTO="net_name_slot_end"
++SUBSYSTEM!="net", GOTO="net_name_slot_end"
++NAME!="", GOTO="net_name_slot_end"
++
++IMPORT{cmdline}="net.ifnames"
++ENV{net.ifnames}=="0", GOTO="net_name_slot_end"
++
++NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}"
++NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}"
++NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}"
++
++LABEL="net_name_slot_end"
diff --git a/SOURCES/0125-Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch b/SOURCES/0125-Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch
deleted file mode 100644
index 1c804b0..0000000
--- a/SOURCES/0125-Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 3bdb6f693180ae6a64af158ddf23fb1335380e48 Mon Sep 17 00:00:00 2001
-From: Dan McGee <dan@archlinux.org>
-Date: Sun, 8 Dec 2013 13:27:05 -0600
-Subject: [PATCH] Ensure unit is journaled for short-lived or oneshot processes
-
-In the time it takes to process incoming log messages, the process we
-are logging details for may exit. This means the cgroup data is no
-longer available from '/proc'. Unfortunately, the way the code was
-structured before, we never log _SYSTEMD_UNIT if we don't have this
-cgroup information.
-
-Add an else if case that allows the passed in unit_id to be logged even
-if we couldn't capture cgroup information. This ensures a command like
-`journalctl -u run-XXX` will return all log messages from a oneshot
-process.
----
- src/journal/journald-server.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
-index a0a8e9c..1fcb3d5 100644
---- a/src/journal/journald-server.c
-+++ b/src/journal/journald-server.c
-@@ -626,6 +626,9 @@ static void dispatch_message_real(
-                         }
- 
-                         free(c);
-+                } else if (unit_id) {
-+                        x = strappenda("_SYSTEMD_UNIT=", unit_id);
-+                        IOVEC_SET_STRING(iovec[n++], x);
-                 }
- 
- #ifdef HAVE_SELINUX
diff --git a/SOURCES/0125-Revert-journald-allow-restarting-journald-without-lo.patch b/SOURCES/0125-Revert-journald-allow-restarting-journald-without-lo.patch
new file mode 100644
index 0000000..d6f9ac8
--- /dev/null
+++ b/SOURCES/0125-Revert-journald-allow-restarting-journald-without-lo.patch
@@ -0,0 +1,564 @@
+From 91cb89c1b79ef3c475d91319edb0c052cb9f2724 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 15 Apr 2015 13:52:02 +0200
+Subject: [PATCH] Revert "journald: allow restarting journald without losing
+ stream connections"
+
+This reverts commit 13790add4bf648fed816361794d8277a75253410.
+---
+ src/journal/journald-server.c     |  26 +--
+ src/journal/journald-stream.c     | 376 ++++++--------------------------------
+ src/journal/journald-stream.h     |   3 +-
+ units/systemd-journald.service.in |   1 -
+ 4 files changed, 61 insertions(+), 345 deletions(-)
+
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index 7ee8174..04839c9 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -1455,7 +1455,6 @@ static int server_open_hostname(Server *s) {
+ }
+ 
+ int server_init(Server *s) {
+-        _cleanup_fdset_free_ FDSet *fds = NULL;
+         int n, r, fd;
+ 
+         assert(s);
+@@ -1552,33 +1551,26 @@ int server_init(Server *s) {
+                         s->audit_fd = fd;
+ 
+                 } else {
++                        log_warning("Unknown socket passed as file descriptor %d, ignoring.", fd);
+ 
+-                        if (!fds) {
+-                                fds = fdset_new();
+-                                if (!fds)
+-                                        return log_oom();
+-                        }
++                        /* Let's close the fd, better be safe than
++                           sorry. The fd might reference some resource
++                           that we really want to release if we don't
++                           make use of it. */
+ 
+-                        r = fdset_put(fds, fd);
+-                        if (r < 0)
+-                                return log_oom();
++                        safe_close(fd);
+                 }
+         }
+ 
+-        r = server_open_stdout_socket(s, fds);
++        r = server_open_syslog_socket(s);
+         if (r < 0)
+                 return r;
+ 
+-        if (fdset_size(fds) > 0) {
+-                log_warning("%u unknown file descriptors passed, closing.", fdset_size(fds));
+-                fds = fdset_free(fds);
+-        }
+-
+-        r = server_open_syslog_socket(s);
++        r = server_open_native_socket(s);
+         if (r < 0)
+                 return r;
+ 
+-        r = server_open_native_socket(s);
++        r = server_open_stdout_socket(s);
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
+index 942a857..11b852d 100644
+--- a/src/journal/journald-stream.c
++++ b/src/journal/journald-stream.c
+@@ -28,11 +28,8 @@
+ #endif
+ 
+ #include "sd-event.h"
+-#include "sd-daemon.h"
+ #include "socket-util.h"
+ #include "selinux-util.h"
+-#include "mkdir.h"
+-#include "fileio.h"
+ #include "journald-server.h"
+ #include "journald-stream.h"
+ #include "journald-syslog.h"
+@@ -72,153 +69,14 @@ struct StdoutStream {
+         bool forward_to_kmsg:1;
+         bool forward_to_console:1;
+ 
+-        bool fdstore:1;
+-
+         char buffer[LINE_MAX+1];
+         size_t length;
+ 
+         sd_event_source *event_source;
+ 
+-        char *state_file;
+-
+         LIST_FIELDS(StdoutStream, stdout_stream);
+ };
+ 
+-void stdout_stream_free(StdoutStream *s) {
+-        if (!s)
+-                return;
+-
+-        if (s->server) {
+-                assert(s->server->n_stdout_streams > 0);
+-                s->server->n_stdout_streams --;
+-                LIST_REMOVE(stdout_stream, s->server->stdout_streams, s);
+-        }
+-
+-        if (s->event_source) {
+-                sd_event_source_set_enabled(s->event_source, SD_EVENT_OFF);
+-                s->event_source = sd_event_source_unref(s->event_source);
+-        }
+-
+-        safe_close(s->fd);
+-
+-#ifdef HAVE_SELINUX
+-        if (s->security_context)
+-                freecon(s->security_context);
+-#endif
+-
+-        free(s->identifier);
+-        free(s->unit_id);
+-        free(s->state_file);
+-
+-        free(s);
+-}
+-
+-DEFINE_TRIVIAL_CLEANUP_FUNC(StdoutStream*, stdout_stream_free);
+-
+-static void stdout_stream_destroy(StdoutStream *s) {
+-        if (!s)
+-                return;
+-
+-        if (s->state_file)
+-                unlink(s->state_file);
+-
+-        stdout_stream_free(s);
+-}
+-
+-static int stdout_stream_save(StdoutStream *s) {
+-        _cleanup_free_ char *temp_path = NULL;
+-        _cleanup_fclose_ FILE *f = NULL;
+-        int r;
+-
+-        assert(s);
+-
+-        if (s->state != STDOUT_STREAM_RUNNING)
+-                return 0;
+-
+-        if (!s->state_file) {
+-                struct stat st;
+-
+-                r = fstat(s->fd, &st);
+-                if (r < 0)
+-                        return log_warning_errno(errno, "Failed to stat connected stream: %m");
+-
+-                /* We use device and inode numbers as identifier for the stream */
+-                if (asprintf(&s->state_file, "/run/systemd/journal/streams/%lu:%lu", (unsigned long) st.st_dev, (unsigned long) st.st_ino) < 0)
+-                        return log_oom();
+-        }
+-
+-        mkdir_p("/run/systemd/journal/streams", 0755);
+-
+-        r = fopen_temporary(s->state_file, &f, &temp_path);
+-        if (r < 0)
+-                goto finish;
+-
+-        fprintf(f,
+-                "# This is private data. Do not parse\n"
+-                "PRIORITY=%i\n"
+-                "LEVEL_PREFIX=%i\n"
+-                "FORWARD_TO_SYSLOG=%i\n"
+-                "FORWARD_TO_KMSG=%i\n"
+-                "FORWARD_TO_CONSOLE=%i\n",
+-                s->priority,
+-                s->level_prefix,
+-                s->forward_to_syslog,
+-                s->forward_to_kmsg,
+-                s->forward_to_console);
+-
+-        if (!isempty(s->identifier)) {
+-                _cleanup_free_ char *escaped;
+-
+-                escaped = cescape(s->identifier);
+-                if (!escaped) {
+-                        r = -ENOMEM;
+-                        goto finish;
+-                }
+-
+-                fprintf(f, "IDENTIFIER=%s\n", escaped);
+-        }
+-
+-        if (!isempty(s->unit_id)) {
+-                _cleanup_free_ char *escaped;
+-
+-                escaped = cescape(s->unit_id);
+-                if (!escaped) {
+-                        r = -ENOMEM;
+-                        goto finish;
+-                }
+-
+-                fprintf(f, "UNIT=%s\n", escaped);
+-        }
+-
+-        r = fflush_and_check(f);
+-        if (r < 0)
+-                goto finish;
+-
+-        if (rename(temp_path, s->state_file) < 0) {
+-                r = -errno;
+-                goto finish;
+-        }
+-
+-        free(temp_path);
+-        temp_path = NULL;
+-
+-        /* Store the connection fd in PID 1, so that we get it passed
+-         * in again on next start */
+-        if (!s->fdstore) {
+-                sd_pid_notify_with_fds(0, false, "FDSTORE=1", &s->fd, 1);
+-                s->fdstore = true;
+-        }
+-
+-finish:
+-        if (temp_path)
+-                unlink(temp_path);
+-
+-        if (r < 0)
+-                log_error_errno(r, "Failed to save stream data %s: %m", s->state_file);
+-
+-        return r;
+-}
+-
+ static int stdout_stream_log(StdoutStream *s, const char *p) {
+         struct iovec iovec[N_IOVEC_META_FIELDS + 5];
+         int priority;
+@@ -371,9 +229,6 @@ static int stdout_stream_line(StdoutStream *s, char *p) {
+ 
+                 s->forward_to_console = !!r;
+                 s->state = STDOUT_STREAM_RUNNING;
+-
+-                /* Try to save the stream, so that journald can be restarted and we can recover */
+-                (void) stdout_stream_save(s);
+                 return 0;
+ 
+         case STDOUT_STREAM_RUNNING:
+@@ -468,63 +323,40 @@ static int stdout_stream_process(sd_event_source *es, int fd, uint32_t revents,
+         return 1;
+ 
+ terminate:
+-        stdout_stream_destroy(s);
++        stdout_stream_free(s);
+         return 0;
+ }
+ 
+-static int stdout_stream_install(Server *s, int fd, StdoutStream **ret) {
+-        _cleanup_(stdout_stream_freep) StdoutStream *stream = NULL;
+-        int r;
+-
++void stdout_stream_free(StdoutStream *s) {
+         assert(s);
+-        assert(fd >= 0);
+ 
+-        stream = new0(StdoutStream, 1);
+-        if (!stream)
+-                return log_oom();
++        if (s->server) {
++                assert(s->server->n_stdout_streams > 0);
++                s->server->n_stdout_streams --;
++                LIST_REMOVE(stdout_stream, s->server->stdout_streams, s);
++        }
+ 
+-        stream->fd = -1;
+-        stream->priority = LOG_INFO;
++        if (s->event_source) {
++                sd_event_source_set_enabled(s->event_source, SD_EVENT_OFF);
++                s->event_source = sd_event_source_unref(s->event_source);
++        }
+ 
+-        r = getpeercred(fd, &stream->ucred);
+-        if (r < 0)
+-                return log_error_errno(r, "Failed to determine peer credentials: %m");
++        safe_close(s->fd);
+ 
+ #ifdef HAVE_SELINUX
+-        if (mac_selinux_use()) {
+-                if (getpeercon(fd, &stream->security_context) < 0 && errno != ENOPROTOOPT)
+-                        log_error_errno(errno, "Failed to determine peer security context: %m");
+-        }
++        if (s->security_context)
++                freecon(s->security_context);
+ #endif
+ 
+-        (void) shutdown(fd, SHUT_WR);
+-
+-        r = sd_event_add_io(s->event, &stream->event_source, fd, EPOLLIN, stdout_stream_process, stream);
+-        if (r < 0)
+-                return log_error_errno(r, "Failed to add stream to event loop: %m");
+-
+-        r = sd_event_source_set_priority(stream->event_source, SD_EVENT_PRIORITY_NORMAL+5);
+-        if (r < 0)
+-                return log_error_errno(r, "Failed to adjust stdout event source priority: %m");
+-
+-        stream->fd = fd;
+-
+-        stream->server = s;
+-        LIST_PREPEND(stdout_stream, s->stdout_streams, stream);
+-        s->n_stdout_streams ++;
+-
+-        if (ret)
+-                *ret = stream;
+-
+-        stream = NULL;
+-
+-        return 0;
++        free(s->identifier);
++        free(s->unit_id);
++        free(s);
+ }
+ 
+ static int stdout_stream_new(sd_event_source *es, int listen_fd, uint32_t revents, void *userdata) {
+-        _cleanup_close_ int fd = -1;
+         Server *s = userdata;
+-        int r;
++        StdoutStream *stream;
++        int fd, r;
+ 
+         assert(s);
+ 
+@@ -544,163 +376,60 @@ static int stdout_stream_new(sd_event_source *es, int listen_fd, uint32_t revent
+ 
+         if (s->n_stdout_streams >= STDOUT_STREAMS_MAX) {
+                 log_warning("Too many stdout streams, refusing connection.");
++                safe_close(fd);
+                 return 0;
+         }
+ 
+-        r = stdout_stream_install(s, fd, NULL);
+-        if (r < 0)
+-                return r;
+-
+-        fd = -1;
+-        return 0;
+-}
+-
+-static int stdout_stream_load(StdoutStream *stream, const char *fname) {
+-        _cleanup_free_ char
+-                *priority = NULL,
+-                *level_prefix = NULL,
+-                *forward_to_syslog = NULL,
+-                *forward_to_kmsg = NULL,
+-                *forward_to_console = NULL;
+-        int r;
+-
+-        assert(stream);
+-        assert(fname);
+-
+-        if (!stream->state_file) {
+-                stream->state_file = strappend("/run/systemd/journal/streams/", fname);
+-                if (!stream->state_file)
+-                        return log_oom();
+-        }
+-
+-        r = parse_env_file(stream->state_file, NEWLINE,
+-                           "PRIORITY", &priority,
+-                           "LEVEL_PREFIX", &level_prefix,
+-                           "FORWARD_TO_SYSLOG", &forward_to_syslog,
+-                           "FORWARD_TO_KMSG", &forward_to_kmsg,
+-                           "FORWARD_TO_CONSOLE", &forward_to_console,
+-                           "IDENTIFIER", &stream->identifier,
+-                           "UNIT", &stream->unit_id,
+-                           NULL);
+-        if (r < 0)
+-                return log_error_errno(r, "Failed to read: %s", stream->state_file);
+-
+-        if (priority) {
+-                int p;
+-
+-                p = log_level_from_string(priority);
+-                if (p >= 0)
+-                        stream->priority = p;
++        stream = new0(StdoutStream, 1);
++        if (!stream) {
++                safe_close(fd);
++                return log_oom();
+         }
+ 
+-        if (level_prefix) {
+-                r = parse_boolean(level_prefix);
+-                if (r >= 0)
+-                        stream->level_prefix = r;
+-        }
++        stream->fd = fd;
+ 
+-        if (forward_to_syslog) {
+-                r = parse_boolean(forward_to_syslog);
+-                if (r >= 0)
+-                        stream->forward_to_syslog = r;
++        r = getpeercred(fd, &stream->ucred);
++        if (r < 0) {
++                log_error_errno(errno, "Failed to determine peer credentials: %m");
++                goto fail;
+         }
+ 
+-        if (forward_to_kmsg) {
+-                r = parse_boolean(forward_to_kmsg);
+-                if (r >= 0)
+-                        stream->forward_to_kmsg = r;
++#ifdef HAVE_SELINUX
++        if (mac_selinux_use()) {
++                if (getpeercon(fd, &stream->security_context) < 0 && errno != ENOPROTOOPT)
++                        log_error_errno(errno, "Failed to determine peer security context: %m");
+         }
++#endif
+ 
+-        if (forward_to_console) {
+-                r = parse_boolean(forward_to_console);
+-                if (r >= 0)
+-                        stream->forward_to_console = r;
++        if (shutdown(fd, SHUT_WR) < 0) {
++                log_error_errno(errno, "Failed to shutdown writing side of socket: %m");
++                goto fail;
+         }
+ 
+-        return 0;
+-}
+-
+-static int stdout_stream_restore(Server *s, const char *fname, int fd) {
+-        StdoutStream *stream;
+-        int r;
+-
+-        assert(s);
+-        assert(fname);
+-        assert(fd >= 0);
+-
+-        if (s->n_stdout_streams >= STDOUT_STREAMS_MAX) {
+-                log_warning("Too many stdout streams, refusing restoring of stream.");
+-                return -ENOBUFS;
++        r = sd_event_add_io(s->event, &stream->event_source, fd, EPOLLIN, stdout_stream_process, stream);
++        if (r < 0) {
++                log_error_errno(r, "Failed to add stream to event loop: %m");
++                goto fail;
+         }
+ 
+-        r = stdout_stream_install(s, fd, &stream);
+-        if (r < 0)
+-                return r;
+-
+-        stream->state = STDOUT_STREAM_RUNNING;
+-        stream->fdstore = true;
+-
+-        /* Ignore all parsing errors */
+-        (void) stdout_stream_load(stream, fname);
+-
+-        return 0;
+-}
+-
+-static int server_restore_streams(Server *s, FDSet *fds) {
+-        _cleanup_closedir_ DIR *d = NULL;
+-        struct dirent *de;
+-        int r;
+-
+-        d = opendir("/run/systemd/journal/streams");
+-        if (!d) {
+-                if (errno == ENOENT)
+-                        return 0;
+-
+-                return log_warning_errno(errno, "Failed to enumerate /run/systemd/journal/streams: %m");
++        r = sd_event_source_set_priority(stream->event_source, SD_EVENT_PRIORITY_NORMAL+5);
++        if (r < 0) {
++                log_error_errno(r, "Failed to adjust stdout event source priority: %m");
++                goto fail;
+         }
+ 
+-        FOREACH_DIRENT(de, d, goto fail) {
+-                unsigned long st_dev, st_ino;
+-                bool found = false;
+-                Iterator i;
+-                int fd;
+-
+-                if (sscanf(de->d_name, "%lu:%lu", &st_dev, &st_ino) != 2)
+-                        continue;
+-
+-                FDSET_FOREACH(fd, fds, i) {
+-                        struct stat st;
+-
+-                        if (fstat(fd, &st) < 0)
+-                                return log_error_errno(errno, "Failed to stat %s: %m", de->d_name);
+-
+-                        if (S_ISSOCK(st.st_mode) && st.st_dev == st_dev && st.st_ino == st_ino) {
+-                                found = true;
+-                                break;
+-                        }
+-                }
+-
+-                if (!found) {
+-                        /* No file descriptor? Then let's delete the state file */
+-                        log_debug("Cannot restore stream file %s", de->d_name);
+-                        unlinkat(dirfd(d), de->d_name, 0);
+-                        continue;
+-                }
+-
+-                fdset_remove(fds, fd);
+-
+-                r = stdout_stream_restore(s, de->d_name, fd);
+-                if (r < 0)
+-                        safe_close(fd);
+-        }
++        stream->server = s;
++        LIST_PREPEND(stdout_stream, s->stdout_streams, stream);
++        s->n_stdout_streams ++;
+ 
+         return 0;
+ 
+ fail:
+-        return log_error_errno(errno, "Failed to read streams directory: %m");
++        stdout_stream_free(stream);
++        return 0;
+ }
+ 
+-int server_open_stdout_socket(Server *s, FDSet *fds) {
++int server_open_stdout_socket(Server *s) {
+         int r;
+ 
+         assert(s);
+@@ -736,8 +465,5 @@ int server_open_stdout_socket(Server *s, FDSet *fds) {
+         if (r < 0)
+                 return log_error_errno(r, "Failed to adjust priority of stdout server event source: %m");
+ 
+-        /* Try to restore streams, but don't bother if this fails */
+-        (void) server_restore_streams(s, fds);
+-
+         return 0;
+ }
+diff --git a/src/journal/journald-stream.h b/src/journal/journald-stream.h
+index 94bf955..8cad012 100644
+--- a/src/journal/journald-stream.h
++++ b/src/journal/journald-stream.h
+@@ -21,9 +21,8 @@
+   along with systemd; If not, see <http://www.gnu.org/licenses/>.
+ ***/
+ 
+-#include "fdset.h"
+ #include "journald-server.h"
+ 
+-int server_open_stdout_socket(Server *s, FDSet *fds);
++int server_open_stdout_socket(Server *s);
+ 
+ void stdout_stream_free(StdoutStream *s);
+diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in
+index a3540c6..87704bb 100644
+--- a/units/systemd-journald.service.in
++++ b/units/systemd-journald.service.in
+@@ -23,7 +23,6 @@ NotifyAccess=all
+ StandardOutput=null
+ CapabilityBoundingSet=CAP_SYS_ADMIN CAP_DAC_OVERRIDE CAP_SYS_PTRACE CAP_SYSLOG CAP_AUDIT_CONTROL CAP_AUDIT_READ CAP_CHOWN CAP_DAC_READ_SEARCH CAP_FOWNER CAP_SETUID CAP_SETGID CAP_MAC_OVERRIDE
+ WatchdogSec=1min
+-FileDescriptorStoreMax=1024
+ 
+ # Increase the default a bit in order to allow many simultaneous
+ # services being run since we keep one fd open per service. Also, when
diff --git a/SOURCES/0126-Revert-man-switch-yum-to-dnf-for-Fedora.patch b/SOURCES/0126-Revert-man-switch-yum-to-dnf-for-Fedora.patch
new file mode 100644
index 0000000..5687d1f
--- /dev/null
+++ b/SOURCES/0126-Revert-man-switch-yum-to-dnf-for-Fedora.patch
@@ -0,0 +1,66 @@
+From 597856130181473bff35f225d87b05c5825b1670 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 15 Apr 2015 14:04:52 +0200
+Subject: [PATCH] Revert "man: switch yum to dnf for Fedora"
+
+This reverts commit 74a6d87d0cd1f2213869e168b6ca55eded6f4ae8.
+
+Conflicts:
+	man/systemd-nspawn.xml
+---
+ man/custom-html.xsl    | 12 ------------
+ man/systemd-nspawn.xml |  4 +---
+ 2 files changed, 1 insertion(+), 15 deletions(-)
+
+diff --git a/man/custom-html.xsl b/man/custom-html.xsl
+index 706b95a..1df824c 100644
+--- a/man/custom-html.xsl
++++ b/man/custom-html.xsl
+@@ -60,18 +60,6 @@
+   </a>
+ </xsl:template>
+ 
+-<xsl:template match="citerefentry[@project='mankier']">
+-  <a>
+-    <xsl:attribute name="href">
+-      <xsl:text>https://www.mankier.com/</xsl:text>
+-      <xsl:value-of select="manvolnum"/>
+-      <xsl:text>/</xsl:text>
+-      <xsl:value-of select="refentrytitle"/>
+-    </xsl:attribute>
+-    <xsl:call-template name="inline.charseq"/>
+-  </a>
+-</xsl:template>
+-
+ <xsl:template match="citerefentry[@project='archlinux']">
+   <a>
+     <xsl:attribute name="href">
+diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml
+index 65b4c2f..cbd44d4 100644
+--- a/man/systemd-nspawn.xml
++++ b/man/systemd-nspawn.xml
+@@ -98,7 +98,6 @@
+     container.</para>
+ 
+     <para>Use a tool like
+-    <citerefentry project='mankier'><refentrytitle>dnf</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+     <citerefentry project='die-net'><refentrytitle>yum</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+     <citerefentry project='die-net'><refentrytitle>debootstrap</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+     or
+@@ -668,7 +667,7 @@
+     <example>
+       <title>Build and boot a minimal Fedora distribution in a container</title>
+ 
+-      <programlisting># dnf -y --releasever=21 --nogpg --installroot=/srv/mycontainer --disablerepo='*' --enablerepo=fedora install systemd passwd dnf fedora-release vim-minimal
++      <programlisting># yum -y --releasever=21 --nogpg --installroot=/srv/mycontainer --disablerepo='*' --enablerepo=fedora install systemd passwd yum fedora-release vim-minimal
+ # systemd-nspawn -bD /srv/mycontainer</programlisting>
+ 
+       <para>This installs a minimal Fedora distribution into the
+@@ -729,7 +728,6 @@
+     <para>
+       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry project='man-pages'><refentrytitle>chroot</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+-      <citerefentry project='mankier'><refentrytitle>dnf</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry project='die-net'><refentrytitle>yum</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry project='die-net'><refentrytitle>debootstrap</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry project='archlinux'><refentrytitle>pacman</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
diff --git a/SOURCES/0126-core-manager-remove-infinite-loop.patch b/SOURCES/0126-core-manager-remove-infinite-loop.patch
deleted file mode 100644
index c07716c..0000000
--- a/SOURCES/0126-core-manager-remove-infinite-loop.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 31a3bfaf3da730a2d6f32a8ab9d9e10e77905d4f Mon Sep 17 00:00:00 2001
-From: Shawn Landden <shawn@churchofgit.com>
-Date: Tue, 10 Dec 2013 09:28:26 -0800
-Subject: [PATCH] core/manager: remove infinite loop
-
----
- src/core/manager.c | 4 +---
- 1 file changed, 1 insertion(+), 3 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index 944c196..a34a3c6 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -2285,10 +2285,8 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
-         }
- 
- finish:
--        if (ferror(f)) {
-+        if (ferror(f))
-                 r = -EIO;
--                goto finish;
--        }
- 
-         assert(m->n_reloading > 0);
-         m->n_reloading --;
diff --git a/SOURCES/0127-journal-remove-audit-socket-unit-files.patch b/SOURCES/0127-journal-remove-audit-socket-unit-files.patch
new file mode 100644
index 0000000..6f3b6c2
--- /dev/null
+++ b/SOURCES/0127-journal-remove-audit-socket-unit-files.patch
@@ -0,0 +1,80 @@
+From c45af40e61ab34508862f9e668f47cc6eb2f6d45 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 16 Apr 2015 10:50:10 +0200
+Subject: [PATCH] journal: remove audit socket unit-files
+
+---
+ Makefile.am                         |  6 ++----
+ units/systemd-journald-audit.socket | 19 -------------------
+ units/systemd-journald.service.in   |  4 ++--
+ 3 files changed, 4 insertions(+), 25 deletions(-)
+ delete mode 100644 units/systemd-journald-audit.socket
+
+diff --git a/Makefile.am b/Makefile.am
+index bec32c3..6d6b650 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -4518,8 +4518,7 @@ bin_PROGRAMS += \
+ 
+ dist_systemunit_DATA += \
+ 	units/systemd-journald.socket \
+-	units/systemd-journald-dev-log.socket \
+-	units/systemd-journald-audit.socket
++	units/systemd-journald-dev-log.socket
+ 
+ nodist_systemunit_DATA += \
+ 	units/systemd-journald.service \
+@@ -4539,8 +4538,7 @@ dist_catalog_DATA = \
+ 
+ SOCKETS_TARGET_WANTS += \
+ 	systemd-journald.socket \
+-	systemd-journald-dev-log.socket \
+-	systemd-journald-audit.socket
++	systemd-journald-dev-log.socket
+ 
+ SYSINIT_TARGET_WANTS += \
+ 	systemd-journald.service \
+diff --git a/units/systemd-journald-audit.socket b/units/systemd-journald-audit.socket
+deleted file mode 100644
+index 35397aa..0000000
+--- a/units/systemd-journald-audit.socket
++++ /dev/null
+@@ -1,19 +0,0 @@
+-#  This file is part of systemd.
+-#
+-#  systemd is free software; you can redistribute it and/or modify it
+-#  under the terms of the GNU Lesser General Public License as published by
+-#  the Free Software Foundation; either version 2.1 of the License, or
+-#  (at your option) any later version.
+-
+-[Unit]
+-Description=Journal Audit Socket
+-Documentation=man:systemd-journald.service(8) man:journald.conf(5)
+-DefaultDependencies=no
+-Before=sockets.target
+-ConditionSecurity=audit
+-
+-[Socket]
+-Service=systemd-journald.service
+-ReceiveBuffer=128M
+-ListenNetlink=audit 1
+-PassCredentials=yes
+diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in
+index 87704bb..1bcc290 100644
+--- a/units/systemd-journald.service.in
++++ b/units/systemd-journald.service.in
+@@ -10,12 +10,12 @@ Description=Journal Service
+ Documentation=man:systemd-journald.service(8) man:journald.conf(5)
+ DefaultDependencies=no
+ Requires=systemd-journald.socket
+-After=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket syslog.socket
++After=systemd-journald.socket systemd-journald-dev-log.socket syslog.socket
+ Before=sysinit.target
+ 
+ [Service]
+ Type=notify
+-Sockets=systemd-journald.socket systemd-journald-dev-log.socket systemd-journald-audit.socket
++Sockets=systemd-journald.socket systemd-journald-dev-log.socket
+ ExecStart=@rootlibexecdir@/systemd-journald
+ Restart=always
+ RestartSec=0
diff --git a/SOURCES/0127-util-check-for-overflow-in-greedy_realloc.patch b/SOURCES/0127-util-check-for-overflow-in-greedy_realloc.patch
deleted file mode 100644
index b7f5d0e..0000000
--- a/SOURCES/0127-util-check-for-overflow-in-greedy_realloc.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From aa37345b6b9c0910d871d05ff028c257b657ffb7 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 10 Dec 2013 18:53:03 +0000
-Subject: [PATCH] util: check for overflow in greedy_realloc()
-
-Conflicts:
-	src/shared/util.c
----
- src/shared/util.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 8a542da..e9b8255 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -5838,10 +5838,18 @@ void* greedy_realloc(void **p, size_t *allocated, size_t need) {
-         size_t a;
-         void *q;
- 
-+        assert(p);
-+        assert(allocated);
-+
-         if (*allocated >= need)
-                 return *p;
- 
-         a = MAX(64u, need * 2);
-+
-+        /* check for overflows */
-+        if (a < need)
-+                return NULL;
-+
-         q = realloc(*p, a);
-         if (!q)
-                 return NULL;
diff --git a/SOURCES/0128-factory-we-don-t-want-that.patch b/SOURCES/0128-factory-we-don-t-want-that.patch
new file mode 100644
index 0000000..404e684
--- /dev/null
+++ b/SOURCES/0128-factory-we-don-t-want-that.patch
@@ -0,0 +1,47 @@
+From c5177fff7f87e08175f6a5c9dba204ea31bfd13a Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 16 Apr 2015 11:53:05 +0200
+Subject: [PATCH] factory: we don't want that
+
+---
+ Makefile.am            | 16 ++++++++--------
+ tmpfiles.d/etc.conf.m4 |  2 --
+ 2 files changed, 8 insertions(+), 10 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 6d6b650..8474b29 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2288,14 +2288,14 @@ INSTALL_DIRS += \
+ endif
+ 
+ # ------------------------------------------------------------------------------
+-dist_factory_etc_DATA = \
+-	factory/etc/nsswitch.conf
+-
+-if HAVE_PAM
+-dist_factory_pam_DATA = \
+-	factory/etc/pam.d/system-auth \
+-	factory/etc/pam.d/other
+-endif
++#dist_factory_etc_DATA = \
++#	factory/etc/nsswitch.conf
++#
++#if HAVE_PAM
++#dist_factory_pam_DATA = \
++#	factory/etc/pam.d/system-auth \
++#	factory/etc/pam.d/other
++#endif
+ 
+ # ------------------------------------------------------------------------------
+ if ENABLE_FIRSTBOOT
+diff --git a/tmpfiles.d/etc.conf.m4 b/tmpfiles.d/etc.conf.m4
+index 125d6e0..4937719 100644
+--- a/tmpfiles.d/etc.conf.m4
++++ b/tmpfiles.d/etc.conf.m4
+@@ -10,5 +10,3 @@
+ L /etc/os-release - - - - ../usr/lib/os-release
+ L /etc/localtime - - - - ../usr/share/zoneinfo/UTC
+ L+ /etc/mtab - - - - ../proc/self/mounts
+-C /etc/nsswitch.conf - - - -
+-C /etc/pam.d - - - -
diff --git a/SOURCES/0128-journald-use-a-bit-more-cleanup-magic.patch b/SOURCES/0128-journald-use-a-bit-more-cleanup-magic.patch
deleted file mode 100644
index 2a7e2f8..0000000
--- a/SOURCES/0128-journald-use-a-bit-more-cleanup-magic.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From f1a8d50c069f57f0b9d23c81e50686bc8a2e43b7 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 10 Dec 2013 19:51:47 +0000
-Subject: [PATCH] journald: use a bit more cleanup magic!
-
----
- src/journal/journald-stream.c | 8 +-------
- 1 file changed, 1 insertion(+), 7 deletions(-)
-
-diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
-index 4080622..771a2bd 100644
---- a/src/journal/journald-stream.c
-+++ b/src/journal/journald-stream.c
-@@ -75,7 +75,7 @@ struct StdoutStream {
- 
- static int stdout_stream_log(StdoutStream *s, const char *p) {
-         struct iovec iovec[N_IOVEC_META_FIELDS + 5];
--        char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL;
-+        _cleanup_free_ char *message = NULL, *syslog_priority = NULL, *syslog_facility = NULL, *syslog_identifier = NULL;
-         unsigned n = 0;
-         int priority;
-         char *label = NULL;
-@@ -128,12 +128,6 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
- #endif
- 
-         server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, label, label_len, s->unit_id, priority, 0);
--
--        free(message);
--        free(syslog_priority);
--        free(syslog_facility);
--        free(syslog_identifier);
--
-         return 0;
- }
- 
diff --git a/SOURCES/0129-activate-clean-up-inherited-descriptors.patch b/SOURCES/0129-activate-clean-up-inherited-descriptors.patch
deleted file mode 100644
index 3467859..0000000
--- a/SOURCES/0129-activate-clean-up-inherited-descriptors.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 25854e394d661eeb661c6974f01b492f55868307 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 10 Dec 2013 21:52:11 -0500
-Subject: [PATCH] activate: clean up inherited descriptors
-
-> [simon@troela server]$ /usr/lib/systemd/systemd-activate -l 9000 main.js
-> Assertion 'fd == 3 + count' failed at src/activate/activate.c:115,
-> function open_sockets(). Aborting.
-> Aborted (core dumped)
-
-> after a bit debuging i found the problem:
-> slim appears to leak an fd into all of its children:
-> stat /proc/14004/fd/3  (14004 is the pid a random process in my session)
->  File: '/proc/14004/fd/3' -> '/var/log/slim.log'
-
-systemd-activate should be robust against the shell (or anything else) leaking
-descriptors. Now everything except stdin/stdout/stderr and received sockets
-will be closed.
----
- src/activate/activate.c | 23 +++++++++++++++++++----
- 1 file changed, 19 insertions(+), 4 deletions(-)
-
-diff --git a/src/activate/activate.c b/src/activate/activate.c
-index a9461bc..6aa8b9f 100644
---- a/src/activate/activate.c
-+++ b/src/activate/activate.c
-@@ -137,6 +137,17 @@ static int open_sockets(int *epoll_fd, bool accept) {
-                 count ++;
-         }
- 
-+        /* Close logging and all other descriptors */
-+        if (arg_listen) {
-+                int except[3 + n];
-+
-+                for (fd = 0; fd < SD_LISTEN_FDS_START + n; fd++)
-+                        except[fd] = fd;
-+
-+                log_close();
-+                close_all_fds(except, 3 + n);
-+        }
-+
-         /** Note: we leak some fd's on error here. I doesn't matter
-          *  much, since the program will exit immediately anyway, but
-          *  would be a pain to fix.
-@@ -147,6 +158,7 @@ static int open_sockets(int *epoll_fd, bool accept) {
- 
-                 fd = make_socket_fd(*address, SOCK_STREAM | (arg_accept*SOCK_CLOEXEC));
-                 if (fd < 0) {
-+                        log_open();
-                         log_error("Failed to open '%s': %s", *address, strerror(-fd));
-                         return fd;
-                 }
-@@ -154,6 +166,9 @@ static int open_sockets(int *epoll_fd, bool accept) {
-                 count ++;
-         }
- 
-+        if (arg_listen)
-+                log_open();
-+
-         *epoll_fd = epoll_create1(EPOLL_CLOEXEC);
-         if (*epoll_fd < 0) {
-                 log_error("Failed to create epoll object: %m");
-@@ -298,10 +313,10 @@ static void sigchld_hdl(int sig, siginfo_t *t, void *data) {
- 
- static int install_chld_handler(void) {
-         int r;
--        struct sigaction act;
--        zero(act);
--        act.sa_flags = SA_SIGINFO;
--        act.sa_sigaction = sigchld_hdl;
-+        struct sigaction act = {
-+                .sa_flags = SA_SIGINFO,
-+                .sa_sigaction = sigchld_hdl,
-+        };
- 
-         r = sigaction(SIGCHLD, &act, 0);
-         if (r < 0)
diff --git a/SOURCES/0129-timedated-flip-internal-status-after-executing-opera.patch b/SOURCES/0129-timedated-flip-internal-status-after-executing-opera.patch
new file mode 100644
index 0000000..a39a1a6
--- /dev/null
+++ b/SOURCES/0129-timedated-flip-internal-status-after-executing-opera.patch
@@ -0,0 +1,38 @@
+From d7ca3b22fce0f97fe10a7abe6e0edc5de785ef98 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 21 Mar 2015 17:40:20 -0400
+Subject: [PATCH] timedated: flip internal status after executing operation
+
+timedated would set the internal status before calling out to systemd to do
+the actual change. When the operation was refused because of a SELinux denial,
+the state kept in timedated would get out of sync, and the second call from
+timedatectl would appear to succeed.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1014315
+(cherry picked from commit 192b98b8fe73c8fb4bb3d6540deb93f5fb6eb9d2)
+---
+ src/timedate/timedated.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
+index 66097ef..c3113b0 100644
+--- a/src/timedate/timedated.c
++++ b/src/timedate/timedated.c
+@@ -679,8 +679,6 @@ static int method_set_ntp(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus
+         if (r == 0)
+                 return 1;
+ 
+-        c->use_ntp = ntp;
+-
+         r = context_enable_ntp(c, bus, error);
+         if (r < 0)
+                 return r;
+@@ -689,6 +687,8 @@ static int method_set_ntp(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus
+         if (r < 0)
+                 return r;
+ 
++        c->use_ntp = ntp;
++
+         log_info("Set NTP to %s", c->use_ntp ? "enabled" : "disabled");
+ 
+         sd_bus_emit_properties_changed(bus, "/org/freedesktop/timedate1", "org.freedesktop.timedate1", "NTP", NULL);
diff --git a/SOURCES/0130-man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch b/SOURCES/0130-man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch
deleted file mode 100644
index 845b047..0000000
--- a/SOURCES/0130-man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From f0f727fbb8576afc7ea31f2b6aacccdd565472d0 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 11 Dec 2013 18:38:51 +0100
-Subject: [PATCH] man: explain in more detail how SYSTEMD_READY= influences
- SYSTEMD_WANTS= in udev rules
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1026860
----
- man/systemd.device.xml | 45 +++++++++++++++++++++++++++++++--------------
- 1 file changed, 31 insertions(+), 14 deletions(-)
-
-diff --git a/man/systemd.device.xml b/man/systemd.device.xml
-index 96ebe89..002b647 100644
---- a/man/systemd.device.xml
-+++ b/man/systemd.device.xml
-@@ -70,12 +70,15 @@
-                 since no device-specific options may be
-                 configured.</para>
- 
--                <para>systemd will automatically create dynamic device
--                units for all kernel devices that are marked with the
--                "systemd" udev tag (by default all block and network
--                devices, and a few others). This may be used to define
--                dependencies between devices and other
--                units.</para>
-+                <para>systemd will dynamically create device units for
-+                all kernel devices that are marked with the "systemd"
-+                udev tag (by default all block and network devices,
-+                and a few others). This may be used to define
-+                dependencies between devices and other units. To tag a
-+                udev device use <literal>TAG+="systemd"</literal> in
-+                the udev rules file, see
-+                <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>
-+                for details.</para>
- 
-                 <para>Device units are named after the
-                 <filename>/sys</filename> and
-@@ -93,7 +96,7 @@
- 
-                 <para>The settings of device units may either be
-                 configured via unit files, or directly from the udev
--                database (which is recommended). The following udev
-+                database (which is recommended). The following udev device
-                 properties are understood by systemd:</para>
- 
-                 <variablelist class='udev-directives'>
-@@ -101,16 +104,26 @@
-                                 <term><varname>SYSTEMD_WANTS=</varname></term>
-                                 <listitem><para>Adds dependencies of
-                                 type <varname>Wants</varname> from
--                                this unit to all listed units. This
-+                                the device unit to all listed units. This
-                                 may be used to activate arbitrary
--                                units, when a specific device becomes
-+                                units when a specific device becomes
-                                 available. Note that this and the
-                                 other tags are not taken into account
-                                 unless the device is tagged with the
-                                 <literal>systemd</literal> string in
-                                 the udev database, because otherwise
-                                 the device is not exposed as systemd
--                                unit.</para></listitem>
-+                                unit (see above). Note that systemd
-+                                will only act on
-+                                <varname>Wants</varname> dependencies
-+                                when a device first becomes active, it
-+                                will not act on them if they are added
-+                                to devices that are already
-+                                active. Use
-+                                <varname>SYSTEMD_READY=</varname> (see
-+                                below) to influence on which udev
-+                                event to trigger the device
-+                                dependencies.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-@@ -135,10 +148,14 @@
-                                 device disappears from the udev
-                                 tree. This option is useful to support
-                                 devices that initially show up in an
--                                uninitialized state in the tree, and for
--                                which a changed event is generated the
--                                moment they are fully set
--                                up.</para></listitem>
-+                                uninitialized state in the tree, and
-+                                for which a <literal>changed</literal>
-+                                event is generated the moment they are
-+                                fully set up. Note that
-+                                <varname>SYSTEMD_WANTS=</varname> (see
-+                                above) is not acted on as long as
-+                                <varname>SYSTEMD_READY=0</varname> is
-+                                set for a device.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
diff --git a/SOURCES/0130-timedated-fix-enable-disable-reversal.patch b/SOURCES/0130-timedated-fix-enable-disable-reversal.patch
new file mode 100644
index 0000000..43d83b8
--- /dev/null
+++ b/SOURCES/0130-timedated-fix-enable-disable-reversal.patch
@@ -0,0 +1,130 @@
+From 467145adad739b0426501d2fd7ce1c0afe977e67 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 16 Apr 2015 15:22:57 +0200
+Subject: [PATCH] timedated: fix enable/disable reversal
+
+The state was flipped later,
+but the enable/disable routine made use of the state to decide
+what to do.
+
+context_enable_ntp() and context_start_ntp() now get the desired
+state directly, so the Context parameter can be removed.
+
+(based on 81b843990297ad8c813c531fccd8da30bb715bd6)
+---
+ src/timedate/timedated.c | 50 +++++++++++++++++-------------------------------
+ 1 file changed, 18 insertions(+), 32 deletions(-)
+
+diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
+index c3113b0..f875149 100644
+--- a/src/timedate/timedated.c
++++ b/src/timedate/timedated.c
+@@ -280,39 +280,26 @@ static int context_read_ntp(Context *c, sd_bus *bus) {
+         return 0;
+ }
+ 
+-static int context_start_ntp(Context *c, sd_bus *bus, sd_bus_error *error) {
++static int context_start_ntp(sd_bus *bus, sd_bus_error *error, bool enabled) {
+         _cleanup_strv_free_ char **l = NULL;
+         char **i;
+         int r;
+ 
+-        assert(c);
+         assert(bus);
+         assert(error);
+ 
+         l = get_ntp_services();
+         STRV_FOREACH(i, l) {
+ 
+-                if (c->use_ntp)
+-                        r = sd_bus_call_method(
+-                                        bus,
+-                                        "org.freedesktop.systemd1",
+-                                        "/org/freedesktop/systemd1",
+-                                        "org.freedesktop.systemd1.Manager",
+-                                        "StartUnit",
+-                                        error,
+-                                        NULL,
+-                                        "ss", *i, "replace");
+-                else
+-                        r = sd_bus_call_method(
+-                                        bus,
+-                                        "org.freedesktop.systemd1",
+-                                        "/org/freedesktop/systemd1",
+-                                        "org.freedesktop.systemd1.Manager",
+-                                        "StopUnit",
+-                                        error,
+-                                        NULL,
+-                                        "ss", *i, "replace");
+-
++                r = sd_bus_call_method(
++                                bus,
++                                "org.freedesktop.systemd1",
++                                "/org/freedesktop/systemd1",
++                                "org.freedesktop.systemd1.Manager",
++                                enabled ? "StartUnit" : "StopUnit",
++                                error,
++                                NULL,
++                                "ss", *i, "replace");
+                 if (r < 0) {
+                         if (sd_bus_error_has_name(error, SD_BUS_ERROR_FILE_NOT_FOUND) ||
+                             sd_bus_error_has_name(error, "org.freedesktop.systemd1.LoadFailed") ||
+@@ -332,18 +319,17 @@ static int context_start_ntp(Context *c, sd_bus *bus, sd_bus_error *error) {
+         return -ENOTSUP;
+ }
+ 
+-static int context_enable_ntp(Context*c, sd_bus *bus, sd_bus_error *error) {
++static int context_enable_ntp(sd_bus *bus, sd_bus_error *error, bool enabled) {
+         _cleanup_strv_free_ char **l = NULL;
+         char **i;
+         int r;
+ 
+-        assert(c);
+         assert(bus);
+         assert(error);
+ 
+         l = get_ntp_services();
+         STRV_FOREACH(i, l) {
+-                if (c->use_ntp)
++                if (enabled)
+                         r = sd_bus_call_method(
+                                         bus,
+                                         "org.freedesktop.systemd1",
+@@ -662,15 +648,15 @@ static int method_set_time(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bu
+ }
+ 
+ static int method_set_ntp(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus_error *error) {
+-        int ntp, interactive;
++        int enabled, interactive;
+         Context *c = userdata;
+         int r;
+ 
+-        r = sd_bus_message_read(m, "bb", &ntp, &interactive);
++        r = sd_bus_message_read(m, "bb", &enabled, &interactive);
+         if (r < 0)
+                 return r;
+ 
+-        if ((bool)ntp == c->use_ntp)
++        if ((bool)enabled == c->use_ntp)
+                 return sd_bus_reply_method_return(m, NULL);
+ 
+         r = bus_verify_polkit_async(m, CAP_SYS_TIME, "org.freedesktop.timedate1.set-ntp", interactive, &c->polkit_registry, error);
+@@ -679,15 +665,15 @@ static int method_set_ntp(sd_bus *bus, sd_bus_message *m, void *userdata, sd_bus
+         if (r == 0)
+                 return 1;
+ 
+-        r = context_enable_ntp(c, bus, error);
++        r = context_enable_ntp(bus, error, enabled);
+         if (r < 0)
+                 return r;
+ 
+-        r = context_start_ntp(c, bus, error);
++        r = context_start_ntp(bus, error, enabled);
+         if (r < 0)
+                 return r;
+ 
+-        c->use_ntp = ntp;
++        c->use_ntp = enabled;
+ 
+         log_info("Set NTP to %s", c->use_ntp ? "enabled" : "disabled");
+ 
diff --git a/SOURCES/0131-core-make-SELinux-enable-disable-check-symmetric.patch b/SOURCES/0131-core-make-SELinux-enable-disable-check-symmetric.patch
new file mode 100644
index 0000000..7804e00
--- /dev/null
+++ b/SOURCES/0131-core-make-SELinux-enable-disable-check-symmetric.patch
@@ -0,0 +1,43 @@
+From bfd900a5a995e3bc342acd50ac816df6da37bf62 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 21 Mar 2015 18:50:10 -0400
+Subject: [PATCH] core: make SELinux enable/disable check symmetric
+
+We'd use the generic check for disable, and a unit-file-specific one for enable.
+Use the more specific one both ways.
+
+systemd[1]: SELinux access check scon=system_u:system_r:systemd_timedated_t:s0 tcon=system_u:system_r:init_t:s0 tclass=system perm=disable path=(null) cmdline=/usr/lib/systemd/systemd-timedated: -13
+systemd[1]: SELinux access check scon=system_u:system_r:systemd_timedated_t:s0 tcon=system_u:object_r:systemd_unit_file_t:s0 tclass=service perm=enable path=/usr/lib/systemd/system/systemd-timesyncd.service cmdline=/usr/lib/systemd/systemd-timedated: -13
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1014315
+(cherry picked from commit df823e23f04da832ad5fc078176f8c26597a9845)
+
+Conflicts:
+	src/core/dbus-manager.c
+---
+ src/core/dbus-manager.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
+index 8ba665d..2bc37ba 100644
+--- a/src/core/dbus-manager.c
++++ b/src/core/dbus-manager.c
+@@ -1772,15 +1772,15 @@ static int method_disable_unit_files_generic(
+         if (r == 0)
+                 return 1; /* No authorization for now, but the async polkit stuff will call us again when it has it */
+ 
+-        r = mac_selinux_access_check(message, verb, error);
++        r = sd_bus_message_read_strv(message, &l);
+         if (r < 0)
+                 return r;
+ 
+-        r = sd_bus_message_read_strv(message, &l);
++        r = sd_bus_message_read(message, "b", &runtime);
+         if (r < 0)
+                 return r;
+ 
+-        r = sd_bus_message_read(message, "b", &runtime);
++        r = mac_selinux_unit_access_check_strv(l, message, m, verb, error);
+         if (r < 0)
+                 return r;
+ 
diff --git a/SOURCES/0131-units-don-t-run-readahead-done-timers-in-containers.patch b/SOURCES/0131-units-don-t-run-readahead-done-timers-in-containers.patch
deleted file mode 100644
index b2a01c0..0000000
--- a/SOURCES/0131-units-don-t-run-readahead-done-timers-in-containers.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 295730ffeef69a057773ba201cb1ad9e81c187fa Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 11 Dec 2013 23:31:34 +0100
-Subject: [PATCH] units: don't run readahead done timers in containers
-
-We don't run the collector in the container either, hence we don't need
-to stop it either.
----
- units/systemd-readahead-done.service.in | 1 +
- units/systemd-readahead-done.timer      | 1 +
- 2 files changed, 2 insertions(+)
-
-diff --git a/units/systemd-readahead-done.service.in b/units/systemd-readahead-done.service.in
-index c3b2ac5..e0d9579 100644
---- a/units/systemd-readahead-done.service.in
-+++ b/units/systemd-readahead-done.service.in
-@@ -12,6 +12,7 @@ DefaultDependencies=no
- Conflicts=shutdown.target
- After=default.target
- Before=shutdown.target
-+ConditionVirtualization=no
- 
- [Service]
- Type=oneshot
-diff --git a/units/systemd-readahead-done.timer b/units/systemd-readahead-done.timer
-index 41bfb2b..a9f6278 100644
---- a/units/systemd-readahead-done.timer
-+++ b/units/systemd-readahead-done.timer
-@@ -12,6 +12,7 @@ DefaultDependencies=no
- Conflicts=shutdown.target
- After=default.target
- Before=shutdown.target
-+ConditionVirtualization=no
- 
- [Timer]
- OnActiveSec=30s
diff --git a/SOURCES/0132-nspawn-complain-and-continue-if-machine-has-same-id.patch b/SOURCES/0132-nspawn-complain-and-continue-if-machine-has-same-id.patch
deleted file mode 100644
index 1ba1db8..0000000
--- a/SOURCES/0132-nspawn-complain-and-continue-if-machine-has-same-id.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From e16c7a905dbb6882970a13678e42816847565841 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 11 Dec 2013 22:00:33 -0500
-Subject: [PATCH] nspawn: complain and continue if machine has same id
-
-If --link-journal=host or --link-journal=guest is used, this totally
-cannot work and we exit with an error. If however --link-journal=auto
-or --link-journal=no is used, just display a warning.
-
-Having the same machine id can happen if booting from the same
-filesystem as the host. Since other things mostly function correctly,
-let's allow that.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=68369
----
- src/nspawn/nspawn.c | 23 +++++++++++++++++++----
- 1 file changed, 19 insertions(+), 4 deletions(-)
-
-diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index db47fbd..4bc49a3 100644
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -802,14 +802,11 @@ static int setup_hostname(void) {
- }
- 
- static int setup_journal(const char *directory) {
--        sd_id128_t machine_id;
-+        sd_id128_t machine_id, this_id;
-         _cleanup_free_ char *p = NULL, *b = NULL, *q = NULL, *d = NULL;
-         char *id;
-         int r;
- 
--        if (arg_link_journal == LINK_NO)
--                return 0;
--
-         p = strappend(directory, "/etc/machine-id");
-         if (!p)
-                 return log_oom();
-@@ -833,6 +830,24 @@ static int setup_journal(const char *directory) {
-                 return r;
-         }
- 
-+        r = sd_id128_get_machine(&this_id);
-+        if (r < 0) {
-+                log_error("Failed to retrieve machine ID: %s", strerror(-r));
-+                return r;
-+        }
-+
-+        if (sd_id128_equal(machine_id, this_id)) {
-+                log_full(arg_link_journal == LINK_AUTO ? LOG_WARNING : LOG_ERR,
-+                         "Host and machine ids are equal (%s): refusing to link journals", id);
-+                if (arg_link_journal == LINK_AUTO)
-+                        return 0;
-+                return
-+                        -EEXIST;
-+        }
-+
-+        if (arg_link_journal == LINK_NO)
-+                return 0;
-+
-         free(p);
-         p = strappend("/var/log/journal/", id);
-         q = strjoin(directory, "/var/log/journal/", id, NULL);
diff --git a/SOURCES/0132-shared-add-path_compare-an-ordering-path-comparison.patch b/SOURCES/0132-shared-add-path_compare-an-ordering-path-comparison.patch
new file mode 100644
index 0000000..f929624
--- /dev/null
+++ b/SOURCES/0132-shared-add-path_compare-an-ordering-path-comparison.patch
@@ -0,0 +1,149 @@
+From 331328223912b66dd25d5cb6ed250d67419d54de Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Mon, 16 Mar 2015 21:58:35 +0100
+Subject: [PATCH] shared: add path_compare(), an ordering path comparison
+
+... and make path_equal() a simple wrapper around it.
+
+(cherry picked from commit 2230852bd9755e1b7bfd1260082471f559b0a005)
+---
+ src/shared/path-util.c    | 37 +++++++++++++++++++++++++++----------
+ src/shared/path-util.h    |  1 +
+ src/test/test-path-util.c | 36 +++++++++++++++++++++++++-----------
+ 3 files changed, 53 insertions(+), 21 deletions(-)
+
+diff --git a/src/shared/path-util.c b/src/shared/path-util.c
+index 70bc1ca..d5510bf 100644
+--- a/src/shared/path-util.c
++++ b/src/shared/path-util.c
+@@ -403,12 +403,18 @@ char* path_startswith(const char *path, const char *prefix) {
+         }
+ }
+ 
+-bool path_equal(const char *a, const char *b) {
++int path_compare(const char *a, const char *b) {
++        int d;
++
+         assert(a);
+         assert(b);
+ 
+-        if ((a[0] == '/') != (b[0] == '/'))
+-                return false;
++        /* A relative path and an abolute path must not compare as equal.
++         * Which one is sorted before the other does not really matter.
++         * Here a relative path is ordered before an absolute path. */
++        d = (a[0] == '/') - (b[0] == '/');
++        if (d)
++                return d;
+ 
+         for (;;) {
+                 size_t j, k;
+@@ -417,25 +423,36 @@ bool path_equal(const char *a, const char *b) {
+                 b += strspn(b, "/");
+ 
+                 if (*a == 0 && *b == 0)
+-                        return true;
++                        return 0;
+ 
+-                if (*a == 0 || *b == 0)
+-                        return false;
++                /* Order prefixes first: "/foo" before "/foo/bar" */
++                if (*a == 0)
++                        return -1;
++                if (*b == 0)
++                        return 1;
+ 
+                 j = strcspn(a, "/");
+                 k = strcspn(b, "/");
+ 
+-                if (j != k)
+-                        return false;
++                /* Alphabetical sort: "/foo/aaa" before "/foo/b" */
++                d = memcmp(a, b, MIN(j, k));
++                if (d)
++                        return (d > 0) - (d < 0); /* sign of d */
+ 
+-                if (memcmp(a, b, j) != 0)
+-                        return false;
++                /* Sort "/foo/a" before "/foo/aaa" */
++                d = (j > k) - (j < k);  /* sign of (j - k) */
++                if (d)
++                        return d;
+ 
+                 a += j;
+                 b += k;
+         }
+ }
+ 
++bool path_equal(const char *a, const char *b) {
++        return path_compare(a, b) == 0;
++}
++
+ bool path_equal_or_files_same(const char *a, const char *b) {
+         return path_equal(a, b) || files_same(a, b) > 0;
+ }
+diff --git a/src/shared/path-util.h b/src/shared/path-util.h
+index bcf116e..ca81b49 100644
+--- a/src/shared/path-util.h
++++ b/src/shared/path-util.h
+@@ -44,6 +44,7 @@ char* path_make_absolute_cwd(const char *p);
+ int path_make_relative(const char *from_dir, const char *to_path, char **_r);
+ char* path_kill_slashes(char *path);
+ char* path_startswith(const char *path, const char *prefix) _pure_;
++int path_compare(const char *a, const char *b) _pure_;
+ bool path_equal(const char *a, const char *b) _pure_;
+ bool path_equal_or_files_same(const char *a, const char *b);
+ char* path_join(const char *root, const char *path, const char *rest);
+diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c
+index 11aa52a..6396fcb 100644
+--- a/src/test/test-path-util.c
++++ b/src/test/test-path-util.c
+@@ -27,23 +27,37 @@
+ #include "macro.h"
+ #include "strv.h"
+ 
++#define test_path_compare(a, b, result) {                 \
++                assert_se(path_compare(a, b) == result);  \
++                assert_se(path_compare(b, a) == -result); \
++                assert_se(path_equal(a, b) == !result);   \
++                assert_se(path_equal(b, a) == !result);   \
++        }
+ 
+ static void test_path(void) {
+-        assert_se(path_equal("/goo", "/goo"));
+-        assert_se(path_equal("//goo", "/goo"));
+-        assert_se(path_equal("//goo/////", "/goo"));
+-        assert_se(path_equal("goo/////", "goo"));
++        test_path_compare("/goo", "/goo", 0);
++        test_path_compare("/goo", "/goo", 0);
++        test_path_compare("//goo", "/goo", 0);
++        test_path_compare("//goo/////", "/goo", 0);
++        test_path_compare("goo/////", "goo", 0);
++
++        test_path_compare("/goo/boo", "/goo//boo", 0);
++        test_path_compare("//goo/boo", "/goo/boo//", 0);
+ 
+-        assert_se(path_equal("/goo/boo", "/goo//boo"));
+-        assert_se(path_equal("//goo/boo", "/goo/boo//"));
++        test_path_compare("/", "///", 0);
+ 
+-        assert_se(path_equal("/", "///"));
++        test_path_compare("/x", "x/", 1);
++        test_path_compare("x/", "/", -1);
+ 
+-        assert_se(!path_equal("/x", "x/"));
+-        assert_se(!path_equal("x/", "/"));
++        test_path_compare("/x/./y", "x/y", 1);
++        test_path_compare("x/.y", "x/y", -1);
+ 
+-        assert_se(!path_equal("/x/./y", "x/y"));
+-        assert_se(!path_equal("x/.y", "x/y"));
++        test_path_compare("foo", "/foo", -1);
++        test_path_compare("/foo", "/foo/bar", -1);
++        test_path_compare("/foo/aaa", "/foo/b", -1);
++        test_path_compare("/foo/aaa", "/foo/b/a", -1);
++        test_path_compare("/foo/a", "/foo/aaa", -1);
++        test_path_compare("/foo/a/b", "/foo/aaa", -1);
+ 
+         assert_se(path_is_absolute("/"));
+         assert_se(!path_is_absolute("./"));
diff --git a/SOURCES/0133-core-namespace-fix-path-sorting.patch b/SOURCES/0133-core-namespace-fix-path-sorting.patch
new file mode 100644
index 0000000..c481597
--- /dev/null
+++ b/SOURCES/0133-core-namespace-fix-path-sorting.patch
@@ -0,0 +1,58 @@
+From 0881ff2b6842798836faef3a55a04a3e6e0cbb66 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Mon, 16 Mar 2015 22:04:21 +0100
+Subject: [PATCH] core/namespace: fix path sorting
+
+The comparison function we use for qsorting paths is overly indifferent.
+Consider these 3 paths for sorting:
+ /foo
+ /bar
+ /foo/foo
+qsort() may compare:
+ "/foo" with "/bar" => 0, indifference
+ "/bar" with "/foo/foo" => 0, indifference
+and assume transitively that "/foo" and "/foo/foo" are also indifferent.
+
+But this is wrong, we want "/foo" sorted before "/foo/foo".
+The comparison function must be transitive.
+
+Use path_compare(), which behaves properly.
+
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1184016
+(cherry picked from commit a0827e2b123010c46cfe4f03eebba57d92f9efc4)
+---
+ src/core/namespace.c | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/src/core/namespace.c b/src/core/namespace.c
+index 4fecd32..d4f1c86 100644
+--- a/src/core/namespace.c
++++ b/src/core/namespace.c
+@@ -91,9 +91,11 @@ static int append_mounts(BindMount **p, char **strv, MountMode mode) {
+ 
+ static int mount_path_compare(const void *a, const void *b) {
+         const BindMount *p = a, *q = b;
++        int d;
+ 
+-        if (path_equal(p->path, q->path)) {
++        d = path_compare(p->path, q->path);
+ 
++        if (!d) {
+                 /* If the paths are equal, check the mode */
+                 if (p->mode < q->mode)
+                         return -1;
+@@ -105,13 +107,7 @@ static int mount_path_compare(const void *a, const void *b) {
+         }
+ 
+         /* If the paths are not equal, then order prefixes first */
+-        if (path_startswith(p->path, q->path))
+-                return 1;
+-
+-        if (path_startswith(q->path, p->path))
+-                return -1;
+-
+-        return 0;
++        return d;
+ }
+ 
+ static void drop_duplicates(BindMount *m, unsigned *n) {
diff --git a/SOURCES/0133-man-beef-up-ExecStart-description.patch b/SOURCES/0133-man-beef-up-ExecStart-description.patch
deleted file mode 100644
index 0100ab5..0000000
--- a/SOURCES/0133-man-beef-up-ExecStart-description.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From 1e09f64d4735563be7b7f7e98d727ba15fe6a523 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 14 Dec 2013 17:21:55 -0500
-Subject: [PATCH] man: beef up ExecStart description
-
-We have lots of questions from people who assume that shell syntax works
-here, so let's be very explicit what is allowed and what is not. A few
-examples should also help.
-
-http://bugs.debian.org/732156
----
- man/systemd.service.xml | 97 ++++++++++++++++++++++++++++++++++++++++---------
- 1 file changed, 80 insertions(+), 17 deletions(-)
-
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 3f31c11..ca297ba 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -305,9 +305,10 @@
-                                 <term><varname>ExecStart=</varname></term>
-                                 <listitem><para>Commands with their
-                                 arguments that are executed when this
--                                service is started. The first
--                                argument must be an absolute path
--                                name.</para>
-+                                service is started. For each of the
-+                                specified commands, the first argument
-+                                must be an absolute and literal path
-+                                to an executable.</para>
- 
-                                 <para>When <varname>Type</varname> is
-                                 not <option>oneshot</option>, only one
-@@ -332,6 +333,35 @@
-                                 prior assignments of this option will
-                                 have no effect.</para>
- 
-+                                <para>Each command line is split on
-+                                whitespace, with the first item being
-+                                the command to execute, and the
-+                                subsequent items being the arguments.
-+                                Double quotes ("...") and single
-+                                quotes ('...') may be used, in which
-+                                case everything until the next
-+                                matching quote becomes part of the
-+                                same argument. Quotes themselves are
-+                                removed after parsing. In addition, a
-+                                trailing backslash
-+                                (<literal>\</literal>) may be used to
-+                                merge lines. This syntax is intended
-+                                to be very similar to shell syntax,
-+                                but only the meta-characters and
-+                                expansions described in the following
-+                                paragraphs are understood.
-+                                Specifically, redirection using
-+                                <literal>&lt;</literal>,
-+                                <literal>&lt;&lt;</literal>,
-+                                <literal>&gt;</literal>, and
-+                                <literal>&gt;&gt;</literal>, pipes
-+                                using <literal>|</literal>, and
-+                                running programs in the background
-+                                using <literal>&amp;</literal>
-+                                and <emphasis>other elements of shell
-+                                syntax are not supported</emphasis>.
-+                                </para>
-+
-                                 <para>If more than one command is
-                                 specified, the commands are invoked
-                                 one by one sequentially in the order
-@@ -350,10 +380,11 @@
-                                 <para>The command line accepts
-                                 <literal>%</literal> specifiers as
-                                 described in
--                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. Note
--                                that the first argument of the command
--                                line (i.e. the program to execute) may
--                                not include specifiers.</para>
-+                                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
-+                                Note that the first argument of the
-+                                command line (i.e. the program to
-+                                execute) may not include
-+                                specifiers.</para>
- 
-                                 <para>Basic environment variable
-                                 substitution is supported. Use
-@@ -372,9 +403,7 @@
-                                 more arguments. To pass literal dollar sign
-                                 use <literal>$$</literal>. Note that the first
-                                 argument (i.e. the program to execute)
--                                may not be a variable, since it must
--                                be a literal and absolute path
--                                name.</para>
-+                                may not be a variable.</para>
- 
-                                 <para>Optionally, if the absolute file
-                                 name is prefixed with
-@@ -402,13 +431,47 @@
-                                 <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'
-                                 </programlisting>
- 
--                                <para>For services run by a user
--                                instance of systemd the special
--                                environment variable
--                                <varname>$MANAGERPID</varname> is set
--                                to the PID of the systemd
--                                instance.</para>
--                                </listitem>
-+                                <para>Only select environment variables
-+                                are set for executed commands. See
-+                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
-+                                </para>
-+
-+                                <para>Example:</para>
-+                                <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"
-+                                </programlisting>
-+                                <para>This will execute
-+                                <command>/bin/echo</command> two
-+                                times, each time with one argument,
-+                                <literal>one</literal> and
-+                                <literal>two two</literal>,
-+                                respectively. Since two commands are
-+                                specified
-+                                <varname>Type=oneshot</varname> must
-+                                be used.</para>
-+
-+                                <para>Example:</para>
-+                                <programlisting>ExecStart=/bin/echo / &gt;/dev/null &amp; \; \
-+/bin/ls
-+                                </programlisting>
-+                                <para>This will execute
-+                                <command>/bin/echo</command> with five
-+                                arguments: <literal>/</literal>,
-+                                <literal>&gt;/dev/null</literal>,
-+                                <literal>&amp;</literal>,
-+                                <literal>;</literal>, and
-+                                <literal>/bin/ls</literal>.</para>
-+
-+                                <para>Example:</para>
-+                                <programlisting>Environment="ONE=one" 'TWO=two two'
-+ExecStart=/bin/echo $ONE $TWO ${TWO}
-+                                </programlisting>
-+                                <para>This will execute
-+                                <command>/bin/echo</command> with four
-+                                arguments: <literal>one</literal>,
-+                                <literal>two</literal>,
-+                                <literal>two</literal>, and
-+                                <literal>two two</literal>.</para>
-+                              </listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
diff --git a/SOURCES/0134-machine-do-not-rely-on-asprintf-setting-arg-on-error.patch b/SOURCES/0134-machine-do-not-rely-on-asprintf-setting-arg-on-error.patch
new file mode 100644
index 0000000..bfc0060
--- /dev/null
+++ b/SOURCES/0134-machine-do-not-rely-on-asprintf-setting-arg-on-error.patch
@@ -0,0 +1,44 @@
+From 4e78db7126779a9f6432ead9a73cdab1087405bc Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 17 Apr 2015 15:12:00 +0200
+Subject: [PATCH] machine: do not rely on asprintf setting arg on error
+
+Strictly speaking, the output variable is undefined if asprintf fails.
+We use the return value not the arg everywhere, and should we do here.
+
+(Based on 2c07315225bef6be4830bce25a74da7f0ba4fcdc)
+---
+ src/machine/machine-dbus.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
+index b0f0f66..624a99f 100644
+--- a/src/machine/machine-dbus.c
++++ b/src/machine/machine-dbus.c
+@@ -438,6 +438,7 @@ int bus_machine_method_open_login(sd_bus *bus, sd_bus_message *message, void *us
+         _cleanup_close_ int master = -1;
+         Machine *m = userdata;
+         const char *p;
++        char *address;
+         int r;
+ 
+         if (m->class != MACHINE_CONTAINER)
+@@ -475,13 +476,14 @@ int bus_machine_method_open_login(sd_bus *bus, sd_bus_message *message, void *us
+                 return r;
+ 
+ #ifdef ENABLE_KDBUS
+-        asprintf(&container_bus->address, "x-machine-kernel:pid=" PID_FMT ";x-machine-unix:pid=" PID_FMT, m->leader, m->leader);
++#  define ADDRESS_FMT "x-machine-kernel:pid=%1$" PID_PRI ";x-machine-unix:pid=%1$" PID_PRI
+ #else
+-        asprintf(&container_bus->address, "x-machine-unix:pid=" PID_FMT, m->leader);
++#  define ADDRESS_FMT "x-machine-unix:pid=%1$" PID_PRI
+ #endif
+-        if (!container_bus->address)
+-                return -ENOMEM;
++        if (asprintf(&address, ADDRESS_FMT, m->leader) < 0)
++                return log_oom();
+ 
++        container_bus->address = address;
+         container_bus->bus_client = true;
+         container_bus->trusted = false;
+         container_bus->is_system = true;
diff --git a/SOURCES/0134-man-remove-advice-to-avoid-setting-the-same-var-more.patch b/SOURCES/0134-man-remove-advice-to-avoid-setting-the-same-var-more.patch
deleted file mode 100644
index c5fc953..0000000
--- a/SOURCES/0134-man-remove-advice-to-avoid-setting-the-same-var-more.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 69924ed702e14592ba0aae1510fca652c7d306df Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 14 Dec 2013 17:30:25 -0500
-Subject: [PATCH] man: remove advice to avoid setting the same var more than
- once
-
-So far the compatibility with .desktop settings hasn't been imporant
-at all, and we do not want people to write convoluted unit
-files.
----
- man/systemd.service.xml |  6 +-----
- man/systemd.unit.xml    | 11 +++++++++++
- 2 files changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index ca297ba..8f9137c 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -321,11 +321,7 @@
-                                 (these semicolons must be passed as
-                                 separate words). Alternatively, this
-                                 directive may be specified more than
--                                once with the same effect. However,
--                                the latter syntax is not recommended
--                                for compatibility with parsers
--                                suitable for XDG
--                                <filename>.desktop</filename> files.
-+                                once with the same effect.
-                                 Lone semicolons may be escaped as
-                                 <literal>\;</literal>. If the empty
-                                 string is assigned to this option, the
-diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
-index 029392c..77127ff 100644
---- a/man/systemd.unit.xml
-+++ b/man/systemd.unit.xml
-@@ -120,6 +120,17 @@
-                 <citerefentry><refentrytitle>systemd.scope</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
-                 </para>
- 
-+                <para>Various settings are allowed to be specified
-+                more than once, in which case the interpretation
-+                depends on the setting. Often, multiple settings form
-+                a list, and setting to an empty value "resets", which
-+                means that previous assignments are ignored. When this
-+                is allowed, it is mentioned in the description of the
-+                setting. Note that using multiple assignments to the
-+                same value makes the unit file incompatible with
-+                parsers for the XDG <filename>.desktop</filename> file
-+                format.</para>
-+
-                 <para>Unit files are loaded from a set of paths
-                 determined during compilation, described in the next section.
-                 </para>
diff --git a/SOURCES/0135-some-compilators-don-t-support-__INCLUDE_LEVEL__.patch b/SOURCES/0135-some-compilators-don-t-support-__INCLUDE_LEVEL__.patch
new file mode 100644
index 0000000..405e9d8
--- /dev/null
+++ b/SOURCES/0135-some-compilators-don-t-support-__INCLUDE_LEVEL__.patch
@@ -0,0 +1,22 @@
+From 5a21b0644425a8f1decdb6d52b93e2a73d5c75bf Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 21 Apr 2015 17:02:22 +0200
+Subject: [PATCH] some compilators don't support __INCLUDE_LEVEL__
+
+---
+ src/systemd/_sd-common.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/systemd/_sd-common.h b/src/systemd/_sd-common.h
+index 896a027..e9426a4 100644
+--- a/src/systemd/_sd-common.h
++++ b/src/systemd/_sd-common.h
+@@ -24,7 +24,7 @@
+ 
+ /* This is a private header; never even think of including this directly! */
+ 
+-#if __INCLUDE_LEVEL__ <= 1
++#if defined __INCLUDE_LEVEL__ &&  __INCLUDE_LEVEL__ <= 1
+ #error "Do not include _sd-common.h directly; it is a private header."
+ #endif
+ 
diff --git a/SOURCES/0135-systemctl-add-the-plain-option-to-the-help-message.patch b/SOURCES/0135-systemctl-add-the-plain-option-to-the-help-message.patch
deleted file mode 100644
index 23dd90e..0000000
--- a/SOURCES/0135-systemctl-add-the-plain-option-to-the-help-message.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From f1150c21ae7c7b337c29c12624046eccebc6b636 Mon Sep 17 00:00:00 2001
-From: Djalal Harouni <tixxdz@opendz.org>
-Date: Sun, 15 Dec 2013 00:05:38 +0100
-Subject: [PATCH] systemctl: add the --plain option to the help message
-
----
- src/systemctl/systemctl.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index 1d68b38..d29133c 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -4745,7 +4745,8 @@ static int systemctl_help(void) {
-                "     --root=PATH      Enable unit files in the specified root directory\n"
-                "  -n --lines=INTEGER  Number of journal entries to show\n"
-                "  -o --output=STRING  Change journal output mode (short, short-monotonic,\n"
--               "                      verbose, export, json, json-pretty, json-sse, cat)\n\n"
-+               "                      verbose, export, json, json-pretty, json-sse, cat)\n"
-+               "     --plain          Print unit dependencies as a list instead of a tree\n\n"
-                "Unit Commands:\n"
-                "  list-units                      List loaded units\n"
-                "  list-sockets                    List loaded sockets ordered by address\n"
diff --git a/SOURCES/0136-Fix-a-few-resource-leaks-in-error-paths.patch b/SOURCES/0136-Fix-a-few-resource-leaks-in-error-paths.patch
deleted file mode 100644
index 0e9ce24..0000000
--- a/SOURCES/0136-Fix-a-few-resource-leaks-in-error-paths.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From c26444ca9751a1f7cec28f8140b9674cec2ee3ce Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 15 Dec 2013 16:25:04 -0500
-Subject: [PATCH] Fix a few resource leaks in error paths
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1043304
-
-Conflicts:
-	src/libsystemd-bus/bus-objects.c
-	src/udev/net/link-config.c
----
- src/sleep/sleep.c | 15 +++++++--------
- 1 file changed, 7 insertions(+), 8 deletions(-)
-
-diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
-index a56ab89..f96987f 100644
---- a/src/sleep/sleep.c
-+++ b/src/sleep/sleep.c
-@@ -57,15 +57,14 @@ static int write_mode(char **modes) {
-         return r;
- }
- 
--static int write_state(FILE *f0, char **states) {
--        FILE _cleanup_fclose_ *f = f0;
-+static int write_state(FILE **f, char **states) {
-         char **state;
-         int r = 0;
- 
-         STRV_FOREACH(state, states) {
-                 int k;
- 
--                k = write_string_to_file(f, *state);
-+                k = write_string_to_file(*f, *state);
-                 if (k == 0)
-                         return 0;
-                 log_debug("Failed to write '%s' to /sys/power/state: %s",
-@@ -73,9 +72,9 @@ static int write_state(FILE *f0, char **states) {
-                 if (r == 0)
-                         r = k;
- 
--                fclose(f);
--                f = fopen("/sys/power/state", "we");
--                if (!f) {
-+                fclose(*f);
-+                *f = fopen("/sys/power/state", "we");
-+                if (!*f) {
-                         log_error("Failed to open /sys/power/state: %m");
-                         return -errno;
-                 }
-@@ -87,7 +86,7 @@ static int write_state(FILE *f0, char **states) {
- static int execute(char **modes, char **states) {
-         char* arguments[4];
-         int r;
--        FILE *f;
-+        _cleanup_fclose_ FILE *f = NULL;
-         const char* note = strappenda("SLEEP=", arg_verb);
- 
-         /* This file is opened first, so that if we hit an error,
-@@ -115,7 +114,7 @@ static int execute(char **modes, char **states) {
-                    note,
-                    NULL);
- 
--        r = write_state(f, states);
-+        r = write_state(&f, states);
-         if (r < 0)
-                 return r;
- 
diff --git a/SOURCES/0136-udev-net_id-support-multi-port-enpo-device-names.patch b/SOURCES/0136-udev-net_id-support-multi-port-enpo-device-names.patch
new file mode 100644
index 0000000..ad8d40b
--- /dev/null
+++ b/SOURCES/0136-udev-net_id-support-multi-port-enpo-device-names.patch
@@ -0,0 +1,72 @@
+From 88eb414beca3ab29f40a6e422faa790ddaae2918 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Wed, 1 Apr 2015 16:51:02 +0200
+Subject: [PATCH] udev: net_id - support multi-port enpo* device names
+
+I'd argue that having firmware labels for such devices makes
+no sense, but they exist, so make sure we handle them as best
+as we can.
+---
+ src/udev/udev-builtin-net_id.c | 33 +++++++++++++++++++++++++--------
+ 1 file changed, 25 insertions(+), 8 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 99caa0a..6a5ada6 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -35,7 +35,7 @@
+  * Type of names:
+  *   b<number>                             -- BCMA bus core number
+  *   ccw<name>                             -- CCW bus group name
+- *   o<index>                              -- on-board device index number
++ *   o<index>[d<dev_port>]                 -- on-board device index number
+  *   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
+  *   x<MAC>                                -- MAC address
+  *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_id>/<dev_port>]
+@@ -128,22 +128,39 @@ struct netnames {
+ 
+ /* retrieve on-board index number and label from firmware */
+ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
+-        const char *index;
++        unsigned dev_port = 0;
++        size_t l;
++        char *s;
++        const char *attr;
+         int idx;
+ 
+         /* ACPI _DSM  -- device specific method for naming a PCI or PCI Express device */
+-        index = udev_device_get_sysattr_value(names->pcidev, "acpi_index");
++        attr = udev_device_get_sysattr_value(names->pcidev, "acpi_index");
+         /* SMBIOS type 41 -- Onboard Devices Extended Information */
+-        if (!index)
+-                index = udev_device_get_sysattr_value(names->pcidev, "index");
+-        if (!index)
++        if (!attr)
++                attr = udev_device_get_sysattr_value(names->pcidev, "index");
++        if (!attr)
+                 return -ENOENT;
+-        idx = strtoul(index, NULL, 0);
++
++        idx = strtoul(attr, NULL, 0);
+         if (idx <= 0)
+                 return -EINVAL;
+-        snprintf(names->pci_onboard, sizeof(names->pci_onboard), "o%d", idx);
++
++        /* kernel provided multi-device index */
++        attr = udev_device_get_sysattr_value(dev, "dev_port");
++        if (attr)
++                dev_port = strtol(attr, NULL, 10);
++
++        s = names->pci_onboard;
++        l = sizeof(names->pci_onboard);
++        l = strpcpyf(&s, l, "o%d", idx);
++        if (dev_port > 0)
++                l = strpcpyf(&s, l, "d%d", dev_port);
++        if (l == 0)
++                names->pci_onboard[0] = '\0';
+ 
+         names->pci_onboard_label = udev_device_get_sysattr_value(names->pcidev, "label");
++
+         return 0;
+ }
+ 
diff --git a/SOURCES/0137-Fix-a-few-signed-unsigned-format-string-issues.patch b/SOURCES/0137-Fix-a-few-signed-unsigned-format-string-issues.patch
deleted file mode 100644
index 1991645..0000000
--- a/SOURCES/0137-Fix-a-few-signed-unsigned-format-string-issues.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From fbf1747793446a4779dbd503ba07d3e0cb3cd360 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 15 Dec 2013 16:26:27 -0500
-Subject: [PATCH] Fix a few signed/unsigned format string issues
-
-Since numbers involved are all small, behaviour was correct already.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1043304
----
- src/shared/time-util.c         |  2 +-
- src/udev/udev-builtin-net_id.c | 21 +++++++--------------
- 2 files changed, 8 insertions(+), 15 deletions(-)
-
-diff --git a/src/shared/time-util.c b/src/shared/time-util.c
-index 81d4ede..d31401b 100644
---- a/src/shared/time-util.c
-+++ b/src/shared/time-util.c
-@@ -382,7 +382,7 @@ void dual_timestamp_deserialize(const char *value, dual_timestamp *t) {
-         assert(value);
-         assert(t);
- 
--        if (sscanf(value, "%lli %llu", &a, &b) != 2)
-+        if (sscanf(value, "%llu %llu", &a, &b) != 2)
-                 log_debug("Failed to parse finish timestamp value %s", value);
-         else {
-                 t->realtime = a;
-diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
-index d9de46d..b3cb04b 100644
---- a/src/udev/udev-builtin-net_id.c
-+++ b/src/udev/udev-builtin-net_id.c
-@@ -170,23 +170,17 @@ out:
- 
- static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
-         struct udev *udev = udev_device_get_udev(names->pcidev);
--        unsigned int domain;
--        unsigned int bus;
--        unsigned int slot;
--        unsigned int func;
--        unsigned int dev_id = 0;
-+        unsigned domain, bus, slot, func, dev_id = 0;
-         size_t l;
-         char *s;
-         const char *attr;
-         struct udev_device *pci = NULL;
--        char slots[256];
--        DIR *dir;
-+        char slots[256], str[256];
-+        _cleanup_closedir_ DIR *dir = NULL;
-         struct dirent *dent;
--        char str[256];
--        int hotplug_slot = 0;
--        int err = 0;
-+        int hotplug_slot = 0, err = 0;
- 
--        if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%d", &domain, &bus, &slot, &func) != 4)
-+        if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%u", &domain, &bus, &slot, &func) != 4)
-                 return -ENOENT;
- 
-         /* kernel provided multi-device index */
-@@ -243,7 +237,6 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
-                 if (hotplug_slot > 0)
-                         break;
-         }
--        closedir(dir);
- 
-         if (hotplug_slot > 0) {
-                 s = names->pci_slot;
-@@ -345,11 +338,11 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) {
-                 return -ENOENT;
- 
-         /* bus num:core num */
--        if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*d:%d", &core) != 1)
-+        if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*u:%u", &core) != 1)
-                 return -EINVAL;
-         /* suppress the common core == 0 */
-         if (core > 0)
--                snprintf(names->bcma_core, sizeof(names->bcma_core), "b%d", core);
-+                snprintf(names->bcma_core, sizeof(names->bcma_core), "b%u", core);
- 
-         names->type = NET_BCMA;
-         return 0;
diff --git a/SOURCES/0137-udev-net_id-improve-comments.patch b/SOURCES/0137-udev-net_id-improve-comments.patch
new file mode 100644
index 0000000..7af802d
--- /dev/null
+++ b/SOURCES/0137-udev-net_id-improve-comments.patch
@@ -0,0 +1,35 @@
+From 127c3f7b5ca3158851dc4a747f664ce43b2a94ee Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Wed, 1 Apr 2015 23:34:19 +0200
+Subject: [PATCH] udev: net_id - improve comments
+
+The dev_port concept is a bit confusing, expand on the comment a bit.
+
+Conflicts:
+	src/udev/udev-builtin-net_id.c
+---
+ src/udev/udev-builtin-net_id.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 6a5ada6..2cc1fd4 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -146,7 +146,7 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
+         if (idx <= 0)
+                 return -EINVAL;
+ 
+-        /* kernel provided multi-device index */
++        /* kernel provided port index for multiple ports on a single PCI function */
+         attr = udev_device_get_sysattr_value(dev, "dev_port");
+         if (attr)
+                 dev_port = strtol(attr, NULL, 10);
+@@ -199,7 +199,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+         if (sscanf(udev_device_get_sysname(names->pcidev), "%x:%x:%x.%u", &domain, &bus, &slot, &func) != 4)
+                 return -ENOENT;
+ 
+-        /* kernel provided multi-device index */
++        /* kernel provided port index for multiple ports on a single PCI function */
+         attr = udev_device_get_sysattr_value(dev, "dev_id");
+         if (attr) {
+                 dev_id = strtol(attr, NULL, 16);
diff --git a/SOURCES/0138-journal-file-protect-against-alloca-0.patch b/SOURCES/0138-journal-file-protect-against-alloca-0.patch
deleted file mode 100644
index c069194..0000000
--- a/SOURCES/0138-journal-file-protect-against-alloca-0.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From d3bf15d0b7c461aae4d97fe6425a6f0cea277222 Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Mon, 16 Dec 2013 23:35:30 +0100
-Subject: [PATCH] journal-file: protect against alloca(0)
-
----
- src/journal/journal-file.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 962cdd6..ebf72f3 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -2730,7 +2730,8 @@ int journal_file_copy_entry(JournalFile *from, JournalFile *to, Object *o, uint6
-         ts.realtime = le64toh(o->entry.realtime);
- 
-         n = journal_file_entry_n_items(o);
--        items = alloca(sizeof(EntryItem) * n);
-+        /* alloca() can't take 0, hence let's allocate at least one */
-+        items = alloca(sizeof(EntryItem) * MAX(1u, n));
- 
-         for (i = 0; i < n; i++) {
-                 uint64_t l, h;
diff --git a/SOURCES/0138-udev-restore-udevadm-settle-timeout.patch b/SOURCES/0138-udev-restore-udevadm-settle-timeout.patch
new file mode 100644
index 0000000..3127a1c
--- /dev/null
+++ b/SOURCES/0138-udev-restore-udevadm-settle-timeout.patch
@@ -0,0 +1,53 @@
+From b2575f7d4f06ab9df5c5744e0324160effda437e Mon Sep 17 00:00:00 2001
+From: Nir Soffer <nirsof@gmail.com>
+Date: Wed, 8 Apr 2015 04:04:16 +0300
+Subject: [PATCH] udev: restore udevadm settle timeout
+
+Commit 9ea28c55a2 (udev: remove seqnum API and all assumptions about
+seqnums) introduced a regresion, ignoring the timeout option when
+waiting until the event queue is empty.
+
+Previously, if the udev event queue was not empty when the timeout was
+expired, udevadm settle was returning with exit code 1.  To check if the
+queue is empty, you could invoke udevadm settle with timeout=0. This
+patch restores the previous behavior.
+
+(David: fixed timeout==0 handling and dropped redundant assignment)
+
+Cherry-picked from: 0736455b1186c9515e0f093e1e686e684d225787
+Resolves: #1210981
+---
+ src/udev/udevadm-settle.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c
+index fff5de7..e60c462 100644
+--- a/src/udev/udevadm-settle.c
++++ b/src/udev/udevadm-settle.c
+@@ -56,6 +56,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) {
+                 { "quiet",          no_argument,       NULL, 'q' }, /* removed */
+                 {}
+         };
++        usec_t deadline;
+         const char *exists = NULL;
+         unsigned int timeout = 120;
+         struct pollfd pfd[1] = { {.fd = -1}, };
+@@ -105,6 +106,8 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) {
+                 return EXIT_FAILURE;
+         }
+ 
++        deadline = now(CLOCK_MONOTONIC) + timeout * USEC_PER_SEC;
++
+         /* guarantee that the udev daemon isn't pre-processing */
+         if (getuid() == 0) {
+                 struct udev_ctrl *uctrl;
+@@ -146,6 +149,9 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) {
+                         break;
+                 }
+ 
++                if (timeout > 0 && now(CLOCK_MONOTONIC) >= deadline)
++                        break;
++
+                 /* wake up when queue is empty */
+                 if (poll(pfd, 1, MSEC_PER_SEC) > 0 && pfd[0].revents & POLLIN)
+                         udev_queue_flush(queue);
diff --git a/SOURCES/0139-man-describe-journalctl-show-cursor.patch b/SOURCES/0139-man-describe-journalctl-show-cursor.patch
deleted file mode 100644
index e858676..0000000
--- a/SOURCES/0139-man-describe-journalctl-show-cursor.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From d6be31a099e36738c48a322466f080701a39d1a9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 16 Dec 2013 23:40:00 -0500
-Subject: [PATCH] man: describe journalctl --show-cursor
-
----
- man/journalctl.xml | 22 +++++++++++++++++-----
- 1 file changed, 17 insertions(+), 5 deletions(-)
-
-diff --git a/man/journalctl.xml b/man/journalctl.xml
-index b5a0c53..dd8cb18 100644
---- a/man/journalctl.xml
-+++ b/man/journalctl.xml
-@@ -565,11 +565,23 @@
-                         <varlistentry>
-                                 <term><option>--after-cursor=</option></term>
- 
--                                <listitem><para>Start showing entries from the
--                                location in the journal
--                                <emphasis>after</emphasis> the location
--                                specified by the this cursor.
--                                </para></listitem>
-+                                <listitem><para>Start showing entries
-+                                from the location in the journal
-+                                <emphasis>after</emphasis> the
-+                                location specified by the this cursor.
-+                                The cursor is shown when the
-+                                <option>--show-cursor</option> option
-+                                is used.</para></listitem>
-+                        </varlistentry>
-+
-+                        <varlistentry>
-+                                <term><option>--show-cursor</option></term>
-+
-+                                <listitem><para>The cursor is shown after the last
-+                                entry after two dashes:</para>
-+                                <programlisting>-- cursor: s=0639...</programlisting>
-+                                <para>The format of this the cursor is private
-+                                and subject ot change.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
diff --git a/SOURCES/0139-udev-settle-should-return-immediately-when-timeout-i.patch b/SOURCES/0139-udev-settle-should-return-immediately-when-timeout-i.patch
new file mode 100644
index 0000000..90b6c7b
--- /dev/null
+++ b/SOURCES/0139-udev-settle-should-return-immediately-when-timeout-i.patch
@@ -0,0 +1,38 @@
+From 98b78068d13095fdd40883b2b6c815a9ebb59435 Mon Sep 17 00:00:00 2001
+From: Nir Soffer <nirsof@gmail.com>
+Date: Sun, 19 Apr 2015 03:41:26 +0300
+Subject: [PATCH] udev: settle should return immediately when timeout is 0
+
+udevadm manual says:
+
+    A value of 0 will check if the queue is empty and always return
+    immediately.
+
+However, currently we ignore the deadline if the value is 0, and wait
+without any limit.
+
+Zero timeout behaved according to the documentation until commit
+ead7c62ab7 (udevadm: settle - kill alarm()). Looking at this patch, it
+seems that the behavior change was unintended.
+
+This patch restores the documented behavior.
+
+Cherry-picked from: bf23b9f86f6807c3029a6a46e1999ae0c87ca22a
+Resolves: #1210981
+---
+ src/udev/udevadm-settle.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c
+index e60c462..40e3e28 100644
+--- a/src/udev/udevadm-settle.c
++++ b/src/udev/udevadm-settle.c
+@@ -149,7 +149,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) {
+                         break;
+                 }
+ 
+-                if (timeout > 0 && now(CLOCK_MONOTONIC) >= deadline)
++                if (now(CLOCK_MONOTONIC) >= deadline)
+                         break;
+ 
+                 /* wake up when queue is empty */
diff --git a/SOURCES/0140-journal-fix-against-theoretical-undefined-behavior.patch b/SOURCES/0140-journal-fix-against-theoretical-undefined-behavior.patch
deleted file mode 100644
index b7737e3..0000000
--- a/SOURCES/0140-journal-fix-against-theoretical-undefined-behavior.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 072cebc2c736bec33e90299b49d82976c12b5549 Mon Sep 17 00:00:00 2001
-From: Shawn Landden <shawn@churchofgit.com>
-Date: Mon, 16 Dec 2013 15:41:00 -0800
-Subject: [PATCH] journal: fix against (theoretical) undefined behavior
-
-While all the libc implementations I know return NULL when memchr's size
-parameter is 0, without accessing any memory, passing NULL to memchr is
-still invalid:
-
-C11 7.24.1p2: Where an argument declared as "size_t n" specifies the length
-of the array for a function, n can have the value zero on a call to that
-function. Unless explicitly stated otherwise in the description of a
-particular function in this subclause, pointer arguments on such a call
-shall still have valid values, as described in 7.1.4. On such a call, a
-function that locates a character finds no occurrence, a function that
-compares two character sequences returns zero, and a function that copies
-characters copies zero characters.
-
-see http://llvm.org/bugs/show_bug.cgi?id=18247
----
- src/journal/journal-file.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index ebf72f3..2c0fd0c 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -1010,7 +1010,10 @@ static int journal_file_append_data(
-         if (r < 0)
-                 return r;
- 
--        eq = memchr(data, '=', size);
-+        if (!data)
-+                eq = NULL;
-+        else
-+                eq = memchr(data, '=', size);
-         if (eq && eq > data) {
-                 uint64_t fp;
-                 Object *fo;
diff --git a/SOURCES/0140-udev-Fix-ping-timeout-when-settle-timeout-is-0.patch b/SOURCES/0140-udev-Fix-ping-timeout-when-settle-timeout-is-0.patch
new file mode 100644
index 0000000..76f0a21
--- /dev/null
+++ b/SOURCES/0140-udev-Fix-ping-timeout-when-settle-timeout-is-0.patch
@@ -0,0 +1,30 @@
+From e7cd53f60cc2cb5e98efa0e88cfd0e7dd8325085 Mon Sep 17 00:00:00 2001
+From: Nir Soffer <nirsof@gmail.com>
+Date: Sun, 19 Apr 2015 02:49:47 +0300
+Subject: [PATCH] udev: Fix ping timeout when settle timeout is 0
+
+When running udevadm settle --timeout=0, the ping always times out, and
+udevadm will return 0 without checking the queue state.
+
+(David: Use a reasonable timeout to still get the barrier provided by
+ ctrl-ping)
+
+Cherry-picked from: 7375b3c4871861f100860ea4c2848e66b60e6ca4
+Resolves: #1210981
+---
+ src/udev/udevadm-settle.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udevadm-settle.c b/src/udev/udevadm-settle.c
+index 40e3e28..33597bc 100644
+--- a/src/udev/udevadm-settle.c
++++ b/src/udev/udevadm-settle.c
+@@ -114,7 +114,7 @@ static int adm_settle(struct udev *udev, int argc, char *argv[]) {
+ 
+                 uctrl = udev_ctrl_new(udev);
+                 if (uctrl != NULL) {
+-                        if (udev_ctrl_send_ping(uctrl, timeout) < 0) {
++                        if (udev_ctrl_send_ping(uctrl, MAX(5U, timeout)) < 0) {
+                                 log_debug("no connection to daemon");
+                                 udev_ctrl_unref(uctrl);
+                                 return EXIT_SUCCESS;
diff --git a/SOURCES/0141-detect-virt-use-proc-device-tree.patch b/SOURCES/0141-detect-virt-use-proc-device-tree.patch
new file mode 100644
index 0000000..c284d51
--- /dev/null
+++ b/SOURCES/0141-detect-virt-use-proc-device-tree.patch
@@ -0,0 +1,29 @@
+From 436a001a5a28b9e3dd0988cc5a88bd3d7ec0acc8 Mon Sep 17 00:00:00 2001
+From: Andrew Jones <drjones@redhat.com>
+Date: Tue, 31 Mar 2015 11:08:11 +0200
+Subject: [PATCH] detect-virt: use /proc/device-tree
+
+Kernel doc Documentation/ABI/testing/sysfs-firmware-ofw says that
+the /proc/device-tree symlink should be used, as opposed to
+directly accessing /sys/firmware/devicetree/base. The former is
+ABI, but not the later.
+
+Cherry-picked from: b8f1df82646d2
+Resolves: #1207773
+---
+ src/shared/virt.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/virt.c b/src/shared/virt.c
+index 7c1381f..aa3501f 100644
+--- a/src/shared/virt.c
++++ b/src/shared/virt.c
+@@ -106,7 +106,7 @@ static int detect_vm_devicetree(const char **_id) {
+         _cleanup_free_ char *hvtype = NULL;
+         int r;
+ 
+-        r = read_one_line_file("/sys/firmware/devicetree/base/hypervisor/compatible", &hvtype);
++        r = read_one_line_file("/proc/device-tree/hypervisor/compatible", &hvtype);
+         if (r >= 0) {
+                 if (streq(hvtype, "linux,kvm")) {
+                         *_id = "kvm";
diff --git a/SOURCES/0141-journald-downgrade-warning-message-when-dev-kmsg-doe.patch b/SOURCES/0141-journald-downgrade-warning-message-when-dev-kmsg-doe.patch
deleted file mode 100644
index 2ba9527..0000000
--- a/SOURCES/0141-journald-downgrade-warning-message-when-dev-kmsg-doe.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From b92a3a82b9bfdce438821f6f941f81ef2b4dd9e1 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 17 Dec 2013 19:56:06 +0100
-Subject: [PATCH] journald: downgrade warning message when /dev/kmsg does not
- exist
-
----
- src/journal/journald-kmsg.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
-index 21649d0..9895808 100644
---- a/src/journal/journald-kmsg.c
-+++ b/src/journal/journald-kmsg.c
-@@ -382,7 +382,8 @@ int server_open_dev_kmsg(Server *s) {
- 
-         s->dev_kmsg_fd = open("/dev/kmsg", O_RDWR|O_CLOEXEC|O_NONBLOCK|O_NOCTTY);
-         if (s->dev_kmsg_fd < 0) {
--                log_warning("Failed to open /dev/kmsg, ignoring: %m");
-+                log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING,
-+                         "Failed to open /dev/kmsg, ignoring: %m");
-                 return 0;
-         }
- 
diff --git a/SOURCES/0142-ARM-detect-virt-detect-Xen.patch b/SOURCES/0142-ARM-detect-virt-detect-Xen.patch
new file mode 100644
index 0000000..159288a
--- /dev/null
+++ b/SOURCES/0142-ARM-detect-virt-detect-Xen.patch
@@ -0,0 +1,34 @@
+From 6378069c62b2e5b1005df6bd243709181c178d1c Mon Sep 17 00:00:00 2001
+From: Andrew Jones <drjones@redhat.com>
+Date: Tue, 31 Mar 2015 11:08:12 +0200
+Subject: [PATCH] ARM: detect-virt: detect Xen
+
+Cherry-picked from: db6a86897efb3
+Resolves: #1207773
+---
+ src/shared/virt.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/shared/virt.c b/src/shared/virt.c
+index aa3501f..7125232 100644
+--- a/src/shared/virt.c
++++ b/src/shared/virt.c
+@@ -102,7 +102,7 @@ static int detect_vm_cpuid(const char **_id) {
+ }
+ 
+ static int detect_vm_devicetree(const char **_id) {
+-#if defined(__powerpc__) || defined(__powerpc64__)
++#if defined(__arm__) || defined(__aarch64__) || defined(__powerpc__) || defined(__powerpc64__)
+         _cleanup_free_ char *hvtype = NULL;
+         int r;
+ 
+@@ -111,6 +111,9 @@ static int detect_vm_devicetree(const char **_id) {
+                 if (streq(hvtype, "linux,kvm")) {
+                         *_id = "kvm";
+                         return 1;
++                } else if (strstr(hvtype, "xen")) {
++                        *_id = "xen";
++                        return 1;
+                 }
+         }
+ #endif
diff --git a/SOURCES/0142-journal-file.c-remove-redundant-assignment-of-variab.patch b/SOURCES/0142-journal-file.c-remove-redundant-assignment-of-variab.patch
deleted file mode 100644
index 7d152a1..0000000
--- a/SOURCES/0142-journal-file.c-remove-redundant-assignment-of-variab.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From cbd7e523d1bccde7fc1ad2ca18c74b8ee00f2940 Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Tue, 17 Dec 2013 20:15:45 +0100
-Subject: [PATCH] journal-file.c: remove redundant assignment of variable
-
-we also do 'last_index = (uint64_t) -1;' at the end of the while
-loop so there is no reason to also do it here.
----
- src/journal/journal-file.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 2c0fd0c..9f04c58 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -1628,8 +1628,6 @@ static int generic_array_bisect(
-                                         else
-                                                 left = y + 1;
-                                 }
--
--                                last_index = (uint64_t) -1;
-                         }
- 
-                         for (;;) {
diff --git a/SOURCES/0143-ARM-detect-virt-detect-QEMU-KVM.patch b/SOURCES/0143-ARM-detect-virt-detect-QEMU-KVM.patch
new file mode 100644
index 0000000..9a9af94
--- /dev/null
+++ b/SOURCES/0143-ARM-detect-virt-detect-QEMU-KVM.patch
@@ -0,0 +1,55 @@
+From fa2237b9987c39147704274937895547c8c8d647 Mon Sep 17 00:00:00 2001
+From: Andrew Jones <drjones@redhat.com>
+Date: Tue, 31 Mar 2015 11:08:13 +0200
+Subject: [PATCH] ARM: detect-virt: detect QEMU/KVM
+
+QEMU/KVM guests do not have hypervisor nodes, but they do have
+fw-cfg nodes (since qemu v2.3.0-rc0). fw-cfg nodes are documented,
+see kernel doc Documentation/devicetree/bindings/arm/fw-cfg.txt,
+and therefore we should be able to rely on it in this detection.
+
+Unfortunately, we currently don't have enough information in the
+DT, or elsewhere, to determine if we're using KVM acceleration
+with QEMU or not, so we can only report 'qemu' at this time, even
+if KVM is in use. This shouldn't really matter in practice though,
+because if detect-virt is used interactively it will be clear to
+the user whether or not KVM acceleration is present by the overall
+speed of the guest. If used by a script, then the script's behavior
+should not change whether it's 'qemu' or 'kvm'. QEMU emulated
+guests and QEMU/KVM guests of the same type should behave
+identically, only the speed at which they run should differ.
+
+Cherry-picked from: ce09c71d56a11
+Resolves: #1207773
+---
+ src/shared/virt.c | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+diff --git a/src/shared/virt.c b/src/shared/virt.c
+index 7125232..54c4655 100644
+--- a/src/shared/virt.c
++++ b/src/shared/virt.c
+@@ -115,6 +115,23 @@ static int detect_vm_devicetree(const char **_id) {
+                         *_id = "xen";
+                         return 1;
+                 }
++        } else if (r == -ENOENT) {
++                _cleanup_closedir_ DIR *dir = NULL;
++                struct dirent *dent;
++
++                dir = opendir("/proc/device-tree");
++                if (!dir) {
++                        if (errno == ENOENT)
++                                return 0;
++                        return -errno;
++                }
++
++                FOREACH_DIRENT(dent, dir, return -errno) {
++                        if (strstr(dent->d_name, "fw-cfg")) {
++                                *_id = "qemu";
++                                return 1;
++                        }
++                }
+         }
+ #endif
+         return 0;
diff --git a/SOURCES/0143-login-Don-t-stop-a-running-user-manager-from-garbage.patch b/SOURCES/0143-login-Don-t-stop-a-running-user-manager-from-garbage.patch
deleted file mode 100644
index d0aa0b2..0000000
--- a/SOURCES/0143-login-Don-t-stop-a-running-user-manager-from-garbage.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 85e0484fedb9f4cf0220e19a5207a3923326fb7f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org>
-Date: Sun, 15 Dec 2013 12:06:37 +0100
-Subject: [PATCH] login: Don't stop a running user manager from
- garbage-collecting the user.
-
-With the current logic, a user will never be garbage-collected, since its
-manager will always be around. Change the logic such that a user is
-garbage-collected when it has no sessions and linger is disabled.
-
-Conflicts:
-	src/login/logind-user.c
----
- src/login/logind-user.c | 6 ------
- 1 file changed, 6 deletions(-)
-
-diff --git a/src/login/logind-user.c b/src/login/logind-user.c
-index adbe638..e2fce5c 100644
---- a/src/login/logind-user.c
-+++ b/src/login/logind-user.c
-@@ -629,12 +629,6 @@ int user_check_gc(User *u, bool drop_not_started) {
-         if (u->slice_job || u->service_job)
-                 return 1;
- 
--        if (u->slice && manager_unit_is_active(u->manager, u->slice) != 0)
--                return 1;
--
--        if (u->service && manager_unit_is_active(u->manager, u->service) != 0)
--                return 1;
--
-         return 0;
- }
- 
diff --git a/SOURCES/0144-Persistent-by_path-links-for-ata-devices.patch b/SOURCES/0144-Persistent-by_path-links-for-ata-devices.patch
new file mode 100644
index 0000000..3f83c2b
--- /dev/null
+++ b/SOURCES/0144-Persistent-by_path-links-for-ata-devices.patch
@@ -0,0 +1,104 @@
+From 8572638ab99090b016ccc28ac1f69aa7759e43cf Mon Sep 17 00:00:00 2001
+From: Robert Milasan <rmilasan@suse.com>
+Date: Thu, 12 Jul 2012 15:56:34 +0000
+Subject: [PATCH] Persistent by_path links for ata devices
+
+With newer kernel we have the 'port_no' attribute,
+which allows us to construct a valid ata by-path link.
+
+With this patch ATA links of the form
+
+ata-<port>.[01]
+
+(for master/slave devices) or
+
+ata-<port>.<pmp>.0
+
+(for devices behind port multipliers)
+are generated.
+
+References: bnc#770910,FATE#317063
+
+Signed-off-by: Robert Milasan <rmilasan@suse.com>
+Signed-off-by: Hannes Reinecke <hare@suse.de>
+
+Downstream patch
+https://build.opensuse.org/package/view_file/Base:System/systemd/1001-re-enable-by_path-links-for-ata-devices.patch
+
+Resolves: #1045498
+---
+ src/udev/udev-builtin-path_id.c | 53 +++++++++++++++++++++++++++++++----------
+ 1 file changed, 41 insertions(+), 12 deletions(-)
+
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index b6749aa..bb0a624 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -426,6 +426,46 @@ static struct udev_device *handle_scsi_hyperv(struct udev_device *parent, char *
+         return parent;
+ }
+ 
++static struct udev_device *handle_ata(struct udev_device *parent, char **path)
++{
++        struct udev *udev  = udev_device_get_udev(parent);
++        struct udev_device *hostdev, *portdev;
++        int host, bus, target, lun, port_no;
++        const char *name, *atahost, *port;
++
++        hostdev = udev_device_get_parent_with_subsystem_devtype(parent, "scsi", "scsi_host");
++        if (hostdev == NULL)
++                return NULL;
++
++        name = udev_device_get_sysname(parent);
++        if (sscanf(name, "%d:%d:%d:%d", &host, &bus, &target, &lun) != 4)
++                return NULL;
++
++        /* The ata port is the parent of the SCSI host */
++        hostdev = udev_device_get_parent(hostdev);
++        atahost = udev_device_get_sysname(hostdev);
++        if (strncmp(atahost, "ata", 3))
++                return NULL;
++
++        /* ATA port number is found in 'port_no' attribute */
++        portdev = udev_device_new_from_subsystem_sysname(udev, "ata_port",
++                                                         atahost);
++        port = udev_device_get_sysattr_value(portdev, "port_no");
++        if (!port || sscanf(port, "%d", &port_no) != 1) {
++                hostdev = NULL;
++                goto out;
++        }
++        if (bus != 0)
++                /* Devices behind port multiplier have a bus != 0*/
++                path_prepend(path, "ata-%u.%u.0", port_no, bus);
++        else
++                /* Master/slave are distinguished by target id */
++                path_prepend(path, "ata-%u.%u", port_no, target);
++out:
++        udev_device_unref(portdev);
++        return hostdev;
++}
++
+ static struct udev_device *handle_scsi(struct udev_device *parent, char **path, bool *supported_parent) {
+         const char *devtype;
+         const char *name;
+@@ -465,19 +505,8 @@ static struct udev_device *handle_scsi(struct udev_device *parent, char **path,
+                 goto out;
+         }
+ 
+-        /*
+-         * We do not support the ATA transport class, it uses global counters
+-         * to name the ata devices which numbers spread across multiple
+-         * controllers.
+-         *
+-         * The real link numbers are not exported. Also, possible chains of ports
+-         * behind port multipliers cannot be composed that way.
+-         *
+-         * Until all that is solved at the kernel level, there are no by-path/
+-         * links for ATA devices.
+-         */
+         if (strstr(name, "/ata") != NULL) {
+-                parent = NULL;
++                parent = handle_ata(parent, path);
+                 goto out;
+         }
+ 
diff --git a/SOURCES/0144-log-when-we-log-to-dev-console-and-got-disconnected-.patch b/SOURCES/0144-log-when-we-log-to-dev-console-and-got-disconnected-.patch
deleted file mode 100644
index 5af8230..0000000
--- a/SOURCES/0144-log-when-we-log-to-dev-console-and-got-disconnected-.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 87823e84ec7b0e6939596063c540219a681bbbb9 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 18 Dec 2013 16:49:15 +0100
-Subject: [PATCH] log: when we log to /dev/console and got disconnected (maybe
- due to vhangup) reconnect
-
----
- src/shared/log.c | 21 +++++++++++++++++++--
- 1 file changed, 19 insertions(+), 2 deletions(-)
-
-diff --git a/src/shared/log.c b/src/shared/log.c
-index 8f4995a..605d069 100644
---- a/src/shared/log.c
-+++ b/src/shared/log.c
-@@ -337,8 +337,25 @@ static int write_to_console(
-                 IOVEC_SET_STRING(iovec[n++], ANSI_HIGHLIGHT_OFF);
-         IOVEC_SET_STRING(iovec[n++], "\n");
- 
--        if (writev(console_fd, iovec, n) < 0)
--                return -errno;
-+        if (writev(console_fd, iovec, n) < 0) {
-+
-+                if (errno == EIO && getpid() == 1) {
-+
-+                        /* If somebody tried to kick us from our
-+                         * console tty (via vhangup() or suchlike),
-+                         * try to reconnect */
-+
-+                        log_close_console();
-+                        log_open_console();
-+
-+                        if (console_fd < 0)
-+                                return 0;
-+
-+                        if (writev(console_fd, iovec, n) < 0)
-+                                return -errno;
-+                } else
-+                        return -errno;
-+        }
- 
-         return 1;
- }
diff --git a/SOURCES/0145-loginctl-when-showing-device-tree-of-seats-with-no-d.patch b/SOURCES/0145-loginctl-when-showing-device-tree-of-seats-with-no-d.patch
deleted file mode 100644
index 983678c..0000000
--- a/SOURCES/0145-loginctl-when-showing-device-tree-of-seats-with-no-d.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 63c96665d60fd219410eb213b2e2fd83ef242616 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 18 Dec 2013 17:16:33 +0100
-Subject: [PATCH] loginctl: when showing device tree of seats with no devices
- show something useful
-
----
- src/login/sysfs-show.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c
-index 3c03bd1..14de7d8 100644
---- a/src/login/sysfs-show.c
-+++ b/src/login/sysfs-show.c
-@@ -182,6 +182,8 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
-         first = udev_enumerate_get_list_entry(e);
-         if (first)
-                 show_sysfs_one(udev, seat, &first, "/", prefix, n_columns);
-+        else
-+                printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_RIGHT), "(none)");
- 
- finish:
-         if (e)
diff --git a/SOURCES/0145-man-document-forwarding-to-syslog-better.patch b/SOURCES/0145-man-document-forwarding-to-syslog-better.patch
new file mode 100644
index 0000000..710eaf2
--- /dev/null
+++ b/SOURCES/0145-man-document-forwarding-to-syslog-better.patch
@@ -0,0 +1,118 @@
+From 24d007a0a8a77a6b75c6c7a403fc8d107875ebdc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 9 May 2015 16:20:51 -0500
+Subject: [PATCH] man: document forwarding to syslog better
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1147651
+
+Cherry-picked from: 589532d0
+Resolves: #1177336
+---
+ man/journald.conf.xml | 70 ++++++++++++++++++++++++++++++++-------------------
+ 1 file changed, 44 insertions(+), 26 deletions(-)
+
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index 85146b0..abfe313 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -97,7 +97,7 @@
+         needed, so that its existence controls where log data goes.
+         <literal>none</literal> turns off all storage, all log data
+         received will be dropped. Forwarding to other targets, such as
+-        the console, the kernel log buffer or a syslog daemon will
++        the console, the kernel log buffer, or a syslog socket will
+         still work however. Defaults to
+         <literal>auto</literal>.</para></listitem>
+       </varlistentry>
+@@ -220,27 +220,19 @@
+         journald will stop using more space, but it will not be
+         removing existing files to go reduce footprint either.</para>
+ 
+-        <para><varname>SystemMaxFileSize=</varname>
+-        and
+-        <varname>RuntimeMaxFileSize=</varname>
+-        control how large individual journal
+-        files may grow at maximum. This
+-        influences the granularity in which
+-        disk space is made available through
+-        rotation, i.e. deletion of historic
+-        data. Defaults to one eighth of the
+-        values configured with
++        <para><varname>SystemMaxFileSize=</varname> and
++        <varname>RuntimeMaxFileSize=</varname> control how large
++        individual journal files may grow at maximum. This influences
++        the granularity in which disk space is made available through
++        rotation, i.e. deletion of historic data. Defaults to one
++        eighth of the values configured with
+         <varname>SystemMaxUse=</varname> and
+-        <varname>RuntimeMaxUse=</varname>, so
+-        that usually seven rotated journal
+-        files are kept as history. Specify
+-        values in bytes or use K, M, G, T, P,
+-        E as units for the specified sizes
+-        (equal to 1024, 1024²,... bytes).
+-        Note that size limits are enforced
+-        synchronously when journal files are
+-        extended, and no explicit rotation
+-        step triggered by time is
++        <varname>RuntimeMaxUse=</varname>, so that usually seven
++        rotated journal files are kept as history. Specify values in
++        bytes or use K, M, G, T, P, E as units for the specified sizes
++        (equal to 1024, 1024²,... bytes).  Note that size limits are
++        enforced synchronously when journal files are extended, and no
++        explicit rotation step triggered by time is
+         needed.</para></listitem>
+       </varlistentry>
+ 
+@@ -308,13 +300,13 @@
+         daemon, to the kernel log buffer (kmsg), to the system
+         console, or sent as wall messages to all logged-in users.
+         These options take boolean arguments. If forwarding to syslog
+-        is enabled but no syslog daemon is running, the respective
+-        option has no effect. By default, only forwarding wall is
+-        enabled. These settings may be overridden at boot time with
+-        the kernel command line options
++        is enabled but nothing reads messages from the socket,
++        forwarding to syslog has no effect. By default, only
++        forwarding to wall is enabled. These settings may be
++        overridden at boot time with the kernel command line options
+         <literal>systemd.journald.forward_to_syslog=</literal>,
+         <literal>systemd.journald.forward_to_kmsg=</literal>,
+-        <literal>systemd.journald.forward_to_console=</literal> and
++        <literal>systemd.journald.forward_to_console=</literal>, and
+         <literal>systemd.journald.forward_to_wall=</literal>. When
+         forwarding to the console, the TTY to log to can be changed
+         with <varname>TTYPath=</varname>, described
+@@ -366,6 +358,32 @@
+   </refsect1>
+ 
+   <refsect1>
++    <title>Forwarding to traditional syslog daemons</title>
++
++    <para>
++      Journal events can be transfered to a different logging daemon
++      in two different ways. In the first method, messages are
++      immediately forwarded to a socket
++      (<filename>/run/systemd/journal/syslog</filename>), where the
++      traditional syslog daemon can read them. This method is
++      controlled by <varname>ForwardToSyslog=</varname> option.  In a
++      second method, a syslog daemon behaves like a normal journal
++      client, and reads messages from the journal files, similarly to
++      <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
++      In this method, messages do not have to be read immediately,
++      which allows a logging daemon which is only started late in boot
++      to access all messages since the start of the system. In
++      addition, full structured meta-data is available to it. This
++      method of course is available only if the messages are stored in
++      a journal file at all. So it will work if
++      <varname>Storage=none</varname> is set. It should be noted that
++      usualy the <emphasis>second</emphasis> method is used by syslog
++      daemons, so the <varname>Storage=</varname> option, and not the
++      <varname>ForwardToSyslog=</varname> option, is relevant for them.
++    </para>
++  </refsect1>
++
++  <refsect1>
+       <title>See Also</title>
+       <para>
+         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
diff --git a/SOURCES/0146-man-be-more-explicit-about-option-arguments-that-tak.patch b/SOURCES/0146-man-be-more-explicit-about-option-arguments-that-tak.patch
deleted file mode 100644
index a0d5914..0000000
--- a/SOURCES/0146-man-be-more-explicit-about-option-arguments-that-tak.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 44d5ed4f1e398188bad5283fd75b91594de54cd0 Mon Sep 17 00:00:00 2001
-From: "Jason St. John" <jstjohn@purdue.edu>
-Date: Tue, 17 Dec 2013 18:48:43 -0500
-Subject: [PATCH] man: be more explicit about option arguments that take
- 128-bit IDs in journalctl(1)
-
-It may not be immediately obvious to the reader what "ID128" is, so replace the
-example option argument "ID128" with "128-bit-ID".
----
- man/journalctl.xml | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/man/journalctl.xml b/man/journalctl.xml
-index dd8cb18..2ee1647 100644
---- a/man/journalctl.xml
-+++ b/man/journalctl.xml
-@@ -714,7 +714,7 @@
- 
-                         <varlistentry>
-                                 <term><option>--list-catalog
--                                <optional><replaceable>ID128...</replaceable></optional>
-+                                <optional><replaceable>128-bit-ID...</replaceable></optional>
-                                 </option></term>
- 
-                                 <listitem><para>List the contents of
-@@ -723,7 +723,7 @@
-                                 description strings.</para>
- 
-                                 <para>If any
--                                <replaceable>ID128</replaceable>s are
-+                                <replaceable>128-bit-ID</replaceable>s are
-                                 specified, only those entries are shown.
-                                 </para>
-                                 </listitem>
-@@ -731,7 +731,7 @@
- 
-                         <varlistentry>
-                                 <term><option>--dump-catalog
--                                <optional><replaceable>ID128...</replaceable></optional>
-+                                <optional><replaceable>128-bit-ID...</replaceable></optional>
-                                 </option></term>
- 
-                                 <listitem><para>Show the contents of
-@@ -742,7 +742,7 @@
-                                 files.</para>
- 
-                                 <para>If any
--                                <replaceable>ID128</replaceable>s are
-+                                <replaceable>128-bit-ID</replaceable>s are
-                                 specified, only those entries are shown.
-                                 </para>
-                                 </listitem>
diff --git a/SOURCES/0146-man-fix-typos-in-previous-comimt.patch b/SOURCES/0146-man-fix-typos-in-previous-comimt.patch
new file mode 100644
index 0000000..80b822d
--- /dev/null
+++ b/SOURCES/0146-man-fix-typos-in-previous-comimt.patch
@@ -0,0 +1,36 @@
+From 363e3817cc3462c42e837677768f10fa549966f7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 9 May 2015 19:46:15 -0400
+Subject: [PATCH] man: fix typos in previous comimt
+
+Cherry-picked from: 7703bd4d
+Resolves: #1177336
+---
+ man/journald.conf.xml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/man/journald.conf.xml b/man/journald.conf.xml
+index abfe313..2cbe58b 100644
+--- a/man/journald.conf.xml
++++ b/man/journald.conf.xml
+@@ -361,7 +361,7 @@
+     <title>Forwarding to traditional syslog daemons</title>
+ 
+     <para>
+-      Journal events can be transfered to a different logging daemon
++      Journal events can be transferred to a different logging daemon
+       in two different ways. In the first method, messages are
+       immediately forwarded to a socket
+       (<filename>/run/systemd/journal/syslog</filename>), where the
+@@ -375,9 +375,9 @@
+       to access all messages since the start of the system. In
+       addition, full structured meta-data is available to it. This
+       method of course is available only if the messages are stored in
+-      a journal file at all. So it will work if
++      a journal file at all. So it will not work if
+       <varname>Storage=none</varname> is set. It should be noted that
+-      usualy the <emphasis>second</emphasis> method is used by syslog
++      usually the <emphasis>second</emphasis> method is used by syslog
+       daemons, so the <varname>Storage=</varname> option, and not the
+       <varname>ForwardToSyslog=</varname> option, is relevant for them.
+     </para>
diff --git a/SOURCES/0147-LSB-always-add-network-online.target-to-services-wit.patch b/SOURCES/0147-LSB-always-add-network-online.target-to-services-wit.patch
new file mode 100644
index 0000000..a277278
--- /dev/null
+++ b/SOURCES/0147-LSB-always-add-network-online.target-to-services-wit.patch
@@ -0,0 +1,31 @@
+From 47ad778fc50382b916683a628b3f6f62754cc17d Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 13 May 2015 15:20:30 +0200
+Subject: [PATCH] LSB: always add network-online.target to services with
+ priority over 10
+
+rhel-only
+
+Resolves: #1189253
+---
+ src/sysv-generator/sysv-generator.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c
+index 0125ca2..cfc4a99 100644
+--- a/src/sysv-generator/sysv-generator.c
++++ b/src/sysv-generator/sysv-generator.c
+@@ -692,6 +692,13 @@ static int fix_order(SysvStub *s, Hashmap *all_services) {
+         if (s->sysv_start_priority < 0)
+                 return 0;
+ 
++        /* RHEL-only, services with more than 10 should be start after network */
++        if (s->sysv_start_priority > 10) {
++                r = strv_extend(&s->after, SPECIAL_NETWORK_ONLINE_TARGET);
++                if (r < 0)
++                        return log_oom();
++        }
++
+         HASHMAP_FOREACH(other, all_services, j) {
+                 if (s == other)
+                         continue;
diff --git a/SOURCES/0147-man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch b/SOURCES/0147-man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch
deleted file mode 100644
index 247541f..0000000
--- a/SOURCES/0147-man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 214ead7a0ff493e8961e0368ece5414d1409c4cf Mon Sep 17 00:00:00 2001
-From: "Jason St. John" <jstjohn@purdue.edu>
-Date: Tue, 17 Dec 2013 19:40:02 -0500
-Subject: [PATCH] man: add DOI for refereed article on Forward Secure Sealing
- to journald.conf(5)
-
-In journalctl(1), be more explicit about the reference to "Seal=" in
-journald.conf(5) and what information can be found there.
----
- man/journalctl.xml    |  8 ++++++--
- man/journald.conf.xml | 10 +++++-----
- 2 files changed, 11 insertions(+), 7 deletions(-)
-
-diff --git a/man/journalctl.xml b/man/journalctl.xml
-index 2ee1647..0e188df 100644
---- a/man/journalctl.xml
-+++ b/man/journalctl.xml
-@@ -770,10 +770,14 @@
-                                 sealing key is stored in the journal
-                                 data directory and shall remain on the
-                                 host. The verification key should be
--                                stored externally. Also see the
-+                                stored externally. Refer to the
-                                 <option>Seal=</option> option in
-                                 <citerefentry><refentrytitle>journald.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
--                                for details.</para></listitem>
-+                                for information on Forward Secure
-+                                Sealing and for a link to a refereed
-+                                scholarly paper detailing the
-+                                cryptographic theory it is based on.
-+                                </para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-diff --git a/man/journald.conf.xml b/man/journald.conf.xml
-index 7aa2e78..8e642a3 100644
---- a/man/journald.conf.xml
-+++ b/man/journald.conf.xml
-@@ -130,15 +130,15 @@
-                                 by
-                                 <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>'s
-                                 <option>--setup-keys</option>
--                                command), forward secure sealing (FSS)
-+                                command), Forward Secure Sealing (FSS)
-                                 for all persistent journal files is
-                                 enabled. FSS is based on <ulink
-                                 url="https://eprint.iacr.org/2013/397">Seekable
-                                 Sequential Key Generators</ulink> by
--                                G. A. Marson and B. Poettering and
--                                may be used to protect journal files
--                                from unnoticed
--                                alteration.</para></listitem>
-+                                G. A. Marson and B. Poettering
-+                                (doi:10.1007/978-3-642-40203-6_7)
-+                                and may be used to protect journal files
-+                                from unnoticed alteration.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
diff --git a/SOURCES/0148-keymap-Refactor-Acer-tables.patch b/SOURCES/0148-keymap-Refactor-Acer-tables.patch
deleted file mode 100644
index c7f7417..0000000
--- a/SOURCES/0148-keymap-Refactor-Acer-tables.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From fd5f1706cda158e7a89e955f861bd34d7a8b429f Mon Sep 17 00:00:00 2001
-From: Martin Pitt <martinpitt@gnome.org>
-Date: Thu, 19 Dec 2013 08:33:32 +0100
-Subject: [PATCH] keymap: Refactor Acer tables
-
-Move common keys into generic Acer table, and factorize the model specific
-exceptions.
----
- hwdb/60-keyboard.hwdb | 101 ++++++++++++++++++--------------------------------
- 1 file changed, 36 insertions(+), 65 deletions(-)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index d4d948d..ab9e569 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -46,52 +46,7 @@
- # Acer
- ##########################################
- 
--# Acer platform kernel driver
--keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr*
-- KEYBOARD_KEY_82=f21
--
--# Aspire 5720
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5720*:pvr*
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnZG8*:pvr*
-- KEYBOARD_KEY_84=bluetooth                              # sent when bluetooth module missing, and key pressed
-- KEYBOARD_KEY_92=media                                  # Acer arcade
-- KEYBOARD_KEY_d4=bluetooth                              # Bluetooth on
-- KEYBOARD_KEY_d9=bluetooth                              # Bluetooth off
-- KEYBOARD_KEY_f4=prog3                                  # e-key
--
--# Aspire 5920g
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5920G:*
-- KEYBOARD_KEY_8a=media
-- KEYBOARD_KEY_92=media
-- KEYBOARD_KEY_a6=setup
-- KEYBOARD_KEY_b2=www
-- KEYBOARD_KEY_d9=bluetooth                              # (toggle) on-to-off
--
--# Aspire 6920
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*6920:*
-- KEYBOARD_KEY_d9=bluetooth                              # (toggle) on-to-off
-- KEYBOARD_KEY_92=media
-- KEYBOARD_KEY_9e=back
-- KEYBOARD_KEY_83=rewind
-- KEYBOARD_KEY_89=fastforward
--
--# Aspire 8930
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:*
-- KEYBOARD_KEY_ca=prog3                                  # key 'HOLD' on CineDash Media Console
-- KEYBOARD_KEY_83=rewind
-- KEYBOARD_KEY_89=fastforward
-- KEYBOARD_KEY_92=media                                  # key 'ARCADE' on CineDash Media Console
-- KEYBOARD_KEY_9e=back
--
--# Travelmate C300
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr*
-- KEYBOARD_KEY_67=f24                                    # FIXME: rotate screen
-- KEYBOARD_KEY_68=up
-- KEYBOARD_KEY_69=down
-- KEYBOARD_KEY_6b=fn
-- KEYBOARD_KEY_6c=screenlock                             # FIXME: lock tablet device/buttons
--
--#
-+# common keys
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*
- keyboard:dmi:bvn*:bvr*:bd*:svnGateway*:pnA0A1*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
-@@ -99,6 +54,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
-  KEYBOARD_KEY_a6=setup                                  # Fn+F2 Acer eSettings
-  KEYBOARD_KEY_a7=battery                                # Fn+F3 Power Management
-  KEYBOARD_KEY_a9=switchvideomode                        # Fn+F5
-+ KEYBOARD_KEY_b2=www
-  KEYBOARD_KEY_b3=euro
-  KEYBOARD_KEY_b4=dollar
-  KEYBOARD_KEY_ce=brightnessup                           # Fn+Right
-@@ -118,33 +74,48 @@ keyboard:dmi:bvn*:bvr*:bd*:svneMachines:pneMachines*E725:pvr*
-  KEYBOARD_KEY_f8=fn
-  KEYBOARD_KEY_f9=prog1                                  # Launch NTI shadow
- 
--#
-+# Acer platform kernel driver
-+keyboard:name:Acer WMI hotkeys:dmi:bvn*:bvr*:bd*:svn*:pnAcer*:pvr*
-+ KEYBOARD_KEY_82=f21					# Touchpad toggle
-+
-+# Aspire models
-+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*:pvr*
-+ KEYBOARD_KEY_84=bluetooth                              # sent when bluetooth module missing, and key pressed
-+ KEYBOARD_KEY_d9=bluetooth                              # Bluetooth off
-+ KEYBOARD_KEY_92=media                                  # Acer arcade
-+
-+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5720*:pvr*
-+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnZG8*:pvr*
-+ KEYBOARD_KEY_f4=prog3                                  # e-key
-+
-+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*5920G:*
-+ KEYBOARD_KEY_8a=media
-+ KEYBOARD_KEY_a6=setup
-+
-+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*6920:*
-+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*8930:*
-+ KEYBOARD_KEY_ca=prog3                                  # key 'HOLD' on CineDash Media Console
-+ KEYBOARD_KEY_83=rewind
-+ KEYBOARD_KEY_89=fastforward
-+ KEYBOARD_KEY_9e=back
-+
-+# Travelmate C300
-+keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*C3[01]0*:pvr*
-+ KEYBOARD_KEY_67=f24                                    # FIXME: rotate screen
-+ KEYBOARD_KEY_68=up
-+ KEYBOARD_KEY_69=down
-+ KEYBOARD_KEY_6b=fn
-+ KEYBOARD_KEY_6c=screenlock                             # FIXME: lock tablet device/buttons
-+
-+# on some models this isn't brightnessup
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5210*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5220*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5610*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5620*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pn*5720*:pvr*
-- KEYBOARD_KEY_ee=screenlock
--
--#
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6292*:pvr*
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*8471*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr*
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*7720*:pvr*
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1810T*:pvr*
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO751h:*
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAO531h:*
-- KEYBOARD_KEY_d9=bluetooth
--
--#
--keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*4720*:pvr*
-- KEYBOARD_KEY_b2=www
-- KEYBOARD_KEY_ee=screenlock
--
--#
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnTravelMate*6593:*
- keyboard:dmi:bvn*:bvr*:bd*:svnAcer*:pnAspire*1640:*
-- KEYBOARD_KEY_b2=www
-  KEYBOARD_KEY_ee=screenlock
- 
- ###########################################################
diff --git a/SOURCES/0148-rules-enable-memory-hotplug.patch b/SOURCES/0148-rules-enable-memory-hotplug.patch
new file mode 100644
index 0000000..2583020
--- /dev/null
+++ b/SOURCES/0148-rules-enable-memory-hotplug.patch
@@ -0,0 +1,24 @@
+From 57adc4317ee2553d2d3ac84ef9625ed9c1cf5700 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 13 May 2015 16:56:44 +0200
+Subject: [PATCH] rules: enable memory hotplug
+
+rhel-only
+
+Resolves: #1105020
+---
+ rules/40-redhat.rules | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/rules/40-redhat.rules b/rules/40-redhat.rules
+index 2b494e5..8231caa 100644
+--- a/rules/40-redhat.rules
++++ b/rules/40-redhat.rules
+@@ -1,3 +1,7 @@
+ # do not edit this file, it will be overwritten on update
+ 
++# CPU hotadd request
+ SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1"
++
++# Memory hotadd request
++SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online"
diff --git a/SOURCES/0149-logind-remove-dead-variable.patch b/SOURCES/0149-logind-remove-dead-variable.patch
deleted file mode 100644
index d31a83d..0000000
--- a/SOURCES/0149-logind-remove-dead-variable.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From d999e2ffa714ceda7859df25e2db296444dcbd1b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 19 Dec 2013 14:16:46 -0500
-Subject: [PATCH] logind: remove dead variable
-
-Noticed-by: Jan Alexander Steffens <jan.steffens@gmail.com>
----
- src/login/logind-user.c | 3 ---
- src/login/logind-user.h | 1 -
- 2 files changed, 4 deletions(-)
-
-diff --git a/src/login/logind-user.c b/src/login/logind-user.c
-index e2fce5c..b87311c 100644
---- a/src/login/logind-user.c
-+++ b/src/login/logind-user.c
-@@ -648,9 +648,6 @@ UserState user_get_state(User *u) {
- 
-         assert(u);
- 
--        if (u->closing)
--                return USER_CLOSING;
--
-         if (u->slice_job || u->service_job)
-                 return USER_OPENING;
- 
-diff --git a/src/login/logind-user.h b/src/login/logind-user.h
-index b9171d3..a36f456 100644
---- a/src/login/logind-user.h
-+++ b/src/login/logind-user.h
-@@ -61,7 +61,6 @@ struct User {
- 
-         bool in_gc_queue:1;
-         bool started:1;
--        bool closing:1;
- 
-         LIST_HEAD(Session, sessions);
-         LIST_FIELDS(User, gc_queue);
diff --git a/SOURCES/0149-rules-reload-sysctl-settings-when-the-bridge-module-.patch b/SOURCES/0149-rules-reload-sysctl-settings-when-the-bridge-module-.patch
new file mode 100644
index 0000000..1714546
--- /dev/null
+++ b/SOURCES/0149-rules-reload-sysctl-settings-when-the-bridge-module-.patch
@@ -0,0 +1,22 @@
+From 05f3e4b89d6503a4a327be9bee9802097bc8c860 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 13 May 2015 17:11:48 +0200
+Subject: [PATCH] rules: reload sysctl settings when the bridge module is
+ loaded
+
+Resolves: #1182105
+---
+ rules/40-redhat.rules | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/rules/40-redhat.rules b/rules/40-redhat.rules
+index 8231caa..556a3a3 100644
+--- a/rules/40-redhat.rules
++++ b/rules/40-redhat.rules
+@@ -5,3 +5,6 @@ SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}
+ 
+ # Memory hotadd request
+ SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online"
++
++# reload sysctl.conf / sysctl.conf.d settings when the bridge module is loaded
++ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/bridge"
diff --git a/SOURCES/0150-console-getty.service-don-t-start-when-dev-console-i.patch b/SOURCES/0150-console-getty.service-don-t-start-when-dev-console-i.patch
new file mode 100644
index 0000000..ce00bef
--- /dev/null
+++ b/SOURCES/0150-console-getty.service-don-t-start-when-dev-console-i.patch
@@ -0,0 +1,54 @@
+From c37bc5ac3a7282cccd090d20a3cf7120e31c4ee5 Mon Sep 17 00:00:00 2001
+From: Jan Pazdziora <jpazdziora@redhat.com>
+Date: Fri, 13 Mar 2015 12:57:18 +0100
+Subject: [PATCH] console-getty.service: don't start when /dev/console is
+ missing
+
+Create minimal image which runs systemd
+
+   FROM rhel7.1
+   RUN yum install -y /usr/bin/ps
+   ENV container docker
+   CMD [ "/usr/sbin/init" ]
+
+When you run the container without -t, the process
+
+   /sbin/agetty --noclear --keep-baud console 115200 38400 9600
+
+is not happy and checking the journal in the container, there is a stream of
+
+Mar 13 04:50:15 11bf07f59fff agetty[66]: /dev/console: No such file or directory
+Mar 13 04:50:25 11bf07f59fff systemd[1]: console-getty.service holdoff time over, scheduling restart.
+Mar 13 04:50:25 11bf07f59fff systemd[1]: Stopping Console Getty...
+Mar 13 04:50:25 11bf07f59fff systemd[1]: Starting Console Getty...
+Mar 13 04:50:25 11bf07f59fff systemd[1]: Started Console Getty.
+Mar 13 04:50:25 11bf07f59fff agetty[67]: /dev/console: No such file or directory
+Mar 13 04:50:35 11bf07f59fff systemd[1]: console-getty.service holdoff time over, scheduling restart.
+Mar 13 04:50:35 11bf07f59fff systemd[1]: Stopping Console Getty...
+Mar 13 04:50:35 11bf07f59fff systemd[1]: Starting Console Getty...
+Mar 13 04:50:35 11bf07f59fff systemd[1]: Started Console Getty.
+Mar 13 04:50:35 11bf07f59fff agetty[74]: /dev/console: No such file or directory
+Mar 13 04:50:45 11bf07f59fff systemd[1]: console-getty.service holdoff time over, scheduling restart.
+Mar 13 04:50:45 11bf07f59fff systemd[1]: Stopping Console Getty...
+Mar 13 04:50:45 11bf07f59fff systemd[1]: Starting Console Getty...
+
+(cherry picked from commit 1b41981d9a62443d566df6bcabc1b5024e9f5e4a)
+
+Cherry-picked from: 77d83ce
+Resolves: #1222517
+---
+ units/console-getty.service.m4.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/units/console-getty.service.m4.in b/units/console-getty.service.m4.in
+index 8ac51a4..413d940 100644
+--- a/units/console-getty.service.m4.in
++++ b/units/console-getty.service.m4.in
+@@ -9,6 +9,7 @@
+ Description=Console Getty
+ Documentation=man:agetty(8)
+ After=systemd-user-sessions.service plymouth-quit-wait.service
++ConditionPathExists=/dev/console
+ m4_ifdef(`HAVE_SYSV_COMPAT',
+ After=rc-local.service
+ )m4_dnl
diff --git a/SOURCES/0150-hwdb-update.patch b/SOURCES/0150-hwdb-update.patch
deleted file mode 100644
index 27dd141..0000000
--- a/SOURCES/0150-hwdb-update.patch
+++ /dev/null
@@ -1,4917 +0,0 @@
-From 2ad4d7a28f6875caaeba0af6d093d644f995f4ff Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Sun, 22 Dec 2013 11:32:11 -0800
-Subject: [PATCH] hwdb: update
-
-Conflicts:
-	hwdb/20-sdio-vendor-model.hwdb
----
- hwdb/20-OUI.hwdb              | 1174 ++++++++++++++++++++++++++++++++++++++++-
- hwdb/20-pci-vendor-model.hwdb |  689 ++++++++++++++++++++++--
- hwdb/20-usb-vendor-model.hwdb |  112 +++-
- 3 files changed, 1922 insertions(+), 53 deletions(-)
-
-diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
-index 5067167..92b96ae 100644
---- a/hwdb/20-OUI.hwdb
-+++ b/hwdb/20-OUI.hwdb
-@@ -13411,6 +13411,222 @@ OUI:40D855198*
- OUI:40D855199*
-  ID_OUI_FROM_DATABASE=PRESSOL Schmiergeraete GmbH
- 
-+OUI:40D85519A*
-+ ID_OUI_FROM_DATABASE=Rohde&Schwarz Topex SA
-+
-+OUI:40D85519B*
-+ ID_OUI_FROM_DATABASE=Northern Star Technologies
-+
-+OUI:40D85519C*
-+ ID_OUI_FROM_DATABASE=Parris Service Corporation
-+
-+OUI:40D85519D*
-+ ID_OUI_FROM_DATABASE=EMAC, Inc.
-+
-+OUI:40D85519E*
-+ ID_OUI_FROM_DATABASE=Thirdwayv Inc.
-+
-+OUI:40D85519F*
-+ ID_OUI_FROM_DATABASE=Patria Aviation Oy
-+
-+OUI:40D8551A0*
-+ ID_OUI_FROM_DATABASE=Futaba Corporation
-+
-+OUI:40D8551A1*
-+ ID_OUI_FROM_DATABASE=KRONOTECH SRL
-+
-+OUI:40D8551A2*
-+ ID_OUI_FROM_DATABASE=HIPODROMO DE AGUA CALIENTE, S.A. DE C.V.
-+
-+OUI:40D8551A3*
-+ ID_OUI_FROM_DATABASE=Noritake Itron Corporation
-+
-+OUI:40D8551A4*
-+ ID_OUI_FROM_DATABASE=cibite AG
-+
-+OUI:40D8551A5*
-+ ID_OUI_FROM_DATABASE=DemoPad
-+
-+OUI:40D8551A6*
-+ ID_OUI_FROM_DATABASE=RB-LINK Wireless
-+
-+OUI:40D8551A7*
-+ ID_OUI_FROM_DATABASE=ENTEC Electric & Electronic CO., LTD
-+
-+OUI:40D8551A8*
-+ ID_OUI_FROM_DATABASE=Multiobrabotka
-+
-+OUI:40D8551A9*
-+ ID_OUI_FROM_DATABASE=Lubino s.r.o.
-+
-+OUI:40D8551AA*
-+ ID_OUI_FROM_DATABASE=Broachlink Technology Co.,Limited
-+
-+OUI:40D8551AB*
-+ ID_OUI_FROM_DATABASE=Rosslare Enterprises Limited
-+
-+OUI:40D8551AC*
-+ ID_OUI_FROM_DATABASE=ELAN SYSTEMS
-+
-+OUI:40D8551AD*
-+ ID_OUI_FROM_DATABASE=WICHER DIGITAL TECHNIK
-+
-+OUI:40D8551AE*
-+ ID_OUI_FROM_DATABASE=Autonomous Solutions, Inc
-+
-+OUI:40D8551AF*
-+ ID_OUI_FROM_DATABASE=Vigitron Inc.
-+
-+OUI:40D8551B0*
-+ ID_OUI_FROM_DATABASE=Shin-ei Electronic Measuring Co.,Ltd.
-+
-+OUI:40D8551B1*
-+ ID_OUI_FROM_DATABASE=Logos 01 S.r.l.
-+
-+OUI:40D8551B2*
-+ ID_OUI_FROM_DATABASE=AGE A. Gilg Elektronik
-+
-+OUI:40D8551B3*
-+ ID_OUI_FROM_DATABASE=BETTINI SRL
-+
-+OUI:40D8551B4*
-+ ID_OUI_FROM_DATABASE=Inforce Computing Inc.
-+
-+OUI:40D8551B5*
-+ ID_OUI_FROM_DATABASE=A+EC Klein Ingenieurbuero
-+
-+OUI:40D8551B6*
-+ ID_OUI_FROM_DATABASE=Magic Systems
-+
-+OUI:40D8551B7*
-+ ID_OUI_FROM_DATABASE=TEWS Elektronik GmbH & Co. KG
-+
-+OUI:40D8551B8*
-+ ID_OUI_FROM_DATABASE=Orion Systems, Inc
-+
-+OUI:40D8551B9*
-+ ID_OUI_FROM_DATABASE=Beking Industrieele automatisering
-+
-+OUI:40D8551BA*
-+ ID_OUI_FROM_DATABASE=Creative Lighting And Sound Systems Pty Ltd
-+
-+OUI:40D8551BB*
-+ ID_OUI_FROM_DATABASE=Micromega Dynamics SA
-+
-+OUI:40D8551BC*
-+ ID_OUI_FROM_DATABASE=KbDevice,Inc.
-+
-+OUI:40D8551BD*
-+ ID_OUI_FROM_DATABASE=HORIBA ABX
-+
-+OUI:40D8551BE*
-+ ID_OUI_FROM_DATABASE=PEEK TRAFFIC
-+
-+OUI:40D8551BF*
-+ ID_OUI_FROM_DATABASE=shanghai mingding information tech co.Ltd
-+
-+OUI:40D8551C0*
-+ ID_OUI_FROM_DATABASE=NPB Automation AB
-+
-+OUI:40D8551C1*
-+ ID_OUI_FROM_DATABASE=Triamec Motion AG
-+
-+OUI:40D8551C2*
-+ ID_OUI_FROM_DATABASE=Digital Display Systems
-+
-+OUI:40D8551C3*
-+ ID_OUI_FROM_DATABASE=Cornfed Systems LLC
-+
-+OUI:40D8551C4*
-+ ID_OUI_FROM_DATABASE=QED Advanced Systems Limited
-+
-+OUI:40D8551C6*
-+ ID_OUI_FROM_DATABASE=Device Solutions Ltd
-+
-+OUI:40D8551C7*
-+ ID_OUI_FROM_DATABASE=Wexiödisk AB
-+
-+OUI:40D8551C8*
-+ ID_OUI_FROM_DATABASE=Sensata Technologies
-+
-+OUI:40D8551C9*
-+ ID_OUI_FROM_DATABASE=Andy-L Ltd.
-+
-+OUI:40D8551CA*
-+ ID_OUI_FROM_DATABASE=Rigel Engineering
-+
-+OUI:40D8551CB*
-+ ID_OUI_FROM_DATABASE=MG S.r.l.
-+
-+OUI:40D8551CD*
-+ ID_OUI_FROM_DATABASE=YXLON International A/S
-+
-+OUI:40D8551CE*
-+ ID_OUI_FROM_DATABASE=Peter Huber
-+
-+OUI:40D8551CF*
-+ ID_OUI_FROM_DATABASE=Omnik New Energy Co., Ltd
-+
-+OUI:40D8551D0*
-+ ID_OUI_FROM_DATABASE=Webeasy BV
-+
-+OUI:40D8551D1*
-+ ID_OUI_FROM_DATABASE=Founder Broadband Network Service Co.,Ltd.
-+
-+OUI:40D8551D2*
-+ ID_OUI_FROM_DATABASE=InventLab s.c.
-+
-+OUI:40D8551D3*
-+ ID_OUI_FROM_DATABASE=Kaluga Teletypes Manufacturing Plant
-+
-+OUI:40D8551D4*
-+ ID_OUI_FROM_DATABASE=Prisma Engineering srl
-+
-+OUI:40D8551D5*
-+ ID_OUI_FROM_DATABASE=FST21 Ltd.
-+
-+OUI:40D8551D6*
-+ ID_OUI_FROM_DATABASE=EMS Computers Pty Ltd
-+
-+OUI:40D8551D7*
-+ ID_OUI_FROM_DATABASE=Wheatstone Corporation
-+
-+OUI:40D8551D8*
-+ ID_OUI_FROM_DATABASE=Owl Computing Technologies, Inc.
-+
-+OUI:40D8551D9*
-+ ID_OUI_FROM_DATABASE=Commercial Wireless Systems International LLC.
-+
-+OUI:40D8551DA*
-+ ID_OUI_FROM_DATABASE=Energy Technology and Control Ltd.
-+
-+OUI:40D8551DB*
-+ ID_OUI_FROM_DATABASE=NIPPON TECHNO LAB.,INC,
-+
-+OUI:40D8551DC*
-+ ID_OUI_FROM_DATABASE=Aplex Technology Inc.
-+
-+OUI:40D8551DD*
-+ ID_OUI_FROM_DATABASE=BaOpt Benelux bv
-+
-+OUI:40D8551DE*
-+ ID_OUI_FROM_DATABASE=Vidisys GmbH
-+
-+OUI:40D8551DF*
-+ ID_OUI_FROM_DATABASE=Chengdu Meihuan Technology Co.,Ltd
-+
-+OUI:40D8551E0*
-+ ID_OUI_FROM_DATABASE=Embedded Technology Corporation
-+
-+OUI:40D8551E1*
-+ ID_OUI_FROM_DATABASE=AD QUALITE
-+
-+OUI:40D8551E2*
-+ ID_OUI_FROM_DATABASE=ELNEC s.r.o.
-+
-+OUI:40D8551E3*
-+ ID_OUI_FROM_DATABASE=Mega Electronics Ltd
-+
- OUI:000000*
-  ID_OUI_FROM_DATABASE=XEROX CORPORATION
- 
-@@ -13664,7 +13880,7 @@ OUI:000053*
-  ID_OUI_FROM_DATABASE=COMPUCORP
- 
- OUI:000054*
-- ID_OUI_FROM_DATABASE=MODICON, INC.
-+ ID_OUI_FROM_DATABASE=Schnieder Electric
- 
- OUI:000055*
-  ID_OUI_FROM_DATABASE=COMMISSARIAT A L`ENERGIE ATOM.
-@@ -13694,7 +13910,7 @@ OUI:00005D*
-  ID_OUI_FROM_DATABASE=CS TELECOM
- 
- OUI:00005E*
-- ID_OUI_FROM_DATABASE=USC INFORMATION SCIENCES INST
-+ ID_OUI_FROM_DATABASE=ICANN, IANA Department
- 
- OUI:00005F*
-  ID_OUI_FROM_DATABASE=SUMITOMO ELECTRIC IND., LTD.
-@@ -17957,7 +18173,7 @@ OUI:0005ED*
-  ID_OUI_FROM_DATABASE=Technikum Joanneum GmbH
- 
- OUI:0005EE*
-- ID_OUI_FROM_DATABASE=BEWATOR Group
-+ ID_OUI_FROM_DATABASE=Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR
- 
- OUI:0005EF*
-  ID_OUI_FROM_DATABASE=ADOIR Digital Technology
-@@ -19412,7 +19628,7 @@ OUI:0007D2*
-  ID_OUI_FROM_DATABASE=Logopak Systeme GmbH & Co. KG
- 
- OUI:0007D3*
-- ID_OUI_FROM_DATABASE=Stork Prints B.V.
-+ ID_OUI_FROM_DATABASE=SPGPrints B.V.
- 
- OUI:0007D4*
-  ID_OUI_FROM_DATABASE=Zhejiang Yutong Network Communication Co Ltd.
-@@ -19613,7 +19829,7 @@ OUI:000815*
-  ID_OUI_FROM_DATABASE=CATS Co., Ltd.
- 
- OUI:000816*
-- ID_OUI_FROM_DATABASE=Bluetags A/S
-+ ID_OUI_FROM_DATABASE=Bluelon ApS
- 
- OUI:000817*
-  ID_OUI_FROM_DATABASE=EmergeCore Networks LLC
-@@ -29819,7 +30035,7 @@ OUI:001587*
-  ID_OUI_FROM_DATABASE=Takenaka Seisakusho Co.,Ltd
- 
- OUI:001588*
-- ID_OUI_FROM_DATABASE=Balda Solution Malaysia Sdn Bhd
-+ ID_OUI_FROM_DATABASE=Salutica Allied Solutions Sdn Bhd
- 
- OUI:001589*
-  ID_OUI_FROM_DATABASE=D-MAX Technology Co.,Ltd
-@@ -33935,7 +34151,7 @@ OUI:001AE7*
-  ID_OUI_FROM_DATABASE=Aztek Networks, Inc.
- 
- OUI:001AE8*
-- ID_OUI_FROM_DATABASE=Siemens Enterprise Communications GmbH & Co. KG
-+ ID_OUI_FROM_DATABASE=Unify GmbH and Co KG
- 
- OUI:001AE9*
-  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
-@@ -36926,7 +37142,7 @@ OUI:001ECC*
-  ID_OUI_FROM_DATABASE=2Wire, Inc.
- 
- OUI:001ECD*
-- ID_OUI_FROM_DATABASE=2Wire, Inc.
-+ ID_OUI_FROM_DATABASE=KYLAND Technology Co. LTD
- 
- OUI:001ECE*
-  ID_OUI_FROM_DATABASE=2Wire, Inc.
-@@ -40337,7 +40553,7 @@ OUI:002340*
-  ID_OUI_FROM_DATABASE=MiX Telematics
- 
- OUI:002341*
-- ID_OUI_FROM_DATABASE=Siemens AG, Infrastructure & Cities Sector, Building Technologies Division
-+ ID_OUI_FROM_DATABASE=Siemens AB, Infrastructure & Cities, Building Technologies Division, IC BT SSP SP BA PR
- 
- OUI:002342*
-  ID_OUI_FROM_DATABASE=Coffee Equipment Company
-@@ -42200,7 +42416,7 @@ OUI:0025B8*
-  ID_OUI_FROM_DATABASE=Agile Communications, Inc.
- 
- OUI:0025B9*
-- ID_OUI_FROM_DATABASE=Agilink Systems Corp.
-+ ID_OUI_FROM_DATABASE=Cypress Solutions Inc
- 
- OUI:0025BA*
-  ID_OUI_FROM_DATABASE=Alcatel-Lucent IPD
-@@ -44405,7 +44621,7 @@ OUI:004065*
-  ID_OUI_FROM_DATABASE=GTE SPACENET
- 
- OUI:004066*
-- ID_OUI_FROM_DATABASE=HITACHI CABLE, LTD.
-+ ID_OUI_FROM_DATABASE=Hitachi Metals, Ltd.
- 
- OUI:004067*
-  ID_OUI_FROM_DATABASE=OMNIBYTE CORPORATION
-@@ -46100,7 +46316,7 @@ OUI:0060A3*
-  ID_OUI_FROM_DATABASE=CONTINUUM TECHNOLOGY CORP.
- 
- OUI:0060A4*
-- ID_OUI_FROM_DATABASE=GRINAKER SYSTEM TECHNOLOGIES
-+ ID_OUI_FROM_DATABASE=GEW Technologies (PTY)Ltd
- 
- OUI:0060A5*
-  ID_OUI_FROM_DATABASE=PERFORMANCE TELECOM CORP.
-@@ -46904,7 +47120,7 @@ OUI:0080A1*
-  ID_OUI_FROM_DATABASE=MICROTEST, INC.
- 
- OUI:0080A2*
-- ID_OUI_FROM_DATABASE=Tattile SRL
-+ ID_OUI_FROM_DATABASE=CREATIVE ELECTRONIC SYSTEMS
- 
- OUI:0080A3*
-  ID_OUI_FROM_DATABASE=Lantronix
-@@ -47188,6 +47404,9 @@ OUI:0080FF*
- OUI:008865*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:008B43*
-+ ID_OUI_FROM_DATABASE=RFTECH
-+
- OUI:008C10*
-  ID_OUI_FROM_DATABASE=Black Box Corp.
- 
-@@ -47980,6 +48199,9 @@ OUI:0091D6*
- OUI:0091FA*
-  ID_OUI_FROM_DATABASE=Synapse Product Development
- 
-+OUI:0092FA*
-+ ID_OUI_FROM_DATABASE=SHENZHEN WISKY TECHNOLOGY CO.,LTD
-+
- OUI:009363*
-  ID_OUI_FROM_DATABASE=Uni-Link Technology Co., Ltd.
- 
-@@ -51340,6 +51562,9 @@ OUI:00E8AB*
- OUI:00EB2D*
-  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
- 
-+OUI:00EEBD*
-+ ID_OUI_FROM_DATABASE=HTC Corporation
-+
- OUI:00F051*
-  ID_OUI_FROM_DATABASE=KWB Gmbh
- 
-@@ -51481,6 +51706,9 @@ OUI:044BFF*
- OUI:044CEF*
-  ID_OUI_FROM_DATABASE=Fujian Sanao Technology Co.,Ltd
- 
-+OUI:044E06*
-+ ID_OUI_FROM_DATABASE=Ericsson AB
-+
- OUI:044F8B*
-  ID_OUI_FROM_DATABASE=Adapteva, Inc.
- 
-@@ -51628,6 +51856,9 @@ OUI:04DAD2*
- OUI:04DB56*
-  ID_OUI_FROM_DATABASE=Apple, Inc.
- 
-+OUI:04DB8A*
-+ ID_OUI_FROM_DATABASE=Suntech International Ltd.
-+
- OUI:04DD4C*
-  ID_OUI_FROM_DATABASE=Velocytech
- 
-@@ -51664,6 +51895,9 @@ OUI:04EE91*
- OUI:04F021*
-  ID_OUI_FROM_DATABASE=Compex Systems Pte Ltd
- 
-+OUI:04F13E*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:04F17D*
-  ID_OUI_FROM_DATABASE=Tarana Wireless
- 
-@@ -52117,6 +52351,12 @@ OUI:08008F*
- OUI:080090*
-  ID_OUI_FROM_DATABASE=SONOMA SYSTEMS
- 
-+OUI:080371*
-+ ID_OUI_FROM_DATABASE=KRG CORPORATE
-+
-+OUI:0805CD*
-+ ID_OUI_FROM_DATABASE=DongGuang EnMai Electronic Product Co.Ltd.
-+
- OUI:0808C2*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-@@ -52204,12 +52444,21 @@ OUI:083E0C*
- OUI:083E8E*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd
- 
-+OUI:083F3E*
-+ ID_OUI_FROM_DATABASE=WSH GmbH
-+
-+OUI:083F76*
-+ ID_OUI_FROM_DATABASE=Intellian Technologies, Inc.
-+
- OUI:084027*
-  ID_OUI_FROM_DATABASE=Gridstore Inc.
- 
- OUI:08482C*
-  ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD.
- 
-+OUI:084929*
-+ ID_OUI_FROM_DATABASE=CYBATI
-+
- OUI:084E1C*
-  ID_OUI_FROM_DATABASE=H2A Systems, LLC
- 
-@@ -52222,6 +52471,9 @@ OUI:08512E*
- OUI:085240*
-  ID_OUI_FROM_DATABASE=EbV Elektronikbau- und Vertriebs GmbH
- 
-+OUI:085700*
-+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-+
- OUI:085AE0*
-  ID_OUI_FROM_DATABASE=Recovision Technology Co., Ltd.
- 
-@@ -52240,6 +52492,9 @@ OUI:0868D0*
- OUI:0868EA*
-  ID_OUI_FROM_DATABASE=EITO ELECTRONICS CO., LTD.
- 
-+OUI:086DF2*
-+ ID_OUI_FROM_DATABASE=Shenzhen MIMOWAVE Technology Co.,Ltd
-+
- OUI:087045*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -52450,6 +52705,9 @@ OUI:0C3956*
- OUI:0C3C65*
-  ID_OUI_FROM_DATABASE=Dome Imaging Inc
- 
-+OUI:0C3E9F*
-+ ID_OUI_FROM_DATABASE=Apple, Inc
-+
- OUI:0C469D*
-  ID_OUI_FROM_DATABASE=MS Sedco
- 
-@@ -52462,6 +52720,9 @@ OUI:0C4C39*
- OUI:0C4DE9*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:0C4F5A*
-+ ID_OUI_FROM_DATABASE=ASA-RT s.r.l.
-+
- OUI:0C51F7*
-  ID_OUI_FROM_DATABASE=CHAUVIN ARNOUX
- 
-@@ -52597,6 +52858,9 @@ OUI:0CC0C0*
- OUI:0CC3A7*
-  ID_OUI_FROM_DATABASE=Meritec
- 
-+OUI:0CC47A*
-+ ID_OUI_FROM_DATABASE=Super Micro Computer, Inc.
-+
- OUI:0CC47E*
-  ID_OUI_FROM_DATABASE=EUCAST Co., Ltd.
- 
-@@ -52657,6 +52921,9 @@ OUI:0CDDEF*
- OUI:0CDFA4*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:0CE0E4*
-+ ID_OUI_FROM_DATABASE=Plantronics, Inc
-+
- OUI:0CE5D3*
-  ID_OUI_FROM_DATABASE=DH electronics GmbH
- 
-@@ -52765,6 +53032,9 @@ OUI:101F74*
- OUI:102279*
-  ID_OUI_FROM_DATABASE=ZeroDesktop, Inc.
- 
-+OUI:1027BE*
-+ ID_OUI_FROM_DATABASE=TVIP
-+
- OUI:102831*
-  ID_OUI_FROM_DATABASE=Morion Inc.
- 
-@@ -52954,6 +53224,12 @@ OUI:10D542*
- OUI:10DDB1*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:10DDF4*
-+ ID_OUI_FROM_DATABASE=Maxway Electronics CO.,LTD
-+
-+OUI:10DEE4*
-+ ID_OUI_FROM_DATABASE=automationNEXT GmbH
-+
- OUI:10E2D5*
-  ID_OUI_FROM_DATABASE=Qi Hardware Inc.
- 
-@@ -53155,6 +53431,12 @@ OUI:14B1C8*
- OUI:14B73D*
-  ID_OUI_FROM_DATABASE=ARCHEAN Technologies
- 
-+OUI:14B968*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
-+OUI:14C089*
-+ ID_OUI_FROM_DATABASE=DUNE HD LTD
-+
- OUI:14C21D*
-  ID_OUI_FROM_DATABASE=Sabtech Industries
- 
-@@ -53275,6 +53557,9 @@ OUI:182012*
- OUI:182032*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:1820A6*
-+ ID_OUI_FROM_DATABASE=Sage Co., Ltd.
-+
- OUI:182666*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -53386,6 +53671,9 @@ OUI:1880CE*
- OUI:1880F5*
-  ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd
- 
-+OUI:188331*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:188410*
-  ID_OUI_FROM_DATABASE=CoreTrust Inc.
- 
-@@ -53401,6 +53689,9 @@ OUI:188796*
- OUI:188857*
-  ID_OUI_FROM_DATABASE=Beijing Jinhong Xi-Dian Information Technology Corp.
- 
-+OUI:1889DF*
-+ ID_OUI_FROM_DATABASE=CerebrEX Inc.
-+
- OUI:188ED5*
-  ID_OUI_FROM_DATABASE=TP Vision Belgium N.V. - innovation site Brugge
- 
-@@ -53491,6 +53782,9 @@ OUI:18E288*
- OUI:18E2C2*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-+OUI:18E728*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:18E7F4*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -53521,6 +53815,9 @@ OUI:18FC9F*
- OUI:18FE34*
-  ID_OUI_FROM_DATABASE=Espressif Inc.
- 
-+OUI:18FF2E*
-+ ID_OUI_FROM_DATABASE=Shenzhen Rui Ying Da Technology Co., Ltd
-+
- OUI:1C0656*
-  ID_OUI_FROM_DATABASE=IDY Corporation
- 
-@@ -53551,6 +53848,9 @@ OUI:1C184A*
- OUI:1C19DE*
-  ID_OUI_FROM_DATABASE=eyevis GmbH
- 
-+OUI:1C1B68*
-+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-+
- OUI:1C1D67*
-  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
- 
-@@ -53707,6 +54007,9 @@ OUI:1CA770*
- OUI:1CAA07*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-+OUI:1CAB01*
-+ ID_OUI_FROM_DATABASE=Innovolt
-+
- OUI:1CABA7*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -53770,6 +54073,9 @@ OUI:1CE62B*
- OUI:1CE6C7*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-+OUI:1CEEE8*
-+ ID_OUI_FROM_DATABASE=Ilshin Elecom
-+
- OUI:1CF061*
-  ID_OUI_FROM_DATABASE=SCAPS GmbH
- 
-@@ -53779,6 +54085,9 @@ OUI:1CF5E7*
- OUI:1CFA68*
-  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
- 
-+OUI:1CFCBB*
-+ ID_OUI_FROM_DATABASE=Realfiction ApS
-+
- OUI:1CFEA7*
-  ID_OUI_FROM_DATABASE=IDentytech Solutins Ltd.
- 
-@@ -53794,12 +54103,21 @@ OUI:200505*
- OUI:2005E8*
-  ID_OUI_FROM_DATABASE=OOO InProMedia
- 
-+OUI:2008ED*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:200A5E*
-  ID_OUI_FROM_DATABASE=Xiangshan Giant Eagle Technology Developing co.,LTD
- 
- OUI:200BC7*
-  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
- 
-+OUI:200CC8*
-+ ID_OUI_FROM_DATABASE=NETGEAR INC.,
-+
-+OUI:200E95*
-+ ID_OUI_FROM_DATABASE=IEC – TC9 WG43
-+
- OUI:20107A*
-  ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd.
- 
-@@ -53917,6 +54235,9 @@ OUI:207D74*
- OUI:20858C*
-  ID_OUI_FROM_DATABASE=Assa
- 
-+OUI:2087AC*
-+ ID_OUI_FROM_DATABASE=AES motomation
-+
- OUI:208984*
-  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD
- 
-@@ -54022,6 +54343,9 @@ OUI:20E564*
- OUI:20E791*
-  ID_OUI_FROM_DATABASE=Siemens Healthcare Diagnostics, Inc
- 
-+OUI:20EAC7*
-+ ID_OUI_FROM_DATABASE=SHENZHEN RIOPINE ELECTRONICS CO., LTD
-+
- OUI:20EEC6*
-  ID_OUI_FROM_DATABASE=Elefirst Science & Tech Co ., ltd
- 
-@@ -54070,6 +54394,9 @@ OUI:241064*
- OUI:241125*
-  ID_OUI_FROM_DATABASE=Hutek Co., Ltd.
- 
-+OUI:241148*
-+ ID_OUI_FROM_DATABASE=Entropix, LLC
-+
- OUI:2411D0*
-  ID_OUI_FROM_DATABASE=Chongqing Ehs Science and Technology Development Co.,Ltd.
- 
-@@ -54085,6 +54412,9 @@ OUI:241F2C*
- OUI:2421AB*
-  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications
- 
-+OUI:242642*
-+ ID_OUI_FROM_DATABASE=SHARP Corporation.
-+
- OUI:242FFA*
-  ID_OUI_FROM_DATABASE=Toshiba Global Commerce Solutions
- 
-@@ -54328,6 +54658,9 @@ OUI:281878*
- OUI:2818FD*
-  ID_OUI_FROM_DATABASE=Aditya Infotech Ltd.
- 
-+OUI:282246*
-+ ID_OUI_FROM_DATABASE=Beijing Sinoix Communication Co., LTD
-+
- OUI:2826A6*
-  ID_OUI_FROM_DATABASE=PBR electronics GmbH
- 
-@@ -54397,6 +54730,12 @@ OUI:286046*
- OUI:286094*
-  ID_OUI_FROM_DATABASE=CAPELEC
- 
-+OUI:286336*
-+ ID_OUI_FROM_DATABASE=Siemens AG - Industrial Automation - EWA
-+
-+OUI:28656B*
-+ ID_OUI_FROM_DATABASE=Keystone Microtech Corporation
-+
- OUI:286AB8*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -54451,6 +54790,9 @@ OUI:28987B*
- OUI:289A4B*
-  ID_OUI_FROM_DATABASE=SteelSeries ApS
- 
-+OUI:289AFA*
-+ ID_OUI_FROM_DATABASE=TCT Mobile Limited
-+
- OUI:289EDF*
-  ID_OUI_FROM_DATABASE=Danfoss Turbocor Compressors, Inc
- 
-@@ -54487,6 +54829,9 @@ OUI:28BA18*
- OUI:28BAB5*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:28BB59*
-+ ID_OUI_FROM_DATABASE=RNET Technologies, Inc.
-+
- OUI:28BE9B*
-  ID_OUI_FROM_DATABASE=Technicolor USA Inc.
- 
-@@ -54502,6 +54847,9 @@ OUI:28C68E*
- OUI:28C718*
-  ID_OUI_FROM_DATABASE=Altierre
- 
-+OUI:28C825*
-+ ID_OUI_FROM_DATABASE=DellKing Industrial Co., Ltd
-+
- OUI:28C914*
-  ID_OUI_FROM_DATABASE=Taimag Corporation
- 
-@@ -54547,6 +54895,9 @@ OUI:28D997*
- OUI:28DB81*
-  ID_OUI_FROM_DATABASE=Shanghai Guao Electronic Technology Co., Ltd
- 
-+OUI:28DEF6*
-+ ID_OUI_FROM_DATABASE=bioMerieux Inc.
-+
- OUI:28E02C*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -54598,6 +54949,9 @@ OUI:2C00F7*
- OUI:2C0623*
-  ID_OUI_FROM_DATABASE=Win Leader Inc.
- 
-+OUI:2C073C*
-+ ID_OUI_FROM_DATABASE=DEVLINE LIMITED
-+
- OUI:2C10C1*
-  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
- 
-@@ -54655,6 +55009,9 @@ OUI:2C3A28*
- OUI:2C3BFD*
-  ID_OUI_FROM_DATABASE=Netstor Technology Co., Ltd.
- 
-+OUI:2C3ECF*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:2C3F38*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-@@ -54673,6 +55030,9 @@ OUI:2C441B*
- OUI:2C44FD*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-+OUI:2C534A*
-+ ID_OUI_FROM_DATABASE=Shenzhen Winyao Electronic Limited
-+
- OUI:2C542D*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-@@ -54748,6 +55108,9 @@ OUI:2C922C*
- OUI:2C9464*
-  ID_OUI_FROM_DATABASE=Cincoze Co., Ltd.
- 
-+OUI:2C957F*
-+ ID_OUI_FROM_DATABASE=zte corporation
-+
- OUI:2C9717*
-  ID_OUI_FROM_DATABASE=I.C.Y. B.V.
- 
-@@ -55009,6 +55372,9 @@ OUI:3092F6*
- OUI:309BAD*
-  ID_OUI_FROM_DATABASE=BBK Electronics Corp., Ltd.,
- 
-+OUI:30A8DB*
-+ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
-+
- OUI:30AABD*
-  ID_OUI_FROM_DATABASE=Shanghai Reallytek Information Technology Co.,Ltd
- 
-@@ -55024,6 +55390,12 @@ OUI:30B216*
- OUI:30B3A2*
-  ID_OUI_FROM_DATABASE=Shenzhen Heguang Measurement & Control Technology Co.,Ltd
- 
-+OUI:30B5C2*
-+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-+
-+OUI:30C750*
-+ ID_OUI_FROM_DATABASE=MIC Technology Group
-+
- OUI:30C82A*
-  ID_OUI_FROM_DATABASE=Wi-Next s.r.l.
- 
-@@ -55060,6 +55432,9 @@ OUI:30F31D*
- OUI:30F33A*
-  ID_OUI_FROM_DATABASE=+plugg srl
- 
-+OUI:30F42F*
-+ ID_OUI_FROM_DATABASE=ESP
-+
- OUI:30F70D*
-  ID_OUI_FROM_DATABASE=Cisco Systems
- 
-@@ -55087,6 +55462,9 @@ OUI:3413E8*
- OUI:34159E*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:3417EB*
-+ ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
-+
- OUI:341A4C*
-  ID_OUI_FROM_DATABASE=SHENZHEN WEIBU ELECTRONICS CO.,LTD.
- 
-@@ -55117,6 +55495,9 @@ OUI:343111*
- OUI:3440B5*
-  ID_OUI_FROM_DATABASE=IBM
- 
-+OUI:34466F*
-+ ID_OUI_FROM_DATABASE=HiTEM Engineering
-+
- OUI:344B3D*
-  ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd.
- 
-@@ -55126,6 +55507,9 @@ OUI:344B50*
- OUI:344F3F*
-  ID_OUI_FROM_DATABASE=IO-Power Technology Co., Ltd.
- 
-+OUI:344F5C*
-+ ID_OUI_FROM_DATABASE=R&amp;M AG
-+
- OUI:344F69*
-  ID_OUI_FROM_DATABASE=EKINOPS SAS
- 
-@@ -55318,6 +55702,12 @@ OUI:34D7B4*
- OUI:34DBFD*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-+OUI:34DE1A*
-+ ID_OUI_FROM_DATABASE=Intel Corporate
-+
-+OUI:34DE34*
-+ ID_OUI_FROM_DATABASE=zte corporation
-+
- OUI:34DF2A*
-  ID_OUI_FROM_DATABASE=Fujikon Industrial Co.,Limited
- 
-@@ -55456,6 +55846,9 @@ OUI:386793*
- OUI:386BBB*
-  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
- 
-+OUI:386C9B*
-+ ID_OUI_FROM_DATABASE=Ivy Biomedical
-+
- OUI:386E21*
-  ID_OUI_FROM_DATABASE=Wasion Group Ltd.
- 
-@@ -55576,9 +55969,15 @@ OUI:38ECE4*
- OUI:38EE9D*
-  ID_OUI_FROM_DATABASE=Anedo Ltd.
- 
-+OUI:38F098*
-+ ID_OUI_FROM_DATABASE=Vapor Stone Rail Systems
-+
- OUI:38F597*
-  ID_OUI_FROM_DATABASE=home2net GmbH
- 
-+OUI:38F708*
-+ ID_OUI_FROM_DATABASE=National Resource Management, Inc.
-+
- OUI:38F8B7*
-  ID_OUI_FROM_DATABASE=V2COM PARTICIPACOES S.A.
- 
-@@ -55603,9 +56002,15 @@ OUI:3C0771*
- OUI:3C081E*
-  ID_OUI_FROM_DATABASE=Beijing Yupont Electric Power Technology Co.,Ltd
- 
-+OUI:3C08F6*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:3C096D*
-  ID_OUI_FROM_DATABASE=Powerhouse Dynamics
- 
-+OUI:3C0C48*
-+ ID_OUI_FROM_DATABASE=Servergy, Inc.
-+
- OUI:3C0E23*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-@@ -55639,6 +56044,9 @@ OUI:3C1A79*
- OUI:3C1CBE*
-  ID_OUI_FROM_DATABASE=JADAK LLC
- 
-+OUI:3C25D7*
-+ ID_OUI_FROM_DATABASE=Nokia Corporation
-+
- OUI:3C26D5*
-  ID_OUI_FROM_DATABASE=Sotera Wireless
- 
-@@ -55744,6 +56152,9 @@ OUI:3C83B5*
- OUI:3C86A8*
-  ID_OUI_FROM_DATABASE=Sangshin elecom .co,, LTD
- 
-+OUI:3C89A6*
-+ ID_OUI_FROM_DATABASE=KAPELSE
-+
- OUI:3C8AB0*
-  ID_OUI_FROM_DATABASE=Juniper Networks
- 
-@@ -55837,6 +56248,9 @@ OUI:3CD92B*
- OUI:3CDF1E*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-+OUI:3CDFBD*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:3CE072*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -55870,6 +56284,9 @@ OUI:3CF748*
- OUI:3CFB96*
-  ID_OUI_FROM_DATABASE=Emcraft Systems LLC
- 
-+OUI:400107*
-+ ID_OUI_FROM_DATABASE=Arista Corp
-+
- OUI:4001C6*
-  ID_OUI_FROM_DATABASE=3COM EUROPE LTD
- 
-@@ -55948,6 +56365,9 @@ OUI:40406B*
- OUI:404A03*
-  ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation
- 
-+OUI:404A18*
-+ ID_OUI_FROM_DATABASE=Addrek Smart Solutions
-+
- OUI:404D8E*
-  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
- 
-@@ -56011,6 +56431,9 @@ OUI:407074*
- OUI:407496*
-  ID_OUI_FROM_DATABASE=aFUN TECHNOLOGY INC.
- 
-+OUI:407875*
-+ ID_OUI_FROM_DATABASE=IMBEL - Industria de Material Belico do Brasil
-+
- OUI:407A80*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-@@ -56059,6 +56482,9 @@ OUI:40A6A4*
- OUI:40A6D9*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:40A8F0*
-+ ID_OUI_FROM_DATABASE=Hewlett Packard
-+
- OUI:40AC8D*
-  ID_OUI_FROM_DATABASE=Data Management, Inc.
- 
-@@ -56164,6 +56590,9 @@ OUI:4403A7*
- OUI:440CFD*
-  ID_OUI_FROM_DATABASE=NetMan Co., Ltd.
- 
-+OUI:4411C2*
-+ ID_OUI_FROM_DATABASE=Telegartner Karl Gartner GmbH
-+
- OUI:441319*
-  ID_OUI_FROM_DATABASE=WKK TECHNOLOGY LTD.
- 
-@@ -56182,6 +56611,9 @@ OUI:4423AA*
- OUI:4425BB*
-  ID_OUI_FROM_DATABASE=Bamboo Entertainment Corporation
- 
-+OUI:442938*
-+ ID_OUI_FROM_DATABASE=NietZsche enterprise Co.Ltd.
-+
- OUI:442A60*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -56230,6 +56662,9 @@ OUI:443D21*
- OUI:443EB2*
-  ID_OUI_FROM_DATABASE=DEOTRON Co., LTD.
- 
-+OUI:444891*
-+ ID_OUI_FROM_DATABASE=HDMI Licensing, LLC
-+
- OUI:444A65*
-  ID_OUI_FROM_DATABASE=Silverflare Ltd.
- 
-@@ -56287,6 +56722,9 @@ OUI:446D57*
- OUI:44700B*
-  ID_OUI_FROM_DATABASE=IFFU
- 
-+OUI:447098*
-+ ID_OUI_FROM_DATABASE=MING HONG TECHNOLOGY (SHEN ZHEN) LIMITED
-+
- OUI:447BC4*
-  ID_OUI_FROM_DATABASE=DualShine Technology(SZ)Co.,Ltd
- 
-@@ -56296,6 +56734,9 @@ OUI:447C7F*
- OUI:447DA5*
-  ID_OUI_FROM_DATABASE=VTION INFORMATION TECHNOLOGY (FUJIAN) CO.,LTD
- 
-+OUI:447E76*
-+ ID_OUI_FROM_DATABASE=Trek Technology (S) Pte Ltd
-+
- OUI:447E95*
-  ID_OUI_FROM_DATABASE=Alpha and Omega, Inc
- 
-@@ -56365,6 +56806,9 @@ OUI:44C15C*
- OUI:44C233*
-  ID_OUI_FROM_DATABASE=Guangzhou Comet Technology Development Co.Ltd
- 
-+OUI:44C306*
-+ ID_OUI_FROM_DATABASE=SIFROM Inc.
-+
- OUI:44C39B*
-  ID_OUI_FROM_DATABASE=OOO RUBEZH NPO
- 
-@@ -56443,6 +56887,9 @@ OUI:4813F3*
- OUI:48174C*
-  ID_OUI_FROM_DATABASE=MicroPower technologies
- 
-+OUI:481842*
-+ ID_OUI_FROM_DATABASE=Shanghai Winaas Co. Equipment Co. Ltd.
-+
- OUI:481BD2*
-  ID_OUI_FROM_DATABASE=Intron Scientific co., ltd.
- 
-@@ -56458,6 +56905,9 @@ OUI:4833DD*
- OUI:48343D*
-  ID_OUI_FROM_DATABASE=IEP GmbH
- 
-+OUI:483D32*
-+ ID_OUI_FROM_DATABASE=Syscor Controls &amp; Automation
-+
- OUI:484487*
-  ID_OUI_FROM_DATABASE=Cisco SPVTG
- 
-@@ -56476,6 +56926,9 @@ OUI:485261*
- OUI:485A3F*
-  ID_OUI_FROM_DATABASE=WISOL
- 
-+OUI:485AB6*
-+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-+
- OUI:485B39*
-  ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
- 
-@@ -56500,6 +56953,9 @@ OUI:486FD2*
- OUI:487119*
-  ID_OUI_FROM_DATABASE=SGB GROUP LTD.
- 
-+OUI:48746E*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:488E42*
-  ID_OUI_FROM_DATABASE=DIGALOG GmbH
- 
-@@ -56530,6 +56986,9 @@ OUI:48AA5D*
- OUI:48B253*
-  ID_OUI_FROM_DATABASE=Marketaxess Corporation
- 
-+OUI:48B5A7*
-+ ID_OUI_FROM_DATABASE=Glory Horse Industries Ltd.
-+
- OUI:48B8DE*
-  ID_OUI_FROM_DATABASE=HOMEWINS TECHNOLOGY CO.,LTD.
- 
-@@ -56554,6 +57013,9 @@ OUI:48C8B6*
- OUI:48CB6E*
-  ID_OUI_FROM_DATABASE=Cello Electronics (UK) Ltd
- 
-+OUI:48D0CF*
-+ ID_OUI_FROM_DATABASE=Universal Electronics, Inc.
-+
- OUI:48D224*
-  ID_OUI_FROM_DATABASE=Liteon Technology Corporation
- 
-@@ -56584,6 +57046,12 @@ OUI:48EB30*
- OUI:48ED80*
-  ID_OUI_FROM_DATABASE=daesung eltec
- 
-+OUI:48EE07*
-+ ID_OUI_FROM_DATABASE=Silver Palm Technologies LLC
-+
-+OUI:48EE86*
-+ ID_OUI_FROM_DATABASE=UTStarcom (China) Co.,Ltd
-+
- OUI:48F230*
-  ID_OUI_FROM_DATABASE=Ubizcore Co.,LTD
- 
-@@ -56605,6 +57073,9 @@ OUI:48F925*
- OUI:48FCB8*
-  ID_OUI_FROM_DATABASE=Woodstream Corporation
- 
-+OUI:48FEEA*
-+ ID_OUI_FROM_DATABASE=HOMA B.V.
-+
- OUI:4C0082*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-@@ -56626,6 +57097,9 @@ OUI:4C09B4*
- OUI:4C0B3A*
-  ID_OUI_FROM_DATABASE=TCT Mobile Limited
- 
-+OUI:4C0DEE*
-+ ID_OUI_FROM_DATABASE=JABIL CIRCUIT (SHANGHAI) LTD.
-+
- OUI:4C0F6E*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-@@ -56746,6 +57220,9 @@ OUI:4C7897*
- OUI:4C79BA*
-  ID_OUI_FROM_DATABASE=Intel Corporate
- 
-+OUI:4C7F62*
-+ ID_OUI_FROM_DATABASE=Nokia Corporation
-+
- OUI:4C804F*
-  ID_OUI_FROM_DATABASE=Armstrong Monitoring Corp
- 
-@@ -56755,6 +57232,9 @@ OUI:4C8093*
- OUI:4C82CF*
-  ID_OUI_FROM_DATABASE=Echostar Technologies
- 
-+OUI:4C8B30*
-+ ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
-+
- OUI:4C8B55*
-  ID_OUI_FROM_DATABASE=Grupo Digicon
- 
-@@ -56779,6 +57259,9 @@ OUI:4C9E80*
- OUI:4C9EE4*
-  ID_OUI_FROM_DATABASE=Hanyang Navicom Co.,Ltd.
- 
-+OUI:4CA56D*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:4CA74B*
-  ID_OUI_FROM_DATABASE=Alcatel Lucent
- 
-@@ -56833,6 +57316,9 @@ OUI:4CCC34*
- OUI:4CD637*
-  ID_OUI_FROM_DATABASE=Qsono Electronics Co., Ltd
- 
-+OUI:4CD7B6*
-+ ID_OUI_FROM_DATABASE=Helmer Scientific
-+
- OUI:4CD9C4*
-  ID_OUI_FROM_DATABASE=Magneti Marelli Automotive Electronics (Guangzhou) Co. Ltd
- 
-@@ -56854,6 +57340,9 @@ OUI:4CEDDE*
- OUI:4CF02E*
-  ID_OUI_FROM_DATABASE=Vifa Denmark A/S
- 
-+OUI:4CF45B*
-+ ID_OUI_FROM_DATABASE=Blue Clover Devices
-+
- OUI:4CF737*
-  ID_OUI_FROM_DATABASE=SamJi Electronics Co., Ltd
- 
-@@ -56884,6 +57373,9 @@ OUI:5017FF*
- OUI:501AC5*
-  ID_OUI_FROM_DATABASE=Microsoft
- 
-+OUI:501CBF*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:50206B*
-  ID_OUI_FROM_DATABASE=Emerson Climate Technologies Transportation Solutions
- 
-@@ -56950,6 +57442,9 @@ OUI:504F94*
- OUI:505663*
-  ID_OUI_FROM_DATABASE=Texas Instruments
- 
-+OUI:5056A8*
-+ ID_OUI_FROM_DATABASE=Jolla Ltd
-+
- OUI:5057A8*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-@@ -56959,6 +57454,9 @@ OUI:505AC6*
- OUI:506028*
-  ID_OUI_FROM_DATABASE=Xirrus Inc.
- 
-+OUI:506184*
-+ ID_OUI_FROM_DATABASE=Avaya, Inc
-+
- OUI:5061D6*
-  ID_OUI_FROM_DATABASE=Indu-Sol GmbH
- 
-@@ -57025,6 +57523,9 @@ OUI:509871*
- OUI:509F27*
-  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
- 
-+OUI:50A054*
-+ ID_OUI_FROM_DATABASE=Actineon
-+
- OUI:50A0BF*
-  ID_OUI_FROM_DATABASE=Alba Fiber Systems Inc.
- 
-@@ -57046,6 +57547,9 @@ OUI:50ABBF*
- OUI:50AF73*
-  ID_OUI_FROM_DATABASE=Shenzhen Bitland Information Technology Co., Ltd.
- 
-+OUI:50B695*
-+ ID_OUI_FROM_DATABASE=Micropoint Biotechnologies,Inc.
-+
- OUI:50B7C3*
-  ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD
- 
-@@ -57163,6 +57667,9 @@ OUI:5422F8*
- OUI:542696*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:54271E*
-+ ID_OUI_FROM_DATABASE=AzureWave Technonloies, Inc.
-+
- OUI:542A9C*
-  ID_OUI_FROM_DATABASE=LSY Defense, LLC.
- 
-@@ -57175,6 +57682,9 @@ OUI:542F89*
- OUI:543131*
-  ID_OUI_FROM_DATABASE=Raster Vision Ltd
- 
-+OUI:543530*
-+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-+
- OUI:5435DF*
-  ID_OUI_FROM_DATABASE=Symeo GmbH
- 
-@@ -57214,6 +57724,9 @@ OUI:545FA9*
- OUI:5461EA*
-  ID_OUI_FROM_DATABASE=Zaplox AB
- 
-+OUI:54724F*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:547398*
-  ID_OUI_FROM_DATABASE=Toyo Electronics Corporation
- 
-@@ -57274,6 +57787,9 @@ OUI:549D85*
- OUI:54A04F*
-  ID_OUI_FROM_DATABASE=t-mac Technologies Ltd
- 
-+OUI:54A31B*
-+ ID_OUI_FROM_DATABASE=Shenzhen Linkworld Technology Co,.LTD
-+
- OUI:54A51B*
-  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
- 
-@@ -57286,6 +57802,9 @@ OUI:54A619*
- OUI:54A9D4*
-  ID_OUI_FROM_DATABASE=Minibar Systems
- 
-+OUI:54AE27*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:54B620*
-  ID_OUI_FROM_DATABASE=SUHDOL E&C Co.Ltd.
- 
-@@ -57295,9 +57814,15 @@ OUI:54BEF7*
- OUI:54CDA7*
-  ID_OUI_FROM_DATABASE=Fujian Shenzhou Electronic Co.,Ltd
- 
-+OUI:54CDEE*
-+ ID_OUI_FROM_DATABASE=ShenZhen Apexis Electronic Co.,Ltd
-+
- OUI:54D0ED*
-  ID_OUI_FROM_DATABASE=AXIM Communications
- 
-+OUI:54D163*
-+ ID_OUI_FROM_DATABASE=MAX-TECH,INC
-+
- OUI:54D1B0*
-  ID_OUI_FROM_DATABASE=Universal Laser Systems, Inc
- 
-@@ -57310,6 +57835,9 @@ OUI:54DF63*
- OUI:54E032*
-  ID_OUI_FROM_DATABASE=Juniper Networks
- 
-+OUI:54E2E0*
-+ ID_OUI_FROM_DATABASE=Pace plc
-+
- OUI:54E3B0*
-  ID_OUI_FROM_DATABASE=JVL Industri Elektronik
- 
-@@ -57337,6 +57865,9 @@ OUI:54FB58*
- OUI:54FDBF*
-  ID_OUI_FROM_DATABASE=Scheidt & Bachmann GmbH
- 
-+OUI:580528*
-+ ID_OUI_FROM_DATABASE=LABRIS NETWORKS
-+
- OUI:580556*
-  ID_OUI_FROM_DATABASE=Elettronica GF S.r.L.
- 
-@@ -57346,6 +57877,9 @@ OUI:5808FA*
- OUI:5809E5*
-  ID_OUI_FROM_DATABASE=Kivic Inc.
- 
-+OUI:580A20*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:581243*
-  ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
- 
-@@ -57394,6 +57928,9 @@ OUI:5846E1*
- OUI:5848C0*
-  ID_OUI_FROM_DATABASE=COFLEC
- 
-+OUI:58493B*
-+ ID_OUI_FROM_DATABASE=Palo Alto Networks
-+
- OUI:5849BA*
-  ID_OUI_FROM_DATABASE=Chitai Electronic Corp.
- 
-@@ -57406,6 +57943,9 @@ OUI:584CEE*
- OUI:585076*
-  ID_OUI_FROM_DATABASE=Linear Equipamentos Eletronicos SA
- 
-+OUI:5850AB*
-+ ID_OUI_FROM_DATABASE=TLS Corporation
-+
- OUI:5850E6*
-  ID_OUI_FROM_DATABASE=Best Buy Corporation
- 
-@@ -57493,6 +58033,9 @@ OUI:589835*
- OUI:58986F*
-  ID_OUI_FROM_DATABASE=Revolution Display
- 
-+OUI:589CFC*
-+ ID_OUI_FROM_DATABASE=FreeBSD Foundation
-+
- OUI:58A2B5*
-  ID_OUI_FROM_DATABASE=LG Electronics
- 
-@@ -57628,6 +58171,9 @@ OUI:5C22C4*
- OUI:5C2479*
-  ID_OUI_FROM_DATABASE=Baltech AG
- 
-+OUI:5C254C*
-+ ID_OUI_FROM_DATABASE=Avire Global Pte Ltd
-+
- OUI:5C260A*
-  ID_OUI_FROM_DATABASE=Dell Inc.
- 
-@@ -57757,6 +58303,9 @@ OUI:5CBD9E*
- OUI:5CC213*
-  ID_OUI_FROM_DATABASE=Fr. Sauter AG
- 
-+OUI:5CC5D4*
-+ ID_OUI_FROM_DATABASE=Intel Corporate
-+
- OUI:5CC6D0*
-  ID_OUI_FROM_DATABASE=Skyworth Digital technology(shenzhen)co.ltd.
- 
-@@ -57808,6 +58357,9 @@ OUI:5CE286*
- OUI:5CE2F4*
-  ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
- 
-+OUI:5CE7BF*
-+ ID_OUI_FROM_DATABASE=New Singularity International Technical Development Co.,Ltd
-+
- OUI:5CE8EB*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-@@ -57826,6 +58378,9 @@ OUI:5CF370*
- OUI:5CF3FC*
-  ID_OUI_FROM_DATABASE=IBM Corp
- 
-+OUI:5CF50D*
-+ ID_OUI_FROM_DATABASE=Institute of microelectronic applications
-+
- OUI:5CF6DC*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
- 
-@@ -57847,6 +58402,9 @@ OUI:5CFFFF*
- OUI:6002B4*
-  ID_OUI_FROM_DATABASE=Wistron NeWeb Corp.
- 
-+OUI:600308*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:600347*
-  ID_OUI_FROM_DATABASE=Billion Electric Co. Ltd.
- 
-@@ -57874,6 +58432,9 @@ OUI:601D0F*
- OUI:601E02*
-  ID_OUI_FROM_DATABASE=EltexAlatau
- 
-+OUI:602103*
-+ ID_OUI_FROM_DATABASE=STCUBE.INC
-+
- OUI:6021C0*
-  ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd.
- 
-@@ -58117,12 +58678,18 @@ OUI:60FB42*
- OUI:60FE1E*
-  ID_OUI_FROM_DATABASE=China Palms Telecom.Ltd
- 
-+OUI:60FE20*
-+ ID_OUI_FROM_DATABASE=2 Wire
-+
- OUI:60FEC5*
-  ID_OUI_FROM_DATABASE=Apple
- 
- OUI:60FEF9*
-  ID_OUI_FROM_DATABASE=Thomas & Betts
- 
-+OUI:60FFDD*
-+ ID_OUI_FROM_DATABASE=C.E. ELECTRONICS, INC
-+
- OUI:6400F1*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-@@ -58228,6 +58795,9 @@ OUI:645563*
- OUI:64557F*
-  ID_OUI_FROM_DATABASE=NSFOCUS Information Technology Co., Ltd.
- 
-+OUI:6455B1*
-+ ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
-+
- OUI:645601*
-  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD
- 
-@@ -58363,6 +58933,9 @@ OUI:64AE88*
- OUI:64B310*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:64B370*
-+ ID_OUI_FROM_DATABASE=PowerComm Solutons LLC
-+
- OUI:64B64A*
-  ID_OUI_FROM_DATABASE=ViVOtech, Inc.
- 
-@@ -58435,12 +59008,18 @@ OUI:64E682*
- OUI:64E84F*
-  ID_OUI_FROM_DATABASE=Serialway Communication Technology Co. Ltd
- 
-+OUI:64E892*
-+ ID_OUI_FROM_DATABASE=Morio Denki Co., Ltd.
-+
- OUI:64E8E6*
-  ID_OUI_FROM_DATABASE=global moisture management system
- 
- OUI:64E950*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-+OUI:64EB8C*
-+ ID_OUI_FROM_DATABASE=Seiko Epson Corporation
-+
- OUI:64ED57*
-  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
- 
-@@ -58570,6 +59149,9 @@ OUI:687251*
- OUI:68764F*
-  ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
- 
-+OUI:687848*
-+ ID_OUI_FROM_DATABASE=Westunitis Co., Ltd.
-+
- OUI:68784C*
-  ID_OUI_FROM_DATABASE=Nortel Networks
- 
-@@ -58594,6 +59176,9 @@ OUI:688470*
- OUI:688540*
-  ID_OUI_FROM_DATABASE=IGI Mobile, Inc.
- 
-+OUI:68856A*
-+ ID_OUI_FROM_DATABASE=OuterLink Corporation
-+
- OUI:6886A7*
-  ID_OUI_FROM_DATABASE=Cisco
- 
-@@ -58684,6 +59269,9 @@ OUI:68CE4E*
- OUI:68D1FD*
-  ID_OUI_FROM_DATABASE=Shenzhen Trimax Technology Co.,Ltd
- 
-+OUI:68D247*
-+ ID_OUI_FROM_DATABASE=Portalis LC
-+
- OUI:68D925*
-  ID_OUI_FROM_DATABASE=ProSys Development Services
- 
-@@ -58732,6 +59320,9 @@ OUI:68FCB3*
- OUI:6C0460*
-  ID_OUI_FROM_DATABASE=RBH Access Technologies Inc.
- 
-+OUI:6C09D6*
-+ ID_OUI_FROM_DATABASE=Digiquest Electronics LTD
-+
- OUI:6C0E0D*
-  ID_OUI_FROM_DATABASE=Sony Ericsson Mobile Communications AB
- 
-@@ -58816,12 +59407,18 @@ OUI:6C5D63*
- OUI:6C5E7A*
-  ID_OUI_FROM_DATABASE=Ubiquitous Internet Telecom Co., Ltd
- 
-+OUI:6C5F1C*
-+ ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
-+
- OUI:6C6126*
-  ID_OUI_FROM_DATABASE=Rinicom Holdings
- 
- OUI:6C626D*
-  ID_OUI_FROM_DATABASE=Micro-Star INT'L CO., LTD
- 
-+OUI:6C641A*
-+ ID_OUI_FROM_DATABASE=Penguin Computing
-+
- OUI:6C6F18*
-  ID_OUI_FROM_DATABASE=Stereotaxis, Inc.
- 
-@@ -58864,6 +59461,9 @@ OUI:6C92BF*
- OUI:6C98EB*
-  ID_OUI_FROM_DATABASE=Xyne GmbH
- 
-+OUI:6C9989*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:6C9AC9*
-  ID_OUI_FROM_DATABASE=Valentine Research, Inc.
- 
-@@ -59023,6 +59623,9 @@ OUI:702559*
- OUI:702B1D*
-  ID_OUI_FROM_DATABASE=E-Domus International Limited
- 
-+OUI:702C1F*
-+ ID_OUI_FROM_DATABASE=Wisol
-+
- OUI:702F4B*
-  ID_OUI_FROM_DATABASE=PolyVision Inc.
- 
-@@ -59071,6 +59674,9 @@ OUI:704AE4*
- OUI:704CED*
-  ID_OUI_FROM_DATABASE=TMRG, Inc.
- 
-+OUI:704E01*
-+ ID_OUI_FROM_DATABASE=KWANGWON TECH CO., LTD.
-+
- OUI:7052C5*
-  ID_OUI_FROM_DATABASE=Avaya, Inc.
- 
-@@ -59389,9 +59995,15 @@ OUI:746630*
- OUI:746A89*
-  ID_OUI_FROM_DATABASE=Rezolt Corporation
- 
-+OUI:746A8F*
-+ ID_OUI_FROM_DATABASE=VS Vision Systems GmbH
-+
- OUI:746B82*
-  ID_OUI_FROM_DATABASE=MOVEK
- 
-+OUI:746F3D*
-+ ID_OUI_FROM_DATABASE=Contec GmbH
-+
- OUI:7472F2*
-  ID_OUI_FROM_DATABASE=Chipsip Technology Co., Ltd.
- 
-@@ -59413,6 +60025,9 @@ OUI:747E2D*
- OUI:74867A*
-  ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
- 
-+OUI:74882A*
-+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-+
- OUI:74888B*
-  ID_OUI_FROM_DATABASE=ADB Broadband Italia
- 
-@@ -59422,6 +60037,9 @@ OUI:748E08*
- OUI:748EF8*
-  ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc.
- 
-+OUI:748F1B*
-+ ID_OUI_FROM_DATABASE=MasterImage 3D
-+
- OUI:749050*
-  ID_OUI_FROM_DATABASE=Renesas Electronics Corporation
- 
-@@ -59437,6 +60055,9 @@ OUI:74943D*
- OUI:749975*
-  ID_OUI_FROM_DATABASE=IBM Corporation
- 
-+OUI:749C52*
-+ ID_OUI_FROM_DATABASE=Huizhou Desay SV Automotive Co., Ltd.
-+
- OUI:749DDC*
-  ID_OUI_FROM_DATABASE=2Wire
- 
-@@ -59467,6 +60088,9 @@ OUI:74BE08*
- OUI:74BFA1*
-  ID_OUI_FROM_DATABASE=HYUNTECK
- 
-+OUI:74C621*
-+ ID_OUI_FROM_DATABASE=Zhejiang Hite Renewable Energy Co.,LTD
-+
- OUI:74C99A*
-  ID_OUI_FROM_DATABASE=Ericsson AB
- 
-@@ -59605,6 +60229,9 @@ OUI:78303B*
- OUI:7830E1*
-  ID_OUI_FROM_DATABASE=UltraClenz, LLC
- 
-+OUI:7831C1*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:78324F*
-  ID_OUI_FROM_DATABASE=Millennium Group, Inc.
- 
-@@ -59614,6 +60241,9 @@ OUI:783CE3*
- OUI:783D5B*
-  ID_OUI_FROM_DATABASE=TELNET Redes Inteligentes S.A.
- 
-+OUI:783E53*
-+ ID_OUI_FROM_DATABASE=BSkyB Ltd
-+
- OUI:783F15*
-  ID_OUI_FROM_DATABASE=EasySYNC Ltd.
- 
-@@ -59638,6 +60268,9 @@ OUI:78491D*
- OUI:784B08*
-  ID_OUI_FROM_DATABASE=f.robotics acquisitions ltd
- 
-+OUI:784B87*
-+ ID_OUI_FROM_DATABASE=Murata Manufacturing Co.,Ltd.
-+
- OUI:78510C*
-  ID_OUI_FROM_DATABASE=LiveU Ltd.
- 
-@@ -59674,6 +60307,9 @@ OUI:78617C*
- OUI:7866AE*
-  ID_OUI_FROM_DATABASE=ZTEC Instruments, Inc.
- 
-+OUI:786A89*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:786C1C*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -59737,6 +60373,9 @@ OUI:78A2A0*
- OUI:78A3E4*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:78A504*
-+ ID_OUI_FROM_DATABASE=Texas Instruments
-+
- OUI:78A5DD*
-  ID_OUI_FROM_DATABASE=Shenzhen Smarteye Digital Electronics Co., Ltd
- 
-@@ -59830,6 +60469,9 @@ OUI:78D5B5*
- OUI:78D6F0*
-  ID_OUI_FROM_DATABASE=Samsung Electro Mechanics
- 
-+OUI:78D752*
-+ ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
-+
- OUI:78D99F*
-  ID_OUI_FROM_DATABASE=NuCom HK Ltd.
- 
-@@ -59887,6 +60529,9 @@ OUI:78FE3D*
- OUI:78FE41*
-  ID_OUI_FROM_DATABASE=Socus networks
- 
-+OUI:78FEE2*
-+ ID_OUI_FROM_DATABASE=Shanghai Diveo Technology Co., Ltd
-+
- OUI:78FF57*
-  ID_OUI_FROM_DATABASE=Intel Corporate
- 
-@@ -59929,6 +60574,9 @@ OUI:7C1476*
- OUI:7C160D*
-  ID_OUI_FROM_DATABASE=Saia-Burgess Controls AG
- 
-+OUI:7C1A03*
-+ ID_OUI_FROM_DATABASE=8Locations Co., Ltd.
-+
- OUI:7C1AFC*
-  ID_OUI_FROM_DATABASE=Dalian Co-Edifice Video Technology Co., Ltd
- 
-@@ -60058,6 +60706,9 @@ OUI:7C822D*
- OUI:7C8306*
-  ID_OUI_FROM_DATABASE=Glen Dimplex Nordic as
- 
-+OUI:7C8D91*
-+ ID_OUI_FROM_DATABASE=Shanghai Hongzhuo Information Technology co.,LTD
-+
- OUI:7C8EE4*
-  ID_OUI_FROM_DATABASE=Texas Instruments
- 
-@@ -60172,6 +60823,9 @@ OUI:7CDD90*
- OUI:7CE044*
-  ID_OUI_FROM_DATABASE=NEON Inc
- 
-+OUI:7CE1FF*
-+ ID_OUI_FROM_DATABASE=Computer Performance, Inc. DBA Digital Loggers, Inc.
-+
- OUI:7CE56B*
-  ID_OUI_FROM_DATABASE=ESEN Optoelectronics Technology Co.,Ltd.
- 
-@@ -60214,6 +60868,9 @@ OUI:80000B*
- OUI:800010*
-  ID_OUI_FROM_DATABASE=ATT BELL LABORATORIES
- 
-+OUI:80006E*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:8005DF*
-  ID_OUI_FROM_DATABASE=Montage Technology Group Limited
- 
-@@ -60307,9 +60964,15 @@ OUI:805719*
- OUI:8058C5*
-  ID_OUI_FROM_DATABASE=NovaTec Kommunikationstechnik GmbH
- 
-+OUI:8059FD*
-+ ID_OUI_FROM_DATABASE=Noviga
-+
- OUI:806007*
-  ID_OUI_FROM_DATABASE=RIM
- 
-+OUI:80618F*
-+ ID_OUI_FROM_DATABASE=Shenzhen sangfei consumer communications co.,ltd
-+
- OUI:806459*
-  ID_OUI_FROM_DATABASE=Nimbus Inc.
- 
-@@ -60448,6 +61111,9 @@ OUI:80D733*
- OUI:80DB31*
-  ID_OUI_FROM_DATABASE=Power Quotient International Co., Ltd.
- 
-+OUI:80EA96*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:80EE73*
-  ID_OUI_FROM_DATABASE=Shuttle Inc.
- 
-@@ -60481,6 +61147,9 @@ OUI:840F45*
- OUI:841715*
-  ID_OUI_FROM_DATABASE=GP Electronics (HK) Ltd.
- 
-+OUI:841766*
-+ ID_OUI_FROM_DATABASE=Weifang GoerTek Electronics Co., Ltd
-+
- OUI:841888*
-  ID_OUI_FROM_DATABASE=Juniper Networks
- 
-@@ -60502,9 +61171,15 @@ OUI:84248D*
- OUI:84253F*
-  ID_OUI_FROM_DATABASE=Silex Technology, Inc
- 
-+OUI:8425A4*
-+ ID_OUI_FROM_DATABASE=Tariox Limited
-+
- OUI:8425DB*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:842615*
-+ ID_OUI_FROM_DATABASE=ADB Broadband Italia
-+
- OUI:84262B*
-  ID_OUI_FROM_DATABASE=Alcatel-Lucent
- 
-@@ -60586,6 +61261,9 @@ OUI:846AED*
- OUI:846EB1*
-  ID_OUI_FROM_DATABASE=Park Assist LLC
- 
-+OUI:847207*
-+ ID_OUI_FROM_DATABASE=I&C Technology
-+
- OUI:84742A*
-  ID_OUI_FROM_DATABASE=zte corporation
- 
-@@ -60610,12 +61288,18 @@ OUI:848336*
- OUI:848371*
-  ID_OUI_FROM_DATABASE=Avaya, Inc
- 
-+OUI:848433*
-+ ID_OUI_FROM_DATABASE=Paradox Engineering SA
-+
- OUI:848506*
-  ID_OUI_FROM_DATABASE=Apple
- 
- OUI:848D84*
-  ID_OUI_FROM_DATABASE=Rajant Corporation
- 
-+OUI:848E0C*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:848E96*
-  ID_OUI_FROM_DATABASE=Embertec Pty Ltd
- 
-@@ -60838,6 +61522,9 @@ OUI:888717*
- OUI:8887DD*
-  ID_OUI_FROM_DATABASE=DarbeeVision Inc.
- 
-+OUI:888914*
-+ ID_OUI_FROM_DATABASE=All Components Incorporated
-+
- OUI:888964*
-  ID_OUI_FROM_DATABASE=GSI Electronics Inc.
- 
-@@ -60853,6 +61540,9 @@ OUI:889166*
- OUI:8891DD*
-  ID_OUI_FROM_DATABASE=Racktivity
- 
-+OUI:889471*
-+ ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc.
-+
- OUI:8894F9*
-  ID_OUI_FROM_DATABASE=Gemicom Technology, Inc.
- 
-@@ -60883,6 +61573,9 @@ OUI:88A3CC*
- OUI:88A5BD*
-  ID_OUI_FROM_DATABASE=QPCOM INC.
- 
-+OUI:88A73C*
-+ ID_OUI_FROM_DATABASE=Ragentek Technology Group
-+
- OUI:88ACC1*
-  ID_OUI_FROM_DATABASE=Generiton Co., Ltd.
- 
-@@ -60916,6 +61609,9 @@ OUI:88CB87*
- OUI:88D7BC*
-  ID_OUI_FROM_DATABASE=DEP Company
- 
-+OUI:88D962*
-+ ID_OUI_FROM_DATABASE=Canopus Systems US LLC
-+
- OUI:88DC96*
-  ID_OUI_FROM_DATABASE=SENAO Networks, Inc.
- 
-@@ -60928,12 +61624,18 @@ OUI:88E0A0*
- OUI:88E0F3*
-  ID_OUI_FROM_DATABASE=Juniper Networks
- 
-+OUI:88E3AB*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:88E712*
-  ID_OUI_FROM_DATABASE=Whirlpool Corporation
- 
- OUI:88E7A6*
-  ID_OUI_FROM_DATABASE=iKnowledge Integration Corp.
- 
-+OUI:88E8F8*
-+ ID_OUI_FROM_DATABASE=YONG TAI ELECTRONIC (DONGGUAN) LTD.
-+
- OUI:88E917*
-  ID_OUI_FROM_DATABASE=Tamaggo
- 
-@@ -60949,6 +61651,9 @@ OUI:88F488*
- OUI:88F490*
-  ID_OUI_FROM_DATABASE=Jetmobile Pte Ltd
- 
-+OUI:88F7C7*
-+ ID_OUI_FROM_DATABASE=Technicolor USA Inc.
-+
- OUI:88FD15*
-  ID_OUI_FROM_DATABASE=LINEEYE CO., LTD
- 
-@@ -60994,6 +61699,9 @@ OUI:8C271D*
- OUI:8C278A*
-  ID_OUI_FROM_DATABASE=Vocollect Inc
- 
-+OUI:8C2937*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:8C2DAA*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -61012,6 +61720,9 @@ OUI:8C3C07*
- OUI:8C3C4A*
-  ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC.
- 
-+OUI:8C41F2*
-+ ID_OUI_FROM_DATABASE=RDA Technologies Ltd.
-+
- OUI:8C4435*
-  ID_OUI_FROM_DATABASE=Shanghai BroadMobi Communication Technology Co., Ltd.
- 
-@@ -61099,6 +61810,9 @@ OUI:8C7716*
- OUI:8C7B9D*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:8C7C92*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:8C7CB5*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-@@ -61153,6 +61867,9 @@ OUI:8CB82C*
- OUI:8CB864*
-  ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
- 
-+OUI:8CBEBE*
-+ ID_OUI_FROM_DATABASE=Xiaomi Technology Co.,Ltd
-+
- OUI:8CC121*
-  ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company
- 
-@@ -61285,6 +62002,9 @@ OUI:902B34*
- OUI:902E87*
-  ID_OUI_FROM_DATABASE=LabJack
- 
-+OUI:9031CD*
-+ ID_OUI_FROM_DATABASE=Onyx Healthcare Inc.
-+
- OUI:90342B*
-  ID_OUI_FROM_DATABASE=Gatekeeper Systems, Inc.
- 
-@@ -61324,6 +62044,9 @@ OUI:9049FA*
- OUI:904CE5*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-+OUI:904E2B*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:90507B*
-  ID_OUI_FROM_DATABASE=Advanced PANMOBIL Systems GmbH & Co. KG
- 
-@@ -61426,6 +62149,9 @@ OUI:9092B4*
- OUI:9094E4*
-  ID_OUI_FROM_DATABASE=D-Link International
- 
-+OUI:909864*
-+ ID_OUI_FROM_DATABASE=Impex-Sat GmbH&amp;Co KG
-+
- OUI:909916*
-  ID_OUI_FROM_DATABASE=ELVEES NeoTek OJSC
- 
-@@ -61501,6 +62227,12 @@ OUI:90D92C*
- OUI:90DA4E*
-  ID_OUI_FROM_DATABASE=AVANU
- 
-+OUI:90DB46*
-+ ID_OUI_FROM_DATABASE=E-LEAD ELECTRONIC CO., LTD
-+
-+OUI:90DFB7*
-+ ID_OUI_FROM_DATABASE=s.m.s smart microwave sensors GmbH
-+
- OUI:90E0F0*
-  ID_OUI_FROM_DATABASE=Harman International
- 
-@@ -61513,6 +62245,12 @@ OUI:90E6BA*
- OUI:90EA60*
-  ID_OUI_FROM_DATABASE=SPI Lasers Ltd
- 
-+OUI:90F1AA*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD
-+
-+OUI:90F1B0*
-+ ID_OUI_FROM_DATABASE=Hangzhou Anheng Info&Tech CO.,LTD
-+
- OUI:90F278*
-  ID_OUI_FROM_DATABASE=Radius Gateway
- 
-@@ -61624,6 +62362,9 @@ OUI:945047*
- OUI:945103*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-+OUI:9451BF*
-+ ID_OUI_FROM_DATABASE=Hyundai ESG
-+
- OUI:94592D*
-  ID_OUI_FROM_DATABASE=EKE Building Technology Systems Ltd
- 
-@@ -61681,6 +62422,9 @@ OUI:949BFD*
- OUI:949C55*
-  ID_OUI_FROM_DATABASE=Alta Data Technologies
- 
-+OUI:949F3F*
-+ ID_OUI_FROM_DATABASE=Optek Digital Technology company limited
-+
- OUI:949FB4*
-  ID_OUI_FROM_DATABASE=ChengDu JiaFaAnTai Technology Co.,Ltd
- 
-@@ -61711,6 +62455,9 @@ OUI:94BA56*
- OUI:94BF1E*
-  ID_OUI_FROM_DATABASE=eflow Inc. / Smart Device Planning and Development Division
- 
-+OUI:94C014*
-+ ID_OUI_FROM_DATABASE=Sorter Sp. j. Konrad Grzeszczyk MichaA, Ziomek
-+
- OUI:94C150*
-  ID_OUI_FROM_DATABASE=2Wire Inc
- 
-@@ -61939,6 +62686,9 @@ OUI:9873C4*
- OUI:9876B6*
-  ID_OUI_FROM_DATABASE=Adafruit
- 
-+OUI:987770*
-+ ID_OUI_FROM_DATABASE=Pep Digital Technology (Guangzhou) Co., Ltd
-+
- OUI:988217*
-  ID_OUI_FROM_DATABASE=Disruptive Ltd
- 
-@@ -61990,6 +62740,9 @@ OUI:98BC57*
- OUI:98BC99*
-  ID_OUI_FROM_DATABASE=Edeltech Co.,Ltd.
- 
-+OUI:98C0EB*
-+ ID_OUI_FROM_DATABASE=Global Regency Ltd
-+
- OUI:98C845*
-  ID_OUI_FROM_DATABASE=PacketAccess
- 
-@@ -62026,6 +62779,9 @@ OUI:98E79A*
- OUI:98EC65*
-  ID_OUI_FROM_DATABASE=Cosesy ApS
- 
-+OUI:98F0AB*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:98F537*
-  ID_OUI_FROM_DATABASE=zte corporation
- 
-@@ -62113,6 +62869,9 @@ OUI:9C31B6*
- OUI:9C3AAF*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:9C3EAA*
-+ ID_OUI_FROM_DATABASE=EnvyLogic Co.,Ltd.
-+
- OUI:9C417C*
-  ID_OUI_FROM_DATABASE=Hame  Technology Co.,  Limited
- 
-@@ -62179,6 +62938,12 @@ OUI:9C611D*
- OUI:9C645E*
-  ID_OUI_FROM_DATABASE=Harman Consumer Group
- 
-+OUI:9C65B0*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
-+OUI:9C65F9*
-+ ID_OUI_FROM_DATABASE=AcSiP Technology Corp.
-+
- OUI:9C6650*
-  ID_OUI_FROM_DATABASE=Glodio Technolies Co.,Ltd Tianjin Branch
- 
-@@ -62203,6 +62968,9 @@ OUI:9C807D*
- OUI:9C80DF*
-  ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation
- 
-+OUI:9C86DA*
-+ ID_OUI_FROM_DATABASE=Phoenix Geophysics Ltd.
-+
- OUI:9C8888*
-  ID_OUI_FROM_DATABASE=Simac Techniek NV
- 
-@@ -62272,6 +63040,9 @@ OUI:9CB793*
- OUI:9CBB98*
-  ID_OUI_FROM_DATABASE=Shen Zhen RND Electronic Co.,LTD
- 
-+OUI:9CBD9D*
-+ ID_OUI_FROM_DATABASE=SkyDisk, Inc.
-+
- OUI:9CC077*
-  ID_OUI_FROM_DATABASE=PrintCounts, LLC
- 
-@@ -62332,6 +63103,9 @@ OUI:9CF8DB*
- OUI:9CF938*
-  ID_OUI_FROM_DATABASE=AREVA NP GmbH
- 
-+OUI:9CFBF1*
-+ ID_OUI_FROM_DATABASE=MESOMATIC GmbH & Co.KG
-+
- OUI:9CFFBE*
-  ID_OUI_FROM_DATABASE=OTSL Inc.
- 
-@@ -62449,6 +63223,9 @@ OUI:A05DE7*
- OUI:A05E6B*
-  ID_OUI_FROM_DATABASE=MELPER Co., Ltd.
- 
-+OUI:A06518*
-+ ID_OUI_FROM_DATABASE=VNPT TECHNOLOGY
-+
- OUI:A067BE*
-  ID_OUI_FROM_DATABASE=Sicon s.r.l.
- 
-@@ -62479,6 +63256,9 @@ OUI:A073FC*
- OUI:A07591*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:A07771*
-+ ID_OUI_FROM_DATABASE=Vialis BV
-+
- OUI:A078BA*
-  ID_OUI_FROM_DATABASE=Pantech Co., Ltd.
- 
-@@ -62500,6 +63280,9 @@ OUI:A08869*
- OUI:A088B4*
-  ID_OUI_FROM_DATABASE=Intel Corporate
- 
-+OUI:A089E4*
-+ ID_OUI_FROM_DATABASE=Skyworth Digital Technology(Shenzhen) Co.,Ltd
-+
- OUI:A08A87*
-  ID_OUI_FROM_DATABASE=HuiZhou KaiYue Electronic Co.,Ltd
- 
-@@ -62599,6 +63382,9 @@ OUI:A0E25A*
- OUI:A0E295*
-  ID_OUI_FROM_DATABASE=DAT System Co.,Ltd
- 
-+OUI:A0E453*
-+ ID_OUI_FROM_DATABASE=Sony Mobile Communications AB
-+
- OUI:A0E534*
-  ID_OUI_FROM_DATABASE=Stratec Biomedical AG
- 
-@@ -62635,6 +63421,9 @@ OUI:A0F419*
- OUI:A0F450*
-  ID_OUI_FROM_DATABASE=HTC Corporation
- 
-+OUI:A0F459*
-+ ID_OUI_FROM_DATABASE=FN-LINK TECHNOLOGY LIMITED
-+
- OUI:A0FE91*
-  ID_OUI_FROM_DATABASE=AVAT Automation GmbH
- 
-@@ -62740,6 +63529,9 @@ OUI:A45D36*
- OUI:A46706*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:A46CC1*
-+ ID_OUI_FROM_DATABASE=LTi REEnergy GmbH
-+
- OUI:A46E79*
-  ID_OUI_FROM_DATABASE=DFT System Co.Ltd
- 
-@@ -62785,6 +63577,9 @@ OUI:A49947*
- OUI:A49981*
-  ID_OUI_FROM_DATABASE=FuJian Elite Power Tech CO.,LTD.
- 
-+OUI:A49A58*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:A49B13*
-  ID_OUI_FROM_DATABASE=Burroughs Payment Systems, Inc.
- 
-@@ -62836,6 +63631,9 @@ OUI:A4B980*
- OUI:A4BADB*
-  ID_OUI_FROM_DATABASE=Dell Inc.
- 
-+OUI:A4BBAF*
-+ ID_OUI_FROM_DATABASE=Lime Instruments
-+
- OUI:A4BE61*
-  ID_OUI_FROM_DATABASE=EutroVision System, Inc.
- 
-@@ -62941,6 +63739,9 @@ OUI:A80180*
- OUI:A80600*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:A80C0D*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:A8154D*
-  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
- 
-@@ -62959,6 +63760,9 @@ OUI:A81FAF*
- OUI:A82066*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:A824EB*
-+ ID_OUI_FROM_DATABASE=ZAO NPO Introtest
-+
- OUI:A826D9*
-  ID_OUI_FROM_DATABASE=HTC Corporation
- 
-@@ -62992,6 +63796,9 @@ OUI:A854B2*
- OUI:A8556A*
-  ID_OUI_FROM_DATABASE=Pocketnet Technology Inc.
- 
-+OUI:A8574E*
-+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-+
- OUI:A85BB0*
-  ID_OUI_FROM_DATABASE=Shenzhen Dehoo Technology Co.,Ltd
- 
-@@ -63034,6 +63841,9 @@ OUI:A87B39*
- OUI:A87E33*
-  ID_OUI_FROM_DATABASE=Nokia Danmark A/S
- 
-+OUI:A881F1*
-+ ID_OUI_FROM_DATABASE=BMEYE B.V.
-+
- OUI:A886DD*
-  ID_OUI_FROM_DATABASE=Apple, Inc.
- 
-@@ -63085,12 +63895,18 @@ OUI:A8B0AE*
- OUI:A8B1D4*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-+OUI:A8B9B3*
-+ ID_OUI_FROM_DATABASE=ESSYS
-+
- OUI:A8BBCF*
-  ID_OUI_FROM_DATABASE=Apple
- 
- OUI:A8BD1A*
-  ID_OUI_FROM_DATABASE=Honey Bee (Hong Kong) Limited
- 
-+OUI:A8BD3A*
-+ ID_OUI_FROM_DATABASE=UNIONMAN TECHNOLOGY CO.,LTD
-+
- OUI:A8C222*
-  ID_OUI_FROM_DATABASE=TM-Research Inc.
- 
-@@ -63157,6 +63973,9 @@ OUI:AA0004*
- OUI:AC0142*
-  ID_OUI_FROM_DATABASE=Uriel Technologies SIA
- 
-+OUI:AC02CA*
-+ ID_OUI_FROM_DATABASE=HI Solutions, Inc.
-+
- OUI:AC02CF*
-  ID_OUI_FROM_DATABASE=RW Tecnologia Industria e Comercio Ltda
- 
-@@ -63208,6 +64027,9 @@ OUI:AC319D*
- OUI:AC34CB*
-  ID_OUI_FROM_DATABASE=Shanhai GBCOM Communication Technology Co. Ltd
- 
-+OUI:AC3613*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:AC3C0B*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -63406,6 +64228,9 @@ OUI:ACCE8F*
- OUI:ACCF23*
-  ID_OUI_FROM_DATABASE=Hi-flying electronics technology Co.,Ltd
- 
-+OUI:ACCF5C*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:ACD180*
-  ID_OUI_FROM_DATABASE=Crexendo Business Solutions, Inc.
- 
-@@ -63421,6 +64246,9 @@ OUI:ACD9D6*
- OUI:ACDBDA*
-  ID_OUI_FROM_DATABASE=Shenzhen Geniatech Inc, Ltd
- 
-+OUI:ACE069*
-+ ID_OUI_FROM_DATABASE=ISAAC Instruments
-+
- OUI:ACE215*
-  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
- 
-@@ -63493,6 +64321,9 @@ OUI:B01C91*
- OUI:B024F3*
-  ID_OUI_FROM_DATABASE=Progeny Systems
- 
-+OUI:B03495*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:B0358D*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-@@ -63523,6 +64354,9 @@ OUI:B050BC*
- OUI:B0518E*
-  ID_OUI_FROM_DATABASE=Holl technology CO.Ltd.
- 
-+OUI:B05706*
-+ ID_OUI_FROM_DATABASE=Vallox Oy
-+
- OUI:B058C4*
-  ID_OUI_FROM_DATABASE=Broadcast Microwave Services, Inc
- 
-@@ -63538,6 +64372,12 @@ OUI:B06563*
- OUI:B065BD*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:B068B6*
-+ ID_OUI_FROM_DATABASE=Hangzhou OYE Technology Co. Ltd
-+
-+OUI:B06971*
-+ ID_OUI_FROM_DATABASE=DEI Sales, Inc.
-+
- OUI:B06CBF*
-  ID_OUI_FROM_DATABASE=3ality Digital Systems GmbH
- 
-@@ -63568,6 +64408,9 @@ OUI:B0808C*
- OUI:B081D8*
-  ID_OUI_FROM_DATABASE=I-sys Corp
- 
-+OUI:B0869E*
-+ ID_OUI_FROM_DATABASE=Chloride S.r.L
-+
- OUI:B08807*
-  ID_OUI_FROM_DATABASE=Strata Worldwide
- 
-@@ -63643,6 +64486,9 @@ OUI:B0BF99*
- OUI:B0C4E7*
-  ID_OUI_FROM_DATABASE=Samsung Electronics
- 
-+OUI:B0C554*
-+ ID_OUI_FROM_DATABASE=D-Link International
-+
- OUI:B0C69A*
-  ID_OUI_FROM_DATABASE=Juniper Networks
- 
-@@ -63673,6 +64519,9 @@ OUI:B0D2F5*
- OUI:B0D7C5*
-  ID_OUI_FROM_DATABASE=STP KFT
- 
-+OUI:B0DA00*
-+ ID_OUI_FROM_DATABASE=CERA ELECTRONIQUE
-+
- OUI:B0DF3A*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -63694,6 +64543,9 @@ OUI:B0E97E*
- OUI:B0EC71*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:B0EC8F*
-+ ID_OUI_FROM_DATABASE=GMX SAS
-+
- OUI:B0EE45*
-  ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc.
- 
-@@ -63736,6 +64588,9 @@ OUI:B41489*
- OUI:B41513*
-  ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD
- 
-+OUI:B418D1*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:B41DEF*
-  ID_OUI_FROM_DATABASE=Internet Laboratories, Inc.
- 
-@@ -63754,6 +64609,9 @@ OUI:B428F1*
- OUI:B42A39*
-  ID_OUI_FROM_DATABASE=ORBIT MERRET, spol. s r. o.
- 
-+OUI:B42C92*
-+ ID_OUI_FROM_DATABASE=Zhejiang Weirong Electronic Co., Ltd
-+
- OUI:B42CBE*
-  ID_OUI_FROM_DATABASE=Direct Payment Solutions Limited
- 
-@@ -63787,6 +64645,9 @@ OUI:B43E3B*
- OUI:B4417A*
-  ID_OUI_FROM_DATABASE=ShenZhen Gongjin Electronics Co.,Ltd
- 
-+OUI:B4430D*
-+ ID_OUI_FROM_DATABASE=Broadlink Pty Ltd
-+
- OUI:B44CC2*
-  ID_OUI_FROM_DATABASE=NR ELECTRIC CO., LTD
- 
-@@ -63847,6 +64708,9 @@ OUI:B482C5*
- OUI:B482FE*
-  ID_OUI_FROM_DATABASE=Askey Computer Corp
- 
-+OUI:B48547*
-+ ID_OUI_FROM_DATABASE=Amptown System Company GmbH
-+
- OUI:B48910*
-  ID_OUI_FROM_DATABASE=Coster T.E. S.P.A.
- 
-@@ -63856,6 +64720,9 @@ OUI:B4944E*
- OUI:B49842*
-  ID_OUI_FROM_DATABASE=zte corporation
- 
-+OUI:B4994C*
-+ ID_OUI_FROM_DATABASE=Texas Instruments
-+
- OUI:B499BA*
-  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
- 
-@@ -63875,7 +64742,7 @@ OUI:B4A5A9*
-  ID_OUI_FROM_DATABASE=MODI GmbH
- 
- OUI:B4A82B*
-- ID_OUI_FROM_DATABASE=Histar
-+ ID_OUI_FROM_DATABASE=Histar Digital Electronics Co., Ltd.
- 
- OUI:B4A95A*
-  ID_OUI_FROM_DATABASE=Avaya, Inc
-@@ -63895,6 +64762,9 @@ OUI:B4B362*
- OUI:B4B52F*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-+OUI:B4B542*
-+ ID_OUI_FROM_DATABASE=Hubbell Power Systems, Inc.
-+
- OUI:B4B5AF*
-  ID_OUI_FROM_DATABASE=Minsung Electronics
- 
-@@ -64021,6 +64891,9 @@ OUI:B830A8*
- OUI:B836D8*
-  ID_OUI_FROM_DATABASE=Videoswitch
- 
-+OUI:B83861*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:B838CA*
-  ID_OUI_FROM_DATABASE=Kyokko Tsushin System CO.,LTD
- 
-@@ -64036,6 +64909,9 @@ OUI:B83E59*
- OUI:B8415F*
-  ID_OUI_FROM_DATABASE=ASP AG
- 
-+OUI:B843E4*
-+ ID_OUI_FROM_DATABASE=Vlatacom
-+
- OUI:B847C6*
-  ID_OUI_FROM_DATABASE=SanJet Technology Corp.
- 
-@@ -64075,6 +64951,9 @@ OUI:B8653B*
- OUI:B86B23*
-  ID_OUI_FROM_DATABASE=Toshiba
- 
-+OUI:B86CE8*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:B870F4*
-  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
- 
-@@ -64543,6 +65422,9 @@ OUI:BCF2AF*
- OUI:BCF5AC*
-  ID_OUI_FROM_DATABASE=LG Electronics
- 
-+OUI:BCF61C*
-+ ID_OUI_FROM_DATABASE=Geomodeling Wuxi Technology Co. Ltd.
-+
- OUI:BCF685*
-  ID_OUI_FROM_DATABASE=D-Link International
- 
-@@ -64762,6 +65644,9 @@ OUI:C0C3B6*
- OUI:C0C520*
-  ID_OUI_FROM_DATABASE=Ruckus Wireless
- 
-+OUI:C0C569*
-+ ID_OUI_FROM_DATABASE=SHANGHAI LYNUC CNC TECHNOLOGY CO.,LTD
-+
- OUI:C0C687*
-  ID_OUI_FROM_DATABASE=Cisco SPVTG
- 
-@@ -64798,6 +65683,9 @@ OUI:C0EAE4*
- OUI:C0F1C4*
-  ID_OUI_FROM_DATABASE=Pacidal Corporation Ltd.
- 
-+OUI:C0F79D*
-+ ID_OUI_FROM_DATABASE=Powercode
-+
- OUI:C0F8DA*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-@@ -64816,18 +65704,27 @@ OUI:C401B1*
- OUI:C40415*
-  ID_OUI_FROM_DATABASE=NETGEAR INC.,
- 
-+OUI:C40528*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:C40938*
-  ID_OUI_FROM_DATABASE=Fujian Star-net Communication Co., Ltd
- 
- OUI:C40ACB*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-+OUI:C40E45*
-+ ID_OUI_FROM_DATABASE=ACK Networks,Inc.
-+
- OUI:C40F09*
-  ID_OUI_FROM_DATABASE=Hermes electronic GmbH
- 
- OUI:C4108A*
-  ID_OUI_FROM_DATABASE=Ruckus Wireless
- 
-+OUI:C4143C*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:C416FA*
-  ID_OUI_FROM_DATABASE=Prysm Inc
- 
-@@ -64858,6 +65755,9 @@ OUI:C42628*
- OUI:C42795*
-  ID_OUI_FROM_DATABASE=Technicolor USA Inc.
- 
-+OUI:C4291D*
-+ ID_OUI_FROM_DATABASE=KLEMSAN ELEKTRIK ELEKTRONIK SAN.VE TIC.AS.
-+
- OUI:C42C03*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -64900,9 +65800,15 @@ OUI:C44AD0*
- OUI:C44B44*
-  ID_OUI_FROM_DATABASE=Omniprint Inc.
- 
-+OUI:C44E1F*
-+ ID_OUI_FROM_DATABASE=BlueN
-+
- OUI:C44EAC*
-  ID_OUI_FROM_DATABASE=Shenzhen Shiningworth Technology Co., Ltd.
- 
-+OUI:C45006*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:C45444*
-  ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC.
- 
-@@ -65002,6 +65908,9 @@ OUI:C495A2*
- OUI:C49805*
-  ID_OUI_FROM_DATABASE=Minieum Networks, Inc
- 
-+OUI:C4A81D*
-+ ID_OUI_FROM_DATABASE=D-Link International
-+
- OUI:C4AAA1*
-  ID_OUI_FROM_DATABASE=SUMMIT DEVELOPMENT, spol.s r.o.
- 
-@@ -65014,12 +65923,18 @@ OUI:C4B512*
- OUI:C4BA99*
-  ID_OUI_FROM_DATABASE=I+ME Actia Informatik und Mikro-Elektronik GmbH
- 
-+OUI:C4C0AE*
-+ ID_OUI_FROM_DATABASE=MIDORI ELECTRONIC CO., LTD.
-+
- OUI:C4C19F*
-  ID_OUI_FROM_DATABASE=National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO)
- 
- OUI:C4C755*
-  ID_OUI_FROM_DATABASE=Beijing HuaqinWorld Technology Co.,Ltd
- 
-+OUI:C4C919*
-+ ID_OUI_FROM_DATABASE=Energy Imports Ltd
-+
- OUI:C4CAD9*
-  ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited
- 
-@@ -65050,6 +65965,9 @@ OUI:C4E7BE*
- OUI:C4E92F*
-  ID_OUI_FROM_DATABASE=AB Sciex
- 
-+OUI:C4E984*
-+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-+
- OUI:C4EBE3*
-  ID_OUI_FROM_DATABASE=RRCN SAS
- 
-@@ -65092,6 +66010,9 @@ OUI:C80E95*
- OUI:C81479*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:C816BD*
-+ ID_OUI_FROM_DATABASE=HISENSE ELECTRIC CO.,LTD.
-+
- OUI:C819F7*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -65302,6 +66223,9 @@ OUI:C8D2C1*
- OUI:C8D3A3*
-  ID_OUI_FROM_DATABASE=D-Link International
- 
-+OUI:C8D429*
-+ ID_OUI_FROM_DATABASE=Muehlbauer AG
-+
- OUI:C8D5FE*
-  ID_OUI_FROM_DATABASE=Shenzhen Zowee Technology Co., Ltd
- 
-@@ -65428,6 +66352,9 @@ OUI:CC34D7*
- OUI:CC3540*
-  ID_OUI_FROM_DATABASE=Technicolor USA Inc.
- 
-+OUI:CC398C*
-+ ID_OUI_FROM_DATABASE=Shiningtek
-+
- OUI:CC3A61*
-  ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD.
- 
-@@ -65527,6 +66454,12 @@ OUI:CC7D37*
- OUI:CC7EE7*
-  ID_OUI_FROM_DATABASE=Panasonic AVC Networks Company
- 
-+OUI:CC856C*
-+ ID_OUI_FROM_DATABASE=SHENZHEN MDK DIGITAL TECHNOLOGY CO.,LTD
-+
-+OUI:CC89FD*
-+ ID_OUI_FROM_DATABASE=Nokia Corporation
-+
- OUI:CC8CE3*
-  ID_OUI_FROM_DATABASE=Texas Instruments
- 
-@@ -65539,18 +66472,27 @@ OUI:CC912B*
- OUI:CC944A*
-  ID_OUI_FROM_DATABASE=Pfeiffer Vacuum GmbH
- 
-+OUI:CC95D7*
-+ ID_OUI_FROM_DATABASE=VIZIO, Inc
-+
- OUI:CC96A0*
-  ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd
- 
- OUI:CC9E00*
-  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
- 
-+OUI:CC9F35*
-+ ID_OUI_FROM_DATABASE=Transbit Sp. z o.o.
-+
- OUI:CCA374*
-  ID_OUI_FROM_DATABASE=Guangdong Guanglian Electronic Technology Co.Ltd
- 
- OUI:CCA462*
-  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
- 
-+OUI:CCA614*
-+ ID_OUI_FROM_DATABASE=AIFA TECHNOLOGY CORP.
-+
- OUI:CCAF78*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-@@ -65650,6 +66592,9 @@ OUI:CCF954*
- OUI:CCF9E8*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-+OUI:CCFA00*
-+ ID_OUI_FROM_DATABASE=LG Electronics
-+
- OUI:CCFB65*
-  ID_OUI_FROM_DATABASE=Nintendo Co., Ltd.
- 
-@@ -65731,6 +66676,9 @@ OUI:D0574C*
- OUI:D05785*
-  ID_OUI_FROM_DATABASE=Pantech Co., Ltd.
- 
-+OUI:D057A1*
-+ ID_OUI_FROM_DATABASE=Werma Signaltechnik GmbH & Co. KG
-+
- OUI:D05875*
-  ID_OUI_FROM_DATABASE=Active Control Technology Inc.
- 
-@@ -65743,6 +66691,9 @@ OUI:D05A0F*
- OUI:D05FCE*
-  ID_OUI_FROM_DATABASE=Hitachi Data Systems
- 
-+OUI:D0634D*
-+ ID_OUI_FROM_DATABASE=Meiko Maschinenbau GmbH &amp; Co. KG
-+
- OUI:D063B4*
-  ID_OUI_FROM_DATABASE=SolidRun Ltd.
- 
-@@ -65755,6 +66706,9 @@ OUI:D067E5*
- OUI:D0699E*
-  ID_OUI_FROM_DATABASE=LUMINEX Lighting Control Equipment
- 
-+OUI:D069D0*
-+ ID_OUI_FROM_DATABASE=Verto Medical Solutions, LLC
-+
- OUI:D0737F*
-  ID_OUI_FROM_DATABASE=Mini-Circuits
- 
-@@ -65767,12 +66721,18 @@ OUI:D073D5*
- OUI:D075BE*
-  ID_OUI_FROM_DATABASE=Reno A&E
- 
-+OUI:D07AB5*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:D07DE5*
-  ID_OUI_FROM_DATABASE=Forward Pay Systems, Inc.
- 
- OUI:D07E28*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-+OUI:D07E35*
-+ ID_OUI_FROM_DATABASE=Intel Corporate
-+
- OUI:D08999*
-  ID_OUI_FROM_DATABASE=APCON, Inc.
- 
-@@ -65797,6 +66757,9 @@ OUI:D095C7*
- OUI:D09B05*
-  ID_OUI_FROM_DATABASE=Emtronix
- 
-+OUI:D09C30*
-+ ID_OUI_FROM_DATABASE=Foster Electric Company, Limited
-+
- OUI:D09D0A*
-  ID_OUI_FROM_DATABASE=LINKCOM
- 
-@@ -65824,6 +66787,9 @@ OUI:D0B53D*
- OUI:D0BB80*
-  ID_OUI_FROM_DATABASE=SHL Telemedicine International Ltd.
- 
-+OUI:D0BD01*
-+ ID_OUI_FROM_DATABASE=DS International
-+
- OUI:D0BE2C*
-  ID_OUI_FROM_DATABASE=CNSLink Co., Ltd.
- 
-@@ -65965,6 +66931,9 @@ OUI:D4206D*
- OUI:D4223F*
-  ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd.
- 
-+OUI:D4224E*
-+ ID_OUI_FROM_DATABASE=Alcatel Lucent
-+
- OUI:D42751*
-  ID_OUI_FROM_DATABASE=Infopia Co., Ltd
- 
-@@ -65977,6 +66946,12 @@ OUI:D429EA*
- OUI:D42C3D*
-  ID_OUI_FROM_DATABASE=Sky Light Digital Limited
- 
-+OUI:D42F23*
-+ ID_OUI_FROM_DATABASE=Akenori PTE Ltd
-+
-+OUI:D4319D*
-+ ID_OUI_FROM_DATABASE=Sinwatec
-+
- OUI:D43A65*
-  ID_OUI_FROM_DATABASE=IGRS Engineering Lab Ltd.
- 
-@@ -66241,6 +67216,9 @@ OUI:D809C3*
- OUI:D80DE3*
-  ID_OUI_FROM_DATABASE=FXI TECHNOLOGIES AS
- 
-+OUI:D8150D*
-+ ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD.
-+
- OUI:D8160A*
-  ID_OUI_FROM_DATABASE=Nippon Electro-Sensory Devices
- 
-@@ -66277,6 +67255,9 @@ OUI:D82916*
- OUI:D82986*
-  ID_OUI_FROM_DATABASE=Best Wish Technology LTD
- 
-+OUI:D82A15*
-+ ID_OUI_FROM_DATABASE=Leitner SpA
-+
- OUI:D82A7E*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-@@ -66325,9 +67306,15 @@ OUI:D85D4C*
- OUI:D85D84*
-  ID_OUI_FROM_DATABASE=CAx soft GmbH
- 
-+OUI:D86194*
-+ ID_OUI_FROM_DATABASE=Objetivos y Sevicios de Valor Añadido
-+
- OUI:D862DB*
-  ID_OUI_FROM_DATABASE=Eno Inc.
- 
-+OUI:D86595*
-+ ID_OUI_FROM_DATABASE=Toy's Myth Inc.
-+
- OUI:D866C6*
-  ID_OUI_FROM_DATABASE=Shenzhen Daystar Technology Co.,ltd
- 
-@@ -66361,6 +67348,9 @@ OUI:D87988*
- OUI:D87CDD*
-  ID_OUI_FROM_DATABASE=SANIX INCORPORATED
- 
-+OUI:D881CE*
-+ ID_OUI_FROM_DATABASE=AHN INC.
-+
- OUI:D88A3B*
-  ID_OUI_FROM_DATABASE=UNIT-EM
- 
-@@ -66418,6 +67408,9 @@ OUI:D8B377*
- OUI:D8B6C1*
-  ID_OUI_FROM_DATABASE=NetworkAccountant, Inc.
- 
-+OUI:D8B6D6*
-+ ID_OUI_FROM_DATABASE=Blu Tether Limited
-+
- OUI:D8B8F6*
-  ID_OUI_FROM_DATABASE=Nantworks
- 
-@@ -66466,6 +67459,12 @@ OUI:D8DA52*
- OUI:D8DCE9*
-  ID_OUI_FROM_DATABASE=Kunshan Erlab ductless filtration system Co.,Ltd
- 
-+OUI:D8DD5F*
-+ ID_OUI_FROM_DATABASE=BALMUDA Inc.
-+
-+OUI:D8DDFD*
-+ ID_OUI_FROM_DATABASE=Texas Instruments
-+
- OUI:D8DF0D*
-  ID_OUI_FROM_DATABASE=beroNet GmbH
- 
-@@ -66484,9 +67483,15 @@ OUI:D8E952*
- OUI:D8EB97*
-  ID_OUI_FROM_DATABASE=TRENDnet, Inc.
- 
-+OUI:D8EE78*
-+ ID_OUI_FROM_DATABASE=Moog Protokraft
-+
- OUI:D8F0F2*
-  ID_OUI_FROM_DATABASE=Zeebo Inc
- 
-+OUI:D8FC93*
-+ ID_OUI_FROM_DATABASE=Intel Corporate
-+
- OUI:D8FE8F*
-  ID_OUI_FROM_DATABASE=IDFone Co., Ltd.
- 
-@@ -66499,6 +67504,9 @@ OUI:DC0265*
- OUI:DC028E*
-  ID_OUI_FROM_DATABASE=zte corporation
- 
-+OUI:DC052F*
-+ ID_OUI_FROM_DATABASE=National Products Inc.
-+
- OUI:DC0575*
-  ID_OUI_FROM_DATABASE=SIEMENS ENERGY AUTOMATION
- 
-@@ -66619,6 +67627,9 @@ OUI:DC86D8*
- OUI:DC9B1E*
-  ID_OUI_FROM_DATABASE=Intercom, Inc.
- 
-+OUI:DC9B9C*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:DC9C52*
-  ID_OUI_FROM_DATABASE=Sapphire Technology Limited.
- 
-@@ -66670,6 +67681,9 @@ OUI:DCC101*
- OUI:DCC422*
-  ID_OUI_FROM_DATABASE=Systembase Limited
- 
-+OUI:DCC793*
-+ ID_OUI_FROM_DATABASE=Nokia Corporation
-+
- OUI:DCCBA8*
-  ID_OUI_FROM_DATABASE=Explora Technologies Inc
- 
-@@ -66703,6 +67717,9 @@ OUI:DCDECA*
- OUI:DCE2AC*
-  ID_OUI_FROM_DATABASE=Lumens Digital Optics Inc.
- 
-+OUI:DCE578*
-+ ID_OUI_FROM_DATABASE=Experimental Factory of Scientific Engineering and Special Design Department
-+
- OUI:DCE71C*
-  ID_OUI_FROM_DATABASE=AUG Elektronik GmbH
- 
-@@ -66781,6 +67798,9 @@ OUI:E03005*
- OUI:E031D0*
-  ID_OUI_FROM_DATABASE=SZ Telstar CO., LTD
- 
-+OUI:E036E3*
-+ ID_OUI_FROM_DATABASE=Stage One International Co., Ltd.
-+
- OUI:E039D7*
-  ID_OUI_FROM_DATABASE=Plexxi, Inc.
- 
-@@ -66793,6 +67813,9 @@ OUI:E03E4A*
- OUI:E03E7D*
-  ID_OUI_FROM_DATABASE=data-complex GmbH
- 
-+OUI:E03F49*
-+ ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC.
-+
- OUI:E0469A*
-  ID_OUI_FROM_DATABASE=NETGEAR
- 
-@@ -66841,6 +67864,9 @@ OUI:E0757D*
- OUI:E07C62*
-  ID_OUI_FROM_DATABASE=Whistle Labs, Inc.
- 
-+OUI:E07F53*
-+ ID_OUI_FROM_DATABASE=TECHBOARD SRL
-+
- OUI:E07F88*
-  ID_OUI_FROM_DATABASE=EVIDENCE Network SIA
- 
-@@ -66967,6 +67993,9 @@ OUI:E0D10A*
- OUI:E0D1E6*
-  ID_OUI_FROM_DATABASE=Aliph dba Jawbone
- 
-+OUI:E0D31A*
-+ ID_OUI_FROM_DATABASE=EQUES Technology Co., Limited
-+
- OUI:E0D7BA*
-  ID_OUI_FROM_DATABASE=Texas Instruments
- 
-@@ -66979,6 +68008,9 @@ OUI:E0DADC*
- OUI:E0DB55*
-  ID_OUI_FROM_DATABASE=Dell Inc
- 
-+OUI:E0DB88*
-+ ID_OUI_FROM_DATABASE=Open Standard Digital-IF Interface for SATCOM Systems
-+
- OUI:E0DCA0*
-  ID_OUI_FROM_DATABASE=Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch
- 
-@@ -67030,6 +68062,9 @@ OUI:E40439*
- OUI:E4115B*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-+OUI:E4121D*
-+ ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
-+
- OUI:E41289*
-  ID_OUI_FROM_DATABASE=topsystem Systemhaus GmbH
- 
-@@ -67093,6 +68128,9 @@ OUI:E446BD*
- OUI:E448C7*
-  ID_OUI_FROM_DATABASE=Cisco SPVTG
- 
-+OUI:E44C6C*
-+ ID_OUI_FROM_DATABASE=Shenzhen Guo Wei Electronic Co,. Ltd.
-+
- OUI:E44E18*
-  ID_OUI_FROM_DATABASE=Gardasoft VisionLimited
- 
-@@ -67144,6 +68182,9 @@ OUI:E47CF9*
- OUI:E47D5A*
-  ID_OUI_FROM_DATABASE=Beijing Hanbang Technology Corp.
- 
-+OUI:E48184*
-+ ID_OUI_FROM_DATABASE=Alcatel-Lucent
-+
- OUI:E481B3*
-  ID_OUI_FROM_DATABASE=Shenzhen ACT Industrial Co.,Ltd.
- 
-@@ -67267,6 +68308,9 @@ OUI:E8056D*
- OUI:E80688*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:E8088B*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:E80B13*
-  ID_OUI_FROM_DATABASE=Akib Systems Taiwan, INC
- 
-@@ -67285,6 +68329,9 @@ OUI:E81132*
- OUI:E81324*
-  ID_OUI_FROM_DATABASE=GuangZhou Bonsoninfo System CO.,LTD
- 
-+OUI:E817FC*
-+ ID_OUI_FROM_DATABASE=NIFTY Corporation
-+
- OUI:E82877*
-  ID_OUI_FROM_DATABASE=TMY Co., Ltd.
- 
-@@ -67363,6 +68410,9 @@ OUI:E85E53*
- OUI:E8611F*
-  ID_OUI_FROM_DATABASE=Dawning Information Industry Co.,Ltd
- 
-+OUI:E8617E*
-+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
-+
- OUI:E86183*
-  ID_OUI_FROM_DATABASE=Black Diamond Advanced Technology, LLC
- 
-@@ -67438,6 +68488,9 @@ OUI:E8A4C1*
- OUI:E8ABFA*
-  ID_OUI_FROM_DATABASE=Shenzhen Reecam Tech.Ltd.
- 
-+OUI:E8B1FC*
-+ ID_OUI_FROM_DATABASE=Intel Corporate
-+
- OUI:E8B4AE*
-  ID_OUI_FROM_DATABASE=Shenzhen C&D Electronics Co.,Ltd
- 
-@@ -67519,6 +68572,9 @@ OUI:E8E776*
- OUI:E8E875*
-  ID_OUI_FROM_DATABASE=iS5 Communications Inc.
- 
-+OUI:E8EA6A*
-+ ID_OUI_FROM_DATABASE=StarTech.com
-+
- OUI:E8EADA*
-  ID_OUI_FROM_DATABASE=Denkovi Assembly Electroncs LTD
- 
-@@ -67534,6 +68590,9 @@ OUI:E8F226*
- OUI:E8F928*
-  ID_OUI_FROM_DATABASE=RFTECH SRL
- 
-+OUI:E8FC60*
-+ ID_OUI_FROM_DATABASE=ELCOM Innovations Private Limited
-+
- OUI:EC0ED6*
-  ID_OUI_FROM_DATABASE=ITECH INSTRUMENTS SAS
- 
-@@ -67756,6 +68815,12 @@ OUI:ECF236*
- OUI:ECF35B*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-+OUI:ECF4BB*
-+ ID_OUI_FROM_DATABASE=Dell Inc PCBA Test
-+
-+OUI:ECF72B*
-+ ID_OUI_FROM_DATABASE=HD DIGITAL TECH CO., LTD.
-+
- OUI:ECFAAA*
-  ID_OUI_FROM_DATABASE=The IMS Company
- 
-@@ -67783,6 +68848,9 @@ OUI:F008F1*
- OUI:F013C3*
-  ID_OUI_FROM_DATABASE=SHENZHEN FENDA TECHNOLOGY CO., LTD
- 
-+OUI:F015A0*
-+ ID_OUI_FROM_DATABASE=KyungDong One Co., Ltd.
-+
- OUI:F01C13*
-  ID_OUI_FROM_DATABASE=LG Electronics
- 
-@@ -67822,12 +68890,21 @@ OUI:F02A61*
- OUI:F02FD8*
-  ID_OUI_FROM_DATABASE=Bi2-Vision
- 
-+OUI:F0321A*
-+ ID_OUI_FROM_DATABASE=Mita-Teknik A/S
-+
- OUI:F037A1*
-  ID_OUI_FROM_DATABASE=Huike Electronics (SHENZHEN) CO., LTD.
- 
-+OUI:F03A4B*
-+ ID_OUI_FROM_DATABASE=Bloombase, Inc.
-+
- OUI:F03A55*
-  ID_OUI_FROM_DATABASE=Omega Elektronik AS
- 
-+OUI:F03FF8*
-+ ID_OUI_FROM_DATABASE=R L Drake
-+
- OUI:F04335*
-  ID_OUI_FROM_DATABASE=DVN(Shanghai)Ltd.
- 
-@@ -67900,12 +68977,18 @@ OUI:F07F0C*
- OUI:F081AF*
-  ID_OUI_FROM_DATABASE=IRZ AUTOMATION TECHNOLOGIES LTD
- 
-+OUI:F08261*
-+ ID_OUI_FROM_DATABASE=SAGEMCOM
-+
- OUI:F0842F*
-  ID_OUI_FROM_DATABASE=ADB Broadband Italia
- 
- OUI:F084C9*
-  ID_OUI_FROM_DATABASE=zte corporation
- 
-+OUI:F08A28*
-+ ID_OUI_FROM_DATABASE=JIANGSU HENGSION ELECTRONIC S and T CO.,LTD
-+
- OUI:F08BFE*
-  ID_OUI_FROM_DATABASE=COSTEL.,CO.LTD
- 
-@@ -67990,6 +69073,9 @@ OUI:F0DA7C*
- OUI:F0DB30*
-  ID_OUI_FROM_DATABASE=Yottabyte
- 
-+OUI:F0DBF8*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:F0DCE2*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -68029,6 +69115,9 @@ OUI:F0F260*
- OUI:F0F5AE*
-  ID_OUI_FROM_DATABASE=Adaptrum Inc.
- 
-+OUI:F0F61C*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:F0F644*
-  ID_OUI_FROM_DATABASE=Whitesky Science & Technology Co.,Ltd.
- 
-@@ -68089,6 +69178,9 @@ OUI:F42896*
- OUI:F436E1*
-  ID_OUI_FROM_DATABASE=Abilis Systems SARL
- 
-+OUI:F437B7*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:F43814*
-  ID_OUI_FROM_DATABASE=Shanghai Howell Electronic Co.,Ltd
- 
-@@ -68191,6 +69283,9 @@ OUI:F48771*
- OUI:F48E09*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-+OUI:F490CA*
-+ ID_OUI_FROM_DATABASE=Tensorcom
-+
- OUI:F490EA*
-  ID_OUI_FROM_DATABASE=Deciso B.V.
- 
-@@ -68221,9 +69316,15 @@ OUI:F4B164*
- OUI:F4B381*
-  ID_OUI_FROM_DATABASE=WindowMaster A/S
- 
-+OUI:F4B52F*
-+ ID_OUI_FROM_DATABASE=Juniper networks
-+
- OUI:F4B549*
-  ID_OUI_FROM_DATABASE=Yeastar Technology Co., Ltd.
- 
-+OUI:F4B6E5*
-+ ID_OUI_FROM_DATABASE=TerraSem Co.,Ltd
-+
- OUI:F4B72A*
-  ID_OUI_FROM_DATABASE=TIME INTERCONNECT LTD
- 
-@@ -68251,6 +69352,9 @@ OUI:F4CD90*
- OUI:F4CE46*
-  ID_OUI_FROM_DATABASE=Hewlett-Packard Company
- 
-+OUI:F4CFE2*
-+ ID_OUI_FROM_DATABASE=Cisco
-+
- OUI:F4D9FB*
-  ID_OUI_FROM_DATABASE=Samsung Electronics CO., LTD
- 
-@@ -68260,6 +69364,9 @@ OUI:F4DC4D*
- OUI:F4DCDA*
-  ID_OUI_FROM_DATABASE=Zhuhai Jiahe Communication Technology Co., limited
- 
-+OUI:F4DCF9*
-+ ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
-+
- OUI:F4E142*
-  ID_OUI_FROM_DATABASE=Delta Elektronika BV
- 
-@@ -68413,6 +69520,9 @@ OUI:F8572E*
- OUI:F85BC9*
-  ID_OUI_FROM_DATABASE=M-Cube Spa
- 
-+OUI:F85C45*
-+ ID_OUI_FROM_DATABASE=IC Nexus Co. Ltd.
-+
- OUI:F85F2A*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-@@ -68494,6 +69604,9 @@ OUI:F8A45F*
- OUI:F8A963*
-  ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD.
- 
-+OUI:F8A9D0*
-+ ID_OUI_FROM_DATABASE=LG Electronics
-+
- OUI:F8A9DE*
-  ID_OUI_FROM_DATABASE=PUISSANCE PLUS
- 
-@@ -68566,6 +69679,9 @@ OUI:F8DC7A*
- OUI:F8DFA8*
-  ID_OUI_FROM_DATABASE=ZTE Corporation
- 
-+OUI:F8E079*
-+ ID_OUI_FROM_DATABASE=Motorola Mobility LLC
-+
- OUI:F8E4FB*
-  ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc
- 
-@@ -68581,6 +69697,9 @@ OUI:F8EA0A*
- OUI:F8EDA5*
-  ID_OUI_FROM_DATABASE=ARRIS Group, Inc.
- 
-+OUI:F8F005*
-+ ID_OUI_FROM_DATABASE=Newport Media Inc.
-+
- OUI:F8F014*
-  ID_OUI_FROM_DATABASE=RackWare Inc.
- 
-@@ -68623,12 +69742,18 @@ OUI:FC01CD*
- OUI:FC0647*
-  ID_OUI_FROM_DATABASE=Cortland Research, LLC
- 
-+OUI:FC07A0*
-+ ID_OUI_FROM_DATABASE=LRE Medical GmbH
-+
- OUI:FC0877*
-  ID_OUI_FROM_DATABASE=Prentke Romich Company
- 
- OUI:FC09D8*
-  ID_OUI_FROM_DATABASE=ACTEON Group
- 
-+OUI:FC09F6*
-+ ID_OUI_FROM_DATABASE=GUANGDONG TONZE ELECTRIC CO.,LTD
-+
- OUI:FC0A81*
-  ID_OUI_FROM_DATABASE=Motorola Solutions Inc.
- 
-@@ -68641,6 +69766,15 @@ OUI:FC10BD*
- OUI:FC1186*
-  ID_OUI_FROM_DATABASE=Logic3 plc
- 
-+OUI:FC1349*
-+ ID_OUI_FROM_DATABASE=Global Apps Corp.
-+
-+OUI:FC15B4*
-+ ID_OUI_FROM_DATABASE=Hewlett Packard
-+
-+OUI:FC1607*
-+ ID_OUI_FROM_DATABASE=Taian Technology(Wuxi) Co.,Ltd.
-+
- OUI:FC1794*
-  ID_OUI_FROM_DATABASE=InterCreative Co., Ltd
- 
-@@ -68668,6 +69802,9 @@ OUI:FC229C*
- OUI:FC253F*
-  ID_OUI_FROM_DATABASE=Apple
- 
-+OUI:FC27A2*
-+ ID_OUI_FROM_DATABASE=TRANS ELECTRIC CO., LTD.
-+
- OUI:FC2A54*
-  ID_OUI_FROM_DATABASE=Connected Data, Inc.
- 
-@@ -68761,6 +69898,9 @@ OUI:FC8E7E*
- OUI:FC8FC4*
-  ID_OUI_FROM_DATABASE=Intelligent Technology Inc.
- 
-+OUI:FC923B*
-+ ID_OUI_FROM_DATABASE=Nokia Corporation
-+
- OUI:FC946C*
-  ID_OUI_FROM_DATABASE=UBIVELOX
- 
-@@ -68791,6 +69931,9 @@ OUI:FCAF6A*
- OUI:FCB0C4*
-  ID_OUI_FROM_DATABASE=Shanghai DareGlobal Technologies Co., Ltd
- 
-+OUI:FCBBA1*
-+ ID_OUI_FROM_DATABASE=Shenzhen Minicreate Technology Co.,Ltd
-+
- OUI:FCC23D*
-  ID_OUI_FROM_DATABASE=Atmel Corporation
- 
-@@ -68851,6 +69994,9 @@ OUI:FCF528*
- OUI:FCF8AE*
-  ID_OUI_FROM_DATABASE=Intel Corporate
- 
-+OUI:FCF8B7*
-+ ID_OUI_FROM_DATABASE=TRONTEQ Electronic
-+
- OUI:FCFAF7*
-  ID_OUI_FROM_DATABASE=Shanghai Baud Data Communication Co.,Ltd.
- 
-diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
-index 289f81c..6142dc8 100644
---- a/hwdb/20-pci-vendor-model.hwdb
-+++ b/hwdb/20-pci-vendor-model.hwdb
-@@ -917,6 +917,9 @@ pci:v00001000d0000005Bsv00001028sd00001F37*
- pci:v00001000d0000005Bsv00001028sd00001F38*
-  ID_MODEL_FROM_DATABASE=PERC H710 Mini (for monolithics)
- 
-+pci:v00001000d0000005Bsv00008086sd00003510*
-+ ID_MODEL_FROM_DATABASE=RMS25PB080 RAID Controller
-+
- pci:v00001000d0000005Bsv00008086sd00003513*
-  ID_MODEL_FROM_DATABASE=RMS25CB080 RAID Controller
- 
-@@ -4203,7 +4206,7 @@ pci:v00001002d00006631*
-  ID_MODEL_FROM_DATABASE=Oland
- 
- pci:v00001002d00006640*
-- ID_MODEL_FROM_DATABASE=Saturn XT [Radeon HD 8950M]
-+ ID_MODEL_FROM_DATABASE=Saturn XT [FirePro M6100]
- 
- pci:v00001002d00006641*
-  ID_MODEL_FROM_DATABASE=Saturn PRO [Radeon HD 8930M]
-@@ -4248,7 +4251,10 @@ pci:v00001002d00006660*
-  ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8670A/8670M/8690M]
- 
- pci:v00001002d00006663*
-- ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570M]
-+ ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8570A/8570M]
-+
-+pci:v00001002d00006663sv00001025sd00000846*
-+ ID_MODEL_FROM_DATABASE=Radeon HD 8570A
- 
- pci:v00001002d00006664*
-  ID_MODEL_FROM_DATABASE=Jet XT [Radeon R5 M200 Series]
-@@ -4904,12 +4910,18 @@ pci:v00001002d00006758sv0000174Bsd00007670*
- pci:v00001002d00006758sv0000174Bsd0000E181*
-  ID_MODEL_FROM_DATABASE=Radeon HD 6670
- 
-+pci:v00001002d00006758sv00001787sd00002309*
-+ ID_MODEL_FROM_DATABASE=Radeon HD 6670
-+
- pci:v00001002d00006759*
-- ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570]
-+ ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570/7570/8550]
- 
- pci:v00001002d00006759sv0000103Csd00003130*
-  ID_MODEL_FROM_DATABASE=Radeon HD 6570
- 
-+pci:v00001002d00006759sv00001043sd00000403*
-+ ID_MODEL_FROM_DATABASE=Radeon HD 6570
-+
- pci:v00001002d00006759sv00001462sd00002500*
-  ID_MODEL_FROM_DATABASE=Radeon HD 6570
- 
-@@ -4925,6 +4937,9 @@ pci:v00001002d00006759sv00001642sd00003A67*
- pci:v00001002d00006759sv00001682sd00003280*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7570
- 
-+pci:v00001002d00006759sv00001682sd00003530*
-+ ID_MODEL_FROM_DATABASE=Radeon HD 8550
-+
- pci:v00001002d00006759sv0000174Bsd00007570*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7570
- 
-@@ -5585,6 +5600,9 @@ pci:v00001002d00006779sv0000103Csd00002128*
- pci:v00001002d00006779sv0000103Csd00002AEE*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7450A
- 
-+pci:v00001002d00006779sv00001462sd00002125*
-+ ID_MODEL_FROM_DATABASE=Radeon HD 6450
-+
- pci:v00001002d00006779sv00001462sd00002346*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7450
- 
-@@ -5813,6 +5831,15 @@ pci:v00001002d000067A1*
- pci:v00001002d000067A2*
-  ID_MODEL_FROM_DATABASE=Hawaii GL
- 
-+pci:v00001002d000067A8*
-+ ID_MODEL_FROM_DATABASE=Hawaii
-+
-+pci:v00001002d000067A9*
-+ ID_MODEL_FROM_DATABASE=Hawaii
-+
-+pci:v00001002d000067AA*
-+ ID_MODEL_FROM_DATABASE=Hawaii
-+
- pci:v00001002d000067B0*
-  ID_MODEL_FROM_DATABASE=Hawaii XT [Radeon R9 290X]
- 
-@@ -5907,7 +5934,7 @@ pci:v00001002d00006821sv00001002sd0000031E*
-  ID_MODEL_FROM_DATABASE=FirePro SX4000
- 
- pci:v00001002d00006822*
-- ID_MODEL_FROM_DATABASE=Venus PRO
-+ ID_MODEL_FROM_DATABASE=Venus PRO [Radeon E8860]
- 
- pci:v00001002d00006823*
-  ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8850M]
-@@ -7463,6 +7490,9 @@ pci:v00001002d000068F9sv0000103Csd00002AAE*
- pci:v00001002d000068F9sv0000103Csd00003580*
-  ID_MODEL_FROM_DATABASE=Radeon HD 5450
- 
-+pci:v00001002d000068F9sv00001043sd00000386*
-+ ID_MODEL_FROM_DATABASE=Radeon HD 5450
-+
- pci:v00001002d000068F9sv00001043sd000003C2*
-  ID_MODEL_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP)
- 
-@@ -8834,9 +8864,18 @@ pci:v00001002d00009901*
- pci:v00001002d00009902*
-  ID_MODEL_FROM_DATABASE=Trinity HDMI Audio Controller
- 
-+pci:v00001002d00009902sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001002d00009903*
-  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G]
- 
-+pci:v00001002d00009903sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
-+pci:v00001002d00009903sv0000103Csd00001952*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001002d00009904*
-  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7560D]
- 
-@@ -10964,6 +11003,9 @@ pci:v00001022d00007801*
- pci:v00001022d00007801sv0000103Csd0000168B*
-  ID_MODEL_FROM_DATABASE=ProBook 4535s Notebook
- 
-+pci:v00001022d00007801sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d00007802*
-  ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
- 
-@@ -10982,27 +11024,45 @@ pci:v00001022d00007806*
- pci:v00001022d00007807*
-  ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller
- 
-+pci:v00001022d00007807sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d00007808*
-  ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller
- 
-+pci:v00001022d00007808sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d00007809*
-  ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller
- 
-+pci:v00001022d00007809sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d0000780B*
-  ID_MODEL_FROM_DATABASE=FCH SMBus Controller
- 
-+pci:v00001022d0000780Bsv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d0000780C*
-  ID_MODEL_FROM_DATABASE=FCH IDE Controller
- 
- pci:v00001022d0000780D*
-  ID_MODEL_FROM_DATABASE=FCH Azalia Controller
- 
-+pci:v00001022d0000780Dsv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d0000780Dsv00001043sd00008444*
-  ID_MODEL_FROM_DATABASE=F2A85-M Series
- 
- pci:v00001022d0000780E*
-  ID_MODEL_FROM_DATABASE=FCH LPC Bridge
- 
-+pci:v00001022d0000780Esv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d0000780F*
-  ID_MODEL_FROM_DATABASE=FCH PCI Bridge
- 
-@@ -11015,11 +11075,41 @@ pci:v00001022d00007813*
- pci:v00001022d00007814*
-  ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller
- 
-+pci:v00001022d00007814sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v00001022d00007900*
-- ID_MODEL_FROM_DATABASE=CZ SATA Controller [IDE mode]
-+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [IDE mode]
-+
-+pci:v00001022d00007901*
-+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode]
-+
-+pci:v00001022d00007902*
-+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
-+
-+pci:v00001022d00007903*
-+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode]
-+
-+pci:v00001022d00007904*
-+ ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode]
-+
-+pci:v00001022d00007906*
-+ ID_MODEL_FROM_DATABASE=FCH SD Flash Controller
-+
-+pci:v00001022d00007908*
-+ ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller
- 
- pci:v00001022d0000790B*
-- ID_MODEL_FROM_DATABASE=CZ SMBus Controller
-+ ID_MODEL_FROM_DATABASE=FCH SMBus Controller
-+
-+pci:v00001022d0000790E*
-+ ID_MODEL_FROM_DATABASE=FCH LPC Bridge
-+
-+pci:v00001022d0000790F*
-+ ID_MODEL_FROM_DATABASE=FCH PCI Bridge
-+
-+pci:v00001022d00007914*
-+ ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller
- 
- pci:v00001022d00009600*
-  ID_MODEL_FROM_DATABASE=RS780 Host Bridge
-@@ -23672,6 +23762,21 @@ pci:v000010DEd000005E6*
- pci:v000010DEd000005E7*
-  ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060]
- 
-+pci:v000010DEd000005E7sv000010DEsd00000595*
-+ ID_MODEL_FROM_DATABASE=Tesla T10 Processor
-+
-+pci:v000010DEd000005E7sv000010DEsd0000068F*
-+ ID_MODEL_FROM_DATABASE=Tesla T10 Processor
-+
-+pci:v000010DEd000005E7sv000010DEsd00000697*
-+ ID_MODEL_FROM_DATABASE=Tesla M1060
-+
-+pci:v000010DEd000005E7sv000010DEsd00000714*
-+ ID_MODEL_FROM_DATABASE=Tesla M1060
-+
-+pci:v000010DEd000005E7sv000010DEsd00000743*
-+ ID_MODEL_FROM_DATABASE=Tesla M1060
-+
- pci:v000010DEd000005EA*
-  ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 260]
- 
-@@ -23732,6 +23837,9 @@ pci:v000010DEd00000608*
- pci:v000010DEd00000609*
-  ID_MODEL_FROM_DATABASE=G92M [GeForce 8800M GTS]
- 
-+pci:v000010DEd00000609sv0000106Bsd000000A7*
-+ ID_MODEL_FROM_DATABASE=GeForce 8800 GS
-+
- pci:v000010DEd0000060A*
-  ID_MODEL_FROM_DATABASE=G92M [GeForce GTX 280M]
- 
-@@ -23864,6 +23972,9 @@ pci:v000010DEd0000062D*
- pci:v000010DEd0000062E*
-  ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT]
- 
-+pci:v000010DEd0000062Esv0000106Bsd00000605*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 130
-+
- pci:v000010DEd0000062F*
-  ID_MODEL_FROM_DATABASE=G94 [GeForce 9800 S]
- 
-@@ -23921,6 +24032,9 @@ pci:v000010DEd00000648*
- pci:v000010DEd00000649*
-  ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GT]
- 
-+pci:v000010DEd00000649sv00001043sd0000202D*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 220M
-+
- pci:v000010DEd0000064A*
-  ID_MODEL_FROM_DATABASE=G96M [GeForce 9700M GT]
- 
-@@ -23942,12 +24056,21 @@ pci:v000010DEd00000651*
- pci:v000010DEd00000652*
-  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 130M]
- 
-+pci:v000010DEd00000652sv0000152Dsd00000850*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 240M LE
-+
- pci:v000010DEd00000653*
-  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 120M]
- 
- pci:v000010DEd00000654*
-  ID_MODEL_FROM_DATABASE=G96M [GeForce GT 220M]
- 
-+pci:v000010DEd00000654sv00001043sd000014A2*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 320M
-+
-+pci:v000010DEd00000654sv00001043sd000014D2*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 320M
-+
- pci:v000010DEd00000655*
-  ID_MODEL_FROM_DATABASE=G96 [GeForce GT 120]
- 
-@@ -24098,6 +24221,9 @@ pci:v000010DEd000006E7*
- pci:v000010DEd000006E8*
-  ID_MODEL_FROM_DATABASE=G98M [GeForce 9200M GS]
- 
-+pci:v000010DEd000006E8sv0000103Csd0000360B*
-+ ID_MODEL_FROM_DATABASE=GeForce 9200M GE
-+
- pci:v000010DEd000006E9*
-  ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS]
- 
-@@ -24596,6 +24722,9 @@ pci:v000010DEd000007FEsv00001019sd0000297A*
- pci:v000010DEd000007FEsv00001AFAsd00007150*
-  ID_MODEL_FROM_DATABASE=JW-IN7150-HD
- 
-+pci:v000010DEd00000840*
-+ ID_MODEL_FROM_DATABASE=C77 [GeForce 8200M]
-+
- pci:v000010DEd00000844*
-  ID_MODEL_FROM_DATABASE=C77 [GeForce 9100M G]
- 
-@@ -24665,6 +24794,9 @@ pci:v000010DEd00000865*
- pci:v000010DEd00000866*
-  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M G]
- 
-+pci:v000010DEd00000866sv0000106Bsd000000B1*
-+ ID_MODEL_FROM_DATABASE=GeForce 9400M
-+
- pci:v000010DEd00000867*
-  ID_MODEL_FROM_DATABASE=C79 [GeForce 9400]
- 
-@@ -24746,6 +24878,9 @@ pci:v000010DEd0000087E*
- pci:v000010DEd0000087F*
-  ID_MODEL_FROM_DATABASE=ION LE VGA
- 
-+pci:v000010DEd000008A0*
-+ ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
-+
- pci:v000010DEd000008A2*
-  ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
- 
-@@ -24755,6 +24890,9 @@ pci:v000010DEd000008A3*
- pci:v000010DEd000008A4*
-  ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
- 
-+pci:v000010DEd000008A5*
-+ ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M]
-+
- pci:v000010DEd00000A20*
-  ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 220]
- 
-@@ -24875,6 +25013,9 @@ pci:v000010DEd00000A73*
- pci:v000010DEd00000A74*
-  ID_MODEL_FROM_DATABASE=GT218M [GeForce G210M]
- 
-+pci:v000010DEd00000A74sv00001B0Asd0000903A*
-+ ID_MODEL_FROM_DATABASE=GeForce G210
-+
- pci:v000010DEd00000A75*
-  ID_MODEL_FROM_DATABASE=GT218M [GeForce 310M]
- 
-@@ -24986,6 +25127,9 @@ pci:v000010DEd00000A7Asv00001462sd0000AC82*
- pci:v000010DEd00000A7Asv00001462sd0000AE33*
-  ID_MODEL_FROM_DATABASE=GeForce 405
- 
-+pci:v000010DEd00000A7Asv00001642sd00003980*
-+ ID_MODEL_FROM_DATABASE=GeForce 405
-+
- pci:v000010DEd00000A7Asv000017AAsd00003950*
-  ID_MODEL_FROM_DATABASE=GeForce 405M
- 
-@@ -24995,6 +25139,9 @@ pci:v000010DEd00000A7Asv000017AAsd0000397D*
- pci:v000010DEd00000A7Asv00001B0Asd00002091*
-  ID_MODEL_FROM_DATABASE=GeForce 315M
- 
-+pci:v000010DEd00000A7Asv00001B0Asd000090B4*
-+ ID_MODEL_FROM_DATABASE=GeForce 405
-+
- pci:v000010DEd00000A7Asv00001BFDsd00000003*
-  ID_MODEL_FROM_DATABASE=GeForce 405
- 
-@@ -25266,7 +25413,7 @@ pci:v000010DEd00000AD8*
-  ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (RAID mode)
- 
- pci:v000010DEd00000BE2*
-- ID_MODEL_FROM_DATABASE=High Definition Audio Controller
-+ ID_MODEL_FROM_DATABASE=GT216 HDMI Audio Controller
- 
- pci:v000010DEd00000BE2sv00001043sd00008311*
-  ID_MODEL_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2
-@@ -25460,12 +25607,42 @@ pci:v000010DEd00000DE4*
- pci:v000010DEd00000DE5*
-  ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 530]
- 
-+pci:v000010DEd00000DE7*
-+ ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 610]
-+
- pci:v000010DEd00000DE8*
-  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 620M]
- 
- pci:v000010DEd00000DE9*
-  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M]
- 
-+pci:v000010DEd00000DE9sv00001025sd00000692*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 620M
-+
-+pci:v000010DEd00000DE9sv00001025sd00000725*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 620M
-+
-+pci:v000010DEd00000DE9sv00001025sd00000728*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 620M
-+
-+pci:v000010DEd00000DE9sv00001025sd0000072B*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 620M
-+
-+pci:v000010DEd00000DE9sv00001025sd0000072E*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 620M
-+
-+pci:v000010DEd00000DE9sv00001025sd00000753*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 620M
-+
-+pci:v000010DEd00000DE9sv00001025sd00000754*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 620M
-+
-+pci:v000010DEd00000DE9sv000017AAsd00003977*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 640M LE
-+
-+pci:v000010DEd00000DE9sv00001B0Asd00002210*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 635M
-+
- pci:v000010DEd00000DEA*
-  ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M]
- 
-@@ -25514,6 +25691,12 @@ pci:v000010DEd00000DF3*
- pci:v000010DEd00000DF4*
-  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 540M]
- 
-+pci:v000010DEd00000DF4sv0000152Dsd00000952*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 630M
-+
-+pci:v000010DEd00000DF4sv0000152Dsd00000953*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 630M
-+
- pci:v000010DEd00000DF5*
-  ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 525M]
- 
-@@ -25610,6 +25793,9 @@ pci:v000010DEd00000FC6sv00001043sd00008428*
- pci:v000010DEd00000FCD*
-  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 755M]
- 
-+pci:v000010DEd00000FCE*
-+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M LE]
-+
- pci:v000010DEd00000FD1*
-  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M]
- 
-@@ -25667,6 +25853,9 @@ pci:v000010DEd00000FE0*
- pci:v000010DEd00000FE1*
-  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 730M]
- 
-+pci:v000010DEd00000FE2*
-+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M]
-+
- pci:v000010DEd00000FE3*
-  ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 745M]
- 
-@@ -25688,6 +25877,12 @@ pci:v000010DEd00000FE7*
- pci:v000010DEd00000FE7sv000010DEsd0000101E*
-  ID_MODEL_FROM_DATABASE=GRID K100
- 
-+pci:v000010DEd00000FE9*
-+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 750M Mac Edition]
-+
-+pci:v000010DEd00000FEA*
-+ ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 755M Mac Edition]
-+
- pci:v000010DEd00000FEF*
-  ID_MODEL_FROM_DATABASE=GK107GL [GRID K340]
- 
-@@ -25739,6 +25934,15 @@ pci:v000010DEd00001003*
- pci:v000010DEd00001004*
-  ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX 780]
- 
-+pci:v000010DEd00001004sv00003842sd00000784*
-+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 SC w/ ACX Cooler]
-+
-+pci:v000010DEd00001004sv00003842sd00001784*
-+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual FTW w/ ACX Cooler]
-+
-+pci:v000010DEd00001004sv00003842sd00001788*
-+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Dual Classified w/ ACX Cooler]
-+
- pci:v000010DEd00001005*
-  ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan]
- 
-@@ -25763,6 +25967,9 @@ pci:v000010DEd00001005sv00003842sd00002794*
- pci:v000010DEd00001005sv00003842sd00002795*
-  ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature
- 
-+pci:v000010DEd0000100A*
-+ ID_MODEL_FROM_DATABASE=GK110B [GeForce GTX 780 Ti]
-+
- pci:v000010DEd0000101F*
-  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20]
- 
-@@ -25775,15 +25982,24 @@ pci:v000010DEd00001021*
- pci:v000010DEd00001022*
-  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20c]
- 
-+pci:v000010DEd00001023*
-+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40m]
-+
- pci:v000010DEd00001024*
-- ID_MODEL_FROM_DATABASE=GK110GL [Tesla K40c]
-+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40c]
- 
- pci:v000010DEd00001026*
-  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s]
- 
-+pci:v000010DEd00001027*
-+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40st]
-+
- pci:v000010DEd00001028*
-  ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20m]
- 
-+pci:v000010DEd00001029*
-+ ID_MODEL_FROM_DATABASE=GK110BGL [Tesla K40s]
-+
- pci:v000010DEd0000103A*
-  ID_MODEL_FROM_DATABASE=GK110GL [Quadro K6000]
- 
-@@ -25832,6 +26048,12 @@ pci:v000010DEd00001057*
- pci:v000010DEd00001058*
-  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
- 
-+pci:v000010DEd00001058sv0000103Csd00002AED*
-+ ID_MODEL_FROM_DATABASE=GeForce 610
-+
-+pci:v000010DEd00001058sv0000103Csd00002AF1*
-+ ID_MODEL_FROM_DATABASE=GeForce 610
-+
- pci:v000010DEd00001058sv00001043sd000010AC*
-  ID_MODEL_FROM_DATABASE=GeForce GT 610M
- 
-@@ -25841,6 +26063,9 @@ pci:v000010DEd00001058sv00001043sd000010BC*
- pci:v000010DEd00001058sv00001043sd00001652*
-  ID_MODEL_FROM_DATABASE=GeForce GT 610M
- 
-+pci:v000010DEd00001059*
-+ ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
-+
- pci:v000010DEd0000105A*
-  ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M]
- 
-@@ -25904,6 +26129,12 @@ pci:v000010DEd00001091sv000010DEsd0000088E*
- pci:v000010DEd00001091sv000010DEsd00000891*
-  ID_MODEL_FROM_DATABASE=Tesla X2090
- 
-+pci:v000010DEd00001091sv000010DEsd00000974*
-+ ID_MODEL_FROM_DATABASE=Tesla X2090
-+
-+pci:v000010DEd00001091sv000010DEsd0000098D*
-+ ID_MODEL_FROM_DATABASE=Tesla X2090
-+
- pci:v000010DEd00001094*
-  ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2075]
- 
-@@ -25941,7 +26172,7 @@ pci:v000010DEd000010D8*
-  ID_MODEL_FROM_DATABASE=GT218 [NVS 300]
- 
- pci:v000010DEd00001140*
-- ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M / GT 620M/625M/630M/720M]
-+ ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M/820M / GT 620M/625M/630M/720M]
- 
- pci:v000010DEd00001140sv00001025sd00000600*
-  ID_MODEL_FROM_DATABASE=GeForce GT 620M
-@@ -26081,6 +26312,9 @@ pci:v000010DEd00001140sv00001028sd00000554*
- pci:v000010DEd00001140sv00001028sd00000557*
-  ID_MODEL_FROM_DATABASE=GeForce GT 620M
- 
-+pci:v000010DEd00001140sv00001028sd00000562*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 625M
-+
- pci:v000010DEd00001140sv00001028sd00000565*
-  ID_MODEL_FROM_DATABASE=GeForce GT 630M
- 
-@@ -26111,6 +26345,12 @@ pci:v000010DEd00001140sv00001028sd000005B3*
- pci:v000010DEd00001140sv00001028sd000005DA*
-  ID_MODEL_FROM_DATABASE=GeForce GT 630M
- 
-+pci:v000010DEd00001140sv00001028sd000005DE*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
-+pci:v000010DEd00001140sv00001028sd000005E0*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
- pci:v000010DEd00001140sv00001028sd000005E8*
-  ID_MODEL_FROM_DATABASE=GeForce GT 630M
- 
-@@ -26156,6 +26396,9 @@ pci:v000010DEd00001140sv00001043sd0000126D*
- pci:v000010DEd00001140sv00001043sd0000131D*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-+pci:v000010DEd00001140sv00001043sd000013FD*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
- pci:v000010DEd00001140sv00001043sd000014C7*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-@@ -26189,6 +26432,9 @@ pci:v000010DEd00001140sv00001043sd0000224A*
- pci:v000010DEd00001140sv00001043sd00008595*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-+pci:v000010DEd00001140sv00001072sd0000152D*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
- pci:v000010DEd00001140sv000010CFsd000017F5*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-@@ -26291,6 +26537,9 @@ pci:v000010DEd00001140sv0000144Dsd0000C709*
- pci:v000010DEd00001140sv0000144Dsd0000C711*
-  ID_MODEL_FROM_DATABASE=GeForce 710M
- 
-+pci:v000010DEd00001140sv0000144Dsd0000C736*
-+ ID_MODEL_FROM_DATABASE=GeForce 710M
-+
- pci:v000010DEd00001140sv00001462sd000010B8*
-  ID_MODEL_FROM_DATABASE=GeForce GT 710M
- 
-@@ -26303,6 +26552,9 @@ pci:v000010DEd00001140sv00001462sd0000AA33*
- pci:v000010DEd00001140sv00001462sd0000AAA2*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-+pci:v000010DEd00001140sv00001462sd0000AAA3*
-+ ID_MODEL_FROM_DATABASE=GeForce 820M
-+
- pci:v000010DEd00001140sv00001462sd0000AE71*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-@@ -26315,15 +26567,30 @@ pci:v000010DEd00001140sv0000152Dsd00000982*
- pci:v000010DEd00001140sv0000152Dsd00000983*
-  ID_MODEL_FROM_DATABASE=GeForce GT 630M
- 
-+pci:v000010DEd00001140sv0000152Dsd00001012*
-+ ID_MODEL_FROM_DATABASE=GeForce 710M
-+
- pci:v000010DEd00001140sv0000152Dsd00001030*
-  ID_MODEL_FROM_DATABASE=GeForce GT 630M
- 
- pci:v000010DEd00001140sv0000152Dsd00001055*
-  ID_MODEL_FROM_DATABASE=GeForce 710M
- 
-+pci:v000010DEd00001140sv0000152Dsd00001067*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
-+pci:v000010DEd00001140sv0000152Dsd00001072*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
- pci:v000010DEd00001140sv000017AAsd00002200*
-  ID_MODEL_FROM_DATABASE=NVS 5200M
- 
-+pci:v000010DEd00001140sv000017AAsd00002213*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
-+pci:v000010DEd00001140sv000017AAsd00002220*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
- pci:v000010DEd00001140sv000017AAsd00003656*
-  ID_MODEL_FROM_DATABASE=GeForce GT 620M
- 
-@@ -26369,6 +26636,9 @@ pci:v000010DEd00001140sv000017AAsd00003977*
- pci:v000010DEd00001140sv000017AAsd00003983*
-  ID_MODEL_FROM_DATABASE=GeForce 610M
- 
-+pci:v000010DEd00001140sv000017AAsd00005001*
-+ ID_MODEL_FROM_DATABASE=GeForce 610M
-+
- pci:v000010DEd00001140sv000017AAsd00005003*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-@@ -26414,18 +26684,33 @@ pci:v000010DEd00001140sv000017AAsd0000502E*
- pci:v000010DEd00001140sv000017AAsd0000502F*
-  ID_MODEL_FROM_DATABASE=GeForce GT 720M
- 
-+pci:v000010DEd00001140sv000017AAsd0000503E*
-+ ID_MODEL_FROM_DATABASE=GeForce 710M
-+
-+pci:v000010DEd00001140sv000017AAsd0000503F*
-+ ID_MODEL_FROM_DATABASE=GeForce 820M
-+
- pci:v000010DEd00001140sv00001854sd00000177*
-  ID_MODEL_FROM_DATABASE=GeForce 710M
- 
- pci:v000010DEd00001140sv00001854sd00000180*
-  ID_MODEL_FROM_DATABASE=GeForce 710M
- 
-+pci:v000010DEd00001140sv00001854sd00000190*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
-+pci:v000010DEd00001140sv00001854sd00000192*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
- pci:v000010DEd00001140sv00001B0Asd000020DD*
-  ID_MODEL_FROM_DATABASE=GeForce GT 620M
- 
- pci:v000010DEd00001140sv00001B0Asd000020DF*
-  ID_MODEL_FROM_DATABASE=GeForce GT 620M
- 
-+pci:v000010DEd00001140sv00001B0Asd00002202*
-+ ID_MODEL_FROM_DATABASE=GeForce GT 720M
-+
- pci:v000010DEd00001180*
-  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680]
- 
-@@ -26484,10 +26769,10 @@ pci:v000010DEd00001193*
-  ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 760 Ti OEM]
- 
- pci:v000010DEd0000119D*
-- ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M]
-+ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 775M Mac Edition]
- 
- pci:v000010DEd0000119E*
-- ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M]
-+ ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M Mac Edition]
- 
- pci:v000010DEd0000119F*
-  ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 780M]
-@@ -27210,32 +27495,23 @@ pci:v000010EC*
-  ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd.
- 
- pci:v000010ECd00000139*
-- ID_MODEL_FROM_DATABASE=Zonet Zen3200
--
--pci:v000010ECd00000880*
-- ID_MODEL_FROM_DATABASE=Realtek 880 High Definition Audio
--
--pci:v000010ECd00000883*
-- ID_MODEL_FROM_DATABASE=Realtek 883 High Definition Audio
--
--pci:v000010ECd00000885*
-- ID_MODEL_FROM_DATABASE=Realtek 885 High Definition Audio
--
--pci:v000010ECd00000888*
-- ID_MODEL_FROM_DATABASE=Realtek 888 High Definition Audio
--
--pci:v000010ECd00000892*
-- ID_MODEL_FROM_DATABASE=Realtek 892 High Definition Audio
-+ ID_MODEL_FROM_DATABASE=RTL-8139/8139C/8139C+ Ethernet Controller
- 
- pci:v000010ECd00005209*
-  ID_MODEL_FROM_DATABASE=RTS5209 PCI Express Card Reader
- 
-+pci:v000010ECd00005227*
-+ ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader
-+
- pci:v000010ECd00005229*
-  ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader
- 
- pci:v000010ECd00005229sv00001025sd00000813*
-  ID_MODEL_FROM_DATABASE=Aspire R7-571
- 
-+pci:v000010ECd00005229sv0000103Csd0000194E*
-+ ID_MODEL_FROM_DATABASE=ProBook 455 G1 Notebook
-+
- pci:v000010ECd00005288*
-  ID_MODEL_FROM_DATABASE=Barossa PCI Express Card Reader
- 
-@@ -27449,6 +27725,9 @@ pci:v000010ECd00008168*
- pci:v000010ECd00008168sv00001019sd00008168*
-  ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller
- 
-+pci:v000010ECd00008168sv00001028sd00000283*
-+ ID_MODEL_FROM_DATABASE=Vostro 220
-+
- pci:v000010ECd00008168sv00001028sd000004B2*
-  ID_MODEL_FROM_DATABASE=Vostro 3350
- 
-@@ -27458,6 +27737,9 @@ pci:v000010ECd00008168sv00001028sd000004DA*
- pci:v000010ECd00008168sv0000103Csd00001611*
-  ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000
- 
-+pci:v000010ECd00008168sv0000103Csd00001950*
-+ ID_MODEL_FROM_DATABASE=ProBook 450/455
-+
- pci:v000010ECd00008168sv00001043sd000011F5*
-  ID_MODEL_FROM_DATABASE=A6J-Q008
- 
-@@ -27617,6 +27899,9 @@ pci:v000010ECd00008199sv00001462sd00006894*
- pci:v000010ECd00008723*
-  ID_MODEL_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter
- 
-+pci:v000010ECd0000B723*
-+ ID_MODEL_FROM_DATABASE=RTL8723BE PCIe Wireless Network Adapter
-+
- pci:v000010ED*
-  ID_VENDOR_FROM_DATABASE=Ascii Corporation
- 
-@@ -31562,6 +31847,15 @@ pci:v00001137d00000042*
- pci:v00001137d00000042sv00001137sd00000047*
-  ID_MODEL_FROM_DATABASE=VIC P81E PCIe Management Controller
- 
-+pci:v00001137d00000042sv00001137sd00000085*
-+ ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Management Controller
-+
-+pci:v00001137d00000042sv00001137sd000000CD*
-+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Management Controller
-+
-+pci:v00001137d00000042sv00001137sd000000CE*
-+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Management Controller
-+
- pci:v00001137d00000043*
-  ID_MODEL_FROM_DATABASE=VIC Ethernet NIC
- 
-@@ -31580,6 +31874,12 @@ pci:v00001137d00000043sv00001137sd00000084*
- pci:v00001137d00000043sv00001137sd00000085*
-  ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC
- 
-+pci:v00001137d00000043sv00001137sd000000CD*
-+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC
-+
-+pci:v00001137d00000043sv00001137sd000000CE*
-+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC
-+
- pci:v00001137d00000044*
-  ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic
- 
-@@ -31598,6 +31898,12 @@ pci:v00001137d00000044sv00001137sd00000084*
- pci:v00001137d00000044sv00001137sd00000085*
-  ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC Dynamic
- 
-+pci:v00001137d00000044sv00001137sd000000CD*
-+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe Ethernet NIC Dynamic
-+
-+pci:v00001137d00000044sv00001137sd000000CE*
-+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe Ethernet NIC Dynamic
-+
- pci:v00001137d00000045*
-  ID_MODEL_FROM_DATABASE=VIC FCoE HBA
- 
-@@ -31610,18 +31916,24 @@ pci:v00001137d00000045sv00001137sd00000048*
- pci:v00001137d00000045sv00001137sd0000004F*
-  ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine FCoE HBA
- 
-+pci:v00001137d00000045sv00001137sd00000084*
-+ ID_MODEL_FROM_DATABASE=VIC 1240 MLOM FCoE HBA
-+
-+pci:v00001137d00000045sv00001137sd00000085*
-+ ID_MODEL_FROM_DATABASE=VIC 1225 PCIe FCoE HBA
-+
-+pci:v00001137d00000045sv00001137sd000000CD*
-+ ID_MODEL_FROM_DATABASE=VIC 1285 PCIe FCoE HBA
-+
-+pci:v00001137d00000045sv00001137sd000000CE*
-+ ID_MODEL_FROM_DATABASE=VIC 1225T PCIe FCoE HBA
-+
- pci:v00001137d0000004E*
-  ID_MODEL_FROM_DATABASE=VIC 82 PCIe Upstream Port
- 
- pci:v00001137d00000071*
-  ID_MODEL_FROM_DATABASE=VIC SR-IOV VF
- 
--pci:v00001137d00000084*
-- ID_MODEL_FROM_DATABASE=VIC 1240 MLOM FCoE HBA
--
--pci:v00001137d00000085*
-- ID_MODEL_FROM_DATABASE=VIC 1225 PCIe FCOE HBA
--
- pci:v00001137d000000CF*
-  ID_MODEL_FROM_DATABASE=VIC Userspace NIC
- 
-@@ -35087,6 +35399,15 @@ pci:v000011F8d00007384*
- pci:v000011F8d00008000*
-  ID_MODEL_FROM_DATABASE=PM8000  [SPC - SAS Protocol Controller]
- 
-+pci:v000011F8d00008032*
-+ ID_MODEL_FROM_DATABASE=ATTO Celerity FC8xEN
-+
-+pci:v000011F8d00008032sv0000117Csd0000003B*
-+ ID_MODEL_FROM_DATABASE=Celerity FC-82EN Fibre Channel Adapter
-+
-+pci:v000011F8d00008032sv0000117Csd0000003C*
-+ ID_MODEL_FROM_DATABASE=Celerity FC-84EN Fibre Channel Adapter
-+
- pci:v000011F9*
-  ID_VENDOR_FROM_DATABASE=I-Cube Inc
- 
-@@ -42029,6 +42350,24 @@ pci:v0000144C*
- pci:v0000144D*
-  ID_VENDOR_FROM_DATABASE=Samsung Electronics Co Ltd
- 
-+pci:v0000144Dd00001600*
-+ ID_MODEL_FROM_DATABASE=Apple PCIe SSD
-+
-+pci:v0000144Dd0000A800*
-+ ID_MODEL_FROM_DATABASE=XP941 PCIe SSD
-+
-+pci:v0000144Dd0000A820*
-+ ID_MODEL_FROM_DATABASE=NVMe SSD Controller 171X
-+
-+pci:v0000144Dd0000A820sv00001028sd00001F95*
-+ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 400GB
-+
-+pci:v0000144Dd0000A820sv00001028sd00001F96*
-+ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 800GB
-+
-+pci:v0000144Dd0000A820sv00001028sd00001F97*
-+ ID_MODEL_FROM_DATABASE=Express Flash NVMe XS1715 SSD 1600GB
-+
- pci:v0000144E*
-  ID_VENDOR_FROM_DATABASE=OLITEC
- 
-@@ -42527,6 +42866,9 @@ pci:v000014C2*
- pci:v000014C3*
-  ID_VENDOR_FROM_DATABASE=MEDIATEK Corp.
- 
-+pci:v000014C3d00007630*
-+ ID_MODEL_FROM_DATABASE=MT7630e 802.11bgn Wireless Network Adapter
-+
- pci:v000014C4*
-  ID_VENDOR_FROM_DATABASE=IWASAKI Information Systems Co Ltd
- 
-@@ -46334,6 +46676,9 @@ pci:v000015ADd000007B0*
- pci:v000015ADd000007C0*
-  ID_MODEL_FROM_DATABASE=PVSCSI SCSI Controller
- 
-+pci:v000015ADd000007E0*
-+ ID_MODEL_FROM_DATABASE=SATA AHCI controller
-+
- pci:v000015ADd00000801*
-  ID_MODEL_FROM_DATABASE=Virtual Machine Interface
- 
-@@ -46623,11 +46968,17 @@ pci:v000015BCd00000103*
-  ID_MODEL_FROM_DATABASE=QX4 PCI Express quad 4-gigabit Fibre Channel controller
- 
- pci:v000015BCd00000105*
-- ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter
-+ ID_MODEL_FROM_DATABASE=Celerity FC-44XS/FC-42XS/FC-41XS/FC-44ES/FC-42ES/FC-41ES
- 
- pci:v000015BCd00000105sv0000117Csd00000022*
-  ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter
- 
-+pci:v000015BCd00000105sv0000117Csd00000025*
-+ ID_MODEL_FROM_DATABASE=Celerity FC-44ES Fibre Channel Adapter
-+
-+pci:v000015BCd00000105sv0000117Csd00000026*
-+ ID_MODEL_FROM_DATABASE=Celerity FC-42ES Fibre Channel Adapter
-+
- pci:v000015BCd00001100*
-  ID_MODEL_FROM_DATABASE=E8001-66442 PCI Express CIC
- 
-@@ -48215,6 +48566,9 @@ pci:v0000170C*
- pci:v00001719*
-  ID_VENDOR_FROM_DATABASE=EZChip Technologies
- 
-+pci:v00001719d00001000*
-+ ID_MODEL_FROM_DATABASE=NPA Access Network Processor Family
-+
- pci:v00001725*
-  ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor
- 
-@@ -49040,9 +49394,15 @@ pci:v00001814d00003092*
- pci:v00001814d00003290*
-  ID_MODEL_FROM_DATABASE=RT3290 Wireless 802.11n 1T/1R PCIe
- 
-+pci:v00001814d00003290sv0000103Csd000018EC*
-+ ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
-+
- pci:v00001814d00003298*
-  ID_MODEL_FROM_DATABASE=RT3290 Bluetooth
- 
-+pci:v00001814d00003298sv0000103Csd000018EC*
-+ ID_MODEL_FROM_DATABASE=Ralink RT3290LE 802.11bgn 1x1 Wi-Fi and Bluetooth 4.0 Combo Adapter
-+
- pci:v00001814d00003592*
-  ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe
- 
-@@ -51299,6 +51659,9 @@ pci:v00001B4Bd00009172*
- pci:v00001B4Bd0000917A*
-  ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller
- 
-+pci:v00001B4Bd00009183*
-+ ID_MODEL_FROM_DATABASE=88SS9183 PCIe SSD Controller
-+
- pci:v00001B4Bd00009192*
-  ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller
- 
-@@ -51455,9 +51818,27 @@ pci:v00001C1Cd00000001*
- pci:v00001C2C*
-  ID_VENDOR_FROM_DATABASE=Fiberblaze
- 
-+pci:v00001C2Cd0000000A*
-+ ID_MODEL_FROM_DATABASE=Capture
-+
-+pci:v00001C2Cd0000000F*
-+ ID_MODEL_FROM_DATABASE=SmartNIC
-+
-+pci:v00001C2Cd000000A0*
-+ ID_MODEL_FROM_DATABASE=FBC4G Capture 4x1Gb
-+
-+pci:v00001C2Cd000000A1*
-+ ID_MODEL_FROM_DATABASE=FBC4XG Capture 4x10Gb
-+
-+pci:v00001C2Cd000000A2*
-+ ID_MODEL_FROM_DATABASE=FBC8XG Capture 8x10Gb
-+
- pci:v00001C32*
-  ID_VENDOR_FROM_DATABASE=Highland Technology, Inc.
- 
-+pci:v00001C33*
-+ ID_VENDOR_FROM_DATABASE=Daktronics, Inc
-+
- pci:v00001C3B*
-  ID_VENDOR_FROM_DATABASE=Accensus, LLC
- 
-@@ -51503,6 +51884,9 @@ pci:v00001CE4d00000001*
- pci:v00001CE4d00000002*
-  ID_MODEL_FROM_DATABASE=ExaNIC X2
- 
-+pci:v00001CF7*
-+ ID_VENDOR_FROM_DATABASE=Subspace Dynamics
-+
- pci:v00001D44*
-  ID_VENDOR_FROM_DATABASE=DPT
- 
-@@ -54284,6 +54668,81 @@ pci:v00008086d000008B4sv00008086sd00008270*
- pci:v00008086d000008CF*
-  ID_MODEL_FROM_DATABASE=Atom Processor Z2760 Integrated Graphics Controller
- 
-+pci:v00008086d0000095A*
-+ ID_MODEL_FROM_DATABASE=Wireless 7265
-+
-+pci:v00008086d0000095Asv00008086sd00001010*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005000*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005002*
-+ ID_MODEL_FROM_DATABASE=Wireless-N 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005010*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005020*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
-+
-+pci:v00008086d0000095Asv00008086sd0000502A*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005090*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005110*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005400*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005410*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005420*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
-+
-+pci:v00008086d0000095Asv00008086sd00005490*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00009010*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00009210*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Asv00008086sd00009410*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095B*
-+ ID_MODEL_FROM_DATABASE=Wireless 7265
-+
-+pci:v00008086d0000095Bsv00008086sd0000500A*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Bsv00008086sd00005012*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Bsv00008086sd00005200*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
-+
-+pci:v00008086d0000095Bsv00008086sd00005202*
-+ ID_MODEL_FROM_DATABASE=Wireless-N 7265
-+
-+pci:v00008086d0000095Bsv00008086sd00005210*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Bsv00008086sd00005290*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Bsv00008086sd00005302*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
-+pci:v00008086d0000095Bsv00008086sd00005310*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
- pci:v00008086d00000960*
-  ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge
- 
-@@ -54299,6 +54758,9 @@ pci:v00008086d00000A04*
- pci:v00008086d00000A06*
-  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
- 
-+pci:v00008086d00000A0C*
-+ ID_MODEL_FROM_DATABASE=Haswell-ULT HD Audio Controller
-+
- pci:v00008086d00000A16*
-  ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller
- 
-@@ -57332,6 +57794,12 @@ pci:v00008086d00001521sv00001028sd00001F62*
- pci:v00008086d00001521sv0000103Csd000017D1*
-  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366FLR Adapter
- 
-+pci:v00008086d00001521sv0000103Csd00002003*
-+ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 367i Adapter
-+
-+pci:v00008086d00001521sv0000103Csd00002226*
-+ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 1-port 364i Adapter
-+
- pci:v00008086d00001521sv0000103Csd0000337F*
-  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361i Adapter
- 
-@@ -57407,6 +57875,9 @@ pci:v00008086d00001523sv0000103Csd00001784*
- pci:v00008086d00001523sv0000103Csd000018D1*
-  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter
- 
-+pci:v00008086d00001523sv0000103Csd00001989*
-+ ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 363i Adapter
-+
- pci:v00008086d00001523sv0000103Csd0000339F*
-  ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366M Adapter
- 
-@@ -57584,6 +58055,9 @@ pci:v00008086d00001560*
- pci:v00008086d0000157B*
-  ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection
- 
-+pci:v00008086d0000157C*
-+ ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection
-+
- pci:v00008086d000015A0*
-  ID_MODEL_FROM_DATABASE=Ethernet Connection (2) I218-LM
- 
-@@ -58448,6 +58922,9 @@ pci:v00008086d00001E2Dsv00001849sd00001E2D*
- pci:v00008086d00001E31*
-  ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller
- 
-+pci:v00008086d00001E31sv0000103Csd000017AB*
-+ ID_MODEL_FROM_DATABASE=ProBook 6570b
-+
- pci:v00008086d00001E31sv00001043sd00001477*
-  ID_MODEL_FROM_DATABASE=N56VZ
- 
-@@ -58748,7 +59225,7 @@ pci:v00008086d00001F3F*
- pci:v00008086d00001F40*
-  ID_MODEL_FROM_DATABASE=Ethernet Connection I354 1.0 GbE Backplane
- 
--pci:v00008086d00001F40sv00001028sd000010F1*
-+pci:v00008086d00001F40sv00001028sd000005F1*
-  ID_MODEL_FROM_DATABASE=Ethernet Connection I354 1.0 GbE Backplane
- 
- pci:v00008086d00001F41*
-@@ -65144,6 +65621,9 @@ pci:v00008086d00002E17*
- pci:v00008086d00002E20*
-  ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller
- 
-+pci:v00008086d00002E20sv00001028sd00000283*
-+ ID_MODEL_FROM_DATABASE=Dell Vostro 220
-+
- pci:v00008086d00002E20sv00001043sd000082D3*
-  ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard
- 
-@@ -67689,7 +68169,7 @@ pci:v00008086d00004227*
-  ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection
- 
- pci:v00008086d00004227sv00008086sd00001011*
-- ID_MODEL_FROM_DATABASE=ThinkPad R60e/X60s
-+ ID_MODEL_FROM_DATABASE=ThinkPad T60/R60e/X60s
- 
- pci:v00008086d00004227sv00008086sd00001014*
-  ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection
-@@ -69155,6 +69635,111 @@ pci:v00008086d00009C65*
- pci:v00008086d00009C66*
-  ID_MODEL_FROM_DATABASE=Lynx Point-LP SPI Controller #1
- 
-+pci:v00008086d00009C83*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [AHCI Mode]
-+
-+pci:v00008086d00009C85*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode]
-+
-+pci:v00008086d00009C87*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode]
-+
-+pci:v00008086d00009C8F*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SATA Controller [RAID Mode]
-+
-+pci:v00008086d00009C90*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #1
-+
-+pci:v00008086d00009C92*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #2
-+
-+pci:v00008086d00009C94*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #3
-+
-+pci:v00008086d00009C96*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #4
-+
-+pci:v00008086d00009C98*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #5
-+
-+pci:v00008086d00009C9A*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP PCI Express Root Port #6
-+
-+pci:v00008086d00009CA0*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP High Definition Audio Controller
-+
-+pci:v00008086d00009CA2*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP SMBus Controller
-+
-+pci:v00008086d00009CA4*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Thermal Management Controller
-+
-+pci:v00008086d00009CA6*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP USB EHCI Controller
-+
-+pci:v00008086d00009CB1*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP USB xHCI Controller
-+
-+pci:v00008086d00009CB5*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Secure Digital IO Controller
-+
-+pci:v00008086d00009CB6*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Smart Sound Technology Controller
-+
-+pci:v00008086d00009CBA*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP MEI Controller #1
-+
-+pci:v00008086d00009CBB*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP MEI Controller #2
-+
-+pci:v00008086d00009CBC*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP IDE-r Controller
-+
-+pci:v00008086d00009CBD*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP KT Controller
-+
-+pci:v00008086d00009CC1*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
-+
-+pci:v00008086d00009CC2*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
-+
-+pci:v00008086d00009CC3*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
-+
-+pci:v00008086d00009CC5*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
-+
-+pci:v00008086d00009CC6*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
-+
-+pci:v00008086d00009CC7*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
-+
-+pci:v00008086d00009CC9*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP LPC Controller
-+
-+pci:v00008086d00009CE0*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO DMA Controller
-+
-+pci:v00008086d00009CE1*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO I2C Controller #0
-+
-+pci:v00008086d00009CE2*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO I2C Controller #1
-+
-+pci:v00008086d00009CE3*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO UART Controller #0
-+
-+pci:v00008086d00009CE4*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO UART Controller #1
-+
-+pci:v00008086d00009CE5*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO GSPI Controller #0
-+
-+pci:v00008086d00009CE6*
-+ ID_MODEL_FROM_DATABASE=Wildcat Point-LP Serial IO GSPI Controller #1
-+
- pci:v00008086d0000A000*
-  ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge
- 
-@@ -70691,6 +71276,24 @@ pci:v0000BDBDd0000A11E*
- pci:v0000BDBDd0000A121*
-  ID_MODEL_FROM_DATABASE=DeckLink HD Extreme 3D/3D+
- 
-+pci:v0000BDBDd0000A124*
-+ ID_MODEL_FROM_DATABASE=Intensity Extreme
-+
-+pci:v0000BDBDd0000A126*
-+ ID_MODEL_FROM_DATABASE=Intensity Shuttle
-+
-+pci:v0000BDBDd0000A127*
-+ ID_MODEL_FROM_DATABASE=UltraStudio Express
-+
-+pci:v0000BDBDd0000A129*
-+ ID_MODEL_FROM_DATABASE=UltraStudio Mini Monitor
-+
-+pci:v0000BDBDd0000A12A*
-+ ID_MODEL_FROM_DATABASE=UltraStudio Mini Recorder
-+
-+pci:v0000BDBDd0000A12D*
-+ ID_MODEL_FROM_DATABASE=UltraStudio 4K
-+
- pci:v0000BDBDd0000A12E*
-  ID_MODEL_FROM_DATABASE=DeckLink 4K Extreme
- 
-@@ -70700,6 +71303,9 @@ pci:v0000BDBDd0000A12F*
- pci:v0000BDBDd0000A130*
-  ID_MODEL_FROM_DATABASE=DeckLink Mini Recorder
- 
-+pci:v0000BDBDd0000A132*
-+ ID_MODEL_FROM_DATABASE=UltraStudio 4K
-+
- pci:v0000C001*
-  ID_VENDOR_FROM_DATABASE=TSI Telsys
- 
-@@ -70860,7 +71466,7 @@ pci:v0000DCBA*
-  ID_VENDOR_FROM_DATABASE=Dynamic Engineering
- 
- pci:v0000DCBAd00000046*
-- ID_MODEL_FROM_DATABASE=PCIeAlteraCycloneIV
-+ ID_MODEL_FROM_DATABASE=PCIe Altera Cyclone IV
- 
- pci:v0000DCBAd00000047*
-  ID_MODEL_FROM_DATABASE=VPX-RCB
-@@ -70868,6 +71474,15 @@ pci:v0000DCBAd00000047*
- pci:v0000DCBAd00000048*
-  ID_MODEL_FROM_DATABASE=PMC-Biserial-III-BAE9
- 
-+pci:v0000DCBAd0000004E*
-+ ID_MODEL_FROM_DATABASE=PC104p-Biserial-III-NVY5
-+
-+pci:v0000DCBAd0000004F*
-+ ID_MODEL_FROM_DATABASE=PC104p-Biserial-III-NVY6
-+
-+pci:v0000DCBAd00000052*
-+ ID_MODEL_FROM_DATABASE=PCIeBiSerialDb37 BA22 LVDS IO
-+
- pci:v0000DD01*
-  ID_VENDOR_FROM_DATABASE=Digital Devices GmbH
- 
-diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
-index da8385e..6663820 100644
---- a/hwdb/20-usb-vendor-model.hwdb
-+++ b/hwdb/20-usb-vendor-model.hwdb
-@@ -53,6 +53,12 @@ usb:v017C*
- usb:v017Cp145F*
-  ID_MODEL_FROM_DATABASE=Trust Deskset
- 
-+usb:v0200*
-+ ID_VENDOR_FROM_DATABASE=TP-Link
-+
-+usb:v0200p0201*
-+ ID_MODEL_FROM_DATABASE=MA180 UMTS Modem
-+
- usb:v0204*
-  ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd
- 
-@@ -515,6 +521,12 @@ usb:v03F0p0417*
- usb:v03F0p0423*
-  ID_MODEL_FROM_DATABASE=HS-COMBO Cardreader
- 
-+usb:v03F0p042A*
-+ ID_MODEL_FROM_DATABASE=LaserJet M1132 MFP
-+
-+usb:v03F0p0441*
-+ ID_MODEL_FROM_DATABASE=HP Prime Calculator
-+
- usb:v03F0p0504*
-  ID_MODEL_FROM_DATABASE=DeskJet 885c
- 
-@@ -957,7 +969,7 @@ usb:v03F0p2317*
-  ID_MODEL_FROM_DATABASE=LaserJet 4350
- 
- usb:v03F0p231D*
-- ID_MODEL_FROM_DATABASE=4 GB Flash Drive
-+ ID_MODEL_FROM_DATABASE=Broadcom 2070 Bluetooth Combo
- 
- usb:v03F0p2402*
-  ID_MODEL_FROM_DATABASE=PhotoSmart 7700 series
-@@ -1214,6 +1226,9 @@ usb:v03F0p3B17*
- usb:v03F0p3C02*
-  ID_MODEL_FROM_DATABASE=PhotoSmart 7350
- 
-+usb:v03F0p3C05*
-+ ID_MODEL_FROM_DATABASE=Scanjet Professional 1000 Mobile Scanner
-+
- usb:v03F0p3C11*
-  ID_MODEL_FROM_DATABASE=PSC 1358
- 
-@@ -2018,6 +2033,9 @@ usb:v0403p8040*
- usb:v0403p8070*
-  ID_MODEL_FROM_DATABASE=7 Port Hub
- 
-+usb:v0403p8140*
-+ ID_MODEL_FROM_DATABASE=Vehicle Explorer Interface
-+
- usb:v0403p8210*
-  ID_MODEL_FROM_DATABASE=MGTimer - MGCC (Vic) Timing System
- 
-@@ -2036,6 +2054,12 @@ usb:v0403p8A28*
- usb:v0403p8A98*
-  ID_MODEL_FROM_DATABASE=TIAO Multi-Protocol Adapter
- 
-+usb:v0403p9133*
-+ ID_MODEL_FROM_DATABASE=CallerID
-+
-+usb:v0403p9135*
-+ ID_MODEL_FROM_DATABASE=Rotary Pub alarm
-+
- usb:v0403p9E90*
-  ID_MODEL_FROM_DATABASE=Marvell OpenRD Base/Client
- 
-@@ -2978,6 +3002,9 @@ usb:v040Ap6005*
- usb:v040B*
-  ID_VENDOR_FROM_DATABASE=Weltrend Semiconductor
- 
-+usb:v040Bp0A68*
-+ ID_MODEL_FROM_DATABASE=Func MS-3 gaming mouse [WT6573F MCU]
-+
- usb:v040Bp6510*
-  ID_MODEL_FROM_DATABASE=Weltrend Bar Code Reader
- 
-@@ -3662,6 +3689,9 @@ usb:v041Ep4057*
- usb:v041Ep4058*
-  ID_MODEL_FROM_DATABASE=Live! Cam Optia AF
- 
-+usb:v041Ep405F*
-+ ID_MODEL_FROM_DATABASE=WebCam Vista (VF0330)
-+
- usb:v041Ep4061*
-  ID_MODEL_FROM_DATABASE=Live! Cam Notebook Pro [VF0400]
- 
-@@ -5255,6 +5285,9 @@ usb:v0457p0162*
- usb:v0457p0163*
-  ID_MODEL_FROM_DATABASE=802.11 Wireless LAN Adapter
- 
-+usb:v0457p0817*
-+ ID_MODEL_FROM_DATABASE=SiS-184-ASUS-4352.17 touch panel
-+
- usb:v0457p5401*
-  ID_MODEL_FROM_DATABASE=Wireless Adapter RO80211GS-USB
- 
-@@ -5531,6 +5564,9 @@ usb:v0458p7079*
- usb:v0458p707F*
-  ID_MODEL_FROM_DATABASE=TVGo DVB-T03 [RTL2832]
- 
-+usb:v0458p7088*
-+ ID_MODEL_FROM_DATABASE=WideCam 1050
-+
- usb:v0459*
-  ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc.
- 
-@@ -6401,6 +6437,9 @@ usb:v045Ep0772*
- usb:v045Ep0779*
-  ID_MODEL_FROM_DATABASE=LifeCam HD-3000
- 
-+usb:v045Ep0797*
-+ ID_MODEL_FROM_DATABASE=Optical Mouse 200
-+
- usb:v045Ep930A*
-  ID_MODEL_FROM_DATABASE=ISOUSB.SYS Intel 82930 Isochronous IO Test Board
- 
-@@ -6624,7 +6663,7 @@ usb:v046A*
-  ID_VENDOR_FROM_DATABASE=Cherry GmbH
- 
- usb:v046Ap0001*
-- ID_MODEL_FROM_DATABASE=My3000 Keyboard
-+ ID_MODEL_FROM_DATABASE=Keyboard
- 
- usb:v046Ap0003*
-  ID_MODEL_FROM_DATABASE=My3000 Hub
-@@ -8504,6 +8543,9 @@ usb:v0480pA006*
- usb:v0480pA007*
-  ID_MODEL_FROM_DATABASE=External Disk USB 3.0
- 
-+usb:v0480pD010*
-+ ID_MODEL_FROM_DATABASE=External Disk 3TB
-+
- usb:v0481*
-  ID_VENDOR_FROM_DATABASE=Zenith Data Systems
- 
-@@ -8597,6 +8639,9 @@ usb:v0483p5001*
- usb:v0483p5710*
-  ID_MODEL_FROM_DATABASE=Joystick in FS Mode
- 
-+usb:v0483p5720*
-+ ID_MODEL_FROM_DATABASE=STM microSD Flash Device
-+
- usb:v0483p5721*
-  ID_MODEL_FROM_DATABASE=Hantek DDS-3X25 Arbitrary Waveform Generator
- 
-@@ -8693,6 +8738,12 @@ usb:v048Dp9009*
- usb:v048Dp9135*
-  ID_MODEL_FROM_DATABASE=Zolid Mini DVB-T Stick
- 
-+usb:v048Dp9503*
-+ ID_MODEL_FROM_DATABASE=ITE it9503 feature-limited DVB-T transmission chip [ccHDtv]
-+
-+usb:v048Dp9507*
-+ ID_MODEL_FROM_DATABASE=ITE it9507 full featured DVB-T transmission chip [ccHDtv]
-+
- usb:v048F*
-  ID_VENDOR_FROM_DATABASE=Eicon Tech.
- 
-@@ -10937,9 +10988,21 @@ usb:v04A9p3260*
- usb:v04A9p3264*
-  ID_MODEL_FROM_DATABASE=PowerShot A1400
- 
-+usb:v04A9p3265*
-+ ID_MODEL_FROM_DATABASE=Powershot ELPH 130 IS / IXUS 140
-+
- usb:v04A9p3268*
-  ID_MODEL_FROM_DATABASE=PowerShot ELPH 330 HS / IXUS 255 HS
- 
-+usb:v04A9p3271*
-+ ID_MODEL_FROM_DATABASE=PowerShot A2500
-+
-+usb:v04A9p3276*
-+ ID_MODEL_FROM_DATABASE=PowerShot SX170 IS
-+
-+usb:v04A9p327D*
-+ ID_MODEL_FROM_DATABASE=Powershot ELPH 115 IS / IXUS 132
-+
- usb:v04AA*
-  ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd
- 
-@@ -11162,6 +11225,9 @@ usb:v04B0p0425*
- usb:v04B0p0428*
-  ID_MODEL_FROM_DATABASE=D7000
- 
-+usb:v04B0p0429*
-+ ID_MODEL_FROM_DATABASE=D5100
-+
- usb:v04B0p042A*
-  ID_MODEL_FROM_DATABASE=D800 (ptp)
- 
-@@ -12806,6 +12872,9 @@ usb:v04D9p1503*
- usb:v04D9p1603*
-  ID_MODEL_FROM_DATABASE=Keyboard
- 
-+usb:v04D9p1702*
-+ ID_MODEL_FROM_DATABASE=Keyboard LKS02
-+
- usb:v04D9p2013*
-  ID_MODEL_FROM_DATABASE=Keyboard [Das Keyboard]
- 
-@@ -12821,6 +12890,9 @@ usb:v04D9p2519*
- usb:v04D9p2832*
-  ID_MODEL_FROM_DATABASE=1channel Telephone line recorder
- 
-+usb:v04D9p2834*
-+ ID_MODEL_FROM_DATABASE=HT82A834R Audio MCU
-+
- usb:v04D9pA055*
-  ID_MODEL_FROM_DATABASE=Keyboard
- 
-@@ -14252,6 +14324,9 @@ usb:v04F2pB354*
- usb:v04F3*
-  ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp.
- 
-+usb:v04F3p000A*
-+ ID_MODEL_FROM_DATABASE=Touchscreen
-+
- usb:v04F3p0103*
-  ID_MODEL_FROM_DATABASE=ActiveJet K-2024 Multimedia Keyboard
- 
-@@ -15302,6 +15377,12 @@ usb:v050Dp1102*
- usb:v050Dp1103*
-  ID_MODEL_FROM_DATABASE=F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573]
- 
-+usb:v050Dp1106*
-+ ID_MODEL_FROM_DATABASE=F9L1106v1 802.11a/b/g/n/ac Wireless Adapter [Broadcom BCM43526]
-+
-+usb:v050Dp1109*
-+ ID_MODEL_FROM_DATABASE=F9L1109v1 802.11a/b/g/n/ac Wireless Adapter [Realtek RTL8812AU]
-+
- usb:v050Dp11F2*
-  ID_MODEL_FROM_DATABASE=ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS]
- 
-@@ -16514,6 +16595,9 @@ usb:v054Cp0485*
- usb:v054Cp04CB*
-  ID_MODEL_FROM_DATABASE=WALKMAN NWZ-E354
- 
-+usb:v054Cp06BB*
-+ ID_MODEL_FROM_DATABASE=WALKMAN NWZ-F805
-+
- usb:v054Cp1000*
-  ID_MODEL_FROM_DATABASE=Wireless Buzz! Receiver
- 
-@@ -47582,6 +47666,15 @@ usb:v2101*
- usb:v2101p0201*
-  ID_MODEL_FROM_DATABASE=SIIG 4-to-2 Printer Switch
- 
-+usb:v2149*
-+ ID_VENDOR_FROM_DATABASE=Advanced Silicon S.A.
-+
-+usb:v2149p211B*
-+ ID_MODEL_FROM_DATABASE=Touchscreen Controller
-+
-+usb:v2149p2703*
-+ ID_MODEL_FROM_DATABASE=TS58xxA/TC56xxA [CoolTouch]
-+
- usb:v2162*
-  ID_VENDOR_FROM_DATABASE=Creative (?)
- 
-@@ -47636,6 +47729,21 @@ usb:v2227*
- usb:v2227p3105*
-  ID_MODEL_FROM_DATABASE=SKYDATA SKD-U100
- 
-+usb:v2232*
-+ ID_VENDOR_FROM_DATABASE=Silicon Motion
-+
-+usb:v2232p1005*
-+ ID_MODEL_FROM_DATABASE=WebCam SCB-0385N
-+
-+usb:v2232p1028*
-+ ID_MODEL_FROM_DATABASE=WebCam SC-03FFL11939N
-+
-+usb:v2232p1029*
-+ ID_MODEL_FROM_DATABASE=WebCam SC-13HDL11939N
-+
-+usb:v2232p1037*
-+ ID_MODEL_FROM_DATABASE=WebCam SC-03FFM12339N
-+
- usb:v2233*
-  ID_VENDOR_FROM_DATABASE=RadioShack Corporation
- 
diff --git a/SOURCES/0151-delta-replace-readdir_r-with-readdir.patch b/SOURCES/0151-delta-replace-readdir_r-with-readdir.patch
deleted file mode 100644
index ca8ebba..0000000
--- a/SOURCES/0151-delta-replace-readdir_r-with-readdir.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 095e14ab14e22d4fa605411bb0f47a856c90df8b Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Thu, 19 Dec 2013 11:16:12 +0100
-Subject: [PATCH] delta: replace readdir_r with readdir
-
----
- src/delta/delta.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/delta/delta.c b/src/delta/delta.c
-index 193642d..c2550d6 100644
---- a/src/delta/delta.c
-+++ b/src/delta/delta.c
-@@ -280,13 +280,13 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
- 
-         for (;;) {
-                 struct dirent *de;
--                union dirent_storage buf;
-                 int k;
-                 char *p;
- 
--                k = readdir_r(d, &buf.de, &de);
--                if (k != 0)
--                        return -k;
-+                errno = 0;
-+                de = readdir(d);
-+                if (!de && errno != 0)
-+                        return -errno;
- 
-                 if (!de)
-                         break;
diff --git a/SOURCES/0151-resolved-Do-not-add-.busname-dependencies-when-compi.patch b/SOURCES/0151-resolved-Do-not-add-.busname-dependencies-when-compi.patch
new file mode 100644
index 0000000..1bee381
--- /dev/null
+++ b/SOURCES/0151-resolved-Do-not-add-.busname-dependencies-when-compi.patch
@@ -0,0 +1,63 @@
+From 33ee9624d4fb50f29f2e3c8ffd0c7efa95a03f02 Mon Sep 17 00:00:00 2001
+From: Dimitri John Ledkov <dimitri.j.ledkov@intel.com>
+Date: Tue, 17 Mar 2015 16:37:07 +0100
+Subject: [PATCH] resolved: Do not add .busname dependencies, when compiling
+ without kdbus.
+
+(cherry picked from commit defa8e675b2903ad53e093bb2847c7256f0779a5)
+
+Cherry-picked from: 33ff64c
+Resolves: #1222517
+---
+ Makefile.am                                                           | 2 +-
+ units/.gitignore                                                      | 1 +
+ units/{systemd-resolved.service.in => systemd-resolved.service.m4.in} | 2 ++
+ 3 files changed, 4 insertions(+), 1 deletion(-)
+ rename units/{systemd-resolved.service.in => systemd-resolved.service.m4.in} (96%)
+
+diff --git a/Makefile.am b/Makefile.am
+index 8474b29..604eaf2 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -5520,7 +5520,7 @@ dist_dbussystemservice_DATA += \
+ 	src/resolve/org.freedesktop.resolve1.service
+ 
+ EXTRA_DIST += \
+-	units/systemd-resolved.service.in
++	units/systemd-resolved.service.m4.in
+ 
+ SYSTEM_UNIT_ALIASES += \
+ 	systemd-resolved.service dbus-org.freedesktop.resolve1.service
+diff --git a/units/.gitignore b/units/.gitignore
+index 638a7ab..7f3e0d0 100644
+--- a/units/.gitignore
++++ b/units/.gitignore
+@@ -58,6 +58,7 @@
+ /systemd-reboot.service
+ /systemd-remount-fs.service
+ /systemd-resolved.service
++/systemd-resolved.service.m4
+ /systemd-hibernate-resume@.service
+ /systemd-rfkill@.service
+ /systemd-shutdownd.service
+diff --git a/units/systemd-resolved.service.in b/units/systemd-resolved.service.m4.in
+similarity index 96%
+rename from units/systemd-resolved.service.in
+rename to units/systemd-resolved.service.m4.in
+index b643da9..d133847 100644
+--- a/units/systemd-resolved.service.in
++++ b/units/systemd-resolved.service.m4.in
+@@ -10,11 +10,13 @@ Description=Network Name Resolution
+ Documentation=man:systemd-resolved.service(8)
+ After=systemd-networkd.service network.service
+ 
++m4_ifdef(`ENABLE_KDBUS',
+ # On kdbus systems we pull in the busname explicitly, because it
+ # carries policy that allows the daemon to acquire its name.
+ Wants=org.freedesktop.resolve1.busname
+ After=org.freedesktop.resolve1.busname
+ 
++)m4_dnl
+ [Service]
+ Type=notify
+ Restart=always
diff --git a/SOURCES/0152-delta-fix-delta-for-drop-ins.patch b/SOURCES/0152-delta-fix-delta-for-drop-ins.patch
deleted file mode 100644
index 7a257aa..0000000
--- a/SOURCES/0152-delta-fix-delta-for-drop-ins.patch
+++ /dev/null
@@ -1,375 +0,0 @@
-From 5bb09b7611b2bb5df0df432df20c84ca741cad24 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 22 Dec 2013 19:45:02 -0500
-Subject: [PATCH] delta: fix delta for drop-ins
-
-Also, fix highlighting, add more debug statements, make const tables
-static and global, run path_kill_slashes only at entry.
-
-Conflicts:
-	src/delta/delta.c
----
- src/delta/delta.c | 174 +++++++++++++++++++++++++-----------------------------
- 1 file changed, 79 insertions(+), 95 deletions(-)
-
-diff --git a/src/delta/delta.c b/src/delta/delta.c
-index c2550d6..06c7431 100644
---- a/src/delta/delta.c
-+++ b/src/delta/delta.c
-@@ -33,6 +33,34 @@
- #include "build.h"
- #include "strv.h"
- 
-+static const char prefixes[] =
-+        "/etc\0"
-+        "/run\0"
-+        "/usr/local/lib\0"
-+        "/usr/local/share\0"
-+        "/usr/lib\0"
-+        "/usr/share\0"
-+#ifdef HAVE_SPLIT_USR
-+        "/lib\0"
-+#endif
-+        ;
-+
-+static const char suffixes[] =
-+        "sysctl.d\0"
-+        "tmpfiles.d\0"
-+        "modules-load.d\0"
-+        "binfmt.d\0"
-+        "systemd/system\0"
-+        "systemd/user\0"
-+        "systemd/system-preset\0"
-+        "systemd/user-preset\0"
-+        "udev/rules.d\0"
-+        "modprobe.d\0";
-+
-+static const char have_dropins[] =
-+        "systemd/system\0"
-+        "systemd/user\0";
-+
- static bool arg_no_pager = false;
- static int arg_diff = -1;
- 
-@@ -48,6 +76,14 @@ static enum {
-         (SHOW_MASKED | SHOW_EQUIVALENT | SHOW_REDIRECTED | SHOW_OVERRIDDEN | SHOW_EXTENDED)
- } arg_flags = 0;
- 
-+static void pager_open_if_enabled(void) {
-+
-+        if (arg_no_pager)
-+                return;
-+
-+        pager_open(false);
-+}
-+
- static int equivalent(const char *a, const char *b) {
-         _cleanup_free_ char *x = NULL, *y = NULL;
- 
-@@ -76,7 +112,7 @@ static int notify_override_equivalent(const char *top, const char *bottom) {
-                 return 0;
- 
-         printf("%s%s%s %s → %s\n",
--               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight(), top, bottom);
-+               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight_off(), top, bottom);
-         return 1;
- }
- 
-@@ -160,24 +196,26 @@ static int found_override(const char *top, const char *bottom) {
- }
- 
- static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const char *toppath, const char *drop) {
--        _cleanup_free_ char *conf = NULL;
-+        _cleanup_free_ char *unit = NULL;
-         _cleanup_free_ char *path = NULL;
-         _cleanup_strv_free_ char **list = NULL;
-         char **file;
-         char *c;
-         int r;
- 
-+        assert(!endswith(drop, "/"));
-+
-         path = strjoin(toppath, "/", drop, NULL);
-         if (!path)
-                 return -ENOMEM;
- 
--        path_kill_slashes(path);
-+        log_debug("Looking at %s", path);
- 
--        conf = strdup(drop);
--        if (!conf)
-+        unit = strdup(drop);
-+        if (!unit)
-                 return -ENOMEM;
- 
--        c = strrchr(conf, '.');
-+        c = strrchr(unit, '.');
-         if (!c)
-                 return -EINVAL;
-         *c = 0;
-@@ -200,35 +238,21 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
-                 p = strjoin(path, "/", *file, NULL);
-                 if (!p)
-                         return -ENOMEM;
-+                d = p + strlen(toppath) + 1;
- 
--                path_kill_slashes(p);
--
--                d = strrchr(p, '/');
--                if (!d || d == p) {
--                        free(p);
--                        return -EINVAL;
--                }
--                d--;
--                d = strrchr(p, '/');
--
--                if (!d || d == p) {
--                        free(p);
--                        return -EINVAL;
--                }
--
-+                log_debug("Adding at top: %s → %s", d, p);
-                 k = hashmap_put(top, d, p);
-                 if (k >= 0) {
-                         p = strdup(p);
-                         if (!p)
-                                 return -ENOMEM;
--                        d = strrchr(p, '/');
--                        d--;
--                        d = strrchr(p, '/');
-+                        d = p + strlen(toppath) + 1;
-                 } else if (k != -EEXIST) {
-                         free(p);
-                         return k;
-                 }
- 
-+                log_debug("Adding at bottom: %s → %s", d, p);
-                 free(hashmap_remove(bottom, d));
-                 k = hashmap_put(bottom, d, p);
-                 if (k < 0) {
-@@ -236,14 +260,14 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
-                         return k;
-                 }
- 
--                h = hashmap_get(drops, conf);
-+                h = hashmap_get(drops, unit);
-                 if (!h) {
-                         h = hashmap_new(string_hash_func, string_compare_func);
-                         if (!h)
-                                 return -ENOMEM;
--                        hashmap_put(drops, conf, h);
--                        conf = strdup(conf);
--                        if (!conf)
-+                        hashmap_put(drops, unit, h);
-+                        unit = strdup(unit);
-+                        if (!unit)
-                                 return -ENOMEM;
-                 }
- 
-@@ -251,7 +275,8 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
-                 if (!p)
-                         return -ENOMEM;
- 
--                k = hashmap_put(h, path_get_file_name(p), p);
-+                log_debug("Adding to drops: %s → %s → %s", unit, basename(p), p);
-+                k = hashmap_put(h, basename(p), p);
-                 if (k < 0) {
-                         free(p);
-                         if (k != -EEXIST)
-@@ -269,12 +294,14 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
-         assert(drops);
-         assert(path);
- 
-+        log_debug("Looking at %s", path);
-+
-         d = opendir(path);
-         if (!d) {
-                 if (errno == ENOENT)
-                         return 0;
- 
--                log_error("Failed to enumerate %s: %m", path);
-+                log_error("Failed to open %s: %m", path);
-                 return -errno;
-         }
- 
-@@ -285,11 +312,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
- 
-                 errno = 0;
-                 de = readdir(d);
--                if (!de && errno != 0)
--                        return -errno;
--
-                 if (!de)
--                        break;
-+                        return -errno;
- 
-                 dirent_ensure_type(d, de);
- 
-@@ -303,9 +327,8 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
-                 if (!p)
-                         return -ENOMEM;
- 
--                path_kill_slashes(p);
--
--                k = hashmap_put(top, path_get_file_name(p), p);
-+                log_debug("Adding at top: %s → %s", basename(p), p);
-+                k = hashmap_put(top, basename(p), p);
-                 if (k >= 0) {
-                         p = strdup(p);
-                         if (!p)
-@@ -315,44 +338,37 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
-                         return k;
-                 }
- 
--                free(hashmap_remove(bottom, path_get_file_name(p)));
--                k = hashmap_put(bottom, path_get_file_name(p), p);
-+                log_debug("Adding at bottom: %s → %s", basename(p), p);
-+                free(hashmap_remove(bottom, basename(p)));
-+                k = hashmap_put(bottom, basename(p), p);
-                 if (k < 0) {
-                         free(p);
-                         return k;
-                 }
-         }
--
--        return 0;
- }
- 
--static int process_suffix(const char *prefixes, const char *suffix, bool dropins) {
-+static int process_suffix(const char *suffix) {
-         const char *p;
-         char *f;
--        Hashmap *top, *bottom=NULL, *drops=NULL;
-+        Hashmap *top, *bottom, *drops;
-         Hashmap *h;
-         char *key;
-         int r = 0, k;
-         Iterator i, j;
-         int n_found = 0;
-+        bool dropins;
- 
--        assert(prefixes);
-         assert(suffix);
-+        assert(!startswith(suffix, "/"));
-+        assert(!strstr(suffix, "//"));
- 
--        top = hashmap_new(string_hash_func, string_compare_func);
--        if (!top) {
--                r = -ENOMEM;
--                goto finish;
--        }
-+        dropins = nulstr_contains(have_dropins, suffix);
- 
-+        top = hashmap_new(string_hash_func, string_compare_func);
-         bottom = hashmap_new(string_hash_func, string_compare_func);
--        if (!bottom) {
--                r = -ENOMEM;
--                goto finish;
--        }
--
-         drops = hashmap_new(string_hash_func, string_compare_func);
--        if (!drops) {
-+        if (!top || !bottom || !drops) {
-                 r = -ENOMEM;
-                 goto finish;
-         }
-@@ -367,10 +383,8 @@ static int process_suffix(const char *prefixes, const char *suffix, bool dropins
-                 }
- 
-                 k = enumerate_dir(top, bottom, drops, t, dropins);
--                if (k < 0)
-+                if (r == 0)
-                         r = k;
--
--                log_debug("Looking at %s", t);
-         }
- 
-         HASHMAP_FOREACH_KEY(f, key, top, i) {
-@@ -411,21 +425,20 @@ finish:
-         return r < 0 ? r : n_found;
- }
- 
--static int process_suffix_chop(const char *prefixes, const char *suffix, const char *have_dropins) {
-+static int process_suffix_chop(const char *suffix) {
-         const char *p;
- 
--        assert(prefixes);
-         assert(suffix);
- 
-         if (!path_is_absolute(suffix))
--                return process_suffix(prefixes, suffix, nulstr_contains(have_dropins, suffix));
-+                return process_suffix(suffix);
- 
-         /* Strip prefix from the suffix */
-         NULSTR_FOREACH(p, prefixes) {
-                 if (startswith(suffix, p)) {
-                         suffix += strlen(p);
-                         suffix += strspn(suffix, "/");
--                        return process_suffix(prefixes, suffix, nulstr_contains(have_dropins, suffix));
-+                        return process_suffix(suffix);
-                 }
-         }
- 
-@@ -550,35 +563,6 @@ static int parse_argv(int argc, char *argv[]) {
- }
- 
- int main(int argc, char *argv[]) {
--
--        const char prefixes[] =
--                "/etc\0"
--                "/run\0"
--                "/usr/local/lib\0"
--                "/usr/local/share\0"
--                "/usr/lib\0"
--                "/usr/share\0"
--#ifdef HAVE_SPLIT_USR
--                "/lib\0"
--#endif
--                ;
--
--        const char suffixes[] =
--                "sysctl.d\0"
--                "tmpfiles.d\0"
--                "modules-load.d\0"
--                "binfmt.d\0"
--                "systemd/system\0"
--                "systemd/user\0"
--                "systemd/system-preset\0"
--                "systemd/user-preset\0"
--                "udev/rules.d\0"
--                "modprobe.d\0";
--
--        const char have_dropins[] =
--                "systemd/system\0"
--                "systemd/user\0";
--
-         int r = 0, k;
-         int n_found = 0;
- 
-@@ -597,14 +581,14 @@ int main(int argc, char *argv[]) {
-         else if (arg_diff)
-                 arg_flags |= SHOW_OVERRIDDEN;
- 
--        if (!arg_no_pager)
--                pager_open(false);
-+        pager_open_if_enabled();
- 
-         if (optind < argc) {
-                 int i;
- 
-                 for (i = optind; i < argc; i++) {
--                        k = process_suffix_chop(prefixes, argv[i], have_dropins);
-+                        path_kill_slashes(argv[i]);
-+                        k = process_suffix_chop(argv[i]);
-                         if (k < 0)
-                                 r = k;
-                         else
-@@ -615,7 +599,7 @@ int main(int argc, char *argv[]) {
-                 const char *n;
- 
-                 NULSTR_FOREACH(n, suffixes) {
--                        k = process_suffix(prefixes, n, nulstr_contains(have_dropins, n));
-+                        k = process_suffix(n);
-                         if (k < 0)
-                                 r = k;
-                         else
diff --git a/SOURCES/0152-man-add-journal-remote.conf-5.patch b/SOURCES/0152-man-add-journal-remote.conf-5.patch
new file mode 100644
index 0000000..36a4b7d
--- /dev/null
+++ b/SOURCES/0152-man-add-journal-remote.conf-5.patch
@@ -0,0 +1,181 @@
+From 825d40b7ccdde8b4b9a5299d6e6747c80b9519e2 Mon Sep 17 00:00:00 2001
+From: Chris Morgan <chmorgan@gmail.com>
+Date: Sat, 21 Mar 2015 20:47:46 -0400
+Subject: [PATCH] man: add journal-remote.conf(5)
+
+(cherry picked from commit eaa5251d9167027275d8275862e23e0b7dc8866e)
+
+Cherry-picked from: 90d2614
+Resolves: #1222517
+---
+ Makefile-man.am                |   7 +++
+ man/journal-remote.conf.xml    | 114 +++++++++++++++++++++++++++++++++++++++++
+ man/systemd-journal-remote.xml |   1 +
+ 3 files changed, 122 insertions(+)
+ create mode 100644 man/journal-remote.conf.xml
+
+diff --git a/Makefile-man.am b/Makefile-man.am
+index ac6f69a..084df75 100644
+--- a/Makefile-man.am
++++ b/Makefile-man.am
+@@ -1358,14 +1358,20 @@ endif
+ 
+ if HAVE_MICROHTTPD
+ MANPAGES += \
++	man/journal-remote.conf.5 \
+ 	man/systemd-journal-gatewayd.service.8 \
+ 	man/systemd-journal-remote.8 \
+ 	man/systemd-journal-upload.8
+ MANPAGES_ALIAS += \
++	man/journal-remote.conf.d.5 \
+ 	man/systemd-journal-gatewayd.8 \
+ 	man/systemd-journal-gatewayd.socket.8
++man/journal-remote.conf.d.5: man/journal-remote.conf.5
+ man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8
+ man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8
++man/journal-remote.conf.d.html: man/journal-remote.conf.html
++	$(html-alias)
++
+ man/systemd-journal-gatewayd.html: man/systemd-journal-gatewayd.service.html
+ 	$(html-alias)
+ 
+@@ -1662,6 +1668,7 @@ EXTRA_DIST += \
+ 	man/hostname.xml \
+ 	man/hostnamectl.xml \
+ 	man/hwdb.xml \
++	man/journal-remote.conf.xml \
+ 	man/journalctl.xml \
+ 	man/journald.conf.xml \
+ 	man/kernel-command-line.xml \
+diff --git a/man/journal-remote.conf.xml b/man/journal-remote.conf.xml
+new file mode 100644
+index 0000000..a7b2227
+--- /dev/null
++++ b/man/journal-remote.conf.xml
+@@ -0,0 +1,114 @@
++<?xml version='1.0'?> <!--*-nxml-*-->
++<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
++  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
++
++<!--
++  This file is part of systemd.
++
++  Copyright 2015 Chris Morgan
++
++  systemd is free software; you can redistribute it and/or modify it
++  under the terms of the GNU Lesser General Public License as published by
++  the Free Software Foundation; either version 2.1 of the License, or
++  (at your option) any later version.
++
++  systemd is distributed in the hope that it will be useful, but
++  WITHOUT ANY WARRANTY; without even the implied warranty of
++  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++  Lesser General Public License for more details.
++
++  You should have received a copy of the GNU Lesser General Public License
++  along with systemd; If not, see <http://www.gnu.org/licenses/>.
++-->
++
++<refentry id="journal-remote.conf" conditional='HAVE_MICROHTTPD'
++          xmlns:xi="http://www.w3.org/2001/XInclude">
++  <refentryinfo>
++    <title>journal-remote.conf</title>
++    <productname>systemd</productname>
++
++    <authorgroup>
++      <author>
++        <contrib>Developer</contrib>
++        <firstname>Chris</firstname>
++        <surname>Morgan</surname>
++        <email>chmorgan@gmail.com</email>
++      </author>
++    </authorgroup>
++  </refentryinfo>
++
++  <refmeta>
++    <refentrytitle>journal-remote.conf</refentrytitle>
++    <manvolnum>5</manvolnum>
++  </refmeta>
++
++  <refnamediv>
++    <refname>journal-remote.conf</refname>
++    <refname>journal-remote.conf.d</refname>
++    <refpurpose>Journal remote service configuration files</refpurpose>
++  </refnamediv>
++
++  <refsynopsisdiv>
++    <para><filename>/etc/systemd/journal-remote.conf</filename></para>
++    <para><filename>/etc/systemd/journald.conf.d/*.conf</filename></para>
++    <para><filename>/run/systemd/journald.conf.d/*.conf</filename></para>
++    <para><filename>/usr/lib/systemd/journald.conf.d/*.conf</filename></para>
++  </refsynopsisdiv>
++
++  <refsect1>
++    <title>Description</title>
++
++    <para>These files configure various parameters of the systemd-remote-journal
++    application,
++    <citerefentry><refentrytitle>systemd-journal-remote</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para>
++  </refsect1>
++
++  <xi:include href="standard-conf.xml" xpointer="main-conf" />
++
++  <refsect1>
++    <title>Options</title>
++
++    <para>All options are configured in the
++    <literal>[Remote]</literal> section:</para>
++
++    <variablelist>
++
++      <varlistentry>
++        <term><varname>SplitMode=</varname></term>
++
++        <listitem><para>One of <literal>host</literal> or <literal>none</literal>.
++        </para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><varname>ServerKeyFile=</varname></term>
++
++        <listitem><para>SSL key in PEM format</para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><varname>ServerCertificateFile=</varname></term>
++
++        <listitem><para>SSL CA certificate in PEM format.</para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><varname>TrustedCertificateFile=</varname></term>
++
++        <listitem><para>SSL CA certificate.</para></listitem>
++      </varlistentry>
++
++    </variablelist>
++
++  </refsect1>
++
++  <refsect1>
++      <title>See Also</title>
++      <para>
++        <citerefentry><refentrytitle>systemd-journal-remote</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
++        <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      </para>
++  </refsect1>
++
++</refentry>
+diff --git a/man/systemd-journal-remote.xml b/man/systemd-journal-remote.xml
+index 2687662..d5bda63 100644
+--- a/man/systemd-journal-remote.xml
++++ b/man/systemd-journal-remote.xml
+@@ -310,6 +310,7 @@ systemd-journal-remote --url http://some.host:19531/
+       <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-journald.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+       <citerefentry><refentrytitle>systemd-journal-gatewayd.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
++      <citerefentry><refentrytitle>journal-remote.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     </para>
+   </refsect1>
+ </refentry>
diff --git a/SOURCES/0153-delta-if-prefix-is-specified-only-show-overrides-the.patch b/SOURCES/0153-delta-if-prefix-is-specified-only-show-overrides-the.patch
deleted file mode 100644
index efb109c..0000000
--- a/SOURCES/0153-delta-if-prefix-is-specified-only-show-overrides-the.patch
+++ /dev/null
@@ -1,251 +0,0 @@
-From 13fb7479365d958e76b149fe5615be74f519f03a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 22 Dec 2013 22:53:23 -0500
-Subject: [PATCH] delta: if prefix is specified, only show overrides there
-
-systemd-delta /run/systemd/system will show all unit overrides
-in /run, etc.
----
- man/systemd-delta.xml | 80 +++++++++++++++++++++++++++++++++++++++++----------
- src/delta/delta.c     | 71 ++++++++++++++++++++++++++++-----------------
- 2 files changed, 109 insertions(+), 42 deletions(-)
-
-diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml
-index 413ebd8..4d3ab78 100644
---- a/man/systemd-delta.xml
-+++ b/man/systemd-delta.xml
-@@ -49,7 +49,9 @@
- 
-         <refsynopsisdiv>
-                 <cmdsynopsis>
--                        <command>systemd-delta <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">SUFFIX</arg></command>
-+                        <command>systemd-delta</command>
-+			<arg choice="opt" rep="repeat">OPTIONS</arg>
-+			<arg choice="opt" rep="repeat"><replaceable>PREFIX</replaceable><optional>/<replaceable>SUFFIX</replaceable></optional>|<replaceable>SUFFIX</replaceable></arg>
-                 </cmdsynopsis>
-         </refsynopsisdiv>
- 
-@@ -57,18 +59,46 @@
-                 <title>Description</title>
- 
-                 <para><command>systemd-delta</command> may be used to
--                identify and compare configuration files in
--                <filename>/etc</filename> that override default
--                counterparts in <filename>/usr</filename>. The command
--                line argument can be one or more name of a subdirectories of
--                <filename>/etc</filename> or
--                <filename>/usr/lib</filename> to compare, such as
--                <filename>tmpfiles.d</filename>, <filename>sysctl.d</filename> or
--                <filename>systemd/system</filename>.</para>
--
--                <para>When no argument is specified a number of
--                well-known subdirectories are searched for overridden
--                files.</para>
-+                identify and compare configuration files that override
-+                other configuration files. Files in
-+                <filename>/etc</filename> have highest priority, files
-+                in <filename>/run</filename> have the second highest
-+                priority, ..., files in <filename>/lib</filename> have
-+                lowest priority. Files in a directory with higher
-+                priority override files with the same name in
-+                directories of lower priority. In addition, certain
-+                configuration files can have <literal>.d</literal>
-+                directories which contain "drop-in" files with
-+                configuration snippets which augment the main
-+                configuration file. "Drop-in" files can be overriden
-+                in the same way by placing files with the same name in
-+                a directory of higher priority (except that in case of
-+                "drop-in" files, both the "drop-in" file name and the
-+                name of the containing directory, which corresponds to
-+                the name of the main configuration file, must match).
-+                For a fuller explanation, see
-+                <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
-+		</para>
-+
-+		<para>The command line argument will be split into a
-+		prefix and a suffix. Either is optional. The prefix
-+		must be one of the directories containing
-+		configuration files (<filename>/etc</filename>,
-+		<filename>/run</filename>,
-+		<filename>/usr/lib</filename>, ...). If it is given,
-+		only overriding files contained in this directory will
-+		be shown. Otherwise, all overriding files will be
-+		shown. The suffix must be a name of a subdirectory
-+		containing configuration files like
-+		<filename>tmpfiles.d</filename>,
-+		<filename>sysctl.d</filename> or
-+		<filename>systemd/system</filename>. If it is given,
-+		only configuration files in this subdirectory (across
-+		all configuration paths) will be analyzed. Otherwise,
-+		all configuration files will be analyzed. If the
-+		commandline argument is not given at all, all
-+		configuration files will be analyzed. See below for
-+		some examples.</para>
-         </refsect1>
- 
-         <refsect1>
-@@ -168,9 +198,28 @@
-                         </varlistentry>
- 
-                 </variablelist>
--
-         </refsect1>
- 
-+	<refsect1>
-+		<title>Examples</title>
-+
-+		<para>To see all local configuration:</para>
-+		<programlisting>systemd-delta
-+		</programlisting>
-+
-+		<para>To see all runtime configuration:</para>
-+		<programlisting>systemd-delta /run
-+		</programlisting>
-+
-+		<para>To see all system unit configuration changes:</para>
-+		<programlisting>systemd-delta systemd/system
-+		</programlisting>
-+
-+		<para>To see all runtime "drop-in" changes for system units:</para>
-+		<programlisting>systemd-delta --type=extended /run/systemd/system
-+		</programlisting>
-+	</refsect1>
-+
-         <refsect1>
-                 <title>Exit status</title>
- 
-@@ -181,7 +230,8 @@
-         <refsect1>
-                 <title>See Also</title>
-                 <para>
--                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-+                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-+                        <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-                 </para>
-         </refsect1>
- 
-diff --git a/src/delta/delta.c b/src/delta/delta.c
-index 06c7431..a8dd57e 100644
---- a/src/delta/delta.c
-+++ b/src/delta/delta.c
-@@ -4,6 +4,7 @@
-   This file is part of systemd.
- 
-   Copyright 2012 Lennart Poettering
-+  Copyright 2013 Zbigniew Jędrzejewski-Szmek
- 
-   systemd is free software; you can redistribute it and/or modify it
-   under the terms of the GNU Lesser General Public License as published by
-@@ -348,7 +349,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
-         }
- }
- 
--static int process_suffix(const char *suffix) {
-+static int process_suffix(const char *suffix, const char *onlyprefix) {
-         const char *p;
-         char *f;
-         Hashmap *top, *bottom, *drops;
-@@ -393,20 +394,23 @@ static int process_suffix(const char *suffix) {
-                 o = hashmap_get(bottom, key);
-                 assert(o);
- 
--                if (path_equal(o, f))
--                        notify_override_unchanged(f);
--                else {
--                        k = found_override(f, o);
--                        if (k < 0)
--                                r = k;
--                        else
--                                n_found += k;
-+                if (!onlyprefix || startswith(o, onlyprefix)) {
-+                        if (path_equal(o, f)) {
-+                                notify_override_unchanged(f);
-+                        } else {
-+                                k = found_override(f, o);
-+                                if (k < 0)
-+                                        r = k;
-+                                else
-+                                        n_found += k;
-+                        }
-                 }
- 
-                 h = hashmap_get(drops, key);
-                 if (h)
-                         HASHMAP_FOREACH(o, h, j)
--                                n_found += notify_override_extended(f, o);
-+                                if (!onlyprefix || startswith(o, onlyprefix))
-+                                        n_found += notify_override_extended(f, o);
-         }
- 
- finish:
-@@ -425,24 +429,41 @@ finish:
-         return r < 0 ? r : n_found;
- }
- 
--static int process_suffix_chop(const char *suffix) {
-+static int process_suffixes(const char *onlyprefix) {
-+        const char *n;
-+        int n_found = 0, r;
-+
-+        NULSTR_FOREACH(n, suffixes) {
-+                r = process_suffix(n, onlyprefix);
-+                if (r < 0)
-+                        return r;
-+                else
-+                        n_found += r;
-+        }
-+        return n_found;
-+}
-+
-+static int process_suffix_chop(const char *arg) {
-         const char *p;
- 
--        assert(suffix);
-+        assert(arg);
- 
--        if (!path_is_absolute(suffix))
--                return process_suffix(suffix);
-+        if (!path_is_absolute(arg))
-+                return process_suffix(arg, NULL);
- 
-         /* Strip prefix from the suffix */
-         NULSTR_FOREACH(p, prefixes) {
--                if (startswith(suffix, p)) {
--                        suffix += strlen(p);
-+                const char *suffix = startswith(arg, p);
-+                if (suffix) {
-                         suffix += strspn(suffix, "/");
--                        return process_suffix(suffix);
-+                        if (*suffix)
-+                                return process_suffix(suffix, NULL);
-+                        else
-+                                return process_suffixes(arg);
-                 }
-         }
- 
--        log_error("Invalid suffix specification %s.", suffix);
-+        log_error("Invalid suffix specification %s.", arg);
-         return -EINVAL;
- }
- 
-@@ -596,15 +617,11 @@ int main(int argc, char *argv[]) {
-                 }
- 
-         } else {
--                const char *n;
--
--                NULSTR_FOREACH(n, suffixes) {
--                        k = process_suffix(n);
--                        if (k < 0)
--                                r = k;
--                        else
--                                n_found += k;
--                }
-+                k = process_suffixes(NULL);
-+                if (k < 0)
-+                        r = k;
-+                else
-+                        n_found += k;
-         }
- 
-         if (r >= 0)
diff --git a/SOURCES/0153-mount-don-t-run-quotaon-only-for-network-filesystems.patch b/SOURCES/0153-mount-don-t-run-quotaon-only-for-network-filesystems.patch
new file mode 100644
index 0000000..89e0aad
--- /dev/null
+++ b/SOURCES/0153-mount-don-t-run-quotaon-only-for-network-filesystems.patch
@@ -0,0 +1,32 @@
+From 1ab30e0ea4b78ea20e64dccf729668d18a0fac51 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Mon, 30 Mar 2015 14:42:02 +0200
+Subject: [PATCH] mount: don't run quotaon only for network filesystems
+
+If you have for example ext4 on iscsi devices it is possible to setup
+qoutas there. Unfortunately, because such fstab entry contains _netdev,
+systemd will not add dependency to quotaon.service.
+
+(cherry picked from commit 11041c8488e956924870379a9203d7f1cac3b038)
+
+Cherry-picked from: f66964d
+Resolves: #1222517
+---
+ src/core/mount.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index 3ae0eb4..3359220 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -107,7 +107,9 @@ static bool mount_is_auto(const MountParameters *p) {
+ static bool needs_quota(const MountParameters *p) {
+         assert(p);
+ 
+-        if (mount_is_network(p))
++        /* Quotas are not enabled on network filesystems,
++         * but we them, for example, on storages connected via iscsi */
++        if (p->fstype && fstype_is_network(p->fstype))
+                 return false;
+ 
+         if (mount_is_bind(p))
diff --git a/SOURCES/0154-man-units-tmpfiles.d-5-cleanup.patch b/SOURCES/0154-man-units-tmpfiles.d-5-cleanup.patch
deleted file mode 100644
index 6d8b332..0000000
--- a/SOURCES/0154-man-units-tmpfiles.d-5-cleanup.patch
+++ /dev/null
@@ -1,401 +0,0 @@
-From b2d9ad357e136b289238eb05648c504d0c0bc06b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 24 Dec 2013 10:21:45 -0500
-Subject: [PATCH] man,units: tmpfiles.d(5) cleanup
-
-Condition for /lib (necessary for split /usr) was missing from the unit.
-
-Some changes which were done in tmpfiles.d(5) were not carried over to
-systemd-tmpfiles(1).
-
-Also use markup where possible.
-
-Conflicts:
-	man/tmpfiles.d.xml
----
- man/systemd-tmpfiles.xml                |  53 ++++++----
- man/tmpfiles.d.xml                      | 168 +++++++++++++++++++-------------
- units/systemd-tmpfiles-setup.service.in |   1 +
- 3 files changed, 134 insertions(+), 88 deletions(-)
-
-diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
-index ba727e1..91c0372 100644
---- a/man/systemd-tmpfiles.xml
-+++ b/man/systemd-tmpfiles.xml
-@@ -54,7 +54,9 @@
- 
-         <refsynopsisdiv>
-                 <cmdsynopsis>
--                        <command>systemd-tmpfiles <arg choice="opt" rep="repeat">OPTIONS</arg> <arg choice="opt" rep="repeat">CONFIGURATION FILE</arg></command>
-+                        <command>systemd-tmpfiles</command>
-+                        <arg choice="opt" rep="repeat">OPTIONS</arg>
-+                        <arg choice="opt" rep="repeat"><replaceable>CONFIGFILE</replaceable></arg>
-                 </cmdsynopsis>
- 
-                 <para><filename>systemd-tmpfiles-setup.service</filename></para>
-@@ -67,22 +69,20 @@
-                 <title>Description</title>
- 
-                 <para><command>systemd-tmpfiles</command> creates,
--                deletes and cleans up volatile and temporary files and
-+                deletes, and cleans up volatile and temporary files and
-                 directories, based on the configuration file format and
--                location specified in <citerefentry>
--                        <refentrytitle>tmpfiles.d</refentrytitle>
--                        <manvolnum>5</manvolnum>
--                </citerefentry>.</para>
-+                location specified in
-+                <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
-+                </para>
- 
-                 <para>If invoked with no arguments, it applies all
-                 directives from all configuration files. If one or
-                 more filenames are passed on the command line, only
-                 the directives in these files are applied. If only
-                 the basename of a configuration file is specified,
--                all configuration directories as specified in <citerefentry>
--                        <refentrytitle>tmpfiles.d</refentrytitle>
--                        <manvolnum>5</manvolnum>
--                </citerefentry> are searched for a matching file.</para>
-+                all configuration directories as specified in
-+                <citerefentry><refentrytitle>tmpfiles.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-+                are searched for a matching file.</para>
-         </refsect1>
- 
-         <refsect1>
-@@ -94,12 +94,25 @@
- 
-                         <varlistentry>
-                                 <term><option>--create</option></term>
--                                <listitem><para>If this option is passed, all
--                                files and directories marked with f,
--                                F, d, D in the configuration files are
--                                created. Files and directories marked with z,
--                                Z have their ownership, access mode and security
--                                labels set.</para></listitem>
-+                                <listitem><para>If this option is
-+                                passed, all files and directories
-+                                marked with <varname>f</varname>,
-+                                <varname>F</varname>,
-+                                <varname>w</varname>,
-+                                <varname>d</varname>,
-+                                <varname>D</varname>,
-+                                <varname>p</varname>,
-+                                <varname>L</varname>,
-+                                <varname>c</varname>,
-+                                <varname>b</varname>,
-+                                <varname>m</varname> in the
-+                                configuration files are created or
-+                                written to. Files and directories
-+                                marked with <varname>z</varname>,
-+                                <varname>Z</varname>,
-+                                <varname>m</varname> have their
-+                                ownership, access mode and security
-+                                labels set. </para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-@@ -113,9 +126,11 @@
-                         <varlistentry>
-                                 <term><option>--remove</option></term>
-                                 <listitem><para>If this option is
--                                passed, all files and directories marked
--                                with r, R in the configuration files
--                                are removed.</para></listitem>
-+                                passed, all files and directories
-+                                marked with <varname>r</varname>,
-+                                <varname>R</varname> in the
-+                                configuration files are
-+                                removed.</para></listitem>
-                         </varlistentry>
-                         <varlistentry>
-                                 <term><option>--prefix=PATH</option></term>
-diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
-index e8b630d..a00637b 100644
---- a/man/tmpfiles.d.xml
-+++ b/man/tmpfiles.d.xml
-@@ -67,23 +67,32 @@
-                 <title>Configuration Format</title>
- 
-                 <para>Each configuration file shall be named in the
--                style of <filename>&lt;package&gt;.conf</filename>.
--                Files in <filename>/etc/</filename> override files
--                with the same name in <filename>/usr/lib/</filename>
--                and <filename>/run/</filename>.  Files in
--                <filename>/run/</filename> override files with the same
--                name in <filename>/usr/lib/</filename>. Packages
-+                style of
-+                <filename><replaceable>package</replaceable>.conf</filename>
-+                or
-+                <filename><replaceable>package</replaceable>-<replaceable>part</replaceable>.conf</filename>.
-+                The second variant should be used when it is desirable
-+                to make it easy to override just this part of
-+                configuration.</para>
-+
-+                <para>Files in <filename>/etc/tmpfiles.d</filename>
-+                override files with the same name in
-+                <filename>/usr/lib/tmpfiles.d</filename> and
-+                <filename>/run/tmpfiles.d</filename>. Files in
-+                <filename>/run/tmpfiles.d</filename> override files
-+                with the same name in
-+                <filename>/usr/lib/tmpfiles.d</filename>. Packages
-                 should install their configuration files in
--                <filename>/usr/lib/</filename>. Files in
--                <filename>/etc/</filename> are reserved for the local
--                administrator, who may use this logic to override the
--                configuration files installed by vendor packages. All
--                configuration files are sorted by their filename in
--                lexicographic order, regardless in which of the
--                directories they reside. If multiple files specify the
--                same path, the entry in the file with the lexicographically
--                earliest name will be applied, all all other conflicting
--                entries logged as errors.</para>
-+                <filename>/usr/lib/tmpfiles.d</filename>. Files in
-+                <filename>/etc/tmpfiles.d</filename> are reserved for
-+                the local administrator, who may use this logic to
-+                override the configuration files installed by vendor
-+                packages. All configuration files are sorted by their
-+                filename in lexicographic order, regardless in which
-+                of the directories they reside. If multiple files
-+                specify the same path, the entry in the file with the
-+                lexicographically earliest name will be applied, all
-+                all other conflicting entries logged as errors.</para>
- 
-                 <para>If the administrator wants to disable a
-                 configuration file supplied by the vendor, the
-@@ -93,10 +102,10 @@
-                 same filename.</para>
- 
-                 <para>The configuration format is one line per path
--                containing action, path, mode, ownership, age and argument
-+                containing type, path, mode, ownership, age, and argument
-                 fields:</para>
- 
--                <programlisting>Type Path        Mode UID  GID  Age Argument
-+                <programlisting>#Type Path        Mode UID  GID  Age Argument
- d    /run/user   0755 root root 10d -
- L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
- 
-@@ -109,12 +118,12 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                         <variablelist>
-                                 <varlistentry>
-                                         <term><varname>f</varname></term>
--                                        <listitem><para>Create a file if it does not exist yet (optionally writing a short string into it, if the argument parameter is passed)</para></listitem>
-+                                        <listitem><para>Create a file if it does not exist yet. If the argument parameter is given, it will be written to the file.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-                                         <term><varname>F</varname></term>
--                                        <listitem><para>Create or truncate a file (optionally writing a short string into it, if the argument parameter is passed)</para></listitem>
-+                                        <listitem><para>Create or truncate a file. If the argument parameter is given, it will be written to the file.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-@@ -127,32 +136,32 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
- 
-                                 <varlistentry>
-                                         <term><varname>d</varname></term>
--                                        <listitem><para>Create a directory if it does not exist yet</para></listitem>
-+                                        <listitem><para>Create a directory if it does not exist yet.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-                                         <term><varname>D</varname></term>
--                                        <listitem><para>Create or empty a directory</para></listitem>
-+                                        <listitem><para>Create or empty a directory.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-                                         <term><varname>p</varname></term>
--                                        <listitem><para>Create a named pipe (FIFO) if it does not exist yet</para></listitem>
-+                                        <listitem><para>Create a named pipe (FIFO) if it does not exist yet.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-                                         <term><varname>L</varname></term>
--                                        <listitem><para>Create a symlink if it does not exist yet</para></listitem>
-+                                        <listitem><para>Create a symlink if it does not exist yet.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-                                         <term><varname>c</varname></term>
--                                        <listitem><para>Create a character device node if it does not exist yet</para></listitem>
-+                                        <listitem><para>Create a character device node if it does not exist yet.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-                                         <term><varname>b</varname></term>
--                                        <listitem><para>Create a block device node if it does not exist yet</para></listitem>
-+                                        <listitem><para>Create a block device node if it does not exist yet.</para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-@@ -174,11 +183,12 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                                         as controlled with the Age
-                                         parameter. Note that lines of
-                                         this type do not influence the
--                                        effect of r or R lines. Lines
--                                        of this type accept
-+                                        effect of <varname>r</varname>
-+                                        or <varname>R</varname> lines.
-+                                        Lines of this type accept
-                                         shell-style globs in place of
--                                        normal path
--                                        names.</para></listitem>
-+                                        normal path names.
-+                                        </para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-@@ -187,28 +197,31 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                                         during cleaning. Use this type
-                                         to exclude paths from clean-up
-                                         as controlled with the Age
--                                        parameter. Unlike x this
-+                                        parameter. Unlike
-+                                        <varname>x</varname>, this
-                                         parameter will not exclude the
--                                        content if path is a directory,
--                                        but only directory itself.
--                                        Note that lines of this type do
--                                        not influence the effect of r
--                                        or R lines. Lines of this type
--                                        accept shell-style globs in
--                                        place of normal path
--                                        names.</para></listitem>
-+                                        content if path is a
-+                                        directory, but only directory
-+                                        itself. Note that lines of
-+                                        this type do not influence the
-+                                        effect of <varname>r</varname>
-+                                        or <varname>R</varname> lines.
-+                                        Lines of this type accept
-+                                        shell-style globs in place of
-+                                        normal path names.
-+                                        </para></listitem>
-                                 </varlistentry>
- 
-                                 <varlistentry>
-                                         <term><varname>r</varname></term>
-                                         <listitem><para>Remove a file
--                                        or directory if it
--                                        exists. This may not be used
--                                        to remove non-empty
--                                        directories, use R for
--                                        that. Lines of this type
--                                        accept shell-style globs in
--                                        place of normal path
-+                                        or directory if it exists.
-+                                        This may not be used to remove
-+                                        non-empty directories, use
-+                                        <varname>R</varname> for that.
-+                                        Lines of this type accept
-+                                        shell-style globs in place of
-+                                        normal path
-                                         names.</para></listitem>
-                                 </varlistentry>
- 
-@@ -308,11 +321,14 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                         <para>The file access mode to use when
-                         creating this file or directory. If omitted or
-                         when set to -, the default is used: 0755 for
--                        directories, 0644 for all other file
--                        objects. For z, Z lines, if omitted or when set
--                        to -, the file access mode will not be
--                        modified. This parameter is ignored for x, r,
--                        R, L lines.</para>
-+                        directories, 0644 for all other file objects.
-+                        For <varname>z</varname>, <varname>Z</varname>
-+                        lines, if omitted or when set to
-+                        <literal>-</literal>, the file access mode
-+                        will not be modified. This parameter is
-+                        ignored for <varname>x</varname>,
-+                        <varname>r</varname>, <varname>R</varname>,
-+                        <varname>L</varname> lines.</para>
-                 </refsect2>
- 
-                 <refsect2>
-@@ -321,10 +337,15 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                         <para>The user and group to use for this file
-                         or directory. This may either be a numeric
-                         user/group ID or a user or group name. If
--                        omitted or when set to -, the default 0 (root)
--                        is used. For z, Z lines, when omitted or when set to -,
--                        the file ownership will not be modified.
--                        These parameters are ignored for x, r, R, L lines.</para>
-+                        omitted or when set to <literal>-</literal>,
-+                        the default 0 (root) is used. For
-+                        <varname>z</varname>, <varname>Z</varname>
-+                        lines, when omitted or when set to -, the file
-+                        ownership will not be modified. These
-+                        parameters are ignored for
-+                        <varname>x</varname>, <varname>r</varname>,
-+                        <varname>R</varname>, <varname>L</varname>
-+                        lines.</para>
-                 </refsect2>
- 
-                 <refsect2>
-@@ -357,28 +378,37 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                         <para>When the age is set to zero, the files are cleaned
-                         unconditionally.</para>
- 
--                        <para>The age field only applies to lines starting with
--                        d, D and x. If omitted or set to -, no automatic clean-up
--                        is done.</para>
-+                        <para>The age field only applies to lines
-+                        starting with <varname>d</varname>,
-+                        <varname>D</varname>, and
-+                        <varname>x</varname>. If omitted or set to
-+                        <literal>-</literal>, no automatic clean-up is
-+                        done.</para>
- 
-                         <para>If the age field starts with a tilde
--                        character (~), the clean-up is only applied to
--                        files and directories one level inside the
--                        directory specified, but not the files and
--                        directories immediately inside it.</para>
-+                        character <literal>~</literal>, the clean-up
-+                        is only applied to files and directories one
-+                        level inside the directory specified, but not
-+                        the files and directories immediately inside
-+                        it.</para>
-                 </refsect2>
- 
-                 <refsect2>
-                         <title>Argument</title>
- 
--                        <para>For L lines determines the destination
--                        path of the symlink. For c, b determines the
-+                        <para>For <varname>L</varname> lines
-+                        determines the destination path of the
-+                        symlink. For <varname>c</varname>,
-+                        <varname>b</varname> determines the
-                         major/minor of the device node, with major and
--                        minor formatted as integers, separated by :,
--                        e.g. "1:3". For f, F, w may be used to specify
--                        a short string that is written to the file,
--                        suffixed by a newline. Ignored for all other
--                        lines.</para>
-+                        minor formatted as integers, separated by
-+                        <literal>:</literal>, e.g.
-+                        <literal>1:3</literal>. For
-+                        <varname>f</varname>, <varname>F</varname>,
-+                        and <varname>w</varname> may be used to
-+                        specify a short string that is written to the
-+                        file, suffixed by a newline. Ignored for all
-+                        other lines.</para>
-                 </refsect2>
- 
-         </refsect1>
-diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
-index 6f98063..3405e28 100644
---- a/units/systemd-tmpfiles-setup.service.in
-+++ b/units/systemd-tmpfiles-setup.service.in
-@@ -14,6 +14,7 @@ Conflicts=shutdown.target
- After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target
- Before=sysinit.target shutdown.target
- ConditionDirectoryNotEmpty=|/usr/lib/tmpfiles.d
-+ConditionDirectoryNotEmpty=|/lib/tmpfiles.d
- ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d
- ConditionDirectoryNotEmpty=|/etc/tmpfiles.d
- ConditionDirectoryNotEmpty=|/run/tmpfiles.d
diff --git a/SOURCES/0154-mount-fix-up-wording-in-the-comment.patch b/SOURCES/0154-mount-fix-up-wording-in-the-comment.patch
new file mode 100644
index 0000000..672e265
--- /dev/null
+++ b/SOURCES/0154-mount-fix-up-wording-in-the-comment.patch
@@ -0,0 +1,26 @@
+From 07ce9278fbfc06ce14cd16d463788c55442ee163 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Wed, 1 Apr 2015 13:08:25 +0200
+Subject: [PATCH] mount: fix up wording in the comment
+
+(cherry picked from commit 340a1d2330ddc1dd18ad75bcdddf32f63c84b4a1)
+
+Cherry-picked from: 375af09
+Resolves: #1222517
+---
+ src/core/mount.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index 3359220..fd4fb6f 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -108,7 +108,7 @@ static bool needs_quota(const MountParameters *p) {
+         assert(p);
+ 
+         /* Quotas are not enabled on network filesystems,
+-         * but we them, for example, on storages connected via iscsi */
++         * but we want them, for example, on storage connected via iscsi */
+         if (p->fstype && fstype_is_network(p->fstype))
+                 return false;
+ 
diff --git a/SOURCES/0155-tmpfiles-introduce-the-concept-of-unsafe-operations.patch b/SOURCES/0155-tmpfiles-introduce-the-concept-of-unsafe-operations.patch
deleted file mode 100644
index 60be1d3..0000000
--- a/SOURCES/0155-tmpfiles-introduce-the-concept-of-unsafe-operations.patch
+++ /dev/null
@@ -1,281 +0,0 @@
-From 97784aaf5e005bf57c572a6f8ccae5baee59bd0f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 20 Dec 2013 20:25:39 -0500
-Subject: [PATCH] tmpfiles: introduce the concept of unsafe operations
-
-Various operations done by systemd-tmpfiles may only be safely done at
-boot (e.g. removal of X lockfiles in /tmp, creation of /run/nologin).
-Other operations may be done at any point in time (e.g. setting the
-ownership on /{run,var}/log/journal). This distinction is largely
-orthogonal to the type of operation.
-
-A new switch --unsafe is added, and operations which should only be
-executed during bootup are marked with an exclamation mark in the
-configuration files. systemd-tmpfiles.service is modified to use this
-switch, and guards are added so it is hard to re-start it by mistake.
-
-If we install a new version of systemd, we actually want to enforce
-some changes to tmpfiles configuration immediately. This should now be
-possible to do safely, so distribution packages can be modified to
-execute the "safe" subset at package installation time.
-
-/run/nologin creation is split out into a separate service, to make it
-easy to override.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1043212
-https://bugzilla.redhat.com/show_bug.cgi?id=1045849
----
- Makefile.am                             |  1 +
- man/systemd-tmpfiles.xml                |  6 ++++++
- man/tmpfiles.d.xml                      | 25 +++++++++++++++++++++++++
- src/tmpfiles/tmpfiles.c                 | 22 +++++++++++++++++++---
- tmpfiles.d/legacy.conf                  |  6 +++---
- tmpfiles.d/systemd-nologin.conf         | 11 +++++++++++
- tmpfiles.d/systemd.conf                 |  4 +---
- tmpfiles.d/x11.conf                     |  2 +-
- units/systemd-tmpfiles-setup.service.in |  6 ++++--
- 9 files changed, 71 insertions(+), 12 deletions(-)
- create mode 100644 tmpfiles.d/systemd-nologin.conf
-
-diff --git a/Makefile.am b/Makefile.am
-index 3103bac..f4867d9 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1589,6 +1589,7 @@ nodist_systemunit_DATA += \
- 
- dist_tmpfiles_DATA = \
- 	tmpfiles.d/systemd.conf \
-+	tmpfiles.d/systemd-nologin.conf \
- 	tmpfiles.d/tmp.conf \
- 	tmpfiles.d/x11.conf
- 
-diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
-index 91c0372..495247e 100644
---- a/man/systemd-tmpfiles.xml
-+++ b/man/systemd-tmpfiles.xml
-@@ -133,6 +133,12 @@
-                                 removed.</para></listitem>
-                         </varlistentry>
-                         <varlistentry>
-+                                <term><option>--unsafe</option></term>
-+                                <listitem><para>Also execute lines
-+                                with an exclamation mark.
-+                                </para></listitem>
-+                        </varlistentry>
-+                        <varlistentry>
-                                 <term><option>--prefix=PATH</option></term>
-                                 <listitem><para>Only apply rules that
-                                 apply to paths with the specified
-diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
-index a00637b..39aa68d 100644
---- a/man/tmpfiles.d.xml
-+++ b/man/tmpfiles.d.xml
-@@ -113,6 +113,9 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                 <refsect2>
-                         <title>Type</title>
- 
-+                        <para>The type consists of a single letter and
-+                        optionally an exclamation mark.</para>
-+
-                         <para>The following line types are understood:</para>
- 
-                         <variablelist>
-@@ -262,6 +265,28 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                                         names.</para></listitem>
-                                 </varlistentry>
-                         </variablelist>
-+
-+                        <para>If the exclamation mark is used, this
-+                        line is only safe of execute during boot, and
-+                        can break a running system. Lines without the
-+                        exclamation mark are presumed to be safe to
-+                        execute at any time, e.g. on package upgrades.
-+                        <command>systemd-tmpfiles</command> will
-+                        execute line with an exclamation mark only if
-+                        option <option>--unsafe</option> is given.
-+                        </para>
-+
-+                        <para>For example:
-+                        <programlisting>
-+# Make sure these are created by default so that nobody else can
-+d /tmp/.X11-unix 1777 root root 10d
-+
-+# Unlink the X11 lock files
-+r! /tmp/.X[0-9]*-lock
-+                        </programlisting>
-+                        The second line in contrast to the first one
-+                        would break a running system, and will only be
-+                        executed with <option>--unsafe</option>.</para>
-                 </refsect2>
- 
-                 <refsect2>
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 9a397af..1983717 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -106,6 +106,7 @@ static Set *unix_sockets = NULL;
- static bool arg_create = false;
- static bool arg_clean = false;
- static bool arg_remove = false;
-+static bool arg_unsafe = false;
- 
- static char **include_prefixes = NULL;
- static char **exclude_prefixes = NULL;
-@@ -1073,7 +1074,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
-         _cleanup_item_free_ Item *i = NULL;
-         Item *existing;
-         _cleanup_free_ char
--                *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL;
-+                *action = NULL, *mode = NULL, *user = NULL, *group = NULL, *age = NULL, *path = NULL;
-         char type;
-         Hashmap *h;
-         int r, n = -1;
-@@ -1083,8 +1084,8 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
-         assert(buffer);
- 
-         r = sscanf(buffer,
--                   "%c %ms %ms %ms %ms %ms %n",
--                   &type,
-+                   "%ms %ms %ms %ms %ms %ms %n",
-+                   &action,
-                    &path,
-                    &mode,
-                    &user,
-@@ -1096,6 +1097,14 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
-                 return -EIO;
-         }
- 
-+        if (strlen(action) > 2 || (strlen(action) > 1 && action[1] != '!')) {
-+                log_error("[%s:%u] Unknown modifier '%s'", fname, line, action);
-+                return -EINVAL;
-+        } else if (strlen(action) > 1 && !arg_unsafe)
-+                return 0;
-+
-+        type = action[0];
-+
-         i = new0(Item, 1);
-         if (!i)
-                 return log_oom();
-@@ -1266,6 +1275,7 @@ static int help(void) {
-                "     --create               Create marked files/directories\n"
-                "     --clean                Clean up marked directories\n"
-                "     --remove               Remove marked files/directories\n"
-+               "     --unsafe               Execute actions only safe at boot\n"
-                "     --prefix=PATH          Only apply rules that apply to paths with the specified prefix\n"
-                "     --exclude-prefix=PATH  Ignore rules that apply to paths with the specified prefix\n",
-                program_invocation_short_name);
-@@ -1279,6 +1289,7 @@ static int parse_argv(int argc, char *argv[]) {
-                 ARG_CREATE,
-                 ARG_CLEAN,
-                 ARG_REMOVE,
-+                ARG_UNSAFE,
-                 ARG_PREFIX,
-                 ARG_EXCLUDE_PREFIX,
-         };
-@@ -1288,6 +1299,7 @@ static int parse_argv(int argc, char *argv[]) {
-                 { "create",         no_argument,         NULL, ARG_CREATE         },
-                 { "clean",          no_argument,         NULL, ARG_CLEAN          },
-                 { "remove",         no_argument,         NULL, ARG_REMOVE         },
-+                { "unsafe",         no_argument,         NULL, ARG_UNSAFE         },
-                 { "prefix",         required_argument,   NULL, ARG_PREFIX         },
-                 { "exclude-prefix", required_argument,   NULL, ARG_EXCLUDE_PREFIX },
-                 { NULL,             0,                   NULL, 0                  }
-@@ -1318,6 +1330,10 @@ static int parse_argv(int argc, char *argv[]) {
-                         arg_remove = true;
-                         break;
- 
-+                case ARG_UNSAFE:
-+                        arg_unsafe = true;
-+                        break;
-+
-                 case ARG_PREFIX:
-                         if (strv_extend(&include_prefixes, optarg) < 0)
-                                 return log_oom();
-diff --git a/tmpfiles.d/legacy.conf b/tmpfiles.d/legacy.conf
-index 3fff347..a165687 100644
---- a/tmpfiles.d/legacy.conf
-+++ b/tmpfiles.d/legacy.conf
-@@ -29,6 +29,6 @@ d /run/lock/lockdev 0775 root lock -
- # kernel command line options 'fsck.mode=force', 'fsck.mode=skip' and
- # 'quotacheck.mode=force'
- 
--r /forcefsck
--r /fastboot
--r /forcequotacheck
-+r! /forcefsck
-+r! /fastboot
-+r! /forcequotacheck
-diff --git a/tmpfiles.d/systemd-nologin.conf b/tmpfiles.d/systemd-nologin.conf
-new file mode 100644
-index 0000000..d61232b
---- /dev/null
-+++ b/tmpfiles.d/systemd-nologin.conf
-@@ -0,0 +1,11 @@
-+#  This file is part of systemd.
-+#
-+#  systemd is free software; you can redistribute it and/or modify it
-+#  under the terms of the GNU Lesser General Public License as published by
-+#  the Free Software Foundation; either version 2.1 of the License, or
-+#  (at your option) any later version.
-+
-+# See tmpfiles.d(5) and systemd-forbid-user-logins.service(5).
-+# This file has special suffix so it is not run by mistake.
-+
-+F! /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
-diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf
-index a05c657..7c6d6b9 100644
---- a/tmpfiles.d/systemd.conf
-+++ b/tmpfiles.d/systemd.conf
-@@ -8,7 +8,7 @@
- # See tmpfiles.d(5) for details
- 
- d /run/user 0755 root root ~10d
--F /run/utmp 0664 root utmp -
-+F! /run/utmp 0664 root utmp -
- 
- f /var/log/wtmp 0664 root utmp -
- f /var/log/btmp 0600 root utmp -
-@@ -22,8 +22,6 @@ d /run/systemd/users 0755 root root -
- d /run/systemd/machines 0755 root root -
- d /run/systemd/shutdown 0755 root root -
- 
--F /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
--
- m /var/log/journal 2755 root systemd-journal - -
- m /var/log/journal/%m 2755 root systemd-journal - -
- m /run/log/journal 2755 root systemd-journal - -
-diff --git a/tmpfiles.d/x11.conf b/tmpfiles.d/x11.conf
-index ece6a5c..4c96a54 100644
---- a/tmpfiles.d/x11.conf
-+++ b/tmpfiles.d/x11.conf
-@@ -15,4 +15,4 @@ d /tmp/.font-unix 1777 root root 10d
- d /tmp/.Test-unix 1777 root root 10d
- 
- # Unlink the X11 lock files
--r /tmp/.X[0-9]*-lock
-+r! /tmp/.X[0-9]*-lock
-diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
-index 3405e28..c2dcae0 100644
---- a/units/systemd-tmpfiles-setup.service.in
-+++ b/units/systemd-tmpfiles-setup.service.in
-@@ -6,7 +6,7 @@
- #  (at your option) any later version.
- 
- [Unit]
--Description=Recreate Volatile Files and Directories
-+Description=Create Volatile Files and Directories
- Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8)
- DefaultDependencies=no
- Wants=local-fs.target
-@@ -18,8 +18,10 @@ ConditionDirectoryNotEmpty=|/lib/tmpfiles.d
- ConditionDirectoryNotEmpty=|/usr/local/lib/tmpfiles.d
- ConditionDirectoryNotEmpty=|/etc/tmpfiles.d
- ConditionDirectoryNotEmpty=|/run/tmpfiles.d
-+RefuseManualStart=yes
-+RefuseManualStop=yes
- 
- [Service]
- Type=oneshot
- RemainAfterExit=yes
--ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --exclude-prefix=/dev
-+ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --unsafe --exclude-prefix=/dev
diff --git a/SOURCES/0155-udev-net_id-fix-copy-paste-error.patch b/SOURCES/0155-udev-net_id-fix-copy-paste-error.patch
new file mode 100644
index 0000000..d363763
--- /dev/null
+++ b/SOURCES/0155-udev-net_id-fix-copy-paste-error.patch
@@ -0,0 +1,28 @@
+From 400756b14b8272138ba27fdac9a3ec1fddeff676 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Wed, 1 Apr 2015 16:41:41 +0200
+Subject: [PATCH] udev: net_id - fix copy-paste error
+
+In case pci_slot overflows we were truncating pci_path instead.
+
+(cherry picked from commit 16f948cb208f1db9a1665f07ac9b22e416dc19d4)
+
+Cherry-picked from: 1269e4e
+Resolves: #1222517
+---
+ src/udev/udev-builtin-net_id.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 2cc1fd4..66474f7 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -271,7 +271,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
+                 if (dev_id > 0)
+                         l = strpcpyf(&s, l, "d%d", dev_id);
+                 if (l == 0)
+-                        names->pci_path[0] = '\0';
++                        names->pci_slot[0] = '\0';
+         }
+ out:
+         udev_device_unref(pci);
diff --git a/SOURCES/0156-man-don-t-mention-journalctl-dev-sda.patch b/SOURCES/0156-man-don-t-mention-journalctl-dev-sda.patch
new file mode 100644
index 0000000..f260b8f
--- /dev/null
+++ b/SOURCES/0156-man-don-t-mention-journalctl-dev-sda.patch
@@ -0,0 +1,31 @@
+From 3f1ad9b2a6658cd7fc59049d00def3280fd8df5a Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 2 Apr 2015 12:14:57 +0200
+Subject: [PATCH] man: don't mention "journalctl /dev/sda"
+
+It never worked, and nobody ever worked on it, hence don't mention it.
+
+(cherry picked from commit c4f54721175bde35e2051d61d3d23285def9619d)
+
+Cherry-picked from: a9a9aa6
+Resolves: #1222517
+---
+ man/journalctl.xml | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index 770cf9b..08de0ff 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -817,11 +817,6 @@
+ 
+     <programlisting>journalctl /usr/bin/dbus-daemon</programlisting>
+ 
+-    <para>Show all logs of the kernel device node
+-    <filename noindex='true'>/dev/sda</filename>:</para>
+-
+-    <programlisting>journalctl /dev/sda</programlisting>
+-
+     <para>Show all kernel logs from previous boot:</para>
+ 
+     <programlisting>journalctl -k -b -1</programlisting>
diff --git a/SOURCES/0156-sleep-config-fix-useless-check-for-swapfile-type.patch b/SOURCES/0156-sleep-config-fix-useless-check-for-swapfile-type.patch
deleted file mode 100644
index 9e5e16a..0000000
--- a/SOURCES/0156-sleep-config-fix-useless-check-for-swapfile-type.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 4a57577928328ccd3f695a2723872ca9f9d911fb Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Tue, 24 Dec 2013 16:42:06 -0500
-Subject: [PATCH] sleep-config: fix useless check for swapfile type
-
-Since 0c6f1f4ea49 the check was useless, because the kernel will
-ever only write "partition" or "file" there.
-
-OTOH, it is possible that "\\040(deleted)" (escaped " (deleted)")
-will be added for removed files. This should not happen, so add
-a warning to detect those cases.
----
- src/shared/sleep-config.c | 10 +++-------
- 1 file changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
-index 2bb0493..d76e3ad 100644
---- a/src/shared/sleep-config.c
-+++ b/src/shared/sleep-config.c
-@@ -183,7 +183,7 @@ static int hibernation_partition_size(size_t *size, size_t *used) {
-         (void) fscanf(f, "%*s %*s %*s %*s %*s\n");
- 
-         for (i = 1;; i++) {
--                _cleanup_free_ char *dev = NULL, *d = NULL, *type = NULL;
-+                _cleanup_free_ char *dev = NULL, *type = NULL;
-                 size_t size_field, used_field;
-                 int k;
- 
-@@ -202,12 +202,8 @@ static int hibernation_partition_size(size_t *size, size_t *used) {
-                         continue;
-                 }
- 
--                d = cunescape(dev);
--                if (!d)
--                        return -ENOMEM;
--
--                if (!streq(type, "partition") && !streq(type, "file")) {
--                        log_debug("Partition %s has type %s, ignoring.", d, type);
-+                if (streq(type, "partition") && endswith(dev, "\\040(deleted)")) {
-+                        log_warning("Ignoring deleted swapfile '%s'.", dev);
-                         continue;
-                 }
- 
diff --git a/SOURCES/0157-man-resolve-word-omissions.patch b/SOURCES/0157-man-resolve-word-omissions.patch
deleted file mode 100644
index 3e2c3c8..0000000
--- a/SOURCES/0157-man-resolve-word-omissions.patch
+++ /dev/null
@@ -1,725 +0,0 @@
-From 36cd86e0d91fdc201b5e5bb2862cf12606da6fdf Mon Sep 17 00:00:00 2001
-From: Jan Engelhardt <jengelh@inai.de>
-Date: Thu, 26 Dec 2013 02:47:43 +0100
-Subject: [PATCH] man: resolve word omissions
-
-This is a recurring submission and includes corrections to:
-word omissions and word class choice.
-
-Conflicts:
-	man/sd_bus_message_get_cookie.xml
-	man/sd_bus_request_name.xml
-	man/sd_watchdog_enabled.xml
-	man/systemd-getty-generator.xml
----
- man/binfmt.d.xml                            | 4 ++--
- man/journald.conf.xml                       | 2 +-
- man/loginctl.xml                            | 2 +-
- man/sd-daemon.xml                           | 2 +-
- man/sd-journal.xml                          | 2 +-
- man/sd-login.xml                            | 4 ++--
- man/sd_booted.xml                           | 2 +-
- man/sd_get_seats.xml                        | 8 ++++----
- man/sd_id128_get_machine.xml                | 2 +-
- man/sd_id128_randomize.xml                  | 2 +-
- man/sd_id128_to_string.xml                  | 2 +-
- man/sd_is_fifo.xml                          | 2 +-
- man/sd_journal_add_match.xml                | 2 +-
- man/sd_journal_get_catalog.xml              | 2 +-
- man/sd_journal_get_cursor.xml               | 2 +-
- man/sd_journal_get_cutoff_realtime_usec.xml | 2 +-
- man/sd_journal_get_data.xml                 | 2 +-
- man/sd_journal_get_fd.xml                   | 2 +-
- man/sd_journal_get_realtime_usec.xml        | 2 +-
- man/sd_journal_get_usage.xml                | 2 +-
- man/sd_journal_next.xml                     | 6 +++---
- man/sd_journal_print.xml                    | 2 +-
- man/sd_journal_query_unique.xml             | 2 +-
- man/sd_journal_seek_head.xml                | 4 ++--
- man/sd_journal_stream_fd.xml                | 2 +-
- man/sd_listen_fds.xml                       | 4 ++--
- man/sd_login_monitor_new.xml                | 2 +-
- man/sd_notify.xml                           | 4 ++--
- man/sd_pid_get_session.xml                  | 2 +-
- man/sd_seat_get_active.xml                  | 2 +-
- man/sd_session_is_active.xml                | 2 +-
- man/sd_uid_get_state.xml                    | 4 ++--
- man/sysctl.d.xml                            | 4 ++--
- man/systemctl.xml                           | 4 ++--
- man/systemd-getty-generator.xml             | 8 ++++----
- man/systemd-halt.service.xml                | 2 +-
- man/systemd-machine-id-setup.xml            | 2 +-
- man/systemd.preset.xml                      | 4 ++--
- man/systemd.service.xml                     | 2 +-
- man/systemd.socket.xml                      | 4 ++--
- man/systemd.unit.xml                        | 4 ++--
- man/tmpfiles.d.xml                          | 4 ++--
- 42 files changed, 62 insertions(+), 62 deletions(-)
-
-diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml
-index 94f97e0..6f8668b 100644
---- a/man/binfmt.d.xml
-+++ b/man/binfmt.d.xml
-@@ -88,8 +88,8 @@
-                 administrator, who may use this logic to override the
-                 configuration files installed from vendor
-                 packages. All files are sorted by their filename in
--                lexicographic order, regardless in which of the
--                directories they reside. If multiple files specify
-+                lexicographic order, regardless of which of the
-+                directories they reside in. If multiple files specify
-                 the same binary type name, the entry in the file with
-                 the lexicographically latest name will be applied.</para>
- 
-diff --git a/man/journald.conf.xml b/man/journald.conf.xml
-index 8e642a3..b362c5d 100644
---- a/man/journald.conf.xml
-+++ b/man/journald.conf.xml
-@@ -155,7 +155,7 @@
-                                 into the system journal. If
-                                 <literal>uid</literal>, any user ID
-                                 will get his own journal files
--                                regardless whether it belongs to a
-+                                regardless of whether it belongs to a
-                                 system service or refers to a real
-                                 logged in user. If
-                                 <literal>none</literal>, journal files
-diff --git a/man/loginctl.xml b/man/loginctl.xml
-index 1b54ff7..133d6cf 100644
---- a/man/loginctl.xml
-+++ b/man/loginctl.xml
-@@ -109,7 +109,7 @@
- 
-                                 <listitem><para>When showing
-                                 session/user/seat properties, show all
--                                properties regardless whether they are
-+                                properties regardless of whether they are
-                                 set or not.</para></listitem>
-                         </varlistentry>
- 
-diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml
-index 6e804e1..84c1afa 100644
---- a/man/sd-daemon.xml
-+++ b/man/sd-daemon.xml
-@@ -144,7 +144,7 @@
-                 <para>These APIs are implemented in the reference
-                 implementation's <filename>sd-daemon.c</filename> and
-                 <filename>sd-daemon.h</filename> files. These
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file. Alternatively, applications consuming these APIs
-diff --git a/man/sd-journal.xml b/man/sd-journal.xml
-index 6d39611..832d584 100644
---- a/man/sd-journal.xml
-+++ b/man/sd-journal.xml
-@@ -98,7 +98,7 @@
-         <refsect1>
-                 <title>Notes</title>
- 
--                <para>These APIs are implemented as shared library,
-+                <para>These APIs are implemented as a shared library,
-                 which can be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd-login.xml b/man/sd-login.xml
-index 251b35b..1d47b29 100644
---- a/man/sd-login.xml
-+++ b/man/sd-login.xml
-@@ -99,7 +99,7 @@
-                 caller with the libc
-                 <citerefentry><refentrytitle>free</refentrytitle><manvolnum>3</manvolnum></citerefentry>
-                 call after use, including the strings referenced
--                therein. Similar, individual strings returned need to
-+                therein. Similarly, individual strings returned need to
-                 be freed, as well.</para>
- 
-                 <para>As a special exception, instead of an empty
-@@ -120,7 +120,7 @@
-         <refsect1>
-                 <title>Notes</title>
- 
--                <para>These APIs are implemented as shared library,
-+                <para>These APIs are implemented as a shared library,
-                 which can be compiled and linked to with the
-                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_booted.xml b/man/sd_booted.xml
-index 64c0cd9..6f8cc95 100644
---- a/man/sd_booted.xml
-+++ b/man/sd_booted.xml
-@@ -100,7 +100,7 @@
-                 in the reference implementation's
-                 <filename>sd-daemon.c</filename> and
-                 <filename>sd-daemon.h</filename> files. These
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file. Alternatively, applications consuming these APIs
-diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml
-index 8254b7c..1e55af3 100644
---- a/man/sd_get_seats.xml
-+++ b/man/sd_get_seats.xml
-@@ -90,13 +90,13 @@
-                 <constant>NULL</constant> may be returned and should be considered
-                 equivalent to an empty array.</para>
- 
--                <para>Similar, <function>sd_get_sessions()</function> may
-+                <para>Similarly, <function>sd_get_sessions()</function> may
-                 be used to determine all current login sessions.</para>
- 
--                <para>Similar, <function>sd_get_uids()</function> may
-+                <para>Similarly, <function>sd_get_uids()</function> may
-                 be used to determine all Unix users who currently have login sessions.</para>
- 
--                <para>Similar,
-+                <para>Similarly,
-                 <function>sd_get_machine_names()</function> may be
-                 used to determine all current virtual machines and
-                 containers on the system.</para>
-@@ -122,7 +122,7 @@
-                 <function>sd_get_sessions()</function>,
-                 <function>sd_get_uids()</function> and
-                 <function>sd_get_machine_names()</function> interfaces
--                are available as shared library, which can be compiled
-+                are available as a shared library, which can be compiled
-                 and linked to with the
-                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_id128_get_machine.xml b/man/sd_id128_get_machine.xml
-index 6bee7ad..084fda2 100644
---- a/man/sd_id128_get_machine.xml
-+++ b/man/sd_id128_get_machine.xml
-@@ -116,7 +116,7 @@
- 
-                 <para>The <function>sd_id128_get_machine()</function>
-                 and <function>sd_id128_get_boot()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <literal>libsystemd-id128</literal> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_id128_randomize.xml b/man/sd_id128_randomize.xml
-index 0b95803..100de16 100644
---- a/man/sd_id128_randomize.xml
-+++ b/man/sd_id128_randomize.xml
-@@ -95,7 +95,7 @@
-                 <title>Notes</title>
- 
-                 <para>The <function>sd_id128_randomize()</function> interface
--                is available as shared library, which can be compiled
-+                is available as a shared library, which can be compiled
-                 and linked to with the
-                 <literal>libsystemd-id128</literal> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_id128_to_string.xml b/man/sd_id128_to_string.xml
-index 71cf82a..eae2915 100644
---- a/man/sd_id128_to_string.xml
-+++ b/man/sd_id128_to_string.xml
-@@ -118,7 +118,7 @@
- 
-                 <para>The <function>sd_id128_to_string()</function>
-                 and <function>sd_id128_from_string()</function> interfaces are
--                available as shared library, which can be compiled and
-+                available as a shared library, which can be compiled and
-                 linked to with the <literal>libsystemd-id128</literal> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-         </refsect1>
-diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
-index 4d9cd79..5e79453 100644
---- a/man/sd_is_fifo.xml
-+++ b/man/sd_is_fifo.xml
-@@ -208,7 +208,7 @@
-                 related functions are implemented in the reference
-                 implementation's <filename>sd-daemon.c</filename> and
-                 <filename>sd-daemon.h</filename> files. These
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file. Alternatively, applications consuming these APIs
-diff --git a/man/sd_journal_add_match.xml b/man/sd_journal_add_match.xml
-index b6c7b06..6568234 100644
---- a/man/sd_journal_add_match.xml
-+++ b/man/sd_journal_add_match.xml
-@@ -174,7 +174,7 @@
-                 <function>sd_journal_add_disjunction()</function>,
-                 <function>sd_journal_add_conjunction()</function> and
-                 <function>sd_journal_flush_matches()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml
-index 4a7e0a1..ecd329f 100644
---- a/man/sd_journal_get_catalog.xml
-+++ b/man/sd_journal_get_catalog.xml
-@@ -118,7 +118,7 @@
- 
-                 <para>The <function>sd_journal_get_catalog()</function> and
-                 <function>sd_journal_get_catalog_for_message_id()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_get_cursor.xml b/man/sd_journal_get_cursor.xml
-index 4cee7d5..046c154 100644
---- a/man/sd_journal_get_cursor.xml
-+++ b/man/sd_journal_get_cursor.xml
-@@ -130,7 +130,7 @@
- 
-                 <para>The <function>sd_journal_get_cursor()</function>
-                 and <function>sd_journal_test_cursor()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_get_cutoff_realtime_usec.xml b/man/sd_journal_get_cutoff_realtime_usec.xml
-index 9bf8220..287c1c5 100644
---- a/man/sd_journal_get_cutoff_realtime_usec.xml
-+++ b/man/sd_journal_get_cutoff_realtime_usec.xml
-@@ -122,7 +122,7 @@
-                 <function>sd_journal_get_cutoff_realtime_usec()</function>
-                 and
-                 <function>sd_journal_get_cutoff_monotonic_usec()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_get_data.xml b/man/sd_journal_get_data.xml
-index 0e1111e..6ed52b5 100644
---- a/man/sd_journal_get_data.xml
-+++ b/man/sd_journal_get_data.xml
-@@ -203,7 +203,7 @@
-                 <function>sd_journal_set_data_threshold()</function>
-                 and
-                 <function>sd_journal_get_data_threshold()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml
-index 764f716..4b36f97 100644
---- a/man/sd_journal_get_fd.xml
-+++ b/man/sd_journal_get_fd.xml
-@@ -253,7 +253,7 @@ else {
-                 <function>sd_journal_reliable_fd()</function>,
-                 <function>sd_journal_process()</function> and
-                 <function>sd_journal_wait()</function> interfaces are
--                available as shared library, which can be compiled and
-+                available as a shared library, which can be compiled and
-                 linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_get_realtime_usec.xml b/man/sd_journal_get_realtime_usec.xml
-index 8870c29..bf1aa50 100644
---- a/man/sd_journal_get_realtime_usec.xml
-+++ b/man/sd_journal_get_realtime_usec.xml
-@@ -122,7 +122,7 @@
-                 <function>sd_journal_get_realtime_usec()</function>
-                 and
-                 <function>sd_journal_get_monotonic_usec()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_get_usage.xml b/man/sd_journal_get_usage.xml
-index 180d8b2..08d8640 100644
---- a/man/sd_journal_get_usage.xml
-+++ b/man/sd_journal_get_usage.xml
-@@ -84,7 +84,7 @@
-                 <title>Notes</title>
- 
-                 <para>The <function>sd_journal_get_usage()</function>
--                interface is available as shared library, which can be
-+                interface is available as a shared library, which can be
-                 compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_next.xml b/man/sd_journal_next.xml
-index 6e437d1..1409b0d 100644
---- a/man/sd_journal_next.xml
-+++ b/man/sd_journal_next.xml
-@@ -102,7 +102,7 @@
-                 functions such as
-                 <citerefentry><refentrytitle>sd_journal_get_data</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
- 
--                <para>Similar, <function>sd_journal_previous()</function> sets
-+                <para>Similarly, <function>sd_journal_previous()</function> sets
-                 the read pointer back one entry.</para>
- 
-                 <para><function>sd_journal_next_skip()</function> and
-@@ -129,7 +129,7 @@
-                 <citerefentry><refentrytitle>sd_journal_seek_head</refentrytitle><manvolnum>3</manvolnum></citerefentry>
-                 and <function>sd_journal_next()</function> in order to
-                 make iterating through the journal easier. See below
--                for an example. Similar,
-+                for an example. Similarly,
-                 <function>SD_JOURNAL_FOREACH_BACKWARDS()</function>
-                 may be used for iterating the journal in reverse
-                 order.</para>
-@@ -156,7 +156,7 @@
-                 <para>The <function>sd_journal_next()</function>, <function>sd_journal_previous()</function>,
-                 <function>sd_journal_next_skip()</function> and
-                 <function>sd_journal_previous_skip()</function> interfaces are
--                available as shared library, which can be compiled and
-+                available as a shared library, which can be compiled and
-                 linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml
-index e61a648..a716cc3 100644
---- a/man/sd_journal_print.xml
-+++ b/man/sd_journal_print.xml
-@@ -227,7 +227,7 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
-                 <function>sd_journal_printv()</function>,
-                 <function>sd_journal_send()</function> and
-                 <function>sd_journal_sendv()</function> interfaces
--                are available as shared library, which can be compiled
-+                are available as a shared library, which can be compiled
-                 and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_query_unique.xml b/man/sd_journal_query_unique.xml
-index f5d9d2b..f0b9204 100644
---- a/man/sd_journal_query_unique.xml
-+++ b/man/sd_journal_query_unique.xml
-@@ -156,7 +156,7 @@
-                 <para>The <function>sd_journal_query_unique()</function>,
-                 <function>sd_journal_enumerate_unique()</function> and
-                 <function>sd_journal_restart_unique()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_seek_head.xml b/man/sd_journal_seek_head.xml
-index 03de30a..939f0b1 100644
---- a/man/sd_journal_seek_head.xml
-+++ b/man/sd_journal_seek_head.xml
-@@ -94,7 +94,7 @@
-                 seeks to the beginning of the journal, i.e. the oldest
-                 available entry.</para>
- 
--                <para>Similar,
-+                <para>Similarly,
-                 <function>sd_journal_seek_tail()</function> may be
-                 used to seek to the end of the journal, i.e. the most
-                 recent available entry.</para>
-@@ -156,7 +156,7 @@
-                 <function>sd_journal_seek_monotonic_usec()</function>,
-                 <function>sd_journal_seek_realtime_usec()</function>,
-                 and <function>sd_journal_seek_cursor()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_journal_stream_fd.xml b/man/sd_journal_stream_fd.xml
-index 4bd0abc..a8dc8fd 100644
---- a/man/sd_journal_stream_fd.xml
-+++ b/man/sd_journal_stream_fd.xml
-@@ -112,7 +112,7 @@
-                 <title>Notes</title>
- 
-                 <para>The <function>sd_journal_stream_fd()</function>
--                interface is available as shared library, which can
-+                interface is available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-journal</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml
-index 240300d..aaabdbf 100644
---- a/man/sd_listen_fds.xml
-+++ b/man/sd_listen_fds.xml
-@@ -73,7 +73,7 @@
-                 parameter is non-zero,
-                 <function>sd_listen_fds()</function> will unset the
-                 <varname>$LISTEN_FDS</varname>/<varname>$LISTEN_PID</varname>
--                environment variables before returning (regardless
-+                environment variables before returning (regardless of
-                 whether the function call itself succeeded or
-                 not). Further calls to
-                 <function>sd_listen_fds()</function> will then fail,
-@@ -149,7 +149,7 @@
-                 implemented in the reference implementation's
-                 <filename>sd-daemon.c</filename> and
-                 <filename>sd-daemon.h</filename> files. These
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file. Alternatively, applications consuming these APIs
-diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
-index 909a3d9..f439d3e 100644
---- a/man/sd_login_monitor_new.xml
-+++ b/man/sd_login_monitor_new.xml
-@@ -224,7 +224,7 @@ else {
-                 <function>sd_login_monitor_get_fd()</function>,
-                 <function>sd_login_monitor_get_events()</function> and
-                 <function>sd_login_monitor_get_timeout()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_notify.xml b/man/sd_notify.xml
-index 55965ff..e078140 100644
---- a/man/sd_notify.xml
-+++ b/man/sd_notify.xml
-@@ -79,7 +79,7 @@
-                 <para>If the <parameter>unset_environment</parameter>
-                 parameter is non-zero, <function>sd_notify()</function>
-                 will unset the <varname>$NOTIFY_SOCKET</varname>
--                environment variable before returning (regardless
-+                environment variable before returning (regardless of
-                 whether the function call itself succeeded or
-                 not). Further calls to
-                 <function>sd_notify()</function> will then fail, but
-@@ -236,7 +236,7 @@
-                 the reference implementation's
-                 <filename>sd-daemon.c</filename> and
-                 <filename>sd-daemon.h</filename> files. These
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file. Alternatively, applications consuming these APIs
-diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_session.xml
-index e5c7709..ff5905b 100644
---- a/man/sd_pid_get_session.xml
-+++ b/man/sd_pid_get_session.xml
-@@ -186,7 +186,7 @@
-                 <function>sd_pid_get_owner_uid()</function>,
-                 <function>sd_pid_get_machine_name()</function> and
-                 <function>sd_pid_get_slice()</function> interfaces are
--                available as shared library, which can be compiled and
-+                available as a shared library, which can be compiled and
-                 linked to with the
-                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
-index cd87696..23d582d 100644
---- a/man/sd_seat_get_active.xml
-+++ b/man/sd_seat_get_active.xml
-@@ -164,7 +164,7 @@
-                 <function>sd_seat_can_multi_session()</function>,
-                 <function>sd_seat_can_tty()</function> and
-                 <function>sd_seat_can_grapical()</function> interfaces
--                are available as shared library, which can be compiled
-+                are available as a shared library, which can be compiled
-                 and linked to with the
-                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml
-index 293ce71..06891f7 100644
---- a/man/sd_session_is_active.xml
-+++ b/man/sd_session_is_active.xml
-@@ -252,7 +252,7 @@
-                 <function>sd_session_get_class()</function>,
-                 <function>sd_session_get_display()</function> and
-                 <function>sd_session_get_tty()</function>
--                interfaces are available as shared library, which can
-+                interfaces are available as a shared library, which can
-                 be compiled and linked to with the
-                 <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml
-index d4d23f4..0faa765 100644
---- a/man/sd_uid_get_state.xml
-+++ b/man/sd_uid_get_state.xml
-@@ -139,7 +139,7 @@
-                 be returned and should be considered equivalent to an
-                 empty array.</para>
- 
--                <para>Similar, <function>sd_uid_get_seats()</function>
-+                <para>Similarly, <function>sd_uid_get_seats()</function>
-                 may be used to determine the list of seats on which
-                 the user currently has sessions. Similar semantics
-                 apply, however note that the user may have
-@@ -171,7 +171,7 @@
-                 <function>sd_uid_is_on_seat()</function>,
-                 <function>sd_uid_get_sessions()</function>, and
-                 <function>sd_uid_get_seats()</function> interfaces are
--                available as shared library, which can be compiled and
-+                available as a shared library, which can be compiled and
-                 linked to with the <constant>libsystemd-login</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file.</para>
-         </refsect1>
-diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml
-index 854864c..5544283 100644
---- a/man/sysctl.d.xml
-+++ b/man/sysctl.d.xml
-@@ -89,8 +89,8 @@
-                 administrator, who may use this logic to override the
-                 configuration files installed by vendor packages. All
-                 configuration files are sorted by their filename in
--                lexicographic order, regardless in which of the
--                directories they reside. If multiple files specify the
-+                lexicographic order, regardless of which of the
-+                directories they reside in. If multiple files specify the
-                 same variable name, the entry in the file with the
-                 lexicographically latest name will be applied. It is
-                 recommended to prefix all filenames with a two-digit
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index b4bc15d..61deb19 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -250,7 +250,7 @@ systemctl start foo
-           sleep state. Any user may take these locks and privileged
-           users may override these locks. If any locks are taken,
-           shutdown and sleep state requests will normally fail
--          (regardless if privileged or not) and a list of active locks
-+          (regardless of whether privileged or not) and a list of active locks
-           is printed. However, if <option>--ignore-inhibitors</option>
-           is specified, the locks are ignored and not printed, and the
-           operation attempted anyway, possibly requiring additional
-@@ -445,7 +445,7 @@ systemctl start foo
-           with identical immediate effects, however, since the latter
-           is lost on reboot, the changes are lost too.</para>
- 
--          <para>Similar, when used with
-+          <para>Similarly, when used with
-           <command>set-property</command>, make changes only
-           temporarily, so that they are lost on the next
-           reboot.</para>
-diff --git a/man/systemd-getty-generator.xml b/man/systemd-getty-generator.xml
-index da88e72..b1993ae 100644
---- a/man/systemd-getty-generator.xml
-+++ b/man/systemd-getty-generator.xml
-@@ -61,10 +61,10 @@
-                 subsystem. It will also instantiate
-                 <filename>serial-getty@.service</filename> instances
-                 for virtualizer consoles, if execution in a
--                virtualized environment is detected. This should
--                ensure that the user is shown a login prompt at the
--                right place, regardless in which environment the
--                system is started. For example, it is sufficient to
-+                virtualized environment is detected. This
-+                should ensure that the user is shown a login prompt at
-+                the right place, regardless of which environment the
-+                system is started in. For example, it is sufficient to
-                 redirect the kernel console with a kernel command line
-                 argument such as <varname>console=</varname> to get
-                 both kernel messages and a getty prompt on a serial
-diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml
-index 90b443f..99457aa 100644
---- a/man/systemd-halt.service.xml
-+++ b/man/systemd-halt.service.xml
-@@ -65,7 +65,7 @@
-                 <para><filename>systemd-halt.service</filename> is a
-                 system service that is pulled in by
-                 <filename>halt.target</filename> and is responsible
--                for the actual system halt. Similar,
-+                for the actual system halt. Similarly,
-                 <filename>systemd-poweroff.service</filename> is
-                 pulled in by <filename>poweroff.target</filename>,
-                 <filename>systemd-reboot.service</filename> by
-diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
-index fef76bc..bc38d55 100644
---- a/man/systemd-machine-id-setup.xml
-+++ b/man/systemd-machine-id-setup.xml
-@@ -80,7 +80,7 @@
-                 UUID passed is sufficiently unique and is different
-                 for every booted instanced of the VM.</para>
- 
--                <para>Similar, if run inside a Linux container
-+                <para>Similarly, if run inside a Linux container
-                 environment and a UUID is set for the container this
-                 is used to initialize the machine ID. For details see
-                 the documentation of the <ulink
-diff --git a/man/systemd.preset.xml b/man/systemd.preset.xml
-index 16db8cd..55cb4de 100644
---- a/man/systemd.preset.xml
-+++ b/man/systemd.preset.xml
-@@ -126,8 +126,8 @@
-                 administrator, who may use this logic to override the
-                 preset files installed by vendor packages. All preset
-                 files are sorted by their filename in lexicographic
--                order, regardless in which of the directories they
--                reside. If multiple files specify the same unit name,
-+                order, regardless of which of the directories they
-+                reside in. If multiple files specify the same unit name,
-                 the entry in the file with the lexicographically earliest
-                 name will be applied. It is recommended to prefix all
-                 filenames with a two-digit number and a dash, to simplify
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 8f9137c..80a935d 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -712,7 +712,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}
-                                 timeout for the service expires.
-                                 If set to
-                                 <option>always</option>, the service
--                                will be restarted regardless whether
-+                                will be restarted regardless of whether
-                                 it exited cleanly or not, got
-                                 terminated abnormally by a signal or
-                                 hit a timeout.</para>
-diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
-index 1c78562..ac3127d 100644
---- a/man/systemd.socket.xml
-+++ b/man/systemd.socket.xml
-@@ -213,7 +213,7 @@
-                                 traffic on any of the sockets will
-                                 trigger service activation, and all
-                                 listed sockets will be passed to the
--                                service, regardless whether there is
-+                                service, regardless of whether there is
-                                 incoming traffic on them or not. If
-                                 the empty string is assigned to any of
-                                 these options, the list of addresses
-@@ -225,7 +225,7 @@
-                                 it is often desirable to listen on it
-                                 before the interface it is configured
-                                 on is up and running, and even
--                                regardless whether it will be up and
-+                                regardless of whether it will be up and
-                                 running ever at all. To deal with this
-                                 it is recommended to set the
-                                 <varname>FreeBind=</varname> option
-diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
-index 77127ff..b70c5e9 100644
---- a/man/systemd.unit.xml
-+++ b/man/systemd.unit.xml
-@@ -634,7 +634,7 @@
-                                 dependency on another unit is shut
-                                 down while the latter is started up,
-                                 the shut down is ordered before the
--                                start-up regardless whether the
-+                                start-up regardless of whether the
-                                 ordering dependency is actually of
-                                 type <varname>After=</varname> or
-                                 <varname>Before=</varname>. If two
-@@ -938,7 +938,7 @@
-                                 exists, is a regular file and marked
-                                 executable.</para>
- 
--                                <para>Similar,
-+                                <para>Similarly,
-                                 <varname>ConditionKernelCommandLine=</varname>
-                                 may be used to check whether a
-                                 specific kernel command line option is
-diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
-index 39aa68d..ed88751 100644
---- a/man/tmpfiles.d.xml
-+++ b/man/tmpfiles.d.xml
-@@ -88,8 +88,8 @@
-                 the local administrator, who may use this logic to
-                 override the configuration files installed by vendor
-                 packages. All configuration files are sorted by their
--                filename in lexicographic order, regardless in which
--                of the directories they reside. If multiple files
-+                filename in lexicographic order, regardless of which
-+                of the directories they reside in. If multiple files
-                 specify the same path, the entry in the file with the
-                 lexicographically earliest name will be applied, all
-                 all other conflicting entries logged as errors.</para>
diff --git a/SOURCES/0157-units-move-After-systemd-hwdb-update.service-depende.patch b/SOURCES/0157-units-move-After-systemd-hwdb-update.service-depende.patch
new file mode 100644
index 0000000..89729ac
--- /dev/null
+++ b/SOURCES/0157-units-move-After-systemd-hwdb-update.service-depende.patch
@@ -0,0 +1,46 @@
+From 09d583399bf41a61b9b3a96d9eefa51ad4219a6a Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 3 Apr 2015 14:27:16 +0200
+Subject: [PATCH] units: move After=systemd-hwdb-update.service dependency from
+ udev to udev-trigger
+
+Let's move the hwdb regeneration a bit later. Given that hwdb is
+non-essential it should be OK to allow udev to run without it until we
+do the full trigger.
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-April/030074.html
+(cherry picked from commit d8f0930eec248c2f54c85aa5029e1b3775c8dc75)
+
+Cherry-picked from: 84a1e05
+Resolves: #1222517
+---
+ units/systemd-udev-trigger.service.in | 2 +-
+ units/systemd-udevd.service.in        | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/units/systemd-udev-trigger.service.in b/units/systemd-udev-trigger.service.in
+index 0c33909..1e04d11 100644
+--- a/units/systemd-udev-trigger.service.in
++++ b/units/systemd-udev-trigger.service.in
+@@ -10,7 +10,7 @@ Description=udev Coldplug all Devices
+ Documentation=man:udev(7) man:systemd-udevd.service(8)
+ DefaultDependencies=no
+ Wants=systemd-udevd.service
+-After=systemd-udevd-kernel.socket systemd-udevd-control.socket
++After=systemd-udevd-kernel.socket systemd-udevd-control.socket systemd-hwdb-update.service
+ Before=sysinit.target
+ ConditionPathIsReadWrite=/sys
+ 
+diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in
+index 2791f73..a133044 100644
+--- a/units/systemd-udevd.service.in
++++ b/units/systemd-udevd.service.in
+@@ -10,7 +10,7 @@ Description=udev Kernel Device Manager
+ Documentation=man:systemd-udevd.service(8) man:udev(7)
+ DefaultDependencies=no
+ Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket
+-After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-hwdb-update.service systemd-sysusers.service
++After=systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-sysusers.service
+ Before=sysinit.target
+ ConditionPathIsReadWrite=/sys
+ 
diff --git a/SOURCES/0158-man-improvements-to-comma-placement.patch b/SOURCES/0158-man-improvements-to-comma-placement.patch
deleted file mode 100644
index 042cecc..0000000
--- a/SOURCES/0158-man-improvements-to-comma-placement.patch
+++ /dev/null
@@ -1,507 +0,0 @@
-From 17bb3520f3e976c9e1cec61c330b1e37449b7832 Mon Sep 17 00:00:00 2001
-From: Jan Engelhardt <jengelh@inai.de>
-Date: Thu, 26 Dec 2013 02:47:44 +0100
-Subject: [PATCH] man: improvements to comma placement
-
-This is a recurring submission and includes corrections to:
-comma placement.
-
-Conflicts:
-	man/sd_bus_message_get_cookie.xml
-	man/sd_bus_request_name.xml
-	man/sd_session_is_active.xml
-	man/sd_watchdog_enabled.xml
-	man/systemctl.xml
-	man/systemd.exec.xml
-	man/systemd.timer.xml
-	man/systemd.unit.xml
----
- man/halt.xml                           | 2 +-
- man/hostnamectl.xml                    | 2 +-
- man/sd-daemon.xml                      | 4 ++--
- man/sd-readahead.xml                   | 2 +-
- man/sd_booted.xml                      | 2 +-
- man/sd_get_seats.xml                   | 2 +-
- man/sd_is_fifo.xml                     | 2 +-
- man/sd_listen_fds.xml                  | 2 +-
- man/sd_login_monitor_new.xml           | 6 +++---
- man/sd_notify.xml                      | 2 +-
- man/sd_readahead.xml                   | 2 +-
- man/sd_seat_get_active.xml             | 4 ++--
- man/sd_uid_get_state.xml               | 4 ++--
- man/shutdown.xml                       | 2 +-
- man/systemd-analyze.xml                | 2 +-
- man/systemd-ask-password.xml           | 2 +-
- man/systemd-cat.xml                    | 2 +-
- man/systemd-cgls.xml                   | 2 +-
- man/systemd-cgtop.xml                  | 2 +-
- man/systemd-coredumpctl.xml            | 2 +-
- man/systemd-delta.xml                  | 2 +-
- man/systemd-machine-id-setup.xml       | 2 +-
- man/systemd-notify.xml                 | 2 +-
- man/systemd-tmpfiles.xml               | 2 +-
- man/systemd-tty-ask-password-agent.xml | 2 +-
- man/systemd.device.xml                 | 2 +-
- man/systemd.mount.xml                  | 2 +-
- man/systemd.service.xml                | 2 +-
- man/systemd.special.xml                | 2 +-
- man/systemd.swap.xml                   | 2 +-
- man/systemd.xml                        | 2 +-
- man/telinit.xml                        | 2 +-
- man/timedatectl.xml                    | 2 +-
- 33 files changed, 38 insertions(+), 38 deletions(-)
-
-diff --git a/man/halt.xml b/man/halt.xml
-index 2a13d3c..f54a864 100644
---- a/man/halt.xml
-+++ b/man/halt.xml
-@@ -148,7 +148,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml
-index b39fb55..a0776f5 100644
---- a/man/hostnamectl.xml
-+++ b/man/hostnamectl.xml
-@@ -255,7 +255,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/sd-daemon.xml b/man/sd-daemon.xml
-index 84c1afa..b48eac9 100644
---- a/man/sd-daemon.xml
-+++ b/man/sd-daemon.xml
-@@ -83,7 +83,7 @@
-                 <citerefentry><refentrytitle>sd_booted</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
-                 <citerefentry><refentrytitle>sd_is_fifo</refentrytitle><manvolnum>3</manvolnum></citerefentry>
-                 for more information about the functions
--                implemented. In addition to these functions a couple
-+                implemented. In addition to these functions, a couple
-                 of logging prefixes are defined as macros:</para>
- 
-                 <programlisting>#define SD_EMERG   "&lt;0&gt;"  /* system is unusable */
-@@ -135,7 +135,7 @@
-                 implementation. See the respective function man pages
-                 for details.</para>
- 
--                <para>In addition, for details about the algorithms
-+                <para>In addition, for details about the algorithms,
-                 check the liberally licensed reference implementation
-                 sources:
-                 <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/libsystemd-daemon/sd-daemon.c"/>
-diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml
-index f8a0a0b..bcc46b2 100644
---- a/man/sd-readahead.xml
-+++ b/man/sd-readahead.xml
-@@ -83,7 +83,7 @@
-                 reference implementation. See the respective function
-                 man pages for details.</para>
- 
--                <para>In addition, for details about the algorithms
-+                <para>In addition, for details about the algorithms,
-                 check the liberally licensed reference implementation
-                 sources:
-                 <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/readahead/sd-readahead.c"/>
-diff --git a/man/sd_booted.xml b/man/sd_booted.xml
-index 6f8cc95..1e38d2a 100644
---- a/man/sd_booted.xml
-+++ b/man/sd_booted.xml
-@@ -106,7 +106,7 @@
-                 file. Alternatively, applications consuming these APIs
-                 may copy the implementation into their source
-                 tree. For more details about the reference
--                implementation see
-+                implementation, see
-                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
- 
-                 <para>If the reference implementation is used as
-diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml
-index 1e55af3..f0e7655 100644
---- a/man/sd_get_seats.xml
-+++ b/man/sd_get_seats.xml
-@@ -107,7 +107,7 @@
-         <refsect1>
-                 <title>Return Value</title>
- 
--                <para>On success <function>sd_get_seats()</function>,
-+                <para>On success, <function>sd_get_seats()</function>,
-                 <function>sd_get_sessions()</function>,
-                 <function>sd_get_uids()</function> and
-                 <function>sd_get_machine_names()</function> return the
-diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
-index 5e79453..4bb2236 100644
---- a/man/sd_is_fifo.xml
-+++ b/man/sd_is_fifo.xml
-@@ -214,7 +214,7 @@
-                 file. Alternatively, applications consuming these APIs
-                 may copy the implementation into their source
-                 tree. For more details about the reference
--                implementation see
-+                implementation, see
-                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
- 
-                 <para>These functions continue to work as described,
-diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml
-index aaabdbf..6a9e082 100644
---- a/man/sd_listen_fds.xml
-+++ b/man/sd_listen_fds.xml
-@@ -155,7 +155,7 @@
-                 file. Alternatively, applications consuming these APIs
-                 may copy the implementation into their source
-                 tree. For more details about the reference
--                implementation see
-+                implementation, see
-                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
- 
-                 <para>If the reference implementation is used as
-diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml
-index f439d3e..14ff241 100644
---- a/man/sd_login_monitor_new.xml
-+++ b/man/sd_login_monitor_new.xml
-@@ -198,13 +198,13 @@ else {
-         <refsect1>
-                 <title>Return Value</title>
- 
--                <para>On success
-+                <para>On success,
-                 <function>sd_login_monitor_new()</function>,
-                 <function>sd_login_monitor_flush()</function> and
-                 <function>sd_login_monitor_get_timeout()</function>
--                return 0 or a positive integer. On success
-+                return 0 or a positive integer. On success,
-                 <function>sd_login_monitor_get_fd()</function> returns
--                a Unix file descriptor. On success
-+                a Unix file descriptor. On success,
-                 <function>sd_login_monitor_get_events()</function>
-                 returns a combination of <constant>POLLIN</constant>,
-                 <constant>POLLOUT</constant> and suchlike. On failure,
-diff --git a/man/sd_notify.xml b/man/sd_notify.xml
-index e078140..aae27a8 100644
---- a/man/sd_notify.xml
-+++ b/man/sd_notify.xml
-@@ -241,7 +241,7 @@
-                 <constant>libsystemd-daemon</constant> <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-                 file. Alternatively, applications consuming these APIs
-                 may copy the implementation into their source tree. For
--                more details about the reference implementation see
-+                more details about the reference implementation, see
-                 <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
- 
-                 <para>If the reference implementation is used as
-diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml
-index bb01bcf..9827299 100644
---- a/man/sd_readahead.xml
-+++ b/man/sd_readahead.xml
-@@ -139,7 +139,7 @@
-                 <filename>sd-readahead.h</filename> files. It is
-                 recommended that applications consuming this API copy
-                 the implementation into their source tree. For more
--                details about the reference implementation see
-+                details about the reference implementation, see
-                 <citerefentry><refentrytitle>sd-readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry></para>
- 
-                 <para>If -DDISABLE_SYSTEMD is set during compilation,
-diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml
-index 23d582d..c64ba13 100644
---- a/man/sd_seat_get_active.xml
-+++ b/man/sd_seat_get_active.xml
-@@ -143,9 +143,9 @@
-         <refsect1>
-                 <title>Return Value</title>
- 
--                <para> On success
-+                <para> On success,
-                 <function>sd_seat_get_active()</function>
--                returns 0 or a positive integer. On success
-+                returns 0 or a positive integer. On success,
-                 <function>sd_seat_get_sessions()</function> returns
-                 the number of entries in the session identifier
-                 array. If the test succeeds,
-diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml
-index 0faa765..30b254c 100644
---- a/man/sd_uid_get_state.xml
-+++ b/man/sd_uid_get_state.xml
-@@ -152,11 +152,11 @@
-         <refsect1>
-                 <title>Return Value</title>
- 
--                <para>On success
-+                <para>On success,
-                 <function>sd_uid_get_state()</function> returns 0 or a
-                 positive integer. If the test succeeds,
-                 <function>sd_uid_is_on_seat()</function> returns a
--                positive integer, if it fails
-+                positive integer; if it fails,
-                 0. <function>sd_uid_get_sessions()</function> and
-                 <function>sd_uid_get_seats()</function> return the
-                 number of entries in the returned arrays. On failure,
-diff --git a/man/shutdown.xml b/man/shutdown.xml
-index 795fb66..27e7e87 100644
---- a/man/shutdown.xml
-+++ b/man/shutdown.xml
-@@ -164,7 +164,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml
-index aefbfc8..b7753f9 100644
---- a/man/systemd-analyze.xml
-+++ b/man/systemd-analyze.xml
-@@ -270,7 +270,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-ask-password.xml b/man/systemd-ask-password.xml
-index 8af328d..79902cb 100644
---- a/man/systemd-ask-password.xml
-+++ b/man/systemd-ask-password.xml
-@@ -167,7 +167,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml
-index ffb1dfd..ba7a2cf 100644
---- a/man/systemd-cat.xml
-+++ b/man/systemd-cat.xml
-@@ -158,7 +158,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-cgls.xml b/man/systemd-cgls.xml
-index 432706b..152b883 100644
---- a/man/systemd-cgls.xml
-+++ b/man/systemd-cgls.xml
-@@ -145,7 +145,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml
-index 7faedfb..0e1f7c5 100644
---- a/man/systemd-cgtop.xml
-+++ b/man/systemd-cgtop.xml
-@@ -264,7 +264,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml
-index 9ccb67d..67f75d1 100644
---- a/man/systemd-coredumpctl.xml
-+++ b/man/systemd-coredumpctl.xml
-@@ -200,7 +200,7 @@
- 
-         <refsect1>
-                 <title>Exit status</title>
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise. Not finding any matching coredumps is treated
-                 as failure.
-                 </para>
-diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml
-index 4d3ab78..ebaa349 100644
---- a/man/systemd-delta.xml
-+++ b/man/systemd-delta.xml
-@@ -223,7 +223,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
-index bc38d55..7b3aa7e 100644
---- a/man/systemd-machine-id-setup.xml
-+++ b/man/systemd-machine-id-setup.xml
-@@ -116,7 +116,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-notify.xml b/man/systemd-notify.xml
-index a769346..e14977d 100644
---- a/man/systemd-notify.xml
-+++ b/man/systemd-notify.xml
-@@ -172,7 +172,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
-index 495247e..c678031 100644
---- a/man/systemd-tmpfiles.xml
-+++ b/man/systemd-tmpfiles.xml
-@@ -178,7 +178,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd-tty-ask-password-agent.xml b/man/systemd-tty-ask-password-agent.xml
-index 31a18ba..cb5fb43 100644
---- a/man/systemd-tty-ask-password-agent.xml
-+++ b/man/systemd-tty-ask-password-agent.xml
-@@ -148,7 +148,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/systemd.device.xml b/man/systemd.device.xml
-index 002b647..586473c 100644
---- a/man/systemd.device.xml
-+++ b/man/systemd.device.xml
-@@ -75,7 +75,7 @@
-                 udev tag (by default all block and network devices,
-                 and a few others). This may be used to define
-                 dependencies between devices and other units. To tag a
--                udev device use <literal>TAG+="systemd"</literal> in
-+                udev device, use <literal>TAG+="systemd"</literal> in
-                 the udev rules file, see
-                 <citerefentry><refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum></citerefentry>
-                 for details.</para>
-diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
-index df5a79e..6f9f70c 100644
---- a/man/systemd.mount.xml
-+++ b/man/systemd.mount.xml
-@@ -94,7 +94,7 @@
-                 in a unit file
-                 <filename>home-lennart.mount</filename>. For details
-                 about the escaping logic used to convert a file system
--                path to a unit name see
-+                path to a unit name, see
-                 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
- 
-                 <para>Optionally, a mount unit may be accompanied by
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 80a935d..e869f95 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -441,7 +441,7 @@
-                                 <literal>one</literal> and
-                                 <literal>two two</literal>,
-                                 respectively. Since two commands are
--                                specified
-+                                specified,
-                                 <varname>Type=oneshot</varname> must
-                                 be used.</para>
- 
-diff --git a/man/systemd.special.xml b/man/systemd.special.xml
-index 863a029..76bb5cd 100644
---- a/man/systemd.special.xml
-+++ b/man/systemd.special.xml
-@@ -996,7 +996,7 @@
-                 <filename>smartcard.target</filename>,
-                 <filename>sound.target</filename>.</para>
- 
--                <para>In addition the following special unit is
-+                <para>In addition, the following special unit is
-                 understood only when systemd runs as service instance:</para>
- 
-                 <variablelist>
-diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml
-index 13f6c84..5e8b25f 100644
---- a/man/systemd.swap.xml
-+++ b/man/systemd.swap.xml
-@@ -85,7 +85,7 @@
-                 <filename noindex='true'>/dev/sda5</filename> must be configured in a
-                 unit file <filename>dev-sda5.swap</filename>. For
-                 details about the escaping logic used to convert a
--                file system path to a unit name see
-+                file system path to a unit name, see
-                 <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para>
- 
-                 <para>All swap units automatically get the appropriate
-diff --git a/man/systemd.xml b/man/systemd.xml
-index 85c06d3..23a0c26 100644
---- a/man/systemd.xml
-+++ b/man/systemd.xml
-@@ -494,7 +494,7 @@
-                 <filename>/proc</filename>.</para>
- 
-                 <para>For more information about the concepts and
--                ideas behind systemd please refer to the <ulink
-+                ideas behind systemd, please refer to the <ulink
-                 url="http://0pointer.de/blog/projects/systemd.html">Original
-                 Design Document</ulink>.</para>
- 
-diff --git a/man/telinit.xml b/man/telinit.xml
-index bb80939..b20a60a 100644
---- a/man/telinit.xml
-+++ b/man/telinit.xml
-@@ -171,7 +171,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
-diff --git a/man/timedatectl.xml b/man/timedatectl.xml
-index be0ad3f..f4975ce 100644
---- a/man/timedatectl.xml
-+++ b/man/timedatectl.xml
-@@ -222,7 +222,7 @@
-         <refsect1>
-                 <title>Exit status</title>
- 
--                <para>On success 0 is returned, a non-zero failure
-+                <para>On success, 0 is returned, a non-zero failure
-                 code otherwise.</para>
-         </refsect1>
- 
diff --git a/SOURCES/0158-units-explicitly-order-systemd-user-sessions.service.patch b/SOURCES/0158-units-explicitly-order-systemd-user-sessions.service.patch
new file mode 100644
index 0000000..11bbe9e
--- /dev/null
+++ b/SOURCES/0158-units-explicitly-order-systemd-user-sessions.service.patch
@@ -0,0 +1,29 @@
+From d7087b71c5b31bae35cb32a4b87e83d578a2d694 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 3 Apr 2015 14:31:35 +0200
+Subject: [PATCH] units: explicitly order systemd-user-sessions.service after
+ nss-user-lookup.target
+
+We should not allow logins before NIS/LDAP users are available.
+
+(cherry picked from commit efb3e19be9c568974b221990b9e84fb5304c5537)
+
+Cherry-picked from: 6446de5
+Resolves: #1222517
+---
+ units/systemd-user-sessions.service.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/units/systemd-user-sessions.service.in b/units/systemd-user-sessions.service.in
+index 0869e73..c09c05d 100644
+--- a/units/systemd-user-sessions.service.in
++++ b/units/systemd-user-sessions.service.in
+@@ -8,7 +8,7 @@
+ [Unit]
+ Description=Permit User Sessions
+ Documentation=man:systemd-user-sessions.service(8)
+-After=remote-fs.target
++After=remote-fs.target nss-user-lookup.target
+ 
+ [Service]
+ Type=oneshot
diff --git a/SOURCES/0159-man-grammar-and-wording-improvements.patch b/SOURCES/0159-man-grammar-and-wording-improvements.patch
deleted file mode 100644
index 09d5e86..0000000
--- a/SOURCES/0159-man-grammar-and-wording-improvements.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-From 24f82a86f4d61809f9eb913c1244a4a6df7ba896 Mon Sep 17 00:00:00 2001
-From: Jan Engelhardt <jengelh@inai.de>
-Date: Thu, 26 Dec 2013 02:47:45 +0100
-Subject: [PATCH] man: grammar and wording improvements
-
-This is a recurring submission and includes corrections to:
-- missing words, preposition choice.
-- change of /lib to /usr/lib, because that is what most distros are
-  using as the system-wide location for systemd/udev files.
-
-Conflicts:
-	man/journalctl.xml
-	man/sd_bus_message_get_cookie.xml
-	man/sd_bus_request_name.xml
-	man/systemctl.xml
-	man/systemd-networkd.service.xml
-	man/systemd.device.xml
-	man/systemd.exec.xml
-	man/systemd.timer.xml
-	man/udev.xml
----
- man/daemon.xml          | 2 +-
- man/sd_is_fifo.xml      | 2 +-
- man/systemd.service.xml | 2 +-
- man/systemd.unit.xml    | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/man/daemon.xml b/man/daemon.xml
-index 7790420..1fe4546 100644
---- a/man/daemon.xml
-+++ b/man/daemon.xml
-@@ -408,7 +408,7 @@
-                         description files.</para>
- 
-                         <para>In systemd, if the developer or
--                        administrator wants to make sure a service or
-+                        administrator wants to make sure that a service or
-                         other unit is activated automatically on boot,
-                         it is recommended to place a symlink to the
-                         unit file in the <filename>.wants/</filename>
-diff --git a/man/sd_is_fifo.xml b/man/sd_is_fifo.xml
-index 4bb2236..58cd1c9 100644
---- a/man/sd_is_fifo.xml
-+++ b/man/sd_is_fifo.xml
-@@ -165,7 +165,7 @@
-                 called to check whether the specified file descriptor
-                 refers to a special file. If the
-                 <parameter>path</parameter> parameter is not
--                <constant>NULL</constant>, it is checked whether file
-+                <constant>NULL</constant>, it is checked whether the file
-                 descriptor is bound to the specified file
-                 name. Special files in this context are character
-                 device nodes and files in <filename>/proc</filename>
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index e869f95..e3a370f 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -427,7 +427,7 @@
-                                 <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'
-                                 </programlisting>
- 
--                                <para>Only select environment variables
-+                                <para>Only select environment variables that
-                                 are set for executed commands. See
-                                 <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
-                                 </para>
-diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
-index b70c5e9..f6b4b24 100644
---- a/man/systemd.unit.xml
-+++ b/man/systemd.unit.xml
-@@ -548,7 +548,7 @@
-                                 of units. When systemd stops or restarts
-                                 the units listed here, the action is
-                                 propagated to this unit.
--                                Note that this is a one way dependency —
-+                                Note that this is a one-way dependency —
-                                 changes to this unit do not affect the
-                                 listed units.
-                                 </para></listitem>
diff --git a/SOURCES/0159-zsh-completion-update-loginctl.patch b/SOURCES/0159-zsh-completion-update-loginctl.patch
new file mode 100644
index 0000000..3ef5551
--- /dev/null
+++ b/SOURCES/0159-zsh-completion-update-loginctl.patch
@@ -0,0 +1,31 @@
+From caa80561b4acad9d66747ff6eb2b499ea67139e9 Mon Sep 17 00:00:00 2001
+From: Ronny Chevalier <chevalier.ronny@gmail.com>
+Date: Tue, 7 Apr 2015 19:35:13 +0200
+Subject: [PATCH] zsh-completion: update loginctl
+
+(cherry picked from commit 8470025541039f39391815b2ac93952003b7eee8)
+
+Cherry-picked from: def740b
+Resolves: #1222517
+---
+ shell-completion/zsh/_loginctl | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/shell-completion/zsh/_loginctl b/shell-completion/zsh/_loginctl
+index 0de66e1..bd33b66 100644
+--- a/shell-completion/zsh/_loginctl
++++ b/shell-completion/zsh/_loginctl
+@@ -102,10 +102,11 @@ _arguments -s \
+     '--kill-who=[Who to send signal to]:killwho:(main control all)' \
+     {-s+,--signal=}'[Which signal to send]:signal:_signals' \
+     {-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' \
+-    {-M+,--machine=}'[Operate on local container]:machine' \
+-    {-P,--privileged}'[Acquire privileges before execution]' \
++    {-M+,--machine=}'[Operate on local container]:machine:_sd_machines' \
+     {-l,--full}'[Do not ellipsize output]' \
+     '--no-pager[Do not pipe output into a pager]' \
+     '--no-legend[Do not show the headers and footers]' \
+     '--no-ask-password[Do not ask for system passwords]' \
++    {-n+,--lines=}'[Number of journal entries to show]' \
++    {-o+,--output=}'[Change journal output mode]:output modes:_sd_outputmodes' \
+     '*::loginctl command:_loginctl_command'
diff --git a/SOURCES/0160-man-document-fail-nofail-auto-noauto.patch b/SOURCES/0160-man-document-fail-nofail-auto-noauto.patch
deleted file mode 100644
index ddf240b..0000000
--- a/SOURCES/0160-man-document-fail-nofail-auto-noauto.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 9395355f4733cecc72b31f384e313606745c14d2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 25 Dec 2013 23:20:57 -0500
-Subject: [PATCH] man: document fail/nofail, auto/noauto
-
-Also s/filesystem/file system/ in a few places.
-
-Conflicts:
-	TODO
-	man/systemd-fsck@.service.xml
-	man/systemd-fstab-generator.xml
----
- man/systemd-fsck@.service.xml   |  5 ++++-
- man/systemd-fstab-generator.xml |  6 ++++++
- man/systemd-halt.service.xml    |  2 +-
- man/systemd.mount.xml           | 20 +++++++++++++++++++-
- man/systemd.unit.xml            |  2 +-
- man/udevadm.xml                 |  2 +-
- 6 files changed, 32 insertions(+), 5 deletions(-)
-
-diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
-index e934352..c653dc5 100644
---- a/man/systemd-fsck@.service.xml
-+++ b/man/systemd-fsck@.service.xml
-@@ -62,7 +62,10 @@
-                 system
-                 check. <filename>systemd-fsck-root.service</filename> is
-                 responsible for file system checks on the root
--                file system.</para>
-+                file system. The root file system check is performed
-+                before the other file systems. Either service is enabled
-+                at boot if passno in <filename>/etc/fstab</filename> for
-+                the file system is set to a value greater than zero.</para>
- 
-                 <para><filename>systemd-fsck</filename> will
-                 forward file system checking progress to the
-diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml
-index 9ca16c7..e3cf5d2 100644
---- a/man/systemd-fstab-generator.xml
-+++ b/man/systemd-fstab-generator.xml
-@@ -61,6 +61,12 @@
-                 reloaded. This will instantiate mount and swap units
-                 as necessary.</para>
- 
-+                <para>The <varname>passno</varname> field is treated
-+                like a simple boolean, and the ordering information is
-+                discarded. However, if the root file system is
-+                checked, it is checked before all the other
-+                file systems.</para>
-+
-                 <para>See
-                 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-                 and
-diff --git a/man/systemd-halt.service.xml b/man/systemd-halt.service.xml
-index 99457aa..bec2e36 100644
---- a/man/systemd-halt.service.xml
-+++ b/man/systemd-halt.service.xml
-@@ -86,7 +86,7 @@
-                 <para>It is necessary to have this code in a separate binary
-                 because otherwise rebooting after an upgrade might be broken —
-                 the running PID 1 could still depend on libraries which are not
--                available any more, thus keeping the filesystem busy, which
-+                available any more, thus keeping the file system busy, which
-                 then cannot be re-mounted read-only.</para>
- 
-                 <para>Immediately before executing the actual system
-diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
-index 6f9f70c..cadf950 100644
---- a/man/systemd.mount.xml
-+++ b/man/systemd.mount.xml
-@@ -132,7 +132,10 @@
-                 for details). Mounts listed in
-                 <filename>/etc/fstab</filename> will be converted into
-                 native units dynamically at boot and when the
--                configuration of the system manager is reloaded. See
-+                configuration of the system manager is reloaded. In
-+                general, configuring mount points through
-+                <filename>/etc/fstab</filename> is the preferred
-+                approach. See
-                 <citerefentry><refentrytitle>systemd-fstab-generator</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-                 for details about the conversion.</para>
- 
-@@ -159,6 +162,21 @@
-                 <literal>s</literal>, <literal>min</literal>,
-                 <literal>h</literal>, <literal>ms</literal>.</para>
- 
-+                <para>If <option>nofail</option> is given, this mount
-+                will be only wanted, not required, by the
-+                <filename>local-fs.target</filename>. This means that
-+                the boot will continue even if this mount point is not
-+                mounted successfully. Option <option>fail</option> has
-+                the opposite meaning and is the default.</para>
-+
-+                <para>If <option>noauto</option> is given, this mount
-+                will not be added as a dependency for
-+                <filename>local-fs.target</filename>. This means that
-+                it will not be mounted automatically during boot,
-+                unless it is pulled in by some other unit. Option
-+                <option>auto</option> has the opposite meaning and is
-+                the default.</para>
-+
-                 <para>If a mount point is configured in both
-                 <filename>/etc/fstab</filename> and a unit file that
-                 is stored below <filename>/usr</filename>, the former
-diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
-index f6b4b24..4704352 100644
---- a/man/systemd.unit.xml
-+++ b/man/systemd.unit.xml
-@@ -232,7 +232,7 @@
-                 multiple units from a single configuration file. If
-                 systemd looks for a unit configuration file, it will
-                 first search for the literal unit name in the
--                filesystem. If that yields no success and the unit
-+                file system. If that yields no success and the unit
-                 name contains an <literal>@</literal> character, systemd will look for a
-                 unit template that shares the same name but with the
-                 instance string (i.e. the part between the <literal>@</literal> character
-diff --git a/man/udevadm.xml b/man/udevadm.xml
-index a1ffe42..ca3713f 100644
---- a/man/udevadm.xml
-+++ b/man/udevadm.xml
-@@ -461,7 +461,7 @@
-         <varlistentry>
-           <term><option>--root=<replaceable>string</replaceable></option></term>
-           <listitem>
--            <para>Alternative root path in the filesystem for reading and writing files.</para>
-+            <para>Alternative root path in the file system for reading and writing files.</para>
-           </listitem>
-         </varlistentry>
-       </variablelist>
diff --git a/SOURCES/0160-zsh-completion-add-missing-M-completion-for-journalc.patch b/SOURCES/0160-zsh-completion-add-missing-M-completion-for-journalc.patch
new file mode 100644
index 0000000..13077ec
--- /dev/null
+++ b/SOURCES/0160-zsh-completion-add-missing-M-completion-for-journalc.patch
@@ -0,0 +1,25 @@
+From 6cc26ef0b749f56f184faacde210c6674ab83cf4 Mon Sep 17 00:00:00 2001
+From: Ronny Chevalier <chevalier.ronny@gmail.com>
+Date: Tue, 7 Apr 2015 19:35:57 +0200
+Subject: [PATCH] zsh-completion: add missing -M completion for journalctl
+
+(cherry picked from commit b178d279d92fdf002b18dd2f06f2353af14d0a6e)
+
+Cherry-picked from: 6ff6bbf
+Resolves: #1222517
+---
+ shell-completion/zsh/_journalctl | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl
+index a469bbc..863348e 100644
+--- a/shell-completion/zsh/_journalctl
++++ b/shell-completion/zsh/_journalctl
+@@ -76,6 +76,7 @@ _arguments -s \
+     {-F,--field=}'[List all values a certain field takes]:Fields:_list_fields' \
+     '--system[Show system and kernel messages]' \
+     '--user[Show messages from user services]' \
++    {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \
+     {-D+,--directory=}'[Show journal files from directory]:directories:_directories' \
+     '--file=[Operate on specified journal files]:file:_files' \
+     '--root=[Operate on catalog hierarchy under specified directory]:directories:_directories' \
diff --git a/SOURCES/0161-man-fix-description-of-is-enabled-returned-value.patch b/SOURCES/0161-man-fix-description-of-is-enabled-returned-value.patch
deleted file mode 100644
index a29e918..0000000
--- a/SOURCES/0161-man-fix-description-of-is-enabled-returned-value.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 823c9b307bdcbce12ee7af42ab2e8b4a01df1831 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 24 Dec 2013 22:57:15 -0500
-Subject: [PATCH] man: fix description of is-enabled returned value
-
----
- man/systemctl.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index 61deb19..25b03d8 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -932,7 +932,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
-                   <row>
-                     <entry><literal>static</literal></entry>
-                     <entry>Unit is not enabled, but has no provisions for enabling in [Install] section</entry>
--                    <entry>1</entry>
-+                    <entry>0</entry>
-                   </row>
-                   <row>
-                     <entry><literal>disabled</literal></entry>
diff --git a/SOURCES/0161-zsh-completion-update-hostnamectl.patch b/SOURCES/0161-zsh-completion-update-hostnamectl.patch
new file mode 100644
index 0000000..5c3bf36
--- /dev/null
+++ b/SOURCES/0161-zsh-completion-update-hostnamectl.patch
@@ -0,0 +1,48 @@
+From 2cfba1646374d8d10431d0bd647b734ad4f59a49 Mon Sep 17 00:00:00 2001
+From: Ronny Chevalier <chevalier.ronny@gmail.com>
+Date: Tue, 7 Apr 2015 20:14:28 +0200
+Subject: [PATCH] zsh-completion: update hostnamectl
+
+(cherry picked from commit d67b1f525f488e5dfc076972cccf2a6411257fb8)
+
+Cherry-picked from: c5b43a4
+Resolves: #1222517
+---
+ shell-completion/zsh/_hostnamectl | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/shell-completion/zsh/_hostnamectl b/shell-completion/zsh/_hostnamectl
+index a7217a1..7528e06 100644
+--- a/shell-completion/zsh/_hostnamectl
++++ b/shell-completion/zsh/_hostnamectl
+@@ -33,6 +33,14 @@ _hostnamectl_set-deployment() {
+     fi
+ }
+ 
++_hostnamectl_set-location() {
++    if (( CURRENT <= 3 )); then
++        _message "new location"
++    else
++        _message "no more options"
++    fi
++}
++
+ _hostnamectl_command() {
+     local -a _hostnamectl_cmds
+     _hostnamectl_cmds=(
+@@ -40,7 +48,8 @@ _hostnamectl_command() {
+         "set-hostname:Set system hostname"
+         "set-icon-name:Set icon name for host"
+         "set-chassis:Set chassis type for host"
+-        "set-deployment:Set deployment environment"
++        "set-deployment:Set deployment environment for host"
++        "set-location:Set location for host"
+     )
+     if (( CURRENT == 1 )); then
+         _describe -t commands 'hostnamectl commands' _hostnamectl_cmds || compadd "$@"
+@@ -67,4 +76,5 @@ _arguments -s \
+     '--pretty[Only set pretty hostname]' \
+     '--no-ask-password[Do not prompt for password]' \
+     {-H+,--host=}'[Operate on remote host]:userathost:_sd_hosts_or_user_at_host' \
++    {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \
+     '*::hostnamectl commands:_hostnamectl_command'
diff --git a/SOURCES/0162-man-fix-Type-reference.patch b/SOURCES/0162-man-fix-Type-reference.patch
deleted file mode 100644
index 262de6f..0000000
--- a/SOURCES/0162-man-fix-Type-reference.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 8c9d4932e5d6ee02b6fc3373a8f68d89faf49928 Mon Sep 17 00:00:00 2001
-From: Marcos Felipe Rasia de Mello <marcosfrm@gmail.com>
-Date: Thu, 26 Dec 2013 17:47:57 -0200
-Subject: [PATCH] man: fix Type= reference
-
-Simple man page fix attached.
----
- man/systemd.service.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index e3a370f..898c19d 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -139,7 +139,7 @@
- 
-                                 <para>If set to
-                                 <option>simple</option> (the default
--                                value if <varname>BusName=</varname>
-+                                value if <varname>Type=</varname>
-                                 is not specified), it is expected that
-                                 the process configured with
-                                 <varname>ExecStart=</varname> is the
diff --git a/SOURCES/0162-shell-completion-systemctl-switch-root-verb.patch b/SOURCES/0162-shell-completion-systemctl-switch-root-verb.patch
new file mode 100644
index 0000000..0c6a788
--- /dev/null
+++ b/SOURCES/0162-shell-completion-systemctl-switch-root-verb.patch
@@ -0,0 +1,53 @@
+From 15e2a6ebee7eab4a9b2ef57082e949ead17cdd85 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 2 Apr 2015 22:54:35 -0400
+Subject: [PATCH] shell-completion: systemctl switch-root verb
+
+The completion is rudimentary (all files). I think this is OK since
+this is used so rarely. But not having it proposed at all is annoying.
+
+(cherry picked from commit 7b742b3130941b5c8d5e178b6694428fb3b61086)
+
+Cherry-picked from: 166cee1
+Resolves: #1222517
+---
+ shell-completion/bash/systemctl.in | 2 +-
+ shell-completion/zsh/_systemctl.in | 5 +++++
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
+index 8063316..3d787cd 100644
+--- a/shell-completion/bash/systemctl.in
++++ b/shell-completion/bash/systemctl.in
+@@ -160,7 +160,7 @@ _systemctl () {
+                              reboot rescue show-environment suspend get-default
+                              is-system-running'
+                      [NAME]='snapshot'
+-                     [FILE]='link'
++                     [FILE]='link switch-root'
+                   [TARGETS]='set-default'
+         )
+ 
+diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in
+index 7f2d5ac..82edfd3 100644
+--- a/shell-completion/zsh/_systemctl.in
++++ b/shell-completion/zsh/_systemctl.in
+@@ -59,6 +59,7 @@
+     "reboot:Shut down and reboot the system"
+     "kexec:Shut down and reboot the system with kexec"
+     "exit:Ask for user instance termination"
++    "switch-root:Change root directory"
+   )
+ 
+   if (( CURRENT == 1 )); then
+@@ -297,6 +298,10 @@ done
+    _sd_unit_files
+ }
+ 
++(( $+functions[_systemctl_switch-root] )) || _systemctl_switch-root() {
++   _files
++}
++
+ # no systemctl completion for:
+ #    [STANDALONE]='daemon-reexec daemon-reload default
+ #                  emergency exit halt kexec list-jobs list-units
diff --git a/SOURCES/0163-core-automount-beef-up-error-message.patch b/SOURCES/0163-core-automount-beef-up-error-message.patch
new file mode 100644
index 0000000..48de0a5
--- /dev/null
+++ b/SOURCES/0163-core-automount-beef-up-error-message.patch
@@ -0,0 +1,29 @@
+From 64b6bcb807fdafc3609ab0019b3d8e9186fed632 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Thu, 2 Apr 2015 22:58:39 -0400
+Subject: [PATCH] core/automount: beef up error message
+
+This should not happen... but when it does more information is nice.
+
+(cherry picked from commit 50b03c8ea1248f2d35a9042a3fa959adc0ceb819)
+
+Cherry-picked from: 5670709
+Resolves: #1222517
+---
+ src/core/automount.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/automount.c b/src/core/automount.c
+index e4c7941..b391f61 100644
+--- a/src/core/automount.c
++++ b/src/core/automount.c
+@@ -734,7 +734,8 @@ static int automount_dispatch_io(sd_event_source *s, int fd, uint32_t events, vo
+         assert(fd == a->pipe_fd);
+ 
+         if (events != EPOLLIN) {
+-                log_unit_error(UNIT(a)->id, "Got invalid poll event on pipe.");
++                log_unit_error(UNIT(a)->id, "%s: got invalid poll event %"PRIu32" on pipe (fd=%d)",
++                               UNIT(a)->id, events, fd);
+                 goto fail;
+         }
+ 
diff --git a/SOURCES/0163-man-fix-Type-reference-v2.patch b/SOURCES/0163-man-fix-Type-reference-v2.patch
deleted file mode 100644
index c5bfe20..0000000
--- a/SOURCES/0163-man-fix-Type-reference-v2.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 7f66158304287727f35c24d9bd4c700c0923bc73 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 27 Dec 2013 01:18:39 -0500
-Subject: [PATCH] man: fix Type= reference v2
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-grawity:
-
-  It looks like the old version _was_ correct – the default value will
-  be "Type=dbus" if the service has a BusName set.
-
-  Suggested change: "if neither Type= nor BusName= is specified"
----
- man/systemd.service.xml | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 898c19d..71bcfb4 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -139,9 +139,11 @@
- 
-                                 <para>If set to
-                                 <option>simple</option> (the default
--                                value if <varname>Type=</varname>
--                                is not specified), it is expected that
--                                the process configured with
-+                                value if neither
-+                                <varname>Type=</varname> nor
-+                                <varname>BusName=</varname> are
-+                                specified), it is expected that the
-+                                process configured with
-                                 <varname>ExecStart=</varname> is the
-                                 main process of the service. In this
-                                 mode, if the process offers
diff --git a/SOURCES/0164-hwdb-Update-database-of-Bluetooth-company-identifier.patch b/SOURCES/0164-hwdb-Update-database-of-Bluetooth-company-identifier.patch
deleted file mode 100644
index ac7a4f8..0000000
--- a/SOURCES/0164-hwdb-Update-database-of-Bluetooth-company-identifier.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 48acc4b9f59e019748459e01c8c125803ac88df3 Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Fri, 27 Dec 2013 09:35:20 -0800
-Subject: [PATCH] hwdb: Update database of Bluetooth company identifiers
-
----
- hwdb/20-bluetooth-vendor-product.hwdb | 14 +++++++++++++-
- 1 file changed, 13 insertions(+), 1 deletion(-)
-
-diff --git a/hwdb/20-bluetooth-vendor-product.hwdb b/hwdb/20-bluetooth-vendor-product.hwdb
-index 6f8301f..192b715 100644
---- a/hwdb/20-bluetooth-vendor-product.hwdb
-+++ b/hwdb/20-bluetooth-vendor-product.hwdb
-@@ -427,7 +427,7 @@ bluetooth:v008B*
-  ID_VENDOR_FROM_DATABASE=Topcorn Positioning Systems, LLC
- 
- bluetooth:v008C*
-- ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc.
-+ ID_VENDOR_FROM_DATABASE=Qualcomm Retail Solutions, Inc. (formerly Qualcomm Labs, Inc.)
- 
- bluetooth:v008D*
-  ID_VENDOR_FROM_DATABASE=Zscan Software
-@@ -839,3 +839,15 @@ bluetooth:v0115*
- 
- bluetooth:v0116*
-  ID_VENDOR_FROM_DATABASE=1OAK Technologies
-+
-+bluetooth:v0117*
-+ ID_VENDOR_FROM_DATABASE=Wimoto Technologies Inc
-+
-+bluetooth:v0118*
-+ ID_VENDOR_FROM_DATABASE=Radius Networks, Inc.
-+
-+bluetooth:v0119*
-+ ID_VENDOR_FROM_DATABASE=Wize Technology Co., Ltd.
-+
-+bluetooth:v011A*
-+ ID_VENDOR_FROM_DATABASE=Qualcomm Labs, Inc.
diff --git a/SOURCES/0164-man-remove-fs-from-rootfsflags.patch b/SOURCES/0164-man-remove-fs-from-rootfsflags.patch
new file mode 100644
index 0000000..bcbabfd
--- /dev/null
+++ b/SOURCES/0164-man-remove-fs-from-rootfsflags.patch
@@ -0,0 +1,28 @@
+From 3231718bd58d86cc52da68d72fabf0cef48aebbd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 3 Apr 2015 08:28:21 -0400
+Subject: [PATCH] man: remove 'fs' from 'rootfsflags'
+
+rootfsflags does not appear anywhere else.
+
+(cherry picked from commit d6a12e7ca3a17ce0224fd6c95d827e4f97fe2c9a)
+
+Cherry-picked from: 589a5b6
+Resolves: #1222517
+---
+ man/kernel-command-line.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml
+index 919bd13..eb73727 100644
+--- a/man/kernel-command-line.xml
++++ b/man/kernel-command-line.xml
+@@ -295,7 +295,7 @@
+       <varlistentry>
+         <term><varname>root=</varname></term>
+         <term><varname>rootfstype=</varname></term>
+-        <term><varname>rootfsflags=</varname></term>
++        <term><varname>rootflags=</varname></term>
+         <term><varname>ro</varname></term>
+         <term><varname>rw</varname></term>
+ 
diff --git a/SOURCES/0165-man-add-a-note-about-propagating-signals.patch b/SOURCES/0165-man-add-a-note-about-propagating-signals.patch
deleted file mode 100644
index 2db8823..0000000
--- a/SOURCES/0165-man-add-a-note-about-propagating-signals.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From a49c79e807843bbd87961b3d4b81ea79076c043e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 27 Dec 2013 15:27:24 -0500
-Subject: [PATCH] man: add a note about propagating signals
-
----
- man/systemd.service.xml | 39 +++++++++++++++++++++++++--------------
- 1 file changed, 25 insertions(+), 14 deletions(-)
-
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 71bcfb4..af3e0f2 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -734,22 +734,33 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}
-                                 considered successful termination, in
-                                 addition to the normal successful exit
-                                 code 0 and the signals <constant>SIGHUP</constant>, <constant>SIGINT</constant>,
--                                <constant>SIGTERM</constant> and <constant>SIGPIPE</constant>. Exit status
-+                                <constant>SIGTERM</constant>, and <constant>SIGPIPE</constant>. Exit status
-                                 definitions can either be numeric exit
-                                 codes or termination signal names,
--                                separated by spaces. Example:
--                                <literal>SuccessExitStatus=1 2 8
--                                <constant>SIGKILL</constant></literal>, ensures that exit
--                                codes 1, 2, 8 and the termination
--                                signal <constant>SIGKILL</constant> are considered clean
--                                service terminations. This option may
--                                appear more than once in which case
--                                the list of successful exit statuses
--                                is merged. If the empty string is
--                                assigned to this option, the list is
--                                reset, all prior assignments of this
--                                option will have no
--                                effect.</para></listitem>
-+                                separated by spaces. For example:
-+				<programlisting>SuccessExitStatus=1 2 8 <constant>SIGKILL</constant></programlisting>
-+				ensures that exit codes 1, 2, 8 and
-+				the termination signal
-+				<constant>SIGKILL</constant> are
-+				considered clean service terminations.
-+			        </para>
-+
-+				<para>Note that if a process has a
-+				signal handler installed and exits by
-+				calling
-+				<citerefentry><refentrytitle>_exit</refentrytitle><manvolnum>2</manvolnum></citerefentry>
-+				in response to a signal, the
-+				information about the signal is lost.
-+				Programs should instead perform cleanup and kill themselves with the same signal instead. See
-+				<ulink url="http://www.cons.org/cracauer/sigint.html">Proper handling of SIGINT/SIGQUIT — How to be a proper program</ulink>.</para>
-+
-+				<para>This option may appear more than once
-+				in which case the list of successful
-+				exit statuses is merged. If the empty
-+				string is assigned to this option, the
-+				list is reset, all prior assignments
-+				of this option will have no
-+				effect.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
diff --git a/SOURCES/0165-shared-fix-memleak.patch b/SOURCES/0165-shared-fix-memleak.patch
new file mode 100644
index 0000000..de6d162
--- /dev/null
+++ b/SOURCES/0165-shared-fix-memleak.patch
@@ -0,0 +1,56 @@
+From 60cf5a261b6b521b92801447aeace9c63a282ddc Mon Sep 17 00:00:00 2001
+From: Ronny Chevalier <chevalier.ronny@gmail.com>
+Date: Fri, 10 Apr 2015 15:44:02 +0200
+Subject: [PATCH] shared: fix memleak
+
+path was used for 2 purposes but it was not freed before being reused.
+
+(cherry picked from commit 0d67448869bd881fd6aea57de6da98800395cf1f)
+
+Cherry-picked from: 146ec8e
+Resolves: #1222517
+---
+ src/shared/install.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index 92b8d6e..efd489e 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -515,7 +515,7 @@ static int find_symlinks_in_scope(
+                 UnitFileState *state) {
+ 
+         int r;
+-        _cleanup_free_ char *path = NULL;
++        _cleanup_free_ char *normal_path = NULL, *runtime_path = NULL;
+         bool same_name_link_runtime = false, same_name_link = false;
+ 
+         assert(scope >= 0);
+@@ -523,11 +523,11 @@ static int find_symlinks_in_scope(
+         assert(name);
+ 
+         /* First look in runtime config path */
+-        r = get_config_path(scope, true, root_dir, &path);
++        r = get_config_path(scope, true, root_dir, &normal_path);
+         if (r < 0)
+                 return r;
+ 
+-        r = find_symlinks(name, path, &same_name_link_runtime);
++        r = find_symlinks(name, normal_path, &same_name_link_runtime);
+         if (r < 0)
+                 return r;
+         else if (r > 0) {
+@@ -536,11 +536,11 @@ static int find_symlinks_in_scope(
+         }
+ 
+         /* Then look in the normal config path */
+-        r = get_config_path(scope, false, root_dir, &path);
++        r = get_config_path(scope, false, root_dir, &runtime_path);
+         if (r < 0)
+                 return r;
+ 
+-        r = find_symlinks(name, path, &same_name_link);
++        r = find_symlinks(name, runtime_path, &same_name_link);
+         if (r < 0)
+                 return r;
+         else if (r > 0) {
diff --git a/SOURCES/0166-man-include-autoconf-snippet-in-daemon-7.patch b/SOURCES/0166-man-include-autoconf-snippet-in-daemon-7.patch
deleted file mode 100644
index e6f0e03..0000000
--- a/SOURCES/0166-man-include-autoconf-snippet-in-daemon-7.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From f338abbfbc3e385dda57ebc22769e54ab3f5edc8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Fri, 27 Dec 2013 23:44:27 -0500
-Subject: [PATCH] man: include autoconf snippet in daemon(7)
-
-https://bugs.freedesktop.org/show_bug.cgi?id=40446
----
- man/daemon.xml | 20 ++++++++++++++------
- 1 file changed, 14 insertions(+), 6 deletions(-)
-
-diff --git a/man/daemon.xml b/man/daemon.xml
-index 1fe4546..105826a 100644
---- a/man/daemon.xml
-+++ b/man/daemon.xml
-@@ -765,12 +765,20 @@
- 
-                         <programlisting>PKG_PROG_PKG_CONFIG
- AC_ARG_WITH([systemdsystemunitdir],
--        AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),
--        [], [with_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)])
--if test "x$with_systemdsystemunitdir" != xno; then
--        AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])
--fi
--AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_systemdsystemunitdir" != xno ])</programlisting>
-+     AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),,
-+     [with_systemdsystemunitdir=auto])
-+AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [
-+     def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd)
-+
-+     AS_IF([test "x$def_systemdsystemunitdir" = "x"],
-+         [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"],
-+                [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])])
-+          with_systemdsystemunitdir=no],
-+         [with_systemdsystemunitdir=$def_systemdsystemunitdir])])
-+AS_IF([test "x$with_systemdsystemunitdir" != "xno"],
-+      [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])])
-+AM_CONDITIONAL(HAVE_SYSTEMD, [test "x$with_systemdsystemunitdir" != "xno"])
-+</programlisting>
- 
-                         <para>This snippet allows automatic
-                         installation of the unit files on systemd
diff --git a/SOURCES/0166-udevd-fix-synchronization-with-settle-when-handling-.patch b/SOURCES/0166-udevd-fix-synchronization-with-settle-when-handling-.patch
new file mode 100644
index 0000000..8406c23
--- /dev/null
+++ b/SOURCES/0166-udevd-fix-synchronization-with-settle-when-handling-.patch
@@ -0,0 +1,70 @@
+From e55efa99fd829a4699aae6505e02fae7b50a40bc Mon Sep 17 00:00:00 2001
+From: Daniel Drake <drake@endlessm.com>
+Date: Mon, 6 Apr 2015 16:03:43 -0600
+Subject: [PATCH] udevd: fix synchronization with settle when handling inotify
+ events
+
+udev uses inotify to implement a scheme where when the user closes
+a writable device node, a change uevent is forcefully generated.
+In the case of block devices, it actually requests a partition rescan.
+
+This currently can't be synchronized with "udevadm settle", i.e. this
+is not reliable in a script:
+
+ sfdisk --change-id /dev/sda 1 81
+ udevadm settle
+ mount /dev/sda1 /foo
+
+The settle call doesn't synchronize there, so at the same time we try
+to mount the device, udevd is busy removing the partition device nodes and
+readding them again. The mount call often happens in that moment where the
+partition node has been removed but not readded yet.
+
+This exact issue was fixed long ago:
+http://git.kernel.org/cgit/linux/hotplug/udev.git/commit/?id=bb38678e3ccc02bcd970ccde3d8166a40edf92d3
+
+but that fix is no longer valid now that sequence numbers are no longer
+used.
+
+Fix this by forcing another mainloop iteration after handling inotify events
+before unblocking settle. If the inotify event caused us to generate a
+"change" event, we'll pick that up in the following loop iteration, before
+we reach the end of the loop where we respond to settle's control message,
+unblocking it.
+
+(cherry picked from commit 07ba8037bf2a2d6a683fa107ee6f2b9545fca23e)
+
+Cherry-picked from: 7a2e024
+Resolves: #1222517
+---
+ src/udev/udevd.c | 15 ++++++++++++++-
+ 1 file changed, 14 insertions(+), 1 deletion(-)
+
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index e98c1fd..87a3f69 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -1502,9 +1502,22 @@ int main(int argc, char *argv[]) {
+                         continue;
+ 
+                 /* device node watch */
+-                if (is_inotify)
++                if (is_inotify) {
+                         handle_inotify(udev);
+ 
++                        /*
++                         * settle might be waiting on us to determine the queue
++                         * state. If we just handled an inotify event, we might have
++                         * generated a "change" event, but we won't have queued up
++                         * the resultant uevent yet.
++                         *
++                         * Before we go ahead and potentially tell settle that the
++                         * queue is empty, lets loop one more time to update the
++                         * queue state again before deciding.
++                         */
++                        continue;
++                }
++
+                 /* tell settle that we are busy or idle, this needs to be before the
+                  * PING handling
+                  */
diff --git a/SOURCES/0167-python-systemd-fix-is_socket_inet-to-cope-with-ports.patch b/SOURCES/0167-python-systemd-fix-is_socket_inet-to-cope-with-ports.patch
new file mode 100644
index 0000000..39a3bfa
--- /dev/null
+++ b/SOURCES/0167-python-systemd-fix-is_socket_inet-to-cope-with-ports.patch
@@ -0,0 +1,42 @@
+From bac3b41f700542d3944a2e95c7cee1681f2936f4 Mon Sep 17 00:00:00 2001
+From: Simon Farnsworth <simon.farnsworth@onelan.co.uk>
+Date: Wed, 25 Mar 2015 17:00:09 +0000
+Subject: [PATCH] python-systemd: fix is_socket_inet to cope with ports
+
+Just a couple of trivial oversights.
+
+(cherry picked from commit 9f1a574d50c1ffd19f18805cc8a3a433c4f2da37)
+
+Cherry-picked from: 81b3dd9
+Resolves: #1222517
+---
+ src/python-systemd/_daemon.c | 2 +-
+ src/python-systemd/daemon.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
+index 65cfec7..7c5f1b2 100644
+--- a/src/python-systemd/_daemon.c
++++ b/src/python-systemd/_daemon.c
+@@ -225,7 +225,7 @@ static PyObject* is_socket_inet(PyObject *self, PyObject *args) {
+                               &fd, &family, &type, &listening, &port))
+                 return NULL;
+ 
+-        if (port < 0 || port > INT16_MAX) {
++        if (port < 0 || port > UINT16_MAX) {
+                 set_error(-EINVAL, NULL, "port must fit into uint16_t");
+                 return NULL;
+         }
+diff --git a/src/python-systemd/daemon.py b/src/python-systemd/daemon.py
+index 1c386bb..82011ca 100644
+--- a/src/python-systemd/daemon.py
++++ b/src/python-systemd/daemon.py
+@@ -26,7 +26,7 @@ def is_socket(fileobj, family=_AF_UNSPEC, type=0, listening=-1):
+ 
+ def is_socket_inet(fileobj, family=_AF_UNSPEC, type=0, listening=-1, port=0):
+     fd = _convert_fileobj(fileobj)
+-    return _is_socket_inet(fd, family, type, listening)
++    return _is_socket_inet(fd, family, type, listening, port)
+ 
+ def is_socket_unix(fileobj, type=0, listening=-1, path=None):
+     fd = _convert_fileobj(fileobj)
diff --git a/SOURCES/0167-systemd-python-fix-setting-of-exception-codes.patch b/SOURCES/0167-systemd-python-fix-setting-of-exception-codes.patch
deleted file mode 100644
index 32dd320..0000000
--- a/SOURCES/0167-systemd-python-fix-setting-of-exception-codes.patch
+++ /dev/null
@@ -1,325 +0,0 @@
-From b22a215807207c1a6332a22505840478ac633afd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sun, 29 Dec 2013 23:39:28 -0500
-Subject: [PATCH] systemd-python: fix setting of exception codes
-
-The return value of 0 would be treated as failure by mistake,
-resulting in " SystemError: error return without exception set".
-The way that set_error() is used is changed to be the same
-everywhere.
----
- src/python-systemd/_daemon.c | 14 +++++-----
- src/python-systemd/_reader.c | 63 ++++++++++++++++++++------------------------
- 2 files changed, 35 insertions(+), 42 deletions(-)
-
-diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
-index f0ab16f..c6db69f 100644
---- a/src/python-systemd/_daemon.c
-+++ b/src/python-systemd/_daemon.c
-@@ -88,7 +88,7 @@ static PyObject* notify(PyObject *self, PyObject *args, PyObject *keywds) {
- #endif
- 
-         r = sd_notify(unset, msg);
--        if (set_error(r, NULL, NULL))
-+        if (set_error(r, NULL, NULL) < 0)
-                 return NULL;
- 
-         return PyBool_FromLong(r);
-@@ -123,7 +123,7 @@ static PyObject* listen_fds(PyObject *self, PyObject *args, PyObject *keywds) {
- #endif
- 
-         r = sd_listen_fds(unset);
--        if (set_error(r, NULL, NULL))
-+        if (set_error(r, NULL, NULL) < 0)
-                 return NULL;
- 
-         return long_FromLong(r);
-@@ -151,7 +151,7 @@ static PyObject* is_fifo(PyObject *self, PyObject *args) {
- #endif
- 
-         r = sd_is_fifo(fd, path);
--        if (set_error(r, path, NULL))
-+        if (set_error(r, path, NULL) < 0)
-                 return NULL;
- 
-         return PyBool_FromLong(r);
-@@ -179,7 +179,7 @@ static PyObject* is_mq(PyObject *self, PyObject *args) {
- #endif
- 
-         r = sd_is_mq(fd, path);
--        if (set_error(r, path, NULL))
-+        if (set_error(r, path, NULL) < 0)
-                 return NULL;
- 
-         return PyBool_FromLong(r);
-@@ -203,7 +203,7 @@ static PyObject* is_socket(PyObject *self, PyObject *args) {
-                 return NULL;
- 
-         r = sd_is_socket(fd, family, type, listening);
--        if (set_error(r, NULL, NULL))
-+        if (set_error(r, NULL, NULL) < 0)
-                 return NULL;
- 
-         return PyBool_FromLong(r);
-@@ -230,7 +230,7 @@ static PyObject* is_socket_inet(PyObject *self, PyObject *args) {
-         }
- 
-         r = sd_is_socket_inet(fd, family, type, listening, (uint16_t) port);
--        if (set_error(r, NULL, NULL))
-+        if (set_error(r, NULL, NULL) < 0)
-                 return NULL;
- 
-         return PyBool_FromLong(r);
-@@ -265,7 +265,7 @@ static PyObject* is_socket_unix(PyObject *self, PyObject *args) {
- #endif
- 
-         r = sd_is_socket_unix(fd, type, listening, path, length);
--        if (set_error(r, path, NULL))
-+        if (set_error(r, path, NULL) < 0)
-                 return NULL;
- 
-         return PyBool_FromLong(r);
-diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c
-index bc5db19..0c88926 100644
---- a/src/python-systemd/_reader.c
-+++ b/src/python-systemd/_reader.c
-@@ -206,8 +206,7 @@ PyDoc_STRVAR(Reader_reliable_fd__doc__,
- static PyObject* Reader_reliable_fd(Reader *self, PyObject *args)
- {
-     int r = sd_journal_reliable_fd(self->j);
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     return PyBool_FromLong(r);
- }
-@@ -221,8 +220,7 @@ PyDoc_STRVAR(Reader_get_events__doc__,
- static PyObject* Reader_get_events(Reader *self, PyObject *args)
- {
-     int r = sd_journal_get_events(self->j);
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     return long_FromLong(r);
- }
-@@ -242,8 +240,7 @@ static PyObject* Reader_get_timeout(Reader *self, PyObject *args)
-     uint64_t t;
- 
-     r = sd_journal_get_timeout(self->j, &t);
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     if (t == (uint64_t) -1)
-@@ -265,8 +262,7 @@ static PyObject* Reader_get_timeout_ms(Reader *self, PyObject *args)
-     uint64_t t;
- 
-     r = sd_journal_get_timeout(self->j, &t);
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     return absolute_timeout(t);
-@@ -304,7 +300,7 @@ static PyObject* Reader_get_usage(Reader *self, PyObject *args)
-     uint64_t bytes;
- 
-     r = sd_journal_get_usage(self->j, &bytes);
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     assert_cc(sizeof(unsigned long long) == sizeof(bytes));
-@@ -366,8 +362,7 @@ static PyObject* Reader_next(Reader *self, PyObject *args)
-         assert_not_reached("should not be here");
-     Py_END_ALLOW_THREADS
- 
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     return PyBool_FromLong(r);
- }
-@@ -445,7 +440,8 @@ static PyObject* Reader_get(Reader *self, PyObject *args)
-     if (r == -ENOENT) {
-         PyErr_SetString(PyExc_KeyError, field);
-         return NULL;
--    } else if (set_error(r, NULL, "field name is not valid"))
-+    }
-+    if (set_error(r, NULL, "field name is not valid") < 0)
-         return NULL;
- 
-     r = extract(msg, msg_len, NULL, &value);
-@@ -530,7 +526,7 @@ static PyObject* Reader_get_realtime(Reader *self, PyObject *args)
-     assert(!args);
- 
-     r = sd_journal_get_realtime_usec(self->j, &timestamp);
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     assert_cc(sizeof(unsigned long long) == sizeof(timestamp));
-@@ -555,7 +551,7 @@ static PyObject* Reader_get_monotonic(Reader *self, PyObject *args)
-     assert(!args);
- 
-     r = sd_journal_get_monotonic_usec(self->j, &timestamp, &id);
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     assert_cc(sizeof(unsigned long long) == sizeof(timestamp));
-@@ -598,8 +594,7 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds
-         return NULL;
- 
-     r = sd_journal_add_match(self->j, match, match_len);
--    set_error(r, NULL, "Invalid match");
--    if (r < 0)
-+    if (set_error(r, NULL, "Invalid match") < 0)
-             return NULL;
- 
-     Py_RETURN_NONE;
-@@ -616,8 +611,7 @@ static PyObject* Reader_add_disjunction(Reader *self, PyObject *args)
- {
-     int r;
-     r = sd_journal_add_disjunction(self->j);
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     Py_RETURN_NONE;
- }
-@@ -633,8 +627,7 @@ static PyObject* Reader_add_conjunction(Reader *self, PyObject *args)
- {
-     int r;
-     r = sd_journal_add_conjunction(self->j);
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     Py_RETURN_NONE;
- }
-@@ -661,7 +654,7 @@ static PyObject* Reader_seek_head(Reader *self, PyObject *args)
-     Py_BEGIN_ALLOW_THREADS
-     r = sd_journal_seek_head(self->j);
-     Py_END_ALLOW_THREADS
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     Py_RETURN_NONE;
- }
-@@ -678,7 +671,7 @@ static PyObject* Reader_seek_tail(Reader *self, PyObject *args)
-     Py_BEGIN_ALLOW_THREADS
-     r = sd_journal_seek_tail(self->j);
-     Py_END_ALLOW_THREADS
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     Py_RETURN_NONE;
- }
-@@ -699,7 +692,7 @@ static PyObject* Reader_seek_realtime(Reader *self, PyObject *args)
-     Py_BEGIN_ALLOW_THREADS
-     r = sd_journal_seek_realtime_usec(self->j, timestamp);
-     Py_END_ALLOW_THREADS
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
-     Py_RETURN_NONE;
- }
-@@ -723,20 +716,20 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args)
- 
-     if (bootid) {
-         r = sd_id128_from_string(bootid, &id);
--        if (set_error(r, NULL, "Invalid bootid"))
-+        if (set_error(r, NULL, "Invalid bootid") < 0)
-             return NULL;
-     } else {
-         Py_BEGIN_ALLOW_THREADS
-         r = sd_id128_get_boot(&id);
-         Py_END_ALLOW_THREADS
--        if (set_error(r, NULL, NULL))
-+        if (set_error(r, NULL, NULL) < 0)
-             return NULL;
-     }
- 
-     Py_BEGIN_ALLOW_THREADS
-     r = sd_journal_seek_monotonic_usec(self->j, id, timestamp);
-     Py_END_ALLOW_THREADS
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     Py_RETURN_NONE;
-@@ -809,7 +802,7 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args)
-     Py_BEGIN_ALLOW_THREADS
-     r = sd_journal_seek_cursor(self->j, cursor);
-     Py_END_ALLOW_THREADS
--    if (set_error(r, NULL, "Invalid cursor"))
-+    if (set_error(r, NULL, "Invalid cursor") < 0)
-         return NULL;
-     Py_RETURN_NONE;
- }
-@@ -828,7 +821,7 @@ static PyObject* Reader_get_cursor(Reader *self, PyObject *args)
-     assert(!args);
- 
-     r = sd_journal_get_cursor(self->j, &cursor);
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     return unicode_FromString(cursor);
-@@ -851,8 +844,7 @@ static PyObject* Reader_test_cursor(Reader *self, PyObject *args)
-         return NULL;
- 
-     r = sd_journal_test_cursor(self->j, cursor);
--    set_error(r, NULL, NULL);
--    if (r < 0)
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     return PyBool_FromLong(r);
-@@ -876,7 +868,7 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args)
-     Py_BEGIN_ALLOW_THREADS
-     r = sd_journal_query_unique(self->j, query);
-     Py_END_ALLOW_THREADS
--    if (set_error(r, NULL, "Invalid field name"))
-+    if (set_error(r, NULL, "Invalid field name") < 0)
-         return NULL;
- 
-     value_set = PySet_New(0);
-@@ -930,7 +922,8 @@ static PyObject* Reader_get_catalog(Reader *self, PyObject *args)
-         else
-             set_error(r, NULL, NULL);
-         return NULL;
--    } else if (set_error(r, NULL, NULL))
-+    }
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     return unicode_FromString(msg);
-@@ -955,13 +948,13 @@ static PyObject* get_catalog(PyObject *self, PyObject *args)
-         return NULL;
- 
-     r = sd_id128_from_string(id_, &id);
--    if (set_error(r, NULL, "Invalid id128"))
-+    if (set_error(r, NULL, "Invalid id128") < 0)
-         return NULL;
- 
-     Py_BEGIN_ALLOW_THREADS
-     r = sd_journal_get_catalog_for_message_id(id, &msg);
-     Py_END_ALLOW_THREADS
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     return unicode_FromString(msg);
-@@ -979,7 +972,7 @@ static PyObject* Reader_get_data_threshold(Reader *self, void *closure)
-     int r;
- 
-     r = sd_journal_get_data_threshold(self->j, &cvalue);
--    if (set_error(r, NULL, NULL))
-+    if (set_error(r, NULL, NULL) < 0)
-         return NULL;
- 
-     return long_FromSize_t(cvalue);
diff --git a/SOURCES/0168-man-fix-examples-indentation-in-tmpfiles.d-5.patch b/SOURCES/0168-man-fix-examples-indentation-in-tmpfiles.d-5.patch
new file mode 100644
index 0000000..4e35bca
--- /dev/null
+++ b/SOURCES/0168-man-fix-examples-indentation-in-tmpfiles.d-5.patch
@@ -0,0 +1,36 @@
+From fc3494e5b171b36621b7bc95ba65ee4b58789283 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 13 Apr 2015 15:23:07 +0200
+Subject: [PATCH] man: fix examples indentation in tmpfiles.d(5)
+
+(cherry picked from commit bd1100898d63e9e2d8f6327b6895454f9abd5bd0)
+
+Cherry-picked from: c784558
+Resolves: #1222517
+---
+ man/tmpfiles.d.xml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
+index 4bd0fcf..9b4e11c 100644
+--- a/man/tmpfiles.d.xml
++++ b/man/tmpfiles.d.xml
+@@ -504,15 +504,15 @@
+       boot with specific modes and ownership.</para>
+ 
+       <programlisting>d /run/screens  1777 root root 10d
+-      d /run/uscreens 0755 root root 10d12h
+-      t /run/screen - - - - user.name="John Smith" security.SMACK64=screen</programlisting>
++d /run/uscreens 0755 root root 10d12h
++t /run/screen - - - - user.name="John Smith" security.SMACK64=screen</programlisting>
+     </example>
+     <example>
+       <title>/etc/tmpfiles.d/abrt.conf example</title>
+       <para><command>abrt</command> needs a directory created at boot with specific mode and ownership and its content should be preserved.</para>
+ 
+       <programlisting>d /var/tmp/abrt 0755 abrt abrt
+-      x /var/tmp/abrt/*</programlisting>
++x /var/tmp/abrt/*</programlisting>
+     </example>
+   </refsect1>
+ 
diff --git a/SOURCES/0168-systemd-python-fix-listen_fds-under-Python-2.patch b/SOURCES/0168-systemd-python-fix-listen_fds-under-Python-2.patch
deleted file mode 100644
index 46d4dd1..0000000
--- a/SOURCES/0168-systemd-python-fix-listen_fds-under-Python-2.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9135ee7824ab7f645488e9fa163eda49d4d2b12e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 30 Dec 2013 00:01:00 -0500
-Subject: [PATCH] systemd-python: fix listen_fds under Python 2
-
----
- src/python-systemd/_daemon.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c
-index c6db69f..3982e85 100644
---- a/src/python-systemd/_daemon.c
-+++ b/src/python-systemd/_daemon.c
-@@ -114,7 +114,7 @@ static PyObject* listen_fds(PyObject *self, PyObject *args, PyObject *keywds) {
- #else
-         PyObject *obj = NULL;
-         if (!PyArg_ParseTupleAndKeywords(args, keywds, "|O:_listen_fds",
--                                         (char**) kwlist, &unset, &obj))
-+                                         (char**) kwlist, &obj))
-                 return NULL;
-         if (obj != NULL)
-                 unset = PyObject_IsTrue(obj);
diff --git a/SOURCES/0169-man-expand-on-some-more-subtle-points-in-systemd.soc.patch b/SOURCES/0169-man-expand-on-some-more-subtle-points-in-systemd.soc.patch
deleted file mode 100644
index 064a939..0000000
--- a/SOURCES/0169-man-expand-on-some-more-subtle-points-in-systemd.soc.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From 6fe43c70ac008feaf26f49420c559565e3b50528 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 30 Dec 2013 00:11:30 -0500
-Subject: [PATCH] man: expand on some more subtle points in systemd.socket(5)
-
-http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=727708#1694
----
- man/systemd.socket.xml | 67 ++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 49 insertions(+), 18 deletions(-)
-
-diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
-index ac3127d..570a6fb 100644
---- a/man/systemd.socket.xml
-+++ b/man/systemd.socket.xml
-@@ -85,21 +85,26 @@
-                 processes of the socket.</para>
- 
-                 <para>For each socket file a matching service file
--                (see
-+                must exist, describing the service to start on
-+                incoming traffic on the socket (see
-                 <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>
--                for details) must exist, describing the service to
--                start on incoming traffic on the socket. Depending on
--                the setting of <option>Accept=</option> (see below),
--                this must either be named like the socket unit, but
--                with the suffix replaced; or it must be a template
--                file named the same way. Example: a socket file
-+                for more information about .service files). The name
-+                of the .service unit is by default the same as the
-+                name of the .socket unit, but can be altered with
-+                <option>Service=</option> option described below.
-+                Depending on the setting of <option>Accept=</option>
-+                option described below, this .service unit must either
-+                be named like the .socket unit, but with the suffix
-+                replaced, unless overridden with
-+                <option>Service=</option>; or it must be a template
-+                unit named the same way. Example: a socket file
-                 <filename>foo.socket</filename> needs a matching
-                 service <filename>foo.service</filename> if
-                 <option>Accept=false</option> is set. If
--                <option>Accept=true</option> is set, a service template
--                file <filename>foo@.service</filename> must exist from
--                which services are instantiated for each incoming
--                connection.</para>
-+                <option>Accept=true</option> is set, a service
-+                template file <filename>foo@.service</filename> must
-+                exist from which services are instantiated for each
-+                incoming connection.</para>
- 
-                 <para>Unless <varname>DefaultDependencies=</varname>
-                 is set to <option>false</option>, socket units will
-@@ -116,9 +121,21 @@
-                 boot or late system shutdown should disable this
-                 option.</para>
- 
-+		<para>Socket units will have a
-+		<varname>Before=</varname> dependency on the service
-+		which they trigger added implicitly. No implicit
-+		<varname>WantedBy=</varname> or
-+		<varname>RequiredBy=</varname> dependency from the
-+		socket to the service is added. This means that the
-+		service may be started without the socket, in which
-+		case it must be able to open sockets by itself. To
-+		prevent this, an explicit <varname>Requires=</varname>
-+		dependency may be added.</para>
-+
-                 <para>Socket units may be used to implement on-demand
-                 starting of services, as well as parallelized starting
--                of services.</para>
-+                of services. See the blog stories linked at the end
-+                for introduction.</para>
- 
-                 <para>Note that the daemon software configured for
-                 socket activation with socket units needs to be able
-@@ -221,12 +238,23 @@
-                                 of any of these options will have no
-                                 effect.</para>
- 
-+                                <para>It is also possible to have more
-+                                than one socket unit for the same
-+                                service when using
-+                                <varname>Service=</varname>, and the
-+                                service will receive all the sockets
-+                                configured in all the socket units.
-+                                Sockets configured in one unit are
-+                                passed in the order of configuration,
-+                                but no ordering between socket units
-+                                is specified.</para>
-+
-                                 <para>If an IP address is used here,
-                                 it is often desirable to listen on it
-                                 before the interface it is configured
-                                 on is up and running, and even
-                                 regardless of whether it will be up and
--                                running ever at all. To deal with this
-+                                running at any point. To deal with this
-                                 it is recommended to set the
-                                 <varname>FreeBind=</varname> option
-                                 described below.</para></listitem>
-@@ -687,11 +715,14 @@
-                                 <term><varname>Service=</varname></term>
-                                 <listitem><para>Specifies the service
-                                 unit name to activate on incoming
--                                traffic. This defaults to the service
--                                that bears the same name as the socket
--                                (ignoring the different suffixes). In
--                                most cases it should not be necessary
--                                to use this option.</para></listitem>
-+                                traffic. This setting is only allowed
-+                                for sockets with
-+                                <varname>Accept=no</varname>. It
-+                                defaults to the service that bears the
-+                                same name as the socket (with the
-+                                suffix replaced). In most cases it
-+                                should not be necessary to use this
-+                                option.</para></listitem>
-                         </varlistentry>
- 
-                 </variablelist>
diff --git a/SOURCES/0169-systemctl-avoid-bumping-NOFILE-rlimit-unless-needed.patch b/SOURCES/0169-systemctl-avoid-bumping-NOFILE-rlimit-unless-needed.patch
new file mode 100644
index 0000000..afe865c
--- /dev/null
+++ b/SOURCES/0169-systemctl-avoid-bumping-NOFILE-rlimit-unless-needed.patch
@@ -0,0 +1,46 @@
+From f98f6ed9a27871cd2ce505b977ba8c2390e104b6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Tue, 14 Apr 2015 20:47:20 -0500
+Subject: [PATCH] systemctl: avoid bumping NOFILE rlimit unless needed
+
+We actually only use the journal when showing status. Move setrlimit call
+so it is only called for status.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1184712
+(cherry picked from commit 40acc203c043fd419f3c045dc6f116c3a28411d8)
+
+Cherry-picked from: e87fa61
+Resolves: #1222517
+---
+ src/systemctl/systemctl.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 4ec0cff..089c25f 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -4449,6 +4449,12 @@ static int show(sd_bus *bus, char **args) {
+         if (show_properties)
+                 pager_open_if_enabled();
+ 
++        if (show_status)
++                /* Increase max number of open files to 16K if we can, we
++                 * might needs this when browsing journal files, which might
++                 * be split up into many files. */
++                setrlimit_closest(RLIMIT_NOFILE, &RLIMIT_MAKE_CONST(16384));
++
+         /* If no argument is specified inspect the manager itself */
+ 
+         if (show_properties && strv_length(args) <= 1)
+@@ -7207,11 +7213,6 @@ found:
+                 }
+         }
+ 
+-        /* Increase max number of open files to 16K if we can, we
+-         * might needs this when browsing journal files, which might
+-         * be split up into many files. */
+-        setrlimit_closest(RLIMIT_NOFILE, &RLIMIT_MAKE_CONST(16384));
+-
+         return verb->dispatch(bus, argv + optind);
+ }
+ 
diff --git a/SOURCES/0170-exit-status-Fix-NOTINSSTALLED-typo.patch b/SOURCES/0170-exit-status-Fix-NOTINSSTALLED-typo.patch
new file mode 100644
index 0000000..243ef95
--- /dev/null
+++ b/SOURCES/0170-exit-status-Fix-NOTINSSTALLED-typo.patch
@@ -0,0 +1,26 @@
+From 1eef7cbf1ab594fe00c83044763d41a0b29be6c6 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sat, 18 Apr 2015 22:38:13 +0100
+Subject: [PATCH] exit-status: Fix "NOTINSSTALLED" typo
+
+(cherry picked from commit 9f8f87e375175536a972feab79c2ff8901c47f8e)
+
+Cherry-picked from: 02e0056
+Resolves: #1222517
+---
+ src/shared/exit-status.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/exit-status.c b/src/shared/exit-status.c
+index 5c73b4d..90c83a4 100644
+--- a/src/shared/exit-status.c
++++ b/src/shared/exit-status.c
+@@ -167,7 +167,7 @@ const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) {
+                         return "NOPERMISSION";
+ 
+                 case EXIT_NOTINSTALLED:
+-                        return "NOTINSSTALLED";
++                        return "NOTINSTALLED";
+ 
+                 case EXIT_NOTCONFIGURED:
+                         return "NOTCONFIGURED";
diff --git a/SOURCES/0170-tmpfiles-rename-unsafe-to-boot.patch b/SOURCES/0170-tmpfiles-rename-unsafe-to-boot.patch
deleted file mode 100644
index c8ac916..0000000
--- a/SOURCES/0170-tmpfiles-rename-unsafe-to-boot.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-From 81e897b916baa556c7f0ef7bceedb5b73d550bad Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 30 Dec 2013 13:00:38 -0500
-Subject: [PATCH] tmpfiles: rename --unsafe to --boot
-
-As suggested by Kay, it is better to describe what is done,
-not what might happen.
----
- man/systemd-tmpfiles.xml                |  2 +-
- man/tmpfiles.d.xml                      |  4 ++--
- src/tmpfiles/tmpfiles.c                 | 14 +++++++-------
- units/systemd-tmpfiles-setup.service.in |  2 +-
- 4 files changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
-index c678031..64f9cf9 100644
---- a/man/systemd-tmpfiles.xml
-+++ b/man/systemd-tmpfiles.xml
-@@ -133,7 +133,7 @@
-                                 removed.</para></listitem>
-                         </varlistentry>
-                         <varlistentry>
--                                <term><option>--unsafe</option></term>
-+                                <term><option>--boot</option></term>
-                                 <listitem><para>Also execute lines
-                                 with an exclamation mark.
-                                 </para></listitem>
-diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml
-index ed88751..8267ffc 100644
---- a/man/tmpfiles.d.xml
-+++ b/man/tmpfiles.d.xml
-@@ -273,7 +273,7 @@ L    /tmp/foobar -    -    -    -   /dev/null</programlisting>
-                         execute at any time, e.g. on package upgrades.
-                         <command>systemd-tmpfiles</command> will
-                         execute line with an exclamation mark only if
--                        option <option>--unsafe</option> is given.
-+                        option <option>--boot</option> is given.
-                         </para>
- 
-                         <para>For example:
-@@ -286,7 +286,7 @@ r! /tmp/.X[0-9]*-lock
-                         </programlisting>
-                         The second line in contrast to the first one
-                         would break a running system, and will only be
--                        executed with <option>--unsafe</option>.</para>
-+                        executed with <option>--boot</option>.</para>
-                 </refsect2>
- 
-                 <refsect2>
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 1983717..67b13bc 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -106,7 +106,7 @@ static Set *unix_sockets = NULL;
- static bool arg_create = false;
- static bool arg_clean = false;
- static bool arg_remove = false;
--static bool arg_unsafe = false;
-+static bool arg_boot = false;
- 
- static char **include_prefixes = NULL;
- static char **exclude_prefixes = NULL;
-@@ -1100,7 +1100,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
-         if (strlen(action) > 2 || (strlen(action) > 1 && action[1] != '!')) {
-                 log_error("[%s:%u] Unknown modifier '%s'", fname, line, action);
-                 return -EINVAL;
--        } else if (strlen(action) > 1 && !arg_unsafe)
-+        } else if (strlen(action) > 1 && !arg_boot)
-                 return 0;
- 
-         type = action[0];
-@@ -1275,7 +1275,7 @@ static int help(void) {
-                "     --create               Create marked files/directories\n"
-                "     --clean                Clean up marked directories\n"
-                "     --remove               Remove marked files/directories\n"
--               "     --unsafe               Execute actions only safe at boot\n"
-+               "     --boot                 Execute actions only safe at boot\n"
-                "     --prefix=PATH          Only apply rules that apply to paths with the specified prefix\n"
-                "     --exclude-prefix=PATH  Ignore rules that apply to paths with the specified prefix\n",
-                program_invocation_short_name);
-@@ -1289,7 +1289,7 @@ static int parse_argv(int argc, char *argv[]) {
-                 ARG_CREATE,
-                 ARG_CLEAN,
-                 ARG_REMOVE,
--                ARG_UNSAFE,
-+                ARG_BOOT,
-                 ARG_PREFIX,
-                 ARG_EXCLUDE_PREFIX,
-         };
-@@ -1299,7 +1299,7 @@ static int parse_argv(int argc, char *argv[]) {
-                 { "create",         no_argument,         NULL, ARG_CREATE         },
-                 { "clean",          no_argument,         NULL, ARG_CLEAN          },
-                 { "remove",         no_argument,         NULL, ARG_REMOVE         },
--                { "unsafe",         no_argument,         NULL, ARG_UNSAFE         },
-+                { "boot",           no_argument,         NULL, ARG_BOOT           },
-                 { "prefix",         required_argument,   NULL, ARG_PREFIX         },
-                 { "exclude-prefix", required_argument,   NULL, ARG_EXCLUDE_PREFIX },
-                 { NULL,             0,                   NULL, 0                  }
-@@ -1330,8 +1330,8 @@ static int parse_argv(int argc, char *argv[]) {
-                         arg_remove = true;
-                         break;
- 
--                case ARG_UNSAFE:
--                        arg_unsafe = true;
-+                case ARG_BOOT:
-+                        arg_boot = true;
-                         break;
- 
-                 case ARG_PREFIX:
-diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in
-index c2dcae0..01043b7 100644
---- a/units/systemd-tmpfiles-setup.service.in
-+++ b/units/systemd-tmpfiles-setup.service.in
-@@ -24,4 +24,4 @@ RefuseManualStop=yes
- [Service]
- Type=oneshot
- RemainAfterExit=yes
--ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --unsafe --exclude-prefix=/dev
-+ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev
diff --git a/SOURCES/0171-sleep-config-Dereference-pointer-before-check-for-NU.patch b/SOURCES/0171-sleep-config-Dereference-pointer-before-check-for-NU.patch
deleted file mode 100644
index 0812944..0000000
--- a/SOURCES/0171-sleep-config-Dereference-pointer-before-check-for-NU.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 44d380fa1042c56eee959c8cf8477aa62b8d8a0e Mon Sep 17 00:00:00 2001
-From: Stefan Beller <stefanbeller@googlemail.com>
-Date: Mon, 30 Dec 2013 17:43:52 +0100
-Subject: [PATCH] sleep-config: Dereference pointer before check for NULL
-
-This fixes a bug pointed out by http://css.csail.mit.edu/stack/
-(Optimization-unstable code)
-It is a similar fix as f146f5e159 (2013-12-30, core:
-Forgot to dereference pointer when checking for NULL)
-
-To explain this bug consider the following similar, but simpler code:
-	if (!p)
-		free(*p)
-
-Assume the if condition evaluates to true, then we will access *p,
-which means the compiler can assume p is a valid pointer, so it could
-dereference p and use the value *p.
-Assuming p as a valid pointer, !p will be false.
-But initally we assumed the condition evaluates to true.
-
-By this reasoning the optimizing compiler can deduce, we have dead code.
-("The if will never be taken, as *p must be valid, because otherwise
-accessing *p inside the if would segfault")
-
-This led to an error message of the static code checker, so I checked the
-code in question.
-
-As we access *modes and *states before the check in the changed line of
-this patch, I assume the line to be wrong and we actually wanted to check
-for *modes and *states being both non null.
----
- src/shared/sleep-config.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
-index d76e3ad..b2a0787 100644
---- a/src/shared/sleep-config.c
-+++ b/src/shared/sleep-config.c
-@@ -94,7 +94,7 @@ int parse_sleep_config(const char *verb, char ***modes, char ***states) {
-         } else
-                 assert_not_reached("what verb");
- 
--        if (!modes || !states) {
-+        if (!*modes || !*states) {
-                 strv_free(*modes);
-                 strv_free(*states);
-                 return log_oom();
diff --git a/SOURCES/0171-tmpfiles-there-s-no-systemd-forbid-user-logins.servi.patch b/SOURCES/0171-tmpfiles-there-s-no-systemd-forbid-user-logins.servi.patch
new file mode 100644
index 0000000..9eb3fd7
--- /dev/null
+++ b/SOURCES/0171-tmpfiles-there-s-no-systemd-forbid-user-logins.servi.patch
@@ -0,0 +1,27 @@
+From 0756d902734c3d4353264d1b4c2ccec87359bd4a Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 21 Apr 2015 17:26:56 +0200
+Subject: [PATCH] tmpfiles: there's no systemd-forbid-user-logins.service
+ service
+
+(cherry picked from commit 451d691ae110a600497348d9f6288bc84efb8642)
+
+Cherry-picked from: 0d2b365
+Resolves: #1222517
+---
+ tmpfiles.d/systemd-nologin.conf | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tmpfiles.d/systemd-nologin.conf b/tmpfiles.d/systemd-nologin.conf
+index d61232b..a30a8da 100644
+--- a/tmpfiles.d/systemd-nologin.conf
++++ b/tmpfiles.d/systemd-nologin.conf
+@@ -5,7 +5,7 @@
+ #  the Free Software Foundation; either version 2.1 of the License, or
+ #  (at your option) any later version.
+ 
+-# See tmpfiles.d(5) and systemd-forbid-user-logins.service(5).
++# See tmpfiles.d(5), systemd-user-session.service(5) and pam_nologin(8).
+ # This file has special suffix so it is not run by mistake.
+ 
+ F! /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
diff --git a/SOURCES/0172-kmod-setup-load-ip_tables-kmod-at-boot.patch b/SOURCES/0172-kmod-setup-load-ip_tables-kmod-at-boot.patch
new file mode 100644
index 0000000..ced7aaf
--- /dev/null
+++ b/SOURCES/0172-kmod-setup-load-ip_tables-kmod-at-boot.patch
@@ -0,0 +1,49 @@
+From 6df5513d294ae368f2a09fb47917e11048347885 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 22 Apr 2015 13:50:56 +0200
+Subject: [PATCH] kmod-setup: load ip_tables kmod at boot
+
+The module is currently no auto-loadable (and this is unlikely to change
+anytime soon, given it's API is via getsockopt/setsockopt). It is needed
+by networkd and nspawn currently.
+
+Users who really don't like the module to be loaded have the option to
+blacklist it still, or not compile it at all. But for all others this
+should make things work out-of-the-box.
+
+(cherry picked from commit 1d3087978a8ee23107cb64aa55ca97aefe9531e2)
+
+Cherry-picked from: f801bf8
+Resolves: #1222517
+---
+ src/core/kmod-setup.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index c0a05b9..97f3b9b 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -63,16 +63,19 @@ int kmod_setup(void) {
+                 bool (*condition_fn)(void);
+         } kmod_table[] = {
+                 /* auto-loading on use doesn't work before udev is up */
+-                { "autofs4", "/sys/class/misc/autofs", true, NULL                 },
++                { "autofs4",   "/sys/class/misc/autofs",    true,  NULL                },
+ 
+                 /* early configure of ::1 on the loopback device */
+-                { "ipv6",    "/sys/module/ipv6",       true, NULL                 },
++                { "ipv6",      "/sys/module/ipv6",          true,  NULL                },
+ 
+                 /* this should never be a module */
+-                { "unix",    "/proc/net/unix",         true, NULL                 },
++                { "unix",      "/proc/net/unix",            true,  NULL                },
+ 
+                 /* IPC is needed before we bring up any other services */
+-                { "kdbus",   "/sys/fs/kdbus",          false, cmdline_check_kdbus },
++                { "kdbus",     "/sys/fs/kdbus",             false, cmdline_check_kdbus },
++
++                /* netfilter is needed by networkd, nspawn among others, and cannot be autoloaded */
++                { "ip_tables", "/proc/net/ip_tables_names", false, NULL                },
+         };
+         struct kmod_ctx *ctx = NULL;
+         unsigned int i;
diff --git a/SOURCES/0172-sleep-config-fix-double-free.patch b/SOURCES/0172-sleep-config-fix-double-free.patch
deleted file mode 100644
index 439932b..0000000
--- a/SOURCES/0172-sleep-config-fix-double-free.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 9835435400e945b294872a525aacf99a5ad5bcf5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 31 Dec 2013 11:23:58 -0500
-Subject: [PATCH] sleep-config: fix double free
-
-Before 34a3baa4d 'sleep-config: Dereference pointer before check for NULL'
-oom conditions would not be detected properly. After that commit, a double
-free was performed.
-
-Rework the whole function to be easier to understand, and also replace
-strv_split_nulstr with strv_new, since we know the strings anyway.
----
- src/shared/sleep-config.c | 38 ++++++++++++++++++++------------------
- 1 file changed, 20 insertions(+), 18 deletions(-)
-
-diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c
-index b2a0787..70a0896 100644
---- a/src/shared/sleep-config.c
-+++ b/src/shared/sleep-config.c
-@@ -28,11 +28,14 @@
- #include "strv.h"
- #include "util.h"
- 
--int parse_sleep_config(const char *verb, char ***modes, char ***states) {
-+#define USE(x, y) do{ (x) = (y); (y) = NULL; } while(0)
-+
-+int parse_sleep_config(const char *verb, char ***_modes, char ***_states) {
-         _cleanup_strv_free_ char
-                 **suspend_mode = NULL, **suspend_state = NULL,
-                 **hibernate_mode = NULL, **hibernate_state = NULL,
-                 **hybrid_mode = NULL, **hybrid_state = NULL;
-+        char **modes, **states;
- 
-         const ConfigTableItem items[] = {
-                 { "Sleep",   "SuspendMode",      config_parse_strv,  0, &suspend_mode  },
-@@ -59,47 +62,46 @@ int parse_sleep_config(const char *verb, char ***modes, char ***states) {
- 
-         if (streq(verb, "suspend")) {
-                 /* empty by default */
--                *modes = suspend_mode;
-+                USE(modes, suspend_mode);
- 
-                 if (suspend_state)
--                        *states = suspend_state;
-+                        USE(states, suspend_state);
-                 else
--                        *states = strv_split_nulstr("mem\0standby\0freeze\0");
-+                        states = strv_new("mem", "standby", "freeze", NULL);
- 
--                suspend_mode = suspend_state = NULL;
-         } else if (streq(verb, "hibernate")) {
-                 if (hibernate_mode)
--                        *modes = hibernate_mode;
-+                        USE(modes, hibernate_mode);
-                 else
--                        *modes = strv_split_nulstr("platform\0shutdown\0");
-+                        modes = strv_new("platform", "shutdown", NULL);
- 
-                 if (hibernate_state)
--                        *states = hibernate_state;
-+                        USE(states, hibernate_state);
-                 else
--                        *states = strv_split_nulstr("disk\0");
-+                        states = strv_new("disk", NULL);
- 
--                hibernate_mode = hibernate_state = NULL;
-         } else if (streq(verb, "hybrid-sleep")) {
-                 if (hybrid_mode)
--                        *modes = hybrid_mode;
-+                        USE(modes, hybrid_mode);
-                 else
--                        *modes = strv_split_nulstr("suspend\0platform\0shutdown\0");
-+                        modes = strv_new("suspend", "platform", "shutdown", NULL);
- 
-                 if (hybrid_state)
--                        *states = hybrid_state;
-+                        USE(states, hybrid_state);
-                 else
--                        *states = strv_split_nulstr("disk\0");
-+                        states = strv_new("disk", NULL);
- 
--                hybrid_mode = hybrid_state = NULL;
-         } else
-                 assert_not_reached("what verb");
- 
--        if (!*modes || !*states) {
--                strv_free(*modes);
--                strv_free(*states);
-+        if ((!modes && !streq(verb, "suspend")) || !states) {
-+                strv_free(modes);
-+                strv_free(states);
-                 return log_oom();
-         }
- 
-+        *_modes = modes;
-+        *_states = states;
-         return 0;
- }
- 
diff --git a/SOURCES/0173-core-service-check-if-mainpid-matches-only-if-it-is-.patch b/SOURCES/0173-core-service-check-if-mainpid-matches-only-if-it-is-.patch
deleted file mode 100644
index 729d377..0000000
--- a/SOURCES/0173-core-service-check-if-mainpid-matches-only-if-it-is-.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 32e036b9baa6e9c9ecc90ae5db558db0a93847b2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 30 Dec 2013 11:21:56 -0500
-Subject: [PATCH] core/service: check if mainpid matches only if it is set
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1047304
-
-Conflicts:
-	src/core/service.c
----
- src/core/service.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 62ae8f0..f0acda1 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -3400,7 +3400,7 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
-                 return;
-         }
- 
--        if (s->notify_access == NOTIFY_MAIN && pid != s->main_pid) {
-+        if (s->notify_access == NOTIFY_MAIN && s->main_pid != 0 && pid != s->main_pid) {
-                 log_warning_unit(u->id,
-                                  "%s: Got notification message from PID %lu, but reception only permitted for PID %lu",
-                                  u->id, (unsigned long) pid, (unsigned long) s->main_pid);
diff --git a/SOURCES/0173-util-Fix-assertion-in-split-on-missing.patch b/SOURCES/0173-util-Fix-assertion-in-split-on-missing.patch
new file mode 100644
index 0000000..54d78af
--- /dev/null
+++ b/SOURCES/0173-util-Fix-assertion-in-split-on-missing.patch
@@ -0,0 +1,81 @@
+From 030a063371f4f4fd0d4366ebd3cebfa9930773da Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed, 22 Apr 2015 23:09:43 +0100
+Subject: [PATCH] util: Fix assertion in split() on missing '
+
+When parsing a unit with a trailing slash after an escaped line break, like
+
+  ExecStart=/bin/echo 'foo \
+    bar'
+
+the split() function (through config_parse()) asserted and crashed pid 1:
+
+  Assertion 'current[*l + 1] == quotechars[0]' failed at ../src/shared/util.c:583, function split(). Aborting.
+
+Fix this by returning an error in this case ("trailing garbage").
+
+Add corresponding test case. Also fix the missing "unit" argument of
+config_parse_exec() in the comment.
+
+https://launchpad.net/bugs/1447243
+(cherry picked from commit 470dca63cd2b1579f45f72b6b9777494abeff105)
+
+Cherry-picked from: 8f93633
+Resolves: #1222517
+---
+ src/shared/util.c         |  3 +--
+ src/test/test-unit-file.c | 15 +++++++++++++++
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 1e1bf94..649344d 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -571,13 +571,12 @@ const char* split(const char **state, size_t *l, const char *separator, bool quo
+                 char quotechars[2] = {*current, '\0'};
+ 
+                 *l = strcspn_escaped(current + 1, quotechars);
+-                if (current[*l + 1] == '\0' ||
++                if (current[*l + 1] == '\0' || current[*l + 1] != quotechars[0] ||
+                     (current[*l + 2] && !strchr(separator, current[*l + 2]))) {
+                         /* right quote missing or garbage at the end */
+                         *state = current;
+                         return NULL;
+                 }
+-                assert(current[*l + 1] == quotechars[0]);
+                 *state = current++ + *l + 2;
+         } else if (quoted) {
+                 *l = strcspn_escaped(current, separator);
+diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
+index e517f57..9f3e3a2 100644
+--- a/src/test/test-unit-file.c
++++ b/src/test/test-unit-file.c
+@@ -92,6 +92,7 @@ static void check_execcommand(ExecCommand *c,
+ 
+ static void test_config_parse_exec(void) {
+         /* int config_parse_exec(
++                 const char *unit,
+                  const char *filename,
+                  unsigned line,
+                  const char *section,
+@@ -303,6 +304,20 @@ static void test_config_parse_exec(void) {
+         assert_se(r == 0);
+         assert_se(c1->command_next == NULL);
+ 
++        log_info("/* missing ending ' */");
++        r = config_parse_exec(NULL, "fake", 4, "section", 1,
++                              "LValue", 0, "/path 'foo",
++                              &c, NULL);
++        assert_se(r == 0);
++        assert_se(c1->command_next == NULL);
++
++        log_info("/* missing ending ' with trailing backslash */");
++        r = config_parse_exec(NULL, "fake", 4, "section", 1,
++                              "LValue", 0, "/path 'foo\\",
++                              &c, NULL);
++        assert_se(r == 0);
++        assert_se(c1->command_next == NULL);
++
+         exec_command_free_list(c);
+ }
+ 
diff --git a/SOURCES/0174-man-typo-fix.patch b/SOURCES/0174-man-typo-fix.patch
deleted file mode 100644
index 6b02abd..0000000
--- a/SOURCES/0174-man-typo-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 903086a167718d33ebb5e4f1825d1696e45ff1a5 Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Sat, 4 Jan 2014 23:21:13 +0100
-Subject: [PATCH] man: typo fix
-
----
- man/systemd.time.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/systemd.time.xml b/man/systemd.time.xml
-index f438fa5..a837f23 100644
---- a/man/systemd.time.xml
-+++ b/man/systemd.time.xml
-@@ -222,7 +222,7 @@
-                 <para>In the date and time specifications, any
-                 component may be specified as <literal>*</literal> in
-                 which case any value will match. Alternatively, each
--                component can be specified as list of values separated
-+                component can be specified as a list of values separated
-                 by commas. Values may also be suffixed with
-                 <literal>/</literal> and a repetition value, which
-                 indicates that the value and all values plus multiples
diff --git a/SOURCES/0174-units-set-KillMode-mixed-for-our-daemons-that-fork-w.patch b/SOURCES/0174-units-set-KillMode-mixed-for-our-daemons-that-fork-w.patch
new file mode 100644
index 0000000..9a56cb1
--- /dev/null
+++ b/SOURCES/0174-units-set-KillMode-mixed-for-our-daemons-that-fork-w.patch
@@ -0,0 +1,37 @@
+From b0204b37bd8275f95885548277acf5bda383173d Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 24 Apr 2015 16:12:28 +0200
+Subject: [PATCH] units: set KillMode=mixed for our daemons that fork worker
+ processes
+
+The daemons should really have the time to kill the workers first,
+before systemd does it, hence use KillMode=mixed for these daemons.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=90051
+(cherry picked from commit 658f26b828fdd7007cfe82d794f610525b21cb99)
+
+Cherry-picked from: 7396ceb
+Resolves: #1222517
+---
+ units/systemd-importd.service.in | 1 +
+ units/systemd-udevd.service.in   | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/units/systemd-importd.service.in b/units/systemd-importd.service.in
+index 26759ea..5534a49 100644
+--- a/units/systemd-importd.service.in
++++ b/units/systemd-importd.service.in
+@@ -18,3 +18,4 @@ WatchdogSec=1min
+ PrivateTmp=yes
+ ProtectSystem=full
+ ProtectHome=yes
++KillMode=mixed
+diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in
+index a133044..32f04d9 100644
+--- a/units/systemd-udevd.service.in
++++ b/units/systemd-udevd.service.in
+@@ -22,3 +22,4 @@ Restart=always
+ RestartSec=0
+ ExecStart=@rootlibexecdir@/systemd-udevd
+ MountFlags=slave
++KillMode=mixed
diff --git a/SOURCES/0175-swap-remove-if-else-with-the-same-data-path.patch b/SOURCES/0175-swap-remove-if-else-with-the-same-data-path.patch
deleted file mode 100644
index 39753dd..0000000
--- a/SOURCES/0175-swap-remove-if-else-with-the-same-data-path.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 6710995e2c264939da4d383b5d37724c46282cdc Mon Sep 17 00:00:00 2001
-From: Stefan Beller <stefanbeller@googlemail.com>
-Date: Fri, 3 Jan 2014 20:33:20 +0100
-Subject: [PATCH] swap: remove if/else with the same data path
-
-This was introduced in e1770af812 (2012-02-03, swap: replace failure
-boolean by result enum).
-
-This just removes unneeded lines of code, no functional change.
----
- src/core/swap.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/src/core/swap.c b/src/core/swap.c
-index f295b65..727bb95 100644
---- a/src/core/swap.c
-+++ b/src/core/swap.c
-@@ -959,10 +959,7 @@ static void swap_sigchld_event(Unit *u, pid_t pid, int code, int status) {
-         case SWAP_DEACTIVATING_SIGKILL:
-         case SWAP_DEACTIVATING_SIGTERM:
- 
--                if (f == SWAP_SUCCESS)
--                        swap_enter_dead(s, f);
--                else
--                        swap_enter_dead(s, f);
-+                swap_enter_dead(s, f);
-                 break;
- 
-         default:
diff --git a/SOURCES/0175-unit-don-t-add-automatic-dependencies-on-device-unit.patch b/SOURCES/0175-unit-don-t-add-automatic-dependencies-on-device-unit.patch
new file mode 100644
index 0000000..6935a63
--- /dev/null
+++ b/SOURCES/0175-unit-don-t-add-automatic-dependencies-on-device-unit.patch
@@ -0,0 +1,41 @@
+From 33cca921994d30abfb03ce0f681c6fc58f5c0703 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 24 Apr 2015 17:28:06 +0200
+Subject: [PATCH] unit: don't add automatic dependencies on device units if
+ they aren't supported
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-April/031187.html
+(cherry picked from commit 47bc12e1ba35d38edda737dae232088d6d3ae688)
+
+Cherry-picked from: c20cdaa
+Resolves: #1222517
+---
+ src/core/unit.c | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index 565455b..b9e1f13 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -2830,14 +2830,18 @@ int unit_add_node_link(Unit *u, const char *what, bool wants) {
+ 
+         assert(u);
+ 
+-        if (!what)
+-                return 0;
+-
+         /* Adds in links to the device node that this unit is based on */
++        if (isempty(what))
++                return 0;
+ 
+         if (!is_device_path(what))
+                 return 0;
+ 
++        /* When device units aren't supported (such as in a
++         * container), don't create dependencies on them. */
++        if (unit_vtable[UNIT_DEVICE]->supported && !unit_vtable[UNIT_DEVICE]->supported(u->manager))
++                return 0;
++
+         e = unit_name_from_path(what, ".device");
+         if (!e)
+                 return -ENOMEM;
diff --git a/SOURCES/0176-hwdb-update.patch b/SOURCES/0176-hwdb-update.patch
deleted file mode 100644
index 331e48b..0000000
--- a/SOURCES/0176-hwdb-update.patch
+++ /dev/null
@@ -1,769 +0,0 @@
-From 6dc222a83a577bfd29def018fb7a8c591b2d6761 Mon Sep 17 00:00:00 2001
-From: Marcel Holtmann <marcel@holtmann.org>
-Date: Sun, 5 Jan 2014 00:44:34 -0800
-Subject: [PATCH] hwdb: update
-
-Conflicts:
-	hwdb/20-sdio-vendor-model.hwdb
----
- hwdb/20-OUI.hwdb              |  97 +++++++++++++++++++++++++-
- hwdb/20-pci-vendor-model.hwdb | 154 ++++++++++++++++++++++++++++++++++++++----
- hwdb/20-usb-vendor-model.hwdb |   6 ++
- 3 files changed, 241 insertions(+), 16 deletions(-)
-
-diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb
-index 92b96ae..a51a00a 100644
---- a/hwdb/20-OUI.hwdb
-+++ b/hwdb/20-OUI.hwdb
-@@ -13627,6 +13627,12 @@ OUI:40D8551E2*
- OUI:40D8551E3*
-  ID_OUI_FROM_DATABASE=Mega Electronics Ltd
- 
-+OUI:40D8551E4*
-+ ID_OUI_FROM_DATABASE=STEK Ltd
-+
-+OUI:40D855EE6*
-+ ID_OUI_FROM_DATABASE=Narinet, Inc.
-+
- OUI:000000*
-  ID_OUI_FROM_DATABASE=XEROX CORPORATION
- 
-@@ -35222,7 +35228,7 @@ OUI:001C4C*
-  ID_OUI_FROM_DATABASE=Petrotest Instruments
- 
- OUI:001C4D*
-- ID_OUI_FROM_DATABASE=Zeemote Technology Inc. (part of Aplix).
-+ ID_OUI_FROM_DATABASE=Aplix IP Holdings Corporation
- 
- OUI:001C4E*
-  ID_OUI_FROM_DATABASE=TASA International Limited
-@@ -52606,6 +52612,9 @@ OUI:08D42B*
- OUI:08D5C0*
-  ID_OUI_FROM_DATABASE=Seers Technology Co., Ltd
- 
-+OUI:08D833*
-+ ID_OUI_FROM_DATABASE=Shenzhen RF Technology Co,.Ltd
-+
- OUI:08E5DA*
-  ID_OUI_FROM_DATABASE=NANJING FUJITSU COMPUTER PRODUCTS CO.,LTD.
- 
-@@ -53308,6 +53317,9 @@ OUI:1423D7*
- OUI:142BD2*
-  ID_OUI_FROM_DATABASE=Armtel Ltd.
- 
-+OUI:142D27*
-+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-+
- OUI:142D8B*
-  ID_OUI_FROM_DATABASE=Incipio Technologies, Inc
- 
-@@ -53761,6 +53773,9 @@ OUI:18C451*
- OUI:18C8E7*
-  ID_OUI_FROM_DATABASE=Shenzhen Hualistone Technology Co.,Ltd
- 
-+OUI:18CC23*
-+ ID_OUI_FROM_DATABASE=Philio Technology Corporation
-+
- OUI:18D071*
-  ID_OUI_FROM_DATABASE=DASAN SMC, Inc.
- 
-@@ -54688,6 +54703,9 @@ OUI:2838CF*
- OUI:2839E7*
-  ID_OUI_FROM_DATABASE=Preceno Technology Pte.Ltd.
- 
-+OUI:283B96*
-+ ID_OUI_FROM_DATABASE=Cool Control LTD
-+
- OUI:283CE4*
-  ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd
- 
-@@ -54907,6 +54925,9 @@ OUI:28E14C*
- OUI:28E297*
-  ID_OUI_FROM_DATABASE=Shanghai InfoTM Microelectronics Co.,Ltd.
- 
-+OUI:28E347*
-+ ID_OUI_FROM_DATABASE=Liteon Technology Corporation
-+
- OUI:28E608*
-  ID_OUI_FROM_DATABASE=Tokheim
- 
-@@ -55717,6 +55738,9 @@ OUI:34E0CF*
- OUI:34E0D7*
-  ID_OUI_FROM_DATABASE=DONGGUAN QISHENG ELECTRONICS INDUSTRIAL CO., LTD
- 
-+OUI:34E2FD*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:34EF44*
-  ID_OUI_FROM_DATABASE=2Wire
- 
-@@ -56023,6 +56047,9 @@ OUI:3C1040*
- OUI:3C106F*
-  ID_OUI_FROM_DATABASE=ALBAHITH TECHNOLOGIES
- 
-+OUI:3C15C2*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:3C15EA*
-  ID_OUI_FROM_DATABASE=TESCOM CO., LTD.
- 
-@@ -56227,6 +56254,9 @@ OUI:3CC99E*
- OUI:3CCA87*
-  ID_OUI_FROM_DATABASE=Iders Incorporated
- 
-+OUI:3CCD93*
-+ ID_OUI_FROM_DATABASE=LG ELECTRONICS INC
-+
- OUI:3CCE73*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-@@ -56408,7 +56438,7 @@ OUI:40667A*
-  ID_OUI_FROM_DATABASE=mediola - connected living AG
- 
- OUI:406826*
-- ID_OUI_FROM_DATABASE=Thales Optronics Limited
-+ ID_OUI_FROM_DATABASE=Thales UK Limited
- 
- OUI:406AAB*
-  ID_OUI_FROM_DATABASE=RIM
-@@ -57436,6 +57466,9 @@ OUI:5048EB*
- OUI:504A5E*
-  ID_OUI_FROM_DATABASE=Masimo Corporation
- 
-+OUI:504A6E*
-+ ID_OUI_FROM_DATABASE=NETGEAR INC.,
-+
- OUI:504F94*
-  ID_OUI_FROM_DATABASE=Loxone Electronics GmbH
- 
-@@ -58480,6 +58513,9 @@ OUI:6045BD*
- OUI:604616*
-  ID_OUI_FROM_DATABASE=XIAMEN VANN INTELLIGENT CO., LTD
- 
-+OUI:6047D4*
-+ ID_OUI_FROM_DATABASE=FORICS Electronic Technology Co., Ltd.
-+
- OUI:604A1C*
-  ID_OUI_FROM_DATABASE=SUYIN Corporation
- 
-@@ -58630,6 +58666,9 @@ OUI:60D30A*
- OUI:60D819*
-  ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
- 
-+OUI:60D9C7*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:60DA23*
-  ID_OUI_FROM_DATABASE=Estech Co.,Ltd
- 
-@@ -58849,6 +58888,9 @@ OUI:6473E2*
- OUI:647657*
-  ID_OUI_FROM_DATABASE=Innovative Security Designs
- 
-+OUI:6476BA*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:647791*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -58882,6 +58924,9 @@ OUI:6487D7*
- OUI:6488FF*
-  ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd.
- 
-+OUI:648D9E*
-+ ID_OUI_FROM_DATABASE=IVT Electronic Co.,Ltd
-+
- OUI:64995D*
-  ID_OUI_FROM_DATABASE=LGE
- 
-@@ -59161,6 +59206,9 @@ OUI:687924*
- OUI:6879ED*
-  ID_OUI_FROM_DATABASE=SHARP Corporation
- 
-+OUI:687CC8*
-+ ID_OUI_FROM_DATABASE=Measurement Systems S. de R.L.
-+
- OUI:687CD5*
-  ID_OUI_FROM_DATABASE=Y Soft Corporation, a.s.
- 
-@@ -59425,6 +59473,9 @@ OUI:6C6F18*
- OUI:6C7039*
-  ID_OUI_FROM_DATABASE=Novar GmbH
- 
-+OUI:6C709F*
-+ ID_OUI_FROM_DATABASE=Apple
-+
- OUI:6C71D9*
-  ID_OUI_FROM_DATABASE=AzureWave Technologies, Inc
- 
-@@ -59779,6 +59830,9 @@ OUI:708B78*
- OUI:708D09*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-+OUI:709383*
-+ ID_OUI_FROM_DATABASE=Intelligent Optical Network High Tech CO.,LTD.
-+
- OUI:7093F8*
-  ID_OUI_FROM_DATABASE=Space Monkey, Inc.
- 
-@@ -60166,6 +60220,9 @@ OUI:74F612*
- OUI:74F726*
-  ID_OUI_FROM_DATABASE=Neuron Robotics
- 
-+OUI:74F85D*
-+ ID_OUI_FROM_DATABASE=Berkeley Nucleonics Corp
-+
- OUI:74FDA0*
-  ID_OUI_FROM_DATABASE=Compupal (Group) Corporation
- 
-@@ -60862,6 +60919,9 @@ OUI:7CFADF*
- OUI:7CFE28*
-  ID_OUI_FROM_DATABASE=Salutron Inc.
- 
-+OUI:7CFF62*
-+ ID_OUI_FROM_DATABASE=Huizhou Super Electron Technology Co.,Ltd.
-+
- OUI:80000B*
-  ID_OUI_FROM_DATABASE=Intel Corporate
- 
-@@ -61105,6 +61165,9 @@ OUI:80D019*
- OUI:80D18B*
-  ID_OUI_FROM_DATABASE=Hangzhou I'converge Technology Co.,Ltd
- 
-+OUI:80D433*
-+ ID_OUI_FROM_DATABASE=LzLabs GmbH
-+
- OUI:80D733*
-  ID_OUI_FROM_DATABASE=QSR Automations, Inc.
- 
-@@ -61336,6 +61399,9 @@ OUI:84ACA4*
- OUI:84AF1F*
-  ID_OUI_FROM_DATABASE=Beat System Service Co,. Ltd.
- 
-+OUI:84B59C*
-+ ID_OUI_FROM_DATABASE=Juniper networks
-+
- OUI:84C2E4*
-  ID_OUI_FROM_DATABASE=Jiangsu Qinheng Co., Ltd.
- 
-@@ -61402,6 +61468,9 @@ OUI:880355*
- OUI:880905*
-  ID_OUI_FROM_DATABASE=MTMCommunications
- 
-+OUI:880FB6*
-+ ID_OUI_FROM_DATABASE=Jabil Circuits India Pvt Ltd,-EHTP unit
-+
- OUI:881036*
-  ID_OUI_FROM_DATABASE=Panodic(ShenZhen) Electronics Limted
- 
-@@ -62605,6 +62674,9 @@ OUI:983000*
- OUI:983071*
-  ID_OUI_FROM_DATABASE=DAIKYUNG VASCOM
- 
-+OUI:98349D*
-+ ID_OUI_FROM_DATABASE=Krauss Maffei Technologies GmbH
-+
- OUI:983571*
-  ID_OUI_FROM_DATABASE=Sub10 Systems Ltd
- 
-@@ -63061,6 +63133,9 @@ OUI:9CCAD9*
- OUI:9CCD82*
-  ID_OUI_FROM_DATABASE=CHENG UEI PRECISION INDUSTRY CO.,LTD
- 
-+OUI:9CD21E*
-+ ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd.
-+
- OUI:9CD24B*
-  ID_OUI_FROM_DATABASE=zte corporation
- 
-@@ -63358,6 +63433,9 @@ OUI:A0CEC8*
- OUI:A0CF5B*
-  ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC.
- 
-+OUI:A0D12A*
-+ ID_OUI_FROM_DATABASE=AXPRO Technology Inc.
-+
- OUI:A0D3C1*
-  ID_OUI_FROM_DATABASE=Hewlett Packard
- 
-@@ -64366,6 +64444,9 @@ OUI:B05B1F*
- OUI:B05CE5*
-  ID_OUI_FROM_DATABASE=Nokia Corporation
- 
-+OUI:B061C7*
-+ ID_OUI_FROM_DATABASE=Ericsson-LG Enterprise
-+
- OUI:B06563*
-  ID_OUI_FROM_DATABASE=Shanghai Railway Communication Factory
- 
-@@ -64684,6 +64765,9 @@ OUI:B46293*
- OUI:B462AD*
-  ID_OUI_FROM_DATABASE=raytest GmbH
- 
-+OUI:B46698*
-+ ID_OUI_FROM_DATABASE=Zealabs srl
-+
- OUI:B467E9*
-  ID_OUI_FROM_DATABASE=Qingdao GoerTek Technology Co., Ltd.
- 
-@@ -65590,6 +65674,9 @@ OUI:C098E5*
- OUI:C09C92*
-  ID_OUI_FROM_DATABASE=COBY
- 
-+OUI:C09D26*
-+ ID_OUI_FROM_DATABASE=Topicon HK Lmd.
-+
- OUI:C09F42*
-  ID_OUI_FROM_DATABASE=Apple
- 
-@@ -65833,6 +65920,9 @@ OUI:C45DD8*
- OUI:C46044*
-  ID_OUI_FROM_DATABASE=Everex Electronics Limited
- 
-+OUI:C4626B*
-+ ID_OUI_FROM_DATABASE=ZPT Vigantice
-+
- OUI:C462EA*
-  ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd
- 
-@@ -68605,6 +68695,9 @@ OUI:EC14F6*
- OUI:EC172F*
-  ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD.
- 
-+OUI:EC1766*
-+ ID_OUI_FROM_DATABASE=Research Centre Module
-+
- OUI:EC1A59*
-  ID_OUI_FROM_DATABASE=Belkin International Inc.
- 
-diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb
-index 6142dc8..7f833e3 100644
---- a/hwdb/20-pci-vendor-model.hwdb
-+++ b/hwdb/20-pci-vendor-model.hwdb
-@@ -4166,6 +4166,9 @@ pci:v00001002d00006600*
- pci:v00001002d00006601*
-  ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M]
- 
-+pci:v00001002d00006601sv0000103Csd00002100*
-+ ID_MODEL_FROM_DATABASE=FirePro M4100
-+
- pci:v00001002d00006602*
-  ID_MODEL_FROM_DATABASE=Mars
- 
-@@ -4185,10 +4188,22 @@ pci:v00001002d00006607*
-  ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M]
- 
- pci:v00001002d00006610*
-- ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670/R7 250]
-+ ID_MODEL_FROM_DATABASE=Oland XT [Radeon HD 8670 / R7 250]
- 
- pci:v00001002d00006611*
-- ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570]
-+ ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8570 / R7 240 OEM]
-+
-+pci:v00001002d00006611sv00001028sd0000210B*
-+ ID_MODEL_FROM_DATABASE=Radeon R5 240 OEM
-+
-+pci:v00001002d00006611sv0000174Bsd00004248*
-+ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
-+
-+pci:v00001002d00006611sv0000174Bsd0000A240*
-+ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
-+
-+pci:v00001002d00006611sv00001B0Asd000090D3*
-+ ID_MODEL_FROM_DATABASE=Radeon R7 240 OEM
- 
- pci:v00001002d00006613*
-  ID_MODEL_FROM_DATABASE=Oland PRO [Radeon R7 240]
-@@ -4224,7 +4239,7 @@ pci:v00001002d00006658*
-  ID_MODEL_FROM_DATABASE=Bonaire XTX [Radeon R7 260X]
- 
- pci:v00001002d0000665C*
-- ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770]
-+ ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770 / R9 260 OEM]
- 
- pci:v00001002d0000665Csv00001043sd00000452*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7790 DirectCU II OC
-@@ -4235,6 +4250,12 @@ pci:v00001002d0000665Csv00001462sd00002930*
- pci:v00001002d0000665Csv00001462sd00002932*
-  ID_MODEL_FROM_DATABASE=Radeon HD 8770
- 
-+pci:v00001002d0000665Csv00001462sd00002934*
-+ ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM
-+
-+pci:v00001002d0000665Csv0000148Csd00009260*
-+ ID_MODEL_FROM_DATABASE=Radeon R9 260 OEM
-+
- pci:v00001002d0000665Csv00001682sd00003310*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7790 Black Edition 2 GB
- 
-@@ -4817,9 +4838,21 @@ pci:v00001002d00006742sv0000148Csd00006570*
- pci:v00001002d00006742sv00001682sd00006570*
-  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
- 
-+pci:v00001002d00006742sv0000174Bsd00005570*
-+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 5570]
-+
- pci:v00001002d00006742sv0000174Bsd00006570*
-  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
- 
-+pci:v00001002d00006742sv0000174Bsd00007570*
-+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 7570]
-+
-+pci:v00001002d00006742sv0000174Bsd00008510*
-+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8510]
-+
-+pci:v00001002d00006742sv0000174Bsd00008570*
-+ ID_MODEL_FROM_DATABASE=Turks [Radeon HD 8570]
-+
- pci:v00001002d00006742sv00001787sd00006570*
-  ID_MODEL_FROM_DATABASE=Turks [Radeon HD 6570]
- 
-@@ -5541,13 +5574,13 @@ pci:v00001002d00006770sv000017AAsd00003658*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7470A
- 
- pci:v00001002d00006771*
-- ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490]
-+ ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490 / R5 235X OEM]
- 
- pci:v00001002d00006772*
-  ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7450A]
- 
- pci:v00001002d00006778*
-- ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470]
-+ ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470/8470 / R5 235 OEM]
- 
- pci:v00001002d00006778sv00001019sd00000024*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7470
-@@ -5580,7 +5613,7 @@ pci:v00001002d00006778sv0000174Bsd0000E145*
-  ID_MODEL_FROM_DATABASE=Radeon HD 7470
- 
- pci:v00001002d00006779*
-- ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450]
-+ ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450/7450/8450 / R5 230 OEM]
- 
- pci:v00001002d00006779sv00001019sd00000016*
-  ID_MODEL_FROM_DATABASE=Radeon HD 6450
-@@ -5979,7 +6012,7 @@ pci:v00001002d00006831*
-  ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series]
- 
- pci:v00001002d00006835*
-- ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R7 260]
-+ ID_MODEL_FROM_DATABASE=Cape Verde PRX [Radeon R9 255 OEM]
- 
- pci:v00001002d00006837*
-  ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730/8730]
-@@ -8967,7 +9000,7 @@ pci:v00001002d0000999C*
-  ID_MODEL_FROM_DATABASE=Richland
- 
- pci:v00001002d0000999D*
-- ID_MODEL_FROM_DATABASE=Richland
-+ ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8550D]
- 
- pci:v00001002d000099A0*
-  ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7520G]
-@@ -17663,6 +17696,9 @@ pci:v0000109Ed0000036Esv00001461sd00000761*
- pci:v0000109Ed0000036Esv00001461sd00000771*
-  ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771
- 
-+pci:v0000109Ed0000036Esv00001464sd0000AA00*
-+ ID_MODEL_FROM_DATABASE=iTuner Spectra8
-+
- pci:v0000109Ed0000036Esv000014F1sd00000001*
-  ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC
- 
-@@ -27503,6 +27539,9 @@ pci:v000010ECd00005209*
- pci:v000010ECd00005227*
-  ID_MODEL_FROM_DATABASE=RTS5227 PCI Express Card Reader
- 
-+pci:v000010ECd00005227sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v000010ECd00005229*
-  ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader
- 
-@@ -48170,9 +48209,18 @@ pci:v0000168Cd00000033*
- pci:v0000168Cd00000034*
-  ID_MODEL_FROM_DATABASE=AR9462 Wireless Network Adapter
- 
-+pci:v0000168Cd00000034sv00001A56sd00002003*
-+ ID_MODEL_FROM_DATABASE=Killer Wireless-N 1202 Half-size Mini PCIe Card
-+
- pci:v0000168Cd00000036*
-  ID_MODEL_FROM_DATABASE=QCA9565 / AR9565 Wireless Network Adapter
- 
-+pci:v0000168Cd00000037*
-+ ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter
-+
-+pci:v0000168Cd00000037sv00001A3Bsd00002100*
-+ ID_MODEL_FROM_DATABASE=AW-NB100H 802.11n Wireless Mini PCIe Card
-+
- pci:v0000168Cd0000003C*
-  ID_MODEL_FROM_DATABASE=QCA988x 802.11ac Wireless Network Adapter
- 
-@@ -48191,6 +48239,9 @@ pci:v0000168Cd00009013*
- pci:v0000168Cd0000FF19*
-  ID_MODEL_FROM_DATABASE=AR5006X Wireless Network Adapter
- 
-+pci:v0000168Cd0000FF1B*
-+ ID_MODEL_FROM_DATABASE=AR2425 Wireless Network Adapter [AR5007EG 802.11bg]
-+
- pci:v0000168Cd0000FF1C*
-  ID_MODEL_FROM_DATABASE=AR5008 Wireless Network Adapter
- 
-@@ -49406,6 +49457,9 @@ pci:v00001814d00003298sv0000103Csd000018EC*
- pci:v00001814d00003592*
-  ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe
- 
-+pci:v00001814d0000359F*
-+ ID_MODEL_FROM_DATABASE=RT3592 PCIe Wireless Network Adapter
-+
- pci:v00001814d00005360*
-  ID_MODEL_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R
- 
-@@ -49421,6 +49475,9 @@ pci:v00001814d00005390*
- pci:v00001814d00005390sv0000103Csd00001636*
-  ID_MODEL_FROM_DATABASE=U98Z077.00 Half-size Mini PCIe Card
- 
-+pci:v00001814d00005392*
-+ ID_MODEL_FROM_DATABASE=RT5392 PCIe Wireless Network Adapter
-+
- pci:v00001814d0000539F*
-  ID_MODEL_FROM_DATABASE=RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip]
- 
-@@ -50585,6 +50642,12 @@ pci:v00001957d00000087*
- pci:v00001957d000000B4*
-  ID_MODEL_FROM_DATABASE=MPC8315E
- 
-+pci:v00001957d000000B6*
-+ ID_MODEL_FROM_DATABASE=MPC8314E
-+
-+pci:v00001957d000000B6sv00001A56sd00001101*
-+ ID_MODEL_FROM_DATABASE=Killer Xeno Pro Gigabit Ethernet Controller
-+
- pci:v00001957d000000C2*
-  ID_MODEL_FROM_DATABASE=MPC8379E
- 
-@@ -50669,6 +50732,12 @@ pci:v00001957d00007011*
- pci:v00001957d00007018*
-  ID_MODEL_FROM_DATABASE=MPC8610
- 
-+pci:v00001957d0000C006*
-+ ID_MODEL_FROM_DATABASE=MPC8308
-+
-+pci:v00001957d0000C006sv00001A56sd00001201*
-+ ID_MODEL_FROM_DATABASE=Killer E2100 Gigabit Ethernet Controller
-+
- pci:v00001958*
-  ID_VENDOR_FROM_DATABASE=Faster Technology, LLC.
- 
-@@ -54164,6 +54233,9 @@ pci:v00008086d00000412*
- pci:v00008086d00000416*
-  ID_MODEL_FROM_DATABASE=4th Gen Core Processor Integrated Graphics Controller
- 
-+pci:v00008086d00000416sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d0000041A*
-  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3 Processor Integrated Graphics Controller
- 
-@@ -54680,9 +54752,15 @@ pci:v00008086d0000095Asv00008086sd00005000*
- pci:v00008086d0000095Asv00008086sd00005002*
-  ID_MODEL_FROM_DATABASE=Wireless-N 7265
- 
-+pci:v00008086d0000095Asv00008086sd0000500A*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
- pci:v00008086d0000095Asv00008086sd00005010*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
-+pci:v00008086d0000095Asv00008086sd00005012*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
- pci:v00008086d0000095Asv00008086sd00005020*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
- 
-@@ -54695,6 +54773,9 @@ pci:v00008086d0000095Asv00008086sd00005090*
- pci:v00008086d0000095Asv00008086sd00005110*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
-+pci:v00008086d0000095Asv00008086sd00005190*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
- pci:v00008086d0000095Asv00008086sd00005400*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
-@@ -54707,24 +54788,30 @@ pci:v00008086d0000095Asv00008086sd00005420*
- pci:v00008086d0000095Asv00008086sd00005490*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
-+pci:v00008086d0000095Asv00008086sd00005590*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
-+
- pci:v00008086d0000095Asv00008086sd00009010*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
--pci:v00008086d0000095Asv00008086sd00009210*
-+pci:v00008086d0000095Asv00008086sd00009110*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
--pci:v00008086d0000095Asv00008086sd00009410*
-+pci:v00008086d0000095Asv00008086sd00009210*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
--pci:v00008086d0000095B*
-- ID_MODEL_FROM_DATABASE=Wireless 7265
-+pci:v00008086d0000095Asv00008086sd00009310*
-+ ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
--pci:v00008086d0000095Bsv00008086sd0000500A*
-+pci:v00008086d0000095Asv00008086sd00009410*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
--pci:v00008086d0000095Bsv00008086sd00005012*
-+pci:v00008086d0000095Asv00008086sd00009510*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7265
- 
-+pci:v00008086d0000095B*
-+ ID_MODEL_FROM_DATABASE=Wireless 7265
-+
- pci:v00008086d0000095Bsv00008086sd00005200*
-  ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7265
- 
-@@ -54860,6 +54947,9 @@ pci:v00008086d00000C01*
- pci:v00008086d00000C04*
-  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor DRAM Controller
- 
-+pci:v00008086d00000C04sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00000C05*
-  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor PCI Express x8 Controller
- 
-@@ -54872,6 +54962,9 @@ pci:v00008086d00000C09*
- pci:v00008086d00000C0C*
-  ID_MODEL_FROM_DATABASE=Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller
- 
-+pci:v00008086d00000C0Csv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00000C46*
-  ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 1
- 
-@@ -57986,6 +58079,9 @@ pci:v00008086d00001539*
- pci:v00008086d0000153A*
-  ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM
- 
-+pci:v00008086d0000153Asv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d0000153B*
-  ID_MODEL_FROM_DATABASE=Ethernet Connection I217-V
- 
-@@ -69035,6 +69131,9 @@ pci:v00008086d00008C02*
- pci:v00008086d00008C03*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family 6-port SATA Controller 1 [AHCI mode]
- 
-+pci:v00008086d00008C03sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C04*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SATA Controller 1 [RAID mode]
- 
-@@ -69062,12 +69161,18 @@ pci:v00008086d00008C0F*
- pci:v00008086d00008C10*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1
- 
-+pci:v00008086d00008C10sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C11*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #1
- 
- pci:v00008086d00008C12*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2
- 
-+pci:v00008086d00008C12sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C13*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family PCI Express Root Port #2
- 
-@@ -69110,12 +69215,18 @@ pci:v00008086d00008C1F*
- pci:v00008086d00008C20*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller
- 
-+pci:v00008086d00008C20sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C21*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset High Definition Audio Controller
- 
- pci:v00008086d00008C22*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family SMBus Controller
- 
-+pci:v00008086d00008C22sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C23*
-  ID_MODEL_FROM_DATABASE=8 Series Chipset Family CHAP Counters
- 
-@@ -69125,12 +69236,21 @@ pci:v00008086d00008C24*
- pci:v00008086d00008C26*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #1
- 
-+pci:v00008086d00008C26sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C2D*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB EHCI #2
- 
-+pci:v00008086d00008C2Dsv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C31*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family USB xHCI
- 
-+pci:v00008086d00008C31sv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C33*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family LAN Controller
- 
-@@ -69140,6 +69260,9 @@ pci:v00008086d00008C34*
- pci:v00008086d00008C3A*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #1
- 
-+pci:v00008086d00008C3Asv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C3B*
-  ID_MODEL_FROM_DATABASE=8 Series/C220 Series Chipset Family MEI Controller #2
- 
-@@ -69197,6 +69320,9 @@ pci:v00008086d00008C4E*
- pci:v00008086d00008C4F*
-  ID_MODEL_FROM_DATABASE=QM87 Express LPC Controller
- 
-+pci:v00008086d00008C4Fsv000017AAsd0000220E*
-+ ID_MODEL_FROM_DATABASE=ThinkPad T440p
-+
- pci:v00008086d00008C50*
-  ID_MODEL_FROM_DATABASE=B85 Express LPC Controller
- 
-diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb
-index 6663820..60dbcd2 100644
---- a/hwdb/20-usb-vendor-model.hwdb
-+++ b/hwdb/20-usb-vendor-model.hwdb
-@@ -46055,6 +46055,12 @@ usb:v1B5A*
- usb:v1B65*
-  ID_VENDOR_FROM_DATABASE=The Hong Kong Standards and Testing Centre Ltd.
- 
-+usb:v1B71*
-+ ID_VENDOR_FROM_DATABASE=Fushicai
-+
-+usb:v1B71p3002*
-+ ID_MODEL_FROM_DATABASE=USBTV007 Video Grabber [EasyCAP]
-+
- usb:v1B72*
-  ID_VENDOR_FROM_DATABASE=ATERGI TECHNOLOGY CO., LTD.
- 
diff --git a/SOURCES/0176-update-done-ignore-nanosecond-file-timestamp-compone.patch b/SOURCES/0176-update-done-ignore-nanosecond-file-timestamp-compone.patch
new file mode 100644
index 0000000..e2e71e1
--- /dev/null
+++ b/SOURCES/0176-update-done-ignore-nanosecond-file-timestamp-compone.patch
@@ -0,0 +1,38 @@
+From 6503fbef433da29fe1f450e44c8eaca61888bcda Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 27 Apr 2015 17:25:57 +0200
+Subject: [PATCH] update-done: ignore nanosecond file timestamp components,
+ they are not reliable
+
+https://bugs.freedesktop.org/show_bug.cgi?id=90192
+(cherry picked from commit 329c542585cd92cb905990e3bf59eda16fd88cfb)
+
+Cherry-picked from: a38a3e0
+Resolves: #1222517
+---
+ src/update-done/update-done.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/src/update-done/update-done.c b/src/update-done/update-done.c
+index 561963e..cb5cd6f 100644
+--- a/src/update-done/update-done.c
++++ b/src/update-done/update-done.c
+@@ -36,9 +36,15 @@ static int apply_timestamp(const char *path, struct timespec *ts) {
+         assert(ts);
+ 
+         if (stat(path, &st) >= 0) {
+-                /* Is the timestamp file already newer than the OS? If so, there's nothing to do. */
+-                if (st.st_mtim.tv_sec > ts->tv_sec ||
+-                    (st.st_mtim.tv_sec == ts->tv_sec && st.st_mtim.tv_nsec >= ts->tv_nsec))
++                /* Is the timestamp file already newer than the OS? If
++                 * so, there's nothing to do. We ignore the nanosecond
++                 * component of the timestamp, since some file systems
++                 * do not support any better accuracy than 1s and we
++                 * have no way to identify the accuracy
++                 * available. Most notably ext4 on small disks (where
++                 * 128 byte inodes are used) does not support better
++                 * accuracy than 1s. */
++                if (st.st_mtim.tv_sec > ts->tv_sec)
+                         return 0;
+ 
+                 /* It is older? Then let's update it */
diff --git a/SOURCES/0177-journal-Add-missing-byte-order-conversions.patch b/SOURCES/0177-journal-Add-missing-byte-order-conversions.patch
deleted file mode 100644
index 13f36ef..0000000
--- a/SOURCES/0177-journal-Add-missing-byte-order-conversions.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From dcf643901f6aeeda806e19fa7cbb766ded3f3d44 Mon Sep 17 00:00:00 2001
-From: George McCollister <george.mccollister@gmail.com>
-Date: Tue, 31 Dec 2013 14:37:32 -0600
-Subject: [PATCH] journal: Add missing byte order conversions
-
-Convert entry_array.items[0] to host byte order prior to passing it to
-chain_cache_put().
-
-[zj: also use le64toh in journal-verify.c]
-
-https://bugs.freedesktop.org/show_bug.cgi?id=73194
----
- src/journal/journal-file.c   | 4 ++--
- src/journal/journal-verify.c | 6 +++---
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 9f04c58..748816a 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -1452,7 +1452,7 @@ static int generic_array_get(
- 
- found:
-         /* Let's cache this item for the next invocation */
--        chain_cache_put(f->chain_cache, ci, first, a, o->entry_array.items[0], t, i);
-+        chain_cache_put(f->chain_cache, ci, first, a, le64toh(o->entry_array.items[0]), t, i);
- 
-         r = journal_file_move_to_object(f, OBJECT_ENTRY, p, &o);
-         if (r < 0)
-@@ -1685,7 +1685,7 @@ found:
-                 return 0;
- 
-         /* Let's cache this item for the next invocation */
--        chain_cache_put(f->chain_cache, ci, first, a, array->entry_array.items[0], t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i);
-+        chain_cache_put(f->chain_cache, ci, first, a, le64toh(array->entry_array.items[0]), t, subtract_one ? (i > 0 ? i-1 : (uint64_t) -1) : i);
- 
-         if (subtract_one && i == 0)
-                 p = last_p;
-diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
-index 3405811..82b0f0a 100644
---- a/src/journal/journal-verify.c
-+++ b/src/journal/journal-verify.c
-@@ -249,12 +249,12 @@ static int journal_file_object_verify(JournalFile *f, uint64_t offset, Object *o
-                 }
- 
-                 for (i = 0; i < journal_file_entry_array_n_items(o); i++)
--                        if (o->entry_array.items[i] != 0 &&
--                            !VALID64(o->entry_array.items[i])) {
-+                        if (le64toh(o->entry_array.items[i]) != 0 &&
-+                            !VALID64(le64toh(o->entry_array.items[i]))) {
-                                 log_error(OFSfmt": invalid object entry array item (%"PRIu64"/%"PRIu64"): "OFSfmt,
-                                           offset,
-                                           i, journal_file_entry_array_n_items(o),
--                                          o->entry_array.items[i]);
-+                                          le64toh(o->entry_array.items[i]));
-                                 return -EBADMSG;
-                         }
- 
diff --git a/SOURCES/0177-sd-daemon-simplify-sd_pid_notify_with_fds.patch b/SOURCES/0177-sd-daemon-simplify-sd_pid_notify_with_fds.patch
new file mode 100644
index 0000000..feb6b73
--- /dev/null
+++ b/SOURCES/0177-sd-daemon-simplify-sd_pid_notify_with_fds.patch
@@ -0,0 +1,119 @@
+From f065b88b17bd569dda412b2e6f34d921f7badb79 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Fri, 13 Mar 2015 21:22:05 -0500
+Subject: [PATCH] sd-daemon: simplify sd_pid_notify_with_fds
+
+Coverity was complaining that CMSG_NXTHDR is used without
+checking the return value. In this case it cannot fail, but
+it is a good excuse to simplify the function a bit.
+
+CID #1261726.
+
+(cherry picked from commit 64144440a5d2d94482f882b992fd2a4e0dca7a05)
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-April/031348.html
+
+Cherry-picked from: c1258d6
+Resolves: #1222517
+---
+ src/libsystemd/sd-daemon/sd-daemon.c | 61 ++++++++++++++++--------------------
+ 1 file changed, 27 insertions(+), 34 deletions(-)
+
+diff --git a/src/libsystemd/sd-daemon/sd-daemon.c b/src/libsystemd/sd-daemon/sd-daemon.c
+index 22a3a53..1474321 100644
+--- a/src/libsystemd/sd-daemon/sd-daemon.c
++++ b/src/libsystemd/sd-daemon/sd-daemon.c
+@@ -352,12 +352,10 @@ _public_ int sd_pid_notify_with_fds(pid_t pid, int unset_environment, const char
+                 .msg_iovlen = 1,
+                 .msg_name = &sockaddr,
+         };
+-        struct cmsghdr *control;
+         _cleanup_close_ int fd = -1;
+         struct cmsghdr *cmsg = NULL;
+         const char *e;
+-        size_t controllen_without_ucred = 0;
+-        bool try_without_ucred = false;
++        bool have_pid;
+         int r;
+ 
+         if (!state) {
+@@ -396,42 +394,37 @@ _public_ int sd_pid_notify_with_fds(pid_t pid, int unset_environment, const char
+         if (msghdr.msg_namelen > sizeof(struct sockaddr_un))
+                 msghdr.msg_namelen = sizeof(struct sockaddr_un);
+ 
+-        control = alloca(CMSG_SPACE(sizeof(struct ucred)) + CMSG_SPACE(sizeof(int) * n_fds));
++        have_pid = pid != 0 && pid != getpid();
+ 
+-        if (n_fds > 0) {
+-                msghdr.msg_control = control;
+-                msghdr.msg_controllen = CMSG_LEN(sizeof(int) * n_fds);
++        if (n_fds > 0 || have_pid) {
++                msghdr.msg_controllen = CMSG_SPACE(sizeof(int) * n_fds) +
++                                        CMSG_SPACE(sizeof(struct ucred) * have_pid);
++                msghdr.msg_control = alloca(msghdr.msg_controllen);
+ 
+                 cmsg = CMSG_FIRSTHDR(&msghdr);
+-                cmsg->cmsg_level = SOL_SOCKET;
+-                cmsg->cmsg_type = SCM_RIGHTS;
+-                cmsg->cmsg_len = CMSG_LEN(sizeof(int) * n_fds);
++                if (n_fds > 0) {
++                        cmsg->cmsg_level = SOL_SOCKET;
++                        cmsg->cmsg_type = SCM_RIGHTS;
++                        cmsg->cmsg_len = CMSG_LEN(sizeof(int) * n_fds);
+ 
+-                memcpy(CMSG_DATA(cmsg), fds, sizeof(int) * n_fds);
+-        }
+-
+-        if (pid != 0 && pid != getpid()) {
+-                struct ucred *ucred;
+-
+-                try_without_ucred = true;
+-                controllen_without_ucred = msghdr.msg_controllen;
++                        memcpy(CMSG_DATA(cmsg), fds, sizeof(int) * n_fds);
+ 
+-                msghdr.msg_control = control;
+-                msghdr.msg_controllen += CMSG_LEN(sizeof(struct ucred));
++                        if (have_pid)
++                                assert_se(cmsg = CMSG_NXTHDR(&msghdr, cmsg));
++                }
+ 
+-                if (cmsg)
+-                        cmsg = CMSG_NXTHDR(&msghdr, cmsg);
+-                else
+-                        cmsg = CMSG_FIRSTHDR(&msghdr);
++                if (have_pid) {
++                        struct ucred *ucred;
+ 
+-                cmsg->cmsg_level = SOL_SOCKET;
+-                cmsg->cmsg_type = SCM_CREDENTIALS;
+-                cmsg->cmsg_len = CMSG_LEN(sizeof(struct ucred));
++                        cmsg->cmsg_level = SOL_SOCKET;
++                        cmsg->cmsg_type = SCM_CREDENTIALS;
++                        cmsg->cmsg_len = CMSG_LEN(sizeof(struct ucred));
+ 
+-                ucred = (struct ucred*) CMSG_DATA(cmsg);
+-                ucred->pid = pid;
+-                ucred->uid = getuid();
+-                ucred->gid = getgid();
++                        ucred = (struct ucred*) CMSG_DATA(cmsg);
++                        ucred->pid = pid;
++                        ucred->uid = getuid();
++                        ucred->gid = getgid();
++                }
+         }
+ 
+         /* First try with fake ucred data, as requested */
+@@ -441,10 +434,10 @@ _public_ int sd_pid_notify_with_fds(pid_t pid, int unset_environment, const char
+         }
+ 
+         /* If that failed, try with our own ucred instead */
+-        if (try_without_ucred) {
+-                if (controllen_without_ucred <= 0)
++        if (have_pid) {
++                msghdr.msg_controllen -= CMSG_SPACE(sizeof(struct ucred));
++                if (msghdr.msg_controllen == 0)
+                         msghdr.msg_control = NULL;
+-                msghdr.msg_controllen = controllen_without_ucred;
+ 
+                 if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) >= 0) {
+                         r = 1;
diff --git a/SOURCES/0178-fstab-generator-add-x-systemd.requires-and-x-systemd.patch b/SOURCES/0178-fstab-generator-add-x-systemd.requires-and-x-systemd.patch
new file mode 100644
index 0000000..71a910d
--- /dev/null
+++ b/SOURCES/0178-fstab-generator-add-x-systemd.requires-and-x-systemd.patch
@@ -0,0 +1,248 @@
+From 8f149756435998d009a8edc7206c5de038e5cbf1 Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak@redhat.com>
+Date: Mon, 18 May 2015 12:30:37 +0200
+Subject: [PATCH] fstab-generator: add x-systemd.requires and
+ x-systemd.requires-mounts-for
+
+Currently we have no way how to specify dependencies between fstab
+entries (or another units) in the /etc/fstab. It means that users are
+forced to bypass fstab and write .mount units manually.
+
+The patch introduces new systemd fstab options:
+
+x-systemd.requires=<PATH>
+
+ - to specify dependence an another mount (PATH is translated to unit name)
+
+x-systemd.requires=<UNIT>
+
+ - to specify dependence on arbitrary UNIT
+
+x-systemd.requires-mounts-for=<PATH ...>
+
+ - to specify dependence on another paths, implemented by
+   RequiresMountsFor=. The option may be specified more than once.
+
+For example two bind mounts where B depends on A:
+
+ /mnt/test/A    /mnt/test/A     none    bind,defaults
+ /mnt/test/A    /mnt/test/B     none    bind,x-systemd.requires=/mnt/test/A
+
+More complex example with overlay FS where one mount point depends on
+"low" and "upper" directories:
+
+ /dev/sdc1   /mnt/low    ext4     defaults
+ /dev/sdc2   /mnt/high   ext4     defaults
+ overlay     /mnt/merged overlay  lowerdir=/mnt/low,upperdir=/mnt/high/data,workdir=/mnt/high/work,x-systemd.requires-mounts-for=/mnt/low,x-systemd.requires-mounts-for=mnt/high
+
+https://bugzilla.redhat.com/show_bug.cgi?id=812826
+https://bugzilla.redhat.com/show_bug.cgi?id=1164334
+
+Conflicts:
+	src/fstab-generator/fstab-generator.c
+
+Cherry-picked from: 3519d230c8bafe834b2dac26ace49fcfba139823
+Resolves: #1164334
+---
+ man/systemd.mount.xml                 | 30 ++++++++++++++
+ src/fstab-generator/fstab-generator.c | 76 +++++++++++++++++++++++++++++++++++
+ src/shared/fstab-util.c               | 30 ++++++++++++++
+ src/shared/fstab-util.h               |  2 +
+ 4 files changed, 138 insertions(+)
+
+diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml
+index fcb9a44..8e652e1 100644
+--- a/man/systemd.mount.xml
++++ b/man/systemd.mount.xml
+@@ -139,6 +139,36 @@
+     <variablelist class='fstab-options'>
+ 
+       <varlistentry>
++        <term><option>x-systemd.requires=</option></term>
++
++        <listitem><para>Configures a <varname>Requires=</varname> and
++        an <varname>After=</varname> dependency between the created
++        mount unit and another systemd unit, such as a device or mount
++        unit. The argument should be a unit name, or an absolute path
++        to a device node or mount point.  This option may be specified
++        more than once. This option is particularly useful for mount
++        point declarations that need an additional device to be around
++        (such as an external journal device for journal file systems)
++        or an additional mount to be in place (such as an overlay file
++        system that merges multiple mount points). See
++        <varname>After=</varname> and <varname>Requires=</varname> in
++        <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++        for details.</para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><option>x-systemd.requires-mounts-for=</option></term>
++
++        <listitem><para>Configures a
++        <varname>RequiresMountsFor=</varname> dependency between the
++        created mount unit and other mount units. The argument must be
++        an absolute path. This option may be specified more than once.
++        See <varname>RequiresMountsFor=</varname> in
++        <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>
++        for details.</para></listitem>
++       </varlistentry>
++
++      <varlistentry>
+         <term><option>x-systemd.automount</option></term>
+ 
+         <listitem><para>An automount unit will be created for the file
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 8e2f522..65ed205 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -155,6 +155,64 @@ static bool mount_in_initrd(struct mntent *me) {
+                streq(me->mnt_dir, "/usr");
+ }
+ 
++static int write_requires_after(FILE *f, const char *opts) {
++        _cleanup_strv_free_ char **names = NULL, **units = NULL;
++        _cleanup_free_ char *res = NULL;
++        char **s;
++        int r;
++
++        assert(f);
++        assert(opts);
++
++        r = fstab_extract_values(opts, "x-systemd.requires", &names);
++        if (r < 0)
++                return log_warning_errno(r, "Failed to parse options: %m");
++        if (r == 0)
++                return 0;
++
++        STRV_FOREACH(s, names) {
++                char *x;
++
++                x = unit_name_mangle_with_suffix(*s, MANGLE_NOGLOB, ".mount");
++                if (!x)
++                        return log_error_errno(r, "Failed to generate unit name: %m");
++                r = strv_consume(&units, x);
++                if (r < 0)
++                        return log_oom();
++        }
++
++        if (units) {
++                res = strv_join(units, " ");
++                if (!res)
++                        return log_oom();
++                fprintf(f, "After=%1$s\nRequires=%1$s\n", res);
++        }
++
++        return 0;
++}
++
++static int write_requires_mounts_for(FILE *f, const char *opts) {
++        _cleanup_strv_free_ char **paths = NULL;
++        _cleanup_free_ char *res = NULL;
++        int r;
++
++        assert(f);
++        assert(opts);
++
++        r = fstab_extract_values(opts, "x-systemd.requires-mounts-for", &paths);
++        if (r < 0)
++                return log_warning_errno(r, "Failed to parse options: %m");
++        if (r == 0)
++                return 0;
++
++        res = strv_join(paths, " ");
++        if (!res)
++                return log_oom();
++
++        fprintf(f, "RequiresMountsFor=%s\n", res);
++
++        return 0;
++}
+ static int add_mount(
+                 const char *what,
+                 const char *where,
+@@ -225,6 +283,15 @@ static int add_mount(
+         if (post && !noauto && !nofail && !automount)
+                 fprintf(f, "Before=%s\n", post);
+ 
++        if (!automount && opts) {
++                 r = write_requires_after(f, opts);
++                 if (r < 0)
++                         return r;
++                 r = write_requires_mounts_for(f, opts);
++                 if (r < 0)
++                         return r;
++        }
++
+         if (passno != 0) {
+                 r = generator_write_fsck_deps(f, arg_dest, what, where, fstype);
+                 if (r < 0)
+@@ -289,6 +356,15 @@ static int add_mount(
+                                 "Before=%s\n",
+                                 post);
+ 
++                if (opts) {
++                        r = write_requires_after(f, opts);
++                        if (r < 0)
++                                return r;
++                        r = write_requires_mounts_for(f, opts);
++                        if (r < 0)
++                                return r;
++                }
++
+                 fprintf(f,
+                         "[Automount]\n"
+                         "Where=%s\n",
+diff --git a/src/shared/fstab-util.c b/src/shared/fstab-util.c
+index cf317e1..e231a0f 100644
+--- a/src/shared/fstab-util.c
++++ b/src/shared/fstab-util.c
+@@ -125,6 +125,36 @@ answer:
+         return !!n;
+ }
+ 
++int fstab_extract_values(const char *opts, const char *name, char ***values) {
++        _cleanup_strv_free_ char **optsv = NULL, **res = NULL;
++        char **s;
++
++        assert(opts);
++        assert(name);
++        assert(values);
++
++        optsv = strv_split(opts, ",");
++        if (!optsv)
++                return -ENOMEM;
++
++        STRV_FOREACH(s, optsv) {
++                char *arg;
++                int r;
++
++                arg = startswith(*s, name);
++                if (!arg || *arg != '=')
++                        continue;
++                r = strv_extend(&res, arg + 1);
++                if (r < 0)
++                        return r;
++        }
++
++        *values = res;
++        res = NULL;
++
++        return !!*values;
++}
++
+ int fstab_find_pri(const char *options, int *ret) {
+         _cleanup_free_ char *opt = NULL;
+         int r;
+diff --git a/src/shared/fstab-util.h b/src/shared/fstab-util.h
+index 9f6b32e..387c562 100644
+--- a/src/shared/fstab-util.h
++++ b/src/shared/fstab-util.h
+@@ -28,6 +28,8 @@
+ int fstab_filter_options(const char *opts, const char *names,
+                          const char **namefound, char **value, char **filtered);
+ 
++int fstab_extract_values(const char *opts, const char *name, char ***values);
++
+ static inline bool fstab_test_option(const char *opts, const char *names) {
+         return !!fstab_filter_options(opts, names, NULL, NULL, NULL);
+ }
diff --git a/SOURCES/0178-hwdb-change-key-mappings-for-Samsung-90X3A.patch b/SOURCES/0178-hwdb-change-key-mappings-for-Samsung-90X3A.patch
deleted file mode 100644
index e7547c6..0000000
--- a/SOURCES/0178-hwdb-change-key-mappings-for-Samsung-90X3A.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 3d7988d5f0db77f35581a5fb5786a84723d7ce6e Mon Sep 17 00:00:00 2001
-From: Raudi <mpell@web.de>
-Date: Mon, 6 Jan 2014 19:44:08 -0500
-Subject: [PATCH] hwdb: change key mappings for Samsung 90X3A
-
-The Key codes didn't match with the described key. Also the key
-identifier strings were missing. I hope I chose appropriate ones.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=70296
----
- hwdb/60-keyboard.hwdb | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index ab9e569..644cb94 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -886,7 +886,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
-  KEYBOARD_KEY_b3=!prog3                                 # Fn+F11 fan/cooling mode changer
- 
- # Series 9
--keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr*
-  KEYBOARD_KEY_ce=!                                      # Fn+F8 keyboard backlight up
-  KEYBOARD_KEY_8d=!                                      # Fn+F7 keyboard backlight down
-@@ -894,6 +893,13 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][AB]*:pvr
-  KEYBOARD_KEY_97=!                                      # Fn+F12 Wi-Fi toggle
-  KEYBOARD_KEY_d5=!                                      # Fn+F6 battery life extender
- 
-+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*90X3A*:pvr*
-+ KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
-+ KEYBOARD_KEY_8d=!prog3                                 # Fn+F6 performance mode
-+ KEYBOARD_KEY_97=!kbdillumdown                          # Fn+F7 keyboard backlight down
-+ KEYBOARD_KEY_96=!kbdillumup                            # Fn+F8 keyboard backlight up
-+ KEYBOARD_KEY_d5=!wlan                                  # Fn+F12 Wi-Fi toggle
-+
- # SQ1US
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pnSQ1US:pvr*
-  KEYBOARD_KEY_d4=menu
diff --git a/SOURCES/0179-core-Fix-assertion-with-empty-Exec-paths.patch b/SOURCES/0179-core-Fix-assertion-with-empty-Exec-paths.patch
new file mode 100644
index 0000000..119d1e0
--- /dev/null
+++ b/SOURCES/0179-core-Fix-assertion-with-empty-Exec-paths.patch
@@ -0,0 +1,78 @@
+From 9ea44466541480b583032617e6060313f79a6bda Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu, 14 May 2015 09:06:40 +0200
+Subject: [PATCH] core: Fix assertion with empty Exec*= paths
+
+An Exec*= line with whitespace after modifiers, like
+
+  ExecStart=- /bin/true
+
+is considered to have an empty command path. This is as specified, but causes
+systemd to crash with
+
+  Assertion 'skip < l' failed at ../src/core/load-fragment.c:607, function config_parse_exec(). Aborting.
+  Aborted (core dumped)
+
+Fix this by logging an error instead and ignoring the invalid line.
+
+Add corresponding test cases. Also add a test case for a completely empty value
+which resets the command list.
+
+https://launchpad.net/bugs/1454173
+
+Cherry-picked from: 35b1078e1c375df244e19961792aeb78ca34bb54
+Resolves: #1222517
+---
+ src/core/load-fragment.c  |  6 +++++-
+ src/test/test-unit-file.c | 21 +++++++++++++++++++++
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
+index f17a82f..ec4cf4e 100644
+--- a/src/core/load-fragment.c
++++ b/src/core/load-fragment.c
+@@ -604,7 +604,11 @@ int config_parse_exec(const char *unit,
+                                 skip = separate_argv0 + ignore;
+ 
+                                 /* skip special chars in the beginning */
+-                                assert(skip < l);
++                                if (l <= skip) {
++                                        log_syntax(unit, LOG_ERR, filename, line, EINVAL, "Empty path in command line, ignoring: %s", rvalue);
++                                        r = 0;
++                                        goto fail;
++                                }
+ 
+                         } else if (strneq(word, ";", MAX(l, 1U)))
+                                 /* new commandline */
+diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c
+index 9f3e3a2..5500983 100644
+--- a/src/test/test-unit-file.c
++++ b/src/test/test-unit-file.c
+@@ -318,6 +318,27 @@ static void test_config_parse_exec(void) {
+         assert_se(r == 0);
+         assert_se(c1->command_next == NULL);
+ 
++        log_info("/* invalid space between modifiers */");
++        r = config_parse_exec(NULL, "fake", 4, "section", 1,
++                              "LValue", 0, "- /path",
++                              &c, NULL);
++        assert_se(r == 0);
++        assert_se(c1->command_next == NULL);
++
++        log_info("/* only modifiers, no path */");
++        r = config_parse_exec(NULL, "fake", 4, "section", 1,
++                              "LValue", 0, "-",
++                              &c, NULL);
++        assert_se(r == 0);
++        assert_se(c1->command_next == NULL);
++
++        log_info("/* empty argument, reset */");
++        r = config_parse_exec(NULL, "fake", 4, "section", 1,
++                              "LValue", 0, "",
++                              &c, NULL);
++        assert_se(r == 0);
++        assert_se(c == NULL);
++
+         exec_command_free_list(c);
+ }
+ 
diff --git a/SOURCES/0179-hwdb-add-Samsung-700G.patch b/SOURCES/0179-hwdb-add-Samsung-700G.patch
deleted file mode 100644
index a8cf51a..0000000
--- a/SOURCES/0179-hwdb-add-Samsung-700G.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From c28eaf0a17c230cdda898525a132109a50f82996 Mon Sep 17 00:00:00 2001
-From: Dmitry Pisklov <dpisklov@gmail.com>
-Date: Mon, 6 Jan 2014 20:06:59 -0500
-Subject: [PATCH] hwdb: add Samsung 700G
-
-https://bugs.freedesktop.org/show_bug.cgi?id=72311
----
- hwdb/60-keyboard.hwdb | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index 644cb94..ccfc734 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -875,6 +875,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*550P*:pvr*
-  KEYBOARD_KEY_a9=!                                      # Fn Lock - Function lock off
- 
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
-+keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700G*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*900X[34][CDG]*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*940X3G*:pvr*
-  KEYBOARD_KEY_ce=!prog1                                 # Fn+F1 launch settings
diff --git a/SOURCES/0180-hwdb-remove-duplicate-entry-for-Samsung-700Z.patch b/SOURCES/0180-hwdb-remove-duplicate-entry-for-Samsung-700Z.patch
deleted file mode 100644
index c566805..0000000
--- a/SOURCES/0180-hwdb-remove-duplicate-entry-for-Samsung-700Z.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 13e1c1cd5d95e077fe9e08ec6e80b3ac91e957f2 Mon Sep 17 00:00:00 2001
-From: Dmitry Pisklov <dpisklov@gmail.com>
-Date: Mon, 6 Jan 2014 20:08:21 -0500
-Subject: [PATCH] hwdb: remove duplicate entry for Samsung 700Z
-
-keyboardbrightnessup/down are not even real keys.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=72311
----
- hwdb/60-keyboard.hwdb | 5 -----
- 1 file changed, 5 deletions(-)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index ccfc734..cf3d1fb 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -918,11 +918,6 @@ keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*SX20S*:pvr*
-  KEYBOARD_KEY_77=f22                                    # Touchpad on
-  KEYBOARD_KEY_79=f23                                    # Touchpad off
- 
--keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700Z*:pvr*
-- KEYBOARD_KEY_ba=ejectcd
-- KEYBOARD_KEY_96=keyboardbrightnessup
-- KEYBOARD_KEY_97=keyboardbrightnessdown
--
- keyboard:dmi:bvn*:bvr*:bd*:svn[sS][aA][mM][sS][uU][nN][gG]*:pn*700T*:pvr*
-  KEYBOARD_KEY_ad=leftmeta
- 
diff --git a/SOURCES/0180-rules-load-sg-module.patch b/SOURCES/0180-rules-load-sg-module.patch
new file mode 100644
index 0000000..134023f
--- /dev/null
+++ b/SOURCES/0180-rules-load-sg-module.patch
@@ -0,0 +1,24 @@
+From 50a7827f7376d31d2af2dc563fc51d8ad71f48dc Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 20 May 2015 12:34:18 +0200
+Subject: [PATCH] rules: load sg module
+
+Revert of 09637f743414e2c36d6c5b032d77d76dbeb86b31
+RHEL-only
+
+Resolves: #1186462
+---
+ rules/40-redhat.rules | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/rules/40-redhat.rules b/rules/40-redhat.rules
+index 556a3a3..305e752 100644
+--- a/rules/40-redhat.rules
++++ b/rules/40-redhat.rules
+@@ -8,3 +8,6 @@ SUBSYSTEM=="memory", ACTION=="add", ATTR{state}=="offline", ATTR{state}="online"
+ 
+ # reload sysctl.conf / sysctl.conf.d settings when the bridge module is loaded
+ ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/systemd-sysctl --prefix=/proc/sys/net/bridge"
++
++# load SCSI generic (sg) driver
++SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg"
diff --git a/SOURCES/0181-hwdb-fix-match-for-Thinkpad-X201-tablet.patch b/SOURCES/0181-hwdb-fix-match-for-Thinkpad-X201-tablet.patch
deleted file mode 100644
index 0c30675..0000000
--- a/SOURCES/0181-hwdb-fix-match-for-Thinkpad-X201-tablet.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From ce340fda3e72602eac5165c33527f444eff78d18 Mon Sep 17 00:00:00 2001
-From: AppleBloom <rat.o.drat@gmail.com>
-Date: Mon, 6 Jan 2014 20:51:47 -0500
-Subject: [PATCH] hwdb: fix match for Thinkpad X201 tablet
-
-https://bugs.freedesktop.org/show_bug.cgi?id=71929
----
- hwdb/60-keyboard.hwdb | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index cf3d1fb..d253724 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -524,6 +524,7 @@ keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnS10-*:pvr*
- 
- # Thinkpad X200_Tablet
- keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pnThinkPad*X2*Tablet*:pvr*
-+keyboard:dmi:bvn*:bvr*:bd*:svnLENOVO*:pn*:pvrThinkPad*X2*Tablet*
-  KEYBOARD_KEY_5d=menu
-  KEYBOARD_KEY_63=fn
-  KEYBOARD_KEY_66=screenlock
diff --git a/SOURCES/0181-util-add-shell_maybe_quote-call-for-preparing-a-stri.patch b/SOURCES/0181-util-add-shell_maybe_quote-call-for-preparing-a-stri.patch
new file mode 100644
index 0000000..838d0ee
--- /dev/null
+++ b/SOURCES/0181-util-add-shell_maybe_quote-call-for-preparing-a-stri.patch
@@ -0,0 +1,191 @@
+From 32b4631e74262e02094c6402d39d1e4264442037 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 9 Apr 2015 18:32:21 +0200
+Subject: [PATCH] util: add shell_maybe_quote() call for preparing a string for
+ shell cmdline inclusion
+
+If necessary the passed string is enclosed in "", and all special
+characters escapes.
+
+This also ports over usage in bus-util.c and job.c to use this, instead
+of a incorrect local implementation that forgets to properly escape.
+
+Conflicts:
+	src/shared/util.c
+	src/shared/util.h
+
+Cherry-picked from: 019c7fba
+Resolves: #1016680
+---
+ src/core/job.c                   |  8 +++----
+ src/libsystemd/sd-bus/bus-util.c | 15 +++++++-------
+ src/shared/util.c                | 45 ++++++++++++++++++++++++++++++++++++++--
+ src/shared/util.h                |  2 ++
+ src/test/test-util.c             | 19 +++++++++++++++++
+ 5 files changed, 74 insertions(+), 15 deletions(-)
+
+diff --git a/src/core/job.c b/src/core/job.c
+index 4740ff1..7416386 100644
+--- a/src/core/job.c
++++ b/src/core/job.c
+@@ -679,15 +679,13 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) {
+                         break;
+ 
+                 case JOB_FAILED: {
+-                        bool quotes;
++                        _cleanup_free_ char *quoted = NULL;
+ 
+-                        quotes = chars_intersect(u->id, SHELL_NEED_QUOTES);
++                        quoted = shell_maybe_quote(u->id);
+ 
+                         manager_flip_auto_status(u->manager, true);
+                         unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON "FAILED" ANSI_HIGHLIGHT_OFF, format);
+-                        manager_status_printf(u->manager, STATUS_TYPE_NORMAL, NULL,
+-                                              "See \"systemctl status %s%s%s\" for details.",
+-                                              quotes ? "'" : "", u->id, quotes ? "'" : "");
++                        manager_status_printf(u->manager, STATUS_TYPE_NORMAL, NULL, "See 'systemctl status %s' for details.", strna(quoted));
+                         break;
+                 }
+ 
+diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/libsystemd/sd-bus/bus-util.c
+index 52d4ebe..b0a5a75 100644
+--- a/src/libsystemd/sd-bus/bus-util.c
++++ b/src/libsystemd/sd-bus/bus-util.c
+@@ -1709,16 +1709,15 @@ static int check_wait_response(BusWaitForJobs *d, bool quiet) {
+                 else if (streq(d->result, "unsupported"))
+                         log_error("Operation on or unit type of %s not supported on this system.", strna(d->name));
+                 else if (!streq(d->result, "done") && !streq(d->result, "skipped")) {
+-                        if (d->name) {
+-                                bool quotes;
++                        _cleanup_free_ char *quoted = NULL;
+ 
+-                                quotes = chars_intersect(d->name, SHELL_NEED_QUOTES);
++                        if (d->name)
++                                quoted = shell_maybe_quote(d->name);
+ 
+-                                log_error("Job for %s failed. See \"systemctl status %s%s%s\" and \"journalctl -xe\" for details.",
+-                                          d->name,
+-                                          quotes ? "'" : "", d->name, quotes ? "'" : "");
+-                        } else
+-                                log_error("Job failed. See \"journalctl -xe\" for details.");
++                        if (quoted)
++                                log_error("Job for %s failed. See 'systemctl status %s' and 'journalctl -xe' for details.", d->name, quoted);
++                        else
++                                log_error("Job failed. See 'journalctl -xe' for details.");
+                 }
+         }
+ 
+diff --git a/src/shared/util.c b/src/shared/util.c
+index 649344d..778c2b0 100644
+--- a/src/shared/util.c
++++ b/src/shared/util.c
+@@ -1329,7 +1329,8 @@ char *cescape(const char *s) {
+ 
+         assert(s);
+ 
+-        /* Does C style string escaping. */
++        /* Does C style string escaping. May be be reversed with
++         * cunescape(). */
+ 
+         r = new(char, strlen(s)*4 + 1);
+         if (!r)
+@@ -1493,7 +1494,7 @@ char *xescape(const char *s, const char *bad) {
+ 
+         /* Escapes all chars in bad, in addition to \ and all special
+          * chars, in \xFF style escaping. May be reversed with
+-         * cunescape. */
++         * cunescape(). */
+ 
+         r = new(char, strlen(s) * 4 + 1);
+         if (!r)
+@@ -8101,3 +8102,43 @@ ssize_t string_table_lookup(const char * const *table, size_t len, const char *k
+ 
+         return -1;
+ }
++
++char *shell_maybe_quote(const char *s) {
++        const char *p;
++        char *r, *t;
++
++        assert(s);
++
++        /* Encloses a string in double quotes if necessary to make it
++         * OK as shell string. */
++
++        for (p = s; *p; p++)
++                if (*p <= ' ' ||
++                    *p >= 127 ||
++                    strchr(SHELL_NEED_QUOTES, *p))
++                        break;
++
++        if (!*p)
++                return strdup(s);
++
++        r = new(char, 1+strlen(s)*2+1+1);
++        if (!r)
++                return NULL;
++
++        t = r;
++        *(t++) = '"';
++        t = mempcpy(t, s, p - s);
++
++        for (; *p; p++) {
++
++                if (strchr(SHELL_NEED_ESCAPE, *p))
++                        *(t++) = '\\';
++
++                *(t++) = *p;
++        }
++
++        *(t++)= '"';
++        *t = 0;
++
++        return r;
++}
+diff --git a/src/shared/util.h b/src/shared/util.h
+index a83b588..7ecfd85 100644
+--- a/src/shared/util.h
++++ b/src/shared/util.h
+@@ -1078,3 +1078,5 @@ void sigkill_wait(pid_t *pid);
+ #define _cleanup_sigkill_wait_ _cleanup_(sigkill_wait)
+ 
+ int syslog_parse_priority(const char **p, int *priority, bool with_facility);
++
++char *shell_maybe_quote(const char *s);
+diff --git a/src/test/test-util.c b/src/test/test-util.c
+index 9515a8c..9ae347b 100644
+--- a/src/test/test-util.c
++++ b/src/test/test-util.c
+@@ -1512,6 +1512,24 @@ static void test_sparse_write(void) {
+         test_sparse_write_one(fd, test_e, sizeof(test_e));
+ }
+ 
++static void test_shell_maybe_quote_one(const char *s, const char *expected) {
++        _cleanup_free_ char *r;
++
++        assert_se(r = shell_maybe_quote(s));
++        assert_se(streq(r, expected));
++}
++
++static void test_shell_maybe_quote(void) {
++
++        test_shell_maybe_quote_one("", "");
++        test_shell_maybe_quote_one("\\", "\"\\\\\"");
++        test_shell_maybe_quote_one("\"", "\"\\\"\"");
++        test_shell_maybe_quote_one("foobar", "foobar");
++        test_shell_maybe_quote_one("foo bar", "\"foo bar\"");
++        test_shell_maybe_quote_one("foo \"bar\" waldo", "\"foo \\\"bar\\\" waldo\"");
++        test_shell_maybe_quote_one("foo$bar", "\"foo\\$bar\"");
++}
++
+ int main(int argc, char *argv[]) {
+         log_parse_environment();
+         log_open();
+@@ -1589,6 +1607,7 @@ int main(int argc, char *argv[]) {
+         test_same_fd();
+         test_uid_ptr();
+         test_sparse_write();
++        test_shell_maybe_quote();
+ 
+         return 0;
+ }
diff --git a/SOURCES/0182-bus-util-be-more-verbose-if-dbus-job-fails.patch b/SOURCES/0182-bus-util-be-more-verbose-if-dbus-job-fails.patch
new file mode 100644
index 0000000..52e8d1b
--- /dev/null
+++ b/SOURCES/0182-bus-util-be-more-verbose-if-dbus-job-fails.patch
@@ -0,0 +1,123 @@
+From 8946c35e525c2a14b12ed425f11af152e37d8583 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Fri, 10 Apr 2015 15:56:52 +0200
+Subject: [PATCH] bus-util: be more verbose if dbus job fails
+
+Users might have hard time figuring out why exactly their systemctl request
+failed. If dbus job fails try to figure out more details about failure by
+examining Result property of the service.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1016680
+
+Cherry-picked from: d5cad22109749faffb7563e4b2a3a728486d47b5
+Resolves: #1016680
+---
+ src/libsystemd/sd-bus/bus-util.c | 79 ++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 72 insertions(+), 7 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/libsystemd/sd-bus/bus-util.c
+index b0a5a75..2e6d889 100644
+--- a/src/libsystemd/sd-bus/bus-util.c
++++ b/src/libsystemd/sd-bus/bus-util.c
+@@ -30,6 +30,7 @@
+ #include "path-util.h"
+ #include "missing.h"
+ #include "set.h"
++#include "unit-name.h"
+ 
+ #include "sd-bus.h"
+ #include "bus-error.h"
+@@ -1690,6 +1691,68 @@ static int bus_process_wait(sd_bus *bus) {
+         }
+ }
+ 
++static int bus_job_get_service_result(BusWaitForJobs *d, char **result) {
++        _cleanup_free_ char *dbus_path = NULL;
++
++        assert(d);
++        assert(d->name);
++        assert(result);
++
++        dbus_path = unit_dbus_path_from_name(d->name);
++        if (!dbus_path)
++                return -ENOMEM;
++
++        return sd_bus_get_property_string(d->bus,
++                                          "org.freedesktop.systemd1",
++                                          dbus_path,
++                                          "org.freedesktop.systemd1.Service",
++                                          "Result",
++                                          NULL,
++                                          result);
++}
++
++static const struct {
++        const char *result, *explanation;
++} explanations [] = {
++        { "resources", "configured resource limit was exceeded" },
++        { "timeout", "timeout was exceeded" },
++        { "exit-code", "control process exited with error code" },
++        { "signal", "fatal signal was delivered to the control process" },
++        { "core-dump", "fatal signal was delivered to the control process. Core dumped" },
++        { "watchdog", "service failed to send watchdog ping" },
++        { "start-limit", "start of the service was attempted too often too quickly" }
++};
++
++static void log_job_error_with_service_result(const char* service, const char *result) {
++        unsigned i;
++        _cleanup_free_ char *service_shell_quoted = NULL;
++
++        assert(service);
++        assert(result);
++
++        service_shell_quoted = shell_maybe_quote(service);
++
++        for (i = 0; i < ELEMENTSOF(explanations); ++i)
++                if (streq(result, explanations[i].result))
++                        break;
++
++        if (i < ELEMENTSOF(explanations))
++                log_error("Job for %s failed because %s. See \"systemctl status %s\" and \"journalctl -xe\" for details.\n",
++                          service,
++                          explanations[i].explanation,
++                          strna(service_shell_quoted));
++        else
++                log_error("Job for %s failed. See \"systemctl status %s\" and \"journalctl -xe\" for details.\n",
++                          service,
++                          strna(service_shell_quoted));
++
++        /* For some results maybe additional explanation is required */
++        if (streq_ptr(result, "start-limit"))
++                log_info("To force a start please invoke \"systemctl reset-failed %s\" followed by \"systemctl start %s\" again.",
++                         strna(service_shell_quoted),
++                         strna(service_shell_quoted));
++}
++
+ static int check_wait_response(BusWaitForJobs *d, bool quiet) {
+         int r = 0;
+ 
+@@ -1709,15 +1772,17 @@ static int check_wait_response(BusWaitForJobs *d, bool quiet) {
+                 else if (streq(d->result, "unsupported"))
+                         log_error("Operation on or unit type of %s not supported on this system.", strna(d->name));
+                 else if (!streq(d->result, "done") && !streq(d->result, "skipped")) {
+-                        _cleanup_free_ char *quoted = NULL;
++                        if (d->name) {
++                                int q;
++                                _cleanup_free_ char *result = NULL;
+ 
+-                        if (d->name)
+-                                quoted = shell_maybe_quote(d->name);
++                                q = bus_job_get_service_result(d, &result);
++                                if (q < 0)
++                                        log_debug_errno(q, "Failed to get Result property of service %s: %m", d->name);
+ 
+-                        if (quoted)
+-                                log_error("Job for %s failed. See 'systemctl status %s' and 'journalctl -xe' for details.", d->name, quoted);
+-                        else
+-                                log_error("Job failed. See 'journalctl -xe' for details.");
++                                log_job_error_with_service_result(d->name, result);
++                        } else
++                                log_error("Job failed. See \"journalctl -xe\" for details.");
+                 }
+         }
+ 
diff --git a/SOURCES/0182-keymap-Recognize-different-Toshiba-Satellite-capital.patch b/SOURCES/0182-keymap-Recognize-different-Toshiba-Satellite-capital.patch
deleted file mode 100644
index 4f223e2..0000000
--- a/SOURCES/0182-keymap-Recognize-different-Toshiba-Satellite-capital.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a3d80446f49c5b5e40522fc250b1df3356cb0cf1 Mon Sep 17 00:00:00 2001
-From: Martin Pitt <martinpitt@gnome.org>
-Date: Tue, 7 Jan 2014 09:40:01 +0100
-Subject: [PATCH] keymap: Recognize different Toshiba Satellite capitalizations
-
-https://launchpad.net/bugs/665918
----
- hwdb/60-keyboard.hwdb | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index d253724..84a061f 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -1056,9 +1056,9 @@ keyboard:dmi:bvn*:bvr*:bd*:svnFOXCONN:pnQBOOK:*
- keyboard:dmi:bvn*:bvr*:bd*:svnMTC:pn*:pvrA0:*
- keyboard:dmi:bvn*:bvr*:bd*:svnMio*Technology:pnN890:*
- keyboard:dmi:bvn*:bvr*:bd*:svnPEGATRON*CORP.:pnSpring*Peak:*
--keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU]30[05]*:pvr*
-+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*[uU][35]0[05]*:pvr*
-+keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU][35]0[05]*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSatellite*Pro*[uU]300*:pvr*
--keyboard:dmi:bvn*:bvr*:bd*:svnTOSHIBA:pnSATELLITE*[uU]500*:pvr*
- keyboard:dmi:bvn*:bvr*:bd*:svnViooo*Corporation:pnPT17:*
- keyboard:dmi:bvn*:bvr*:bd*:svnHANNspree:pnSN10E100:*
- keyboard:dmi:bvn*:bvr*:bd*:svnGIGABYTE:pni1520M:*
diff --git a/SOURCES/0183-notify-fix-badly-backported-help-message.patch b/SOURCES/0183-notify-fix-badly-backported-help-message.patch
new file mode 100644
index 0000000..67c4414
--- /dev/null
+++ b/SOURCES/0183-notify-fix-badly-backported-help-message.patch
@@ -0,0 +1,25 @@
+From 1d23db320710dc4391f6e77ddb32122f83ab8c66 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 29 May 2015 14:12:36 +0200
+Subject: [PATCH] notify: fix badly backported help message
+
+rhel-only
+
+Related: #1199644
+---
+ src/notify/notify.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/notify/notify.c b/src/notify/notify.c
+index e4a128b..c89a6cc 100644
+--- a/src/notify/notify.c
++++ b/src/notify/notify.c
+@@ -49,7 +49,7 @@ static void help(void) {
+                "     --ready           Inform the init system about service start-up completion\n"
+                "     --pid[=PID]       Set main pid of daemon\n"
+                "     --status=TEXT     Set status text\n"
+-               "     --booted          Check if the system was booted up with systemd\n",
++               "     --booted          Check if the system was booted up with systemd\n"
+                "     --readahead=ACTION Controls read-ahead operations\n",
+                program_invocation_short_name);
+ }
diff --git a/SOURCES/0183-sleep.c-fix-typo.patch b/SOURCES/0183-sleep.c-fix-typo.patch
deleted file mode 100644
index a37a28f..0000000
--- a/SOURCES/0183-sleep.c-fix-typo.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 5eaadd27a8c22c2a9e5c66c5cc69c9354eff036e Mon Sep 17 00:00:00 2001
-From: Michele Curti <michele.curti@gmail.com>
-Date: Tue, 7 Jan 2014 17:51:41 +0100
-Subject: [PATCH] sleep.c: fix typo
-
----
- src/sleep/sleep.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c
-index f96987f..c228cb6 100644
---- a/src/sleep/sleep.c
-+++ b/src/sleep/sleep.c
-@@ -90,7 +90,7 @@ static int execute(char **modes, char **states) {
-         const char* note = strappenda("SLEEP=", arg_verb);
- 
-         /* This file is opened first, so that if we hit an error,
--         * we can abort before modyfing any state. */
-+         * we can abort before modifying any state. */
-         f = fopen("/sys/power/state", "we");
-         if (!f) {
-                 log_error("Failed to open /sys/power/state: %m");
diff --git a/SOURCES/0184-cryptsetup-craft-a-unique-ID-with-the-source-device.patch b/SOURCES/0184-cryptsetup-craft-a-unique-ID-with-the-source-device.patch
new file mode 100644
index 0000000..a7207f4
--- /dev/null
+++ b/SOURCES/0184-cryptsetup-craft-a-unique-ID-with-the-source-device.patch
@@ -0,0 +1,166 @@
+From 6c45bdd261e027ea78eabb81feaa70f3774bcf2f Mon Sep 17 00:00:00 2001
+From: Harald Hoyer <harald@redhat.com>
+Date: Mon, 1 Jun 2015 17:26:27 +0200
+Subject: [PATCH] cryptsetup: craft a unique ID with the source device
+
+If cryptsetup is called with a source device as argv[3], then craft the
+ID for the password agent with a unique device path.
+
+If possible "/dev/block/<maj>:<min>" is used, otherwise the original
+argv[3] is used.
+
+This enables password agents like petera [1] to provide a password
+according to the source device. The original ID did not carry enough
+information and was more targeted for a human readable string, which
+is specified in the "Message" field anyway.
+
+With this patch the ID of the ask.XXX ini file looks like this:
+ID=cryptsetup:/dev/block/<maj>:<min>
+
+[1] https://github.com/npmccallum/petera
+
+Cherry-picked from: e51b9486d1b59e72c293028fed1384f4e4ef09aa
+Resolves: #1226333
+---
+ src/cryptsetup/cryptsetup.c | 90 +++++++++++++++++++++++++++++----------------
+ 1 file changed, 58 insertions(+), 32 deletions(-)
+
+diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
+index 3f613d9..5dedb07 100644
+--- a/src/cryptsetup/cryptsetup.c
++++ b/src/cryptsetup/cryptsetup.c
+@@ -217,6 +217,23 @@ static void log_glue(int level, const char *msg, void *usrptr) {
+         log_debug("%s", msg);
+ }
+ 
++static int disk_major_minor(const char *path, char **ret) {
++        struct stat st;
++
++        assert(path);
++
++        if (stat(path, &st) < 0)
++                return -errno;
++
++        if (!S_ISBLK(st.st_mode))
++                return -EINVAL;
++
++        if (asprintf(ret, "/dev/block/%d:%d", major(st.st_rdev), minor(st.st_rdev)) < 0)
++                return -errno;
++
++        return 0;
++}
++
+ static char* disk_description(const char *path) {
+ 
+         static const char name_fields[] =
+@@ -278,20 +295,55 @@ static char *disk_mount_point(const char *label) {
+         return NULL;
+ }
+ 
+-static int get_password(const char *name, usec_t until, bool accept_cached, char ***passwords) {
+-        int r;
++static int get_password(const char *vol, const char *src, usec_t until, bool accept_cached, char ***passwords) {
++        int r = 0;
+         char **p;
+         _cleanup_free_ char *text = NULL;
+         _cleanup_free_ char *escaped_name = NULL;
+         char *id;
++        const char *name = NULL;
++        _cleanup_free_ char *description = NULL, *name_buffer = NULL,
++                *mount_point = NULL, *maj_min = NULL;
+ 
+-        assert(name);
++        assert(vol);
++        assert(src);
+         assert(passwords);
+ 
++        description = disk_description(src);
++        mount_point = disk_mount_point(vol);
++
++        if (description && streq(vol, description)) {
++                /* If the description string is simply the
++                 * volume name, then let's not show this
++                 * twice */
++                free(description);
++                description = NULL;
++        }
++
++        if (mount_point && description)
++                r = asprintf(&name_buffer, "%s (%s) on %s", description, vol, mount_point);
++        else if (mount_point)
++                r = asprintf(&name_buffer, "%s on %s", vol, mount_point);
++        else if (description)
++                r = asprintf(&name_buffer, "%s (%s)", description, vol);
++
++        if (r < 0)
++                return log_oom();
++
++        name = name_buffer ? name_buffer : vol;
++
+         if (asprintf(&text, "Please enter passphrase for disk %s!", name) < 0)
+                 return log_oom();
+ 
+-        escaped_name = cescape(name);
++        if (src)
++                (void) disk_major_minor(src, &maj_min);
++
++        if (maj_min) {
++                escaped_name = maj_min;
++                maj_min = NULL;
++        } else
++                escaped_name = cescape(name);
++
+         if (!escaped_name)
+                 return log_oom();
+ 
+@@ -532,8 +584,7 @@ int main(int argc, char *argv[]) {
+                 unsigned tries;
+                 usec_t until;
+                 crypt_status_info status;
+-                const char *key_file = NULL, *name = NULL;
+-                _cleanup_free_ char *description = NULL, *name_buffer = NULL, *mount_point = NULL;
++                const char *key_file = NULL;
+ 
+                 /* Arguments: systemd-cryptsetup attach VOLUME SOURCE-DEVICE [PASSWORD] [OPTIONS] */
+ 
+@@ -561,31 +612,6 @@ int main(int argc, char *argv[]) {
+                 /* A delicious drop of snake oil */
+                 mlockall(MCL_FUTURE);
+ 
+-                description = disk_description(argv[3]);
+-                mount_point = disk_mount_point(argv[2]);
+-
+-                if (description && streq(argv[2], description)) {
+-                        /* If the description string is simply the
+-                         * volume name, then let's not show this
+-                         * twice */
+-                        free(description);
+-                        description = NULL;
+-                }
+-
+-                k = 0;
+-                if (mount_point && description)
+-                        k = asprintf(&name_buffer, "%s (%s) on %s", description, argv[2], mount_point);
+-                else if (mount_point)
+-                        k = asprintf(&name_buffer, "%s on %s", argv[2], mount_point);
+-                else if (description)
+-                        k = asprintf(&name_buffer, "%s (%s)", description, argv[2]);
+-
+-                if (k < 0) {
+-                        log_oom();
+-                        goto finish;
+-                }
+-                name = name_buffer ? name_buffer : argv[2];
+-
+                 if (arg_header) {
+                         log_debug("LUKS header: %s", arg_header);
+                         k = crypt_init(&cd, arg_header);
+@@ -632,7 +658,7 @@ int main(int argc, char *argv[]) {
+                         _cleanup_strv_free_ char **passwords = NULL;
+ 
+                         if (!key_file) {
+-                                k = get_password(name, until, tries == 0 && !arg_verify, &passwords);
++                                k = get_password(argv[2], argv[3], until, tries == 0 && !arg_verify, &passwords);
+                                 if (k == -EAGAIN)
+                                         continue;
+                                 else if (k < 0)
diff --git a/SOURCES/0184-man-mention-which-variables-will-be-expanded-in-Exec.patch b/SOURCES/0184-man-mention-which-variables-will-be-expanded-in-Exec.patch
deleted file mode 100644
index 622312d..0000000
--- a/SOURCES/0184-man-mention-which-variables-will-be-expanded-in-Exec.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From b993c1cda2625b91562ada55f21da2310e9b436d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 9 Jan 2014 22:23:32 -0500
-Subject: [PATCH] man: mention which variables will be expanded in ExecStart
-
-Conflicts:
-	man/systemd.service.xml
----
- man/systemd.exec.xml    |  6 ++++--
- man/systemd.service.xml | 35 +++++++++++++++++++++++------------
- 2 files changed, 27 insertions(+), 14 deletions(-)
-
-diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
-index f50161f..612b4d2 100644
---- a/man/systemd.exec.xml
-+++ b/man/systemd.exec.xml
-@@ -295,9 +295,11 @@
-                                 for the assignment.</para>
- 
-                                 <para>Example:
--                                <programlisting>Environment="VAR1=word1 word2" VAR2=word3 "VAR3=word 5 6"</programlisting>
-+                                <programlisting>Environment="VAR1=word1 word2" VAR2=word3 "VAR3=$word 5 6"</programlisting>
-                                 gives three variables <literal>VAR1</literal>,
--                                <literal>VAR2</literal>, <literal>VAR3</literal>.
-+                                <literal>VAR2</literal>, <literal>VAR3</literal>
-+                                with the values <literal>word1 word2</literal>,
-+                                <literal>word3</literal>, <literal>$word 5 6</literal>.
-                                 </para>
- 
-                                 <para>
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index af3e0f2..4fb21ba 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -392,16 +392,32 @@
-                                 replaced by the value of the
-                                 environment variable including all
-                                 whitespace it contains, resulting in a
--                                single argument.  Use
-+                                single argument. Use
-                                 <literal>$FOO</literal> as a separate
-                                 word on the command line, in which
-                                 case it will be replaced by the value
--                                of the environment variable split up
--                                at whitespace, resulting in zero or
--                                more arguments. To pass literal dollar sign
--                                use <literal>$$</literal>. Note that the first
--                                argument (i.e. the program to execute)
--                                may not be a variable.</para>
-+                                of the environment variable split at
-+                                whitespace, resulting in zero or more
-+                                arguments. To pass a literal dollar
-+                                sign, use <literal>$$</literal>.
-+                                Variables whose value is not known at
-+                                expansion time are treated as empty
-+                                strings. Note that the first argument
-+                                (i.e. the program to execute) may not
-+                                be a variable.</para>
-+
-+                                <para>Variables to be used in this
-+                                fashion may be defined through
-+                                <varname>Environment=</varname> and
-+                                <varname>EnvironmentFile=</varname>.
-+                                In addition, variables listed in
-+                                section "Environment variables in
-+                                spawned processes" in
-+                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-+                                which are considered "static
-+                                configuration" may used (this includes
-+                                e.g. <varname>$USER</varname>, but not
-+                                <varname>$TERM</varname>).</para>
- 
-                                 <para>Optionally, if the absolute file
-                                 name is prefixed with
-@@ -429,11 +445,6 @@
-                                 <programlisting>ExecStart=/bin/sh -c 'dmesg | tac'
-                                 </programlisting>
- 
--                                <para>Only select environment variables that
--                                are set for executed commands. See
--                                <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
--                                </para>
--
-                                 <para>Example:</para>
-                                 <programlisting>ExecStart=/bin/echo one ; /bin/echo "two two"
-                                 </programlisting>
diff --git a/SOURCES/0185-hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch b/SOURCES/0185-hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch
deleted file mode 100644
index 0dc8aba..0000000
--- a/SOURCES/0185-hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 6ccaa6a0b732ab324629c8b1c24a8e775f51da86 Mon Sep 17 00:00:00 2001
-From: Unai Uribarri <unaiur@gmail.com>
-Date: Sat, 11 Jan 2014 09:19:41 -0500
-Subject: [PATCH] hwdb: Add support for Toshiba Satellite P75-A7200 keyboard
-
----
- hwdb/60-keyboard.hwdb | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/hwdb/60-keyboard.hwdb b/hwdb/60-keyboard.hwdb
-index 84a061f..e3d1f02 100644
---- a/hwdb/60-keyboard.hwdb
-+++ b/hwdb/60-keyboard.hwdb
-@@ -1012,6 +1012,14 @@ keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSATELLITEU940
-  KEYBOARD_KEY_13e=switchvideomode
-  KEYBOARD_KEY_13f=f21                                   # Touchpad toggle
- 
-+# Satellite P75-A7200
-+keyboard:name:Toshiba*input*device:dmi:bvn*:bvr*:bd*:svnTOSHIBA*:pnSatellite*P75-A:pvr*
-+ KEYBOARD_KEY_13c=brightnessdown
-+ KEYBOARD_KEY_13d=brightnessup
-+ KEYBOARD_KEY_13e=switchvideomode
-+ KEYBOARD_KEY_13f=touchpad_toggle
-+ KEYBOARD_KEY_9e=wlan
-+
- ###########################################################
- # VIA
- ###########################################################
diff --git a/SOURCES/0185-systemctl-introduce-now-for-enable-disable-and-mask.patch b/SOURCES/0185-systemctl-introduce-now-for-enable-disable-and-mask.patch
new file mode 100644
index 0000000..f58e4c3
--- /dev/null
+++ b/SOURCES/0185-systemctl-introduce-now-for-enable-disable-and-mask.patch
@@ -0,0 +1,457 @@
+From 65d36d59c936650e141fcbf38b287627fd0ba21a Mon Sep 17 00:00:00 2001
+From: Jan Synacek <jsynacek@redhat.com>
+Date: Fri, 15 May 2015 09:54:10 +0200
+Subject: [PATCH] systemctl: introduce --now for enable, disable and mask
+
+https://bugs.freedesktop.org/show_bug.cgi?id=42940
+
+Conflicts:
+	src/libsystemd/sd-bus/bus-util.c
+	src/libsystemd/sd-bus/bus-util.h
+	src/systemctl/systemctl.c
+
+Cherry-picked from: 57ab2eabb8f92fad5239c7d4492e9c6e23ee0678
+Resolves: #1233081
+---
+ Makefile.am                      |   1 +
+ man/systemctl.xml                |  33 ++++++++----
+ src/libsystemd/sd-bus/bus-util.c |   6 ++-
+ src/libsystemd/sd-bus/bus-util.h |   3 +-
+ src/machine/machinectl.c         |   2 +-
+ src/shared/install.c             | 112 +++++++++++++++++++--------------------
+ src/shared/install.h             |   1 +
+ src/systemctl/systemctl.c        |  28 ++++++++--
+ 8 files changed, 114 insertions(+), 72 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 604eaf2..d3fb398 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -5253,6 +5253,7 @@ machinectl_LDADD = \
+ 	libsystemd-internal.la \
+ 	libsystemd-logs.la \
+ 	libsystemd-journal-internal.la \
++	libsystemd-units.la \
+ 	libsystemd-shared.la
+ 
+ rootbin_PROGRAMS += \
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 3c4c9cb..44ec0d7 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -456,6 +456,18 @@
+       </varlistentry>
+ 
+       <varlistentry>
++        <term><option>--now</option></term>
++
++        <listitem>
++          <para>When used with <command>enable</command>, the units
++          will also be started. When used with <command>disable</command> or
++          <command>mask</command>, the units will also be stopped. The start
++          or stop operation is only carried out when the respective enable or
++          disable operation has been successful.</para>
++        </listitem>
++      </varlistentry>
++
++      <varlistentry>
+         <term><option>--root=</option></term>
+ 
+         <listitem>
+@@ -909,11 +921,12 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             the changes are taken into account immediately. Note that
+             this does <emphasis>not</emphasis> have the effect of also
+             starting any of the units being enabled. If this
+-            is desired, a separate <command>start</command> command must
+-            be invoked for the unit. Also note that in case of instance
+-            enablement, symlinks named the same as instances are created in
+-            the install location, however they all point to the same
+-            template unit file.</para>
++            is desired, either <option>--now</option> should be used
++            together with this command, or an additional <command>start</command>
++            command must be invoked for the unit. Also note that in case of
++            instance enablement, symlinks named the same as instances
++            are created in the install location, however they all point to the
++            same template unit file.</para>
+ 
+             <para>This command will print the actions executed. This
+             output may be suppressed by passing <option>--quiet</option>.
+@@ -968,9 +981,10 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             <command>enable</command>. This call implicitly reloads the
+             systemd daemon configuration after completing the disabling
+             of the units. Note that this command does not implicitly
+-            stop the units that are being disabled. If this is desired,
+-            an additional <command>stop</command> command should be
+-            executed afterwards.</para>
++            stop the units that are being disabled. If this is desired, either
++            <option>--now</option> should be used together with this command, or
++            an additional <command>stop</command> command should be executed
++            afterwards.</para>
+ 
+             <para>This command will print the actions executed. This
+             output may be suppressed by passing <option>--quiet</option>.
+@@ -1116,7 +1130,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             activation of the unit, including enablement and manual
+             activation. Use this option with care. This honors the
+             <option>--runtime</option> option to only mask temporarily
+-            until the next reboot of the system.</para>
++            until the next reboot of the system. The <option>--now</option>
++            option can be used to ensure that the units are also stopped.</para>
+           </listitem>
+         </varlistentry>
+ 
+diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/libsystemd/sd-bus/bus-util.c
+index 2e6d889..fff00d9 100644
+--- a/src/libsystemd/sd-bus/bus-util.c
++++ b/src/libsystemd/sd-bus/bus-util.c
+@@ -1849,7 +1849,7 @@ int bus_wait_for_jobs_add(BusWaitForJobs *d, const char *path) {
+         return set_put_strdup(d->jobs, path);
+ }
+ 
+-int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet) {
++int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet, UnitFileChange **changes, unsigned *n_changes) {
+         const char *type, *path, *source;
+         int r;
+ 
+@@ -1864,6 +1864,10 @@ int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet) {
+                         else
+                                 log_info("Removed symlink %s.", path);
+                 }
++
++                r = unit_file_changes_add(changes, n_changes, streq(type, "symlink") ? UNIT_FILE_SYMLINK : UNIT_FILE_UNLINK, path, source);
++                if (r < 0)
++                        return r;
+         }
+         if (r < 0)
+                 return bus_log_parse_error(r);
+diff --git a/src/libsystemd/sd-bus/bus-util.h b/src/libsystemd/sd-bus/bus-util.h
+index e8a97ce..21db982 100644
+--- a/src/libsystemd/sd-bus/bus-util.h
++++ b/src/libsystemd/sd-bus/bus-util.h
+@@ -24,6 +24,7 @@
+ #include "sd-event.h"
+ #include "sd-bus.h"
+ #include "hashmap.h"
++#include "install.h"
+ #include "time-util.h"
+ #include "util.h"
+ 
+@@ -211,4 +212,4 @@ int bus_wait_for_jobs(BusWaitForJobs *d, bool quiet);
+ 
+ DEFINE_TRIVIAL_CLEANUP_FUNC(BusWaitForJobs*, bus_wait_for_jobs_free);
+ 
+-int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet);
++int bus_deserialize_and_dump_unit_file_changes(sd_bus_message *m, bool quiet, UnitFileChange **changes, unsigned *n_changes);
+diff --git a/src/machine/machinectl.c b/src/machine/machinectl.c
+index 9f8c68b..f191070 100644
+--- a/src/machine/machinectl.c
++++ b/src/machine/machinectl.c
+@@ -1709,7 +1709,7 @@ static int enable_machine(int argc, char *argv[], void *userdata) {
+                         return bus_log_parse_error(r);
+         }
+ 
+-        r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet);
++        r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet, NULL, NULL);
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/shared/install.c b/src/shared/install.c
+index efd489e..b62065b 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -113,51 +113,6 @@ static int get_config_path(UnitFileScope scope, bool runtime, const char *root_d
+         return 0;
+ }
+ 
+-static int add_file_change(
+-                UnitFileChange **changes,
+-                unsigned *n_changes,
+-                UnitFileChangeType type,
+-                const char *path,
+-                const char *source) {
+-
+-        UnitFileChange *c;
+-        unsigned i;
+-
+-        assert(path);
+-        assert(!changes == !n_changes);
+-
+-        if (!changes)
+-                return 0;
+-
+-        c = realloc(*changes, (*n_changes + 1) * sizeof(UnitFileChange));
+-        if (!c)
+-                return -ENOMEM;
+-
+-        *changes = c;
+-        i = *n_changes;
+-
+-        c[i].type = type;
+-        c[i].path = strdup(path);
+-        if (!c[i].path)
+-                return -ENOMEM;
+-
+-        path_kill_slashes(c[i].path);
+-
+-        if (source) {
+-                c[i].source = strdup(source);
+-                if (!c[i].source) {
+-                        free(c[i].path);
+-                        return -ENOMEM;
+-                }
+-
+-                path_kill_slashes(c[i].path);
+-        } else
+-                c[i].source = NULL;
+-
+-        *n_changes = i+1;
+-        return 0;
+-}
+-
+ static int mark_symlink_for_removal(
+                 Set **remove_symlinks_to,
+                 const char *p) {
+@@ -310,7 +265,7 @@ static int remove_marked_symlinks_fd(
+ 
+                         path_kill_slashes(p);
+                         rmdir_parents(p, config_path);
+-                        add_file_change(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
++                        unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, p, NULL);
+ 
+                         if (!set_get(remove_symlinks_to, p)) {
+ 
+@@ -597,7 +552,7 @@ int unit_file_mask(
+                 }
+ 
+                 if (symlink("/dev/null", path) >= 0) {
+-                        add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, path, "/dev/null");
++                        unit_file_changes_add(changes, n_changes, UNIT_FILE_SYMLINK, path, "/dev/null");
+                         continue;
+                 }
+ 
+@@ -608,8 +563,8 @@ int unit_file_mask(
+ 
+                         if (force) {
+                                 if (symlink_atomic("/dev/null", path) >= 0) {
+-                                        add_file_change(changes, n_changes, UNIT_FILE_UNLINK, path, NULL);
+-                                        add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, path, "/dev/null");
++                                        unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, path, NULL);
++                                        unit_file_changes_add(changes, n_changes, UNIT_FILE_SYMLINK, path, "/dev/null");
+                                         continue;
+                                 }
+                         }
+@@ -665,7 +620,7 @@ int unit_file_unmask(
+                                 q = -errno;
+                         else {
+                                 q = mark_symlink_for_removal(&remove_symlinks_to, path);
+-                                add_file_change(changes, n_changes, UNIT_FILE_UNLINK, path, NULL);
++                                unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, path, NULL);
+                         }
+                 }
+ 
+@@ -747,7 +702,7 @@ int unit_file_link(
+                         return -ENOMEM;
+ 
+                 if (symlink(*i, path) >= 0) {
+-                        add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, path, *i);
++                        unit_file_changes_add(changes, n_changes, UNIT_FILE_SYMLINK, path, *i);
+                         continue;
+                 }
+ 
+@@ -766,8 +721,8 @@ int unit_file_link(
+ 
+                         if (force) {
+                                 if (symlink_atomic(*i, path) >= 0) {
+-                                        add_file_change(changes, n_changes, UNIT_FILE_UNLINK, path, NULL);
+-                                        add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, path, *i);
++                                        unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, path, NULL);
++                                        unit_file_changes_add(changes, n_changes, UNIT_FILE_SYMLINK, path, *i);
+                                         continue;
+                                 }
+                         }
+@@ -794,6 +749,51 @@ void unit_file_list_free(Hashmap *h) {
+         hashmap_free(h);
+ }
+ 
++int unit_file_changes_add(
++                UnitFileChange **changes,
++                unsigned *n_changes,
++                UnitFileChangeType type,
++                const char *path,
++                const char *source) {
++
++        UnitFileChange *c;
++        unsigned i;
++
++        assert(path);
++        assert(!changes == !n_changes);
++
++        if (!changes)
++                return 0;
++
++        c = realloc(*changes, (*n_changes + 1) * sizeof(UnitFileChange));
++        if (!c)
++                return -ENOMEM;
++
++        *changes = c;
++        i = *n_changes;
++
++        c[i].type = type;
++        c[i].path = strdup(path);
++        if (!c[i].path)
++                return -ENOMEM;
++
++        path_kill_slashes(c[i].path);
++
++        if (source) {
++                c[i].source = strdup(source);
++                if (!c[i].source) {
++                        free(c[i].path);
++                        return -ENOMEM;
++                }
++
++                path_kill_slashes(c[i].path);
++        } else
++                c[i].source = NULL;
++
++        *n_changes = i+1;
++        return 0;
++}
++
+ void unit_file_changes_free(UnitFileChange *changes, unsigned n_changes) {
+         unsigned i;
+ 
+@@ -1199,7 +1199,7 @@ static int create_symlink(
+         mkdir_parents_label(new_path, 0755);
+ 
+         if (symlink(old_path, new_path) >= 0) {
+-                add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, new_path, old_path);
++                unit_file_changes_add(changes, n_changes, UNIT_FILE_SYMLINK, new_path, old_path);
+                 return 0;
+         }
+ 
+@@ -1220,8 +1220,8 @@ static int create_symlink(
+         if (r < 0)
+                 return r;
+ 
+-        add_file_change(changes, n_changes, UNIT_FILE_UNLINK, new_path, NULL);
+-        add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, new_path, old_path);
++        unit_file_changes_add(changes, n_changes, UNIT_FILE_UNLINK, new_path, NULL);
++        unit_file_changes_add(changes, n_changes, UNIT_FILE_SYMLINK, new_path, old_path);
+ 
+         return 0;
+ }
+diff --git a/src/shared/install.h b/src/shared/install.h
+index 3ca3939..d729e6e 100644
+--- a/src/shared/install.h
++++ b/src/shared/install.h
+@@ -112,6 +112,7 @@ UnitFileState unit_file_get_state(
+ int unit_file_get_list(UnitFileScope scope, const char *root_dir, Hashmap *h);
+ 
+ void unit_file_list_free(Hashmap *h);
++int unit_file_changes_add(UnitFileChange **changes, unsigned *n_changes, UnitFileChangeType type, const char *path, const char *source);
+ void unit_file_changes_free(UnitFileChange *changes, unsigned n_changes);
+ 
+ int unit_file_query_preset(UnitFileScope scope, const char *root_dir, const char *name);
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 089c25f..9898694 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -138,6 +138,7 @@ static char *arg_host = NULL;
+ static unsigned arg_lines = 10;
+ static OutputMode arg_output = OUTPUT_SHORT;
+ static bool arg_plain = false;
++static bool arg_now = false;
+ 
+ static bool original_stdout_is_tty;
+ 
+@@ -1979,7 +1980,7 @@ static int set_default(sd_bus *bus, char **args) {
+                         return r;
+                 }
+ 
+-                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet);
++                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet, NULL, NULL);
+                 if (r < 0)
+                         return r;
+ 
+@@ -5415,7 +5416,7 @@ static int enable_unit(sd_bus *bus, char **args) {
+                                 return bus_log_parse_error(r);
+                 }
+ 
+-                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet);
++                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet, &changes, &n_changes);
+                 if (r < 0)
+                         return r;
+ 
+@@ -5437,6 +5438,18 @@ static int enable_unit(sd_bus *bus, char **args) {
+                             "3) A unit may be started when needed via activation (socket, path, timer,\n"
+                             "   D-Bus, udev, scripted systemctl call, ...).\n");
+ 
++        if (arg_now && n_changes > 0 && STR_IN_SET(args[0], "enable", "disable", "mask")) {
++                char *new_args[n_changes + 2];
++                unsigned i;
++
++                new_args[0] = streq(args[0], "enable") ? (char *)"start" : (char *)"stop";
++                for (i = 0; i < n_changes; i++)
++                        new_args[i + 1] = basename(changes[i].path);
++                new_args[i + 1] = NULL;
++
++                r = start_unit(bus, new_args);
++        }
++
+ finish:
+         unit_file_changes_free(changes, n_changes);
+ 
+@@ -5516,7 +5529,7 @@ static int add_dependency(sd_bus *bus, char **args) {
+                         return r;
+                 }
+ 
+-                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet);
++                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet, NULL, NULL);
+                 if (r < 0)
+                         return r;
+ 
+@@ -5582,7 +5595,7 @@ static int preset_all(sd_bus *bus, char **args) {
+                         return r;
+                 }
+ 
+-                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet);
++                r = bus_deserialize_and_dump_unit_file_changes(reply, arg_quiet, NULL, NULL);
+                 if (r < 0)
+                         return r;
+ 
+@@ -6058,6 +6071,7 @@ static void systemctl_help(void) {
+                "                      When shutting down or sleeping, ignore inhibitors\n"
+                "     --kill-who=WHO   Who to send signal to\n"
+                "  -s --signal=SIGNAL  Which signal to send\n"
++               "     --now            Start or stop unit in addition to enabling or disabling it\n"
+                "  -q --quiet          Suppress output\n"
+                "     --no-block       Do not wait until operation finished\n"
+                "     --no-wall        Don't send wall message before halt/power-off/reboot\n"
+@@ -6255,6 +6269,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
+                 ARG_STATE,
+                 ARG_JOB_MODE,
+                 ARG_PRESET_MODE,
++                ARG_NOW,
+         };
+ 
+         static const struct option options[] = {
+@@ -6297,6 +6312,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
+                 { "state",               required_argument, NULL, ARG_STATE               },
+                 { "recursive",           no_argument,       NULL, 'r'                     },
+                 { "preset-mode",         required_argument, NULL, ARG_PRESET_MODE         },
++                { "now",                 no_argument,       NULL, ARG_NOW                 },
+                 {}
+         };
+ 
+@@ -6573,6 +6589,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
+ 
+                         break;
+ 
++                case ARG_NOW:
++                        arg_now = true;
++                        break;
++
+                 case '?':
+                         return -EINVAL;
+ 
diff --git a/SOURCES/0186-journal-fix-access-to-munmapped-memory-in-sd_journal.patch b/SOURCES/0186-journal-fix-access-to-munmapped-memory-in-sd_journal.patch
deleted file mode 100644
index 37d6d58..0000000
--- a/SOURCES/0186-journal-fix-access-to-munmapped-memory-in-sd_journal.patch
+++ /dev/null
@@ -1,320 +0,0 @@
-From 035c9e559064114e3f7ba19b593a97c4a4d4f060 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 28 Dec 2013 19:33:23 -0500
-Subject: [PATCH] journal: fix access to munmapped memory in
- sd_journal_enumerate_unique
-
-sd_j_e_u needs to keep a reference to an object while comparing it
-with possibly duplicate objects in other files. Because the size of
-mmap cache is limited, with enough files and object to compare to,
-at some point the object being compared would be munmapped, resulting
-in a segmentation fault.
-
-Fix this issue by turning keep_always into a reference count that can
-be increased and decreased. Other callers which set keep_always=true
-are unmodified: their references are never released but are ignored
-when the whole file is closed, which happens at some point. keep_always
-is increased in sd_j_e_u and later on released.
----
- src/journal/journal-file.c   |  5 +---
- src/journal/journal-file.h   | 24 +++++++++++++++++++
- src/journal/journal-verify.c |  4 ----
- src/journal/mmap-cache.c     | 57 +++++++++++++++++++++++++++++++++++---------
- src/journal/mmap-cache.h     | 18 +++++++++++++-
- src/journal/sd-journal.c     | 18 +++++++++++---
- 6 files changed, 103 insertions(+), 23 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 748816a..9dbd674 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -419,7 +419,6 @@ int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Objec
-         void *t;
-         Object *o;
-         uint64_t s;
--        unsigned context;
- 
-         assert(f);
-         assert(ret);
-@@ -428,10 +427,8 @@ int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Objec
-         if (!VALID64(offset))
-                 return -EFAULT;
- 
--        /* One context for each type, plus one catch-all for the rest */
--        context = type > 0 && type < _OBJECT_TYPE_MAX ? type : 0;
- 
--        r = journal_file_move_to(f, context, false, offset, sizeof(ObjectHeader), &t);
-+        r = journal_file_move_to(f, type_to_context(type), false, offset, sizeof(ObjectHeader), &t);
-         if (r < 0)
-                 return r;
- 
-diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h
-index 5cc2c2d..376c3d4 100644
---- a/src/journal/journal-file.h
-+++ b/src/journal/journal-file.h
-@@ -128,6 +128,10 @@ int journal_file_open_reliably(
- #define ALIGN64(x) (((x) + 7ULL) & ~7ULL)
- #define VALID64(x) (((x) & 7ULL) == 0ULL)
- 
-+/* Use six characters to cover the offsets common in smallish journal
-+ * files without adding too many zeros. */
-+#define OFSfmt "%06"PRIx64
-+
- static inline bool VALID_REALTIME(uint64_t u) {
-         /* This considers timestamps until the year 3112 valid. That should be plenty room... */
-         return u > 0 && u < (1ULL << 55);
-@@ -197,3 +201,23 @@ int journal_file_get_cutoff_realtime_usec(JournalFile *f, usec_t *from, usec_t *
- int journal_file_get_cutoff_monotonic_usec(JournalFile *f, sd_id128_t boot, usec_t *from, usec_t *to);
- 
- bool journal_file_rotate_suggested(JournalFile *f, usec_t max_file_usec);
-+
-+
-+static unsigned type_to_context(int type) {
-+        /* One context for each type, plus one catch-all for the rest */
-+        return type > 0 && type < _OBJECT_TYPE_MAX ? type : 0;
-+}
-+
-+static inline int journal_file_object_keep(JournalFile *f, Object *o, uint64_t offset) {
-+        unsigned context = type_to_context(o->object.type);
-+
-+        return mmap_cache_get(f->mmap, f->fd, f->prot, context, true,
-+                              offset, o->object.size, &f->last_stat, NULL);
-+}
-+
-+static inline int journal_file_object_release(JournalFile *f, Object *o, uint64_t offset) {
-+        unsigned context = type_to_context(o->object.type);
-+
-+        return mmap_cache_release(f->mmap, f->fd, f->prot, context,
-+                                  offset, o->object.size);
-+}
-diff --git a/src/journal/journal-verify.c b/src/journal/journal-verify.c
-index 82b0f0a..f2422ff 100644
---- a/src/journal/journal-verify.c
-+++ b/src/journal/journal-verify.c
-@@ -34,10 +34,6 @@
- #include "compress.h"
- #include "fsprg.h"
- 
--/* Use six characters to cover the offsets common in smallish journal
-- * files without adding to many zeros. */
--#define OFSfmt "%06"PRIx64
--
- static int journal_file_object_verify(JournalFile *f, uint64_t offset, Object *o) {
-         uint64_t i;
- 
-diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c
-index 03b57be..cfb26da 100644
---- a/src/journal/mmap-cache.c
-+++ b/src/journal/mmap-cache.c
-@@ -38,7 +38,7 @@ typedef struct FileDescriptor FileDescriptor;
- struct Window {
-         MMapCache *cache;
- 
--        bool keep_always;
-+        unsigned keep_always;
-         bool in_unused;
- 
-         int prot;
-@@ -182,7 +182,7 @@ static void context_detach_window(Context *c) {
-         c->window = NULL;
-         LIST_REMOVE(Context, by_window, w->contexts, c);
- 
--        if (!w->contexts && !w->keep_always) {
-+        if (!w->contexts && w->keep_always == 0) {
-                 /* Not used anymore? */
-                 LIST_PREPEND(Window, unused, c->cache->unused, w);
-                 if (!c->cache->last_unused)
-@@ -357,7 +357,6 @@ static int try_context(
-         assert(m->n_ref > 0);
-         assert(fd >= 0);
-         assert(size > 0);
--        assert(ret);
- 
-         c = hashmap_get(m->contexts, UINT_TO_PTR(context+1));
-         if (!c)
-@@ -375,9 +374,10 @@ static int try_context(
-                 return 0;
-         }
- 
--        c->window->keep_always = c->window->keep_always || keep_always;
-+        c->window->keep_always += keep_always;
- 
--        *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset);
-+        if (ret)
-+                *ret = (uint8_t*) c->window->ptr + (offset - c->window->offset);
-         return 1;
- }
- 
-@@ -399,7 +399,6 @@ static int find_mmap(
-         assert(m->n_ref > 0);
-         assert(fd >= 0);
-         assert(size > 0);
--        assert(ret);
- 
-         f = hashmap_get(m->fds, INT_TO_PTR(fd + 1));
-         if (!f)
-@@ -419,9 +418,10 @@ static int find_mmap(
-                 return -ENOMEM;
- 
-         context_attach_window(c, w);
--        w->keep_always = w->keep_always || keep_always;
-+        w->keep_always += keep_always;
- 
--        *ret = (uint8_t*) w->ptr + (offset - w->offset);
-+        if (ret)
-+                *ret = (uint8_t*) w->ptr + (offset - w->offset);
-         return 1;
- }
- 
-@@ -447,7 +447,6 @@ static int add_mmap(
-         assert(m->n_ref > 0);
-         assert(fd >= 0);
-         assert(size > 0);
--        assert(ret);
- 
-         woffset = offset & ~((uint64_t) page_size() - 1ULL);
-         wsize = size + (offset - woffset);
-@@ -517,7 +516,8 @@ static int add_mmap(
-         c->window = w;
-         LIST_PREPEND(Context, by_window, w->contexts, c);
- 
--        *ret = (uint8_t*) w->ptr + (offset - w->offset);
-+        if (ret)
-+                *ret = (uint8_t*) w->ptr + (offset - w->offset);
-         return 1;
- }
- 
-@@ -538,7 +538,6 @@ int mmap_cache_get(
-         assert(m->n_ref > 0);
-         assert(fd >= 0);
-         assert(size > 0);
--        assert(ret);
- 
-         /* Check whether the current context is the right one already */
-         r = try_context(m, fd, prot, context, keep_always, offset, size, ret);
-@@ -554,6 +553,42 @@ int mmap_cache_get(
-         return add_mmap(m, fd, prot, context, keep_always, offset, size, st, ret);
- }
- 
-+int mmap_cache_release(
-+                MMapCache *m,
-+                int fd,
-+                int prot,
-+                unsigned context,
-+                uint64_t offset,
-+                size_t size) {
-+
-+        FileDescriptor *f;
-+        Window *w;
-+
-+        assert(m);
-+        assert(m->n_ref > 0);
-+        assert(fd >= 0);
-+        assert(size > 0);
-+
-+        f = hashmap_get(m->fds, INT_TO_PTR(fd + 1));
-+        if (!f)
-+                return -EBADF;
-+
-+        assert(f->fd == fd);
-+
-+        LIST_FOREACH(by_fd, w, f->windows)
-+                if (window_matches(w, fd, prot, offset, size))
-+                        break;
-+
-+        if (!w)
-+                return -ENOENT;
-+
-+        if (w->keep_always == 0)
-+                return -ENOLCK;
-+
-+        w->keep_always -= 1;
-+        return 0;
-+}
-+
- void mmap_cache_close_fd(MMapCache *m, int fd) {
-         FileDescriptor *f;
- 
-diff --git a/src/journal/mmap-cache.h b/src/journal/mmap-cache.h
-index 0c42fb8..e5e3b38 100644
---- a/src/journal/mmap-cache.h
-+++ b/src/journal/mmap-cache.h
-@@ -31,6 +31,22 @@ MMapCache* mmap_cache_new(void);
- MMapCache* mmap_cache_ref(MMapCache *m);
- MMapCache* mmap_cache_unref(MMapCache *m);
- 
--int mmap_cache_get(MMapCache *m, int fd, int prot, unsigned context, bool keep_always, uint64_t offset, size_t size, struct stat *st, void **ret);
-+int mmap_cache_get(
-+        MMapCache *m,
-+        int fd,
-+        int prot,
-+        unsigned context,
-+        bool keep_always,
-+        uint64_t offset,
-+        size_t size,
-+        struct stat *st,
-+        void **ret);
-+int mmap_cache_release(
-+        MMapCache *m,
-+        int fd,
-+        int prot,
-+        unsigned context,
-+        uint64_t offset,
-+        size_t size);
- void mmap_cache_close_fd(MMapCache *m, int fd);
- void mmap_cache_close_context(MMapCache *m, unsigned context);
-diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
-index 9676f0f..67a77e6 100644
---- a/src/journal/sd-journal.c
-+++ b/src/journal/sd-journal.c
-@@ -2506,9 +2506,7 @@ _public_ int sd_journal_query_unique(sd_journal *j, const char *field) {
- }
- 
- _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_t *l) {
--        Object *o;
-         size_t k;
--        int r;
- 
-         if (!j)
-                 return -EINVAL;
-@@ -2533,9 +2531,11 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
-         for (;;) {
-                 JournalFile *of;
-                 Iterator i;
-+                Object *o;
-                 const void *odata;
-                 size_t ol;
-                 bool found;
-+                int r;
- 
-                 /* Proceed to next data object in the field's linked list */
-                 if (j->unique_offset == 0) {
-@@ -2572,8 +2572,16 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
-                         return r;
- 
-                 /* Let's do the type check by hand, since we used 0 context above. */
--                if (o->object.type != OBJECT_DATA)
-+                if (o->object.type != OBJECT_DATA) {
-+                        log_error("%s:offset " OFSfmt ": object has type %d, expected %d",
-+                                  j->unique_file->path, j->unique_offset,
-+                                  o->object.type, OBJECT_DATA);
-                         return -EBADMSG;
-+                }
-+
-+                r = journal_file_object_keep(j->unique_file, o, j->unique_offset);
-+                if (r < 0)
-+                        return r;
- 
-                 r = return_data(j, j->unique_file, o, &odata, &ol);
-                 if (r < 0)
-@@ -2607,6 +2615,10 @@ _public_ int sd_journal_enumerate_unique(sd_journal *j, const void **data, size_
-                 if (found)
-                         continue;
- 
-+                r = journal_file_object_release(j->unique_file, o, j->unique_offset);
-+                if (r < 0)
-+                        return r;
-+
-                 r = return_data(j, j->unique_file, o, data, l);
-                 if (r < 0)
-                         return r;
diff --git a/SOURCES/0186-udev-also-create-old-sas-paths.patch b/SOURCES/0186-udev-also-create-old-sas-paths.patch
new file mode 100644
index 0000000..8109100
--- /dev/null
+++ b/SOURCES/0186-udev-also-create-old-sas-paths.patch
@@ -0,0 +1,135 @@
+From 956212c9a226d9192e4b3c085e917fe59f6d5cb9 Mon Sep 17 00:00:00 2001
+From: Maurizio Lombardi <mlombard@redhat.com>
+Date: Tue, 2 Jun 2015 17:26:25 +0200
+Subject: [PATCH] udev: also create old sas paths
+
+RHEL-only
+
+Resolves: #957112
+---
+ rules/60-persistent-storage.rules |  2 ++
+ src/udev/udev-builtin-path_id.c   | 33 ++++++++++++++++++++++++++-------
+ 2 files changed, 28 insertions(+), 7 deletions(-)
+
+diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
+index 25b44a5..71ab974 100644
+--- a/rules/60-persistent-storage.rules
++++ b/rules/60-persistent-storage.rules
+@@ -54,7 +54,9 @@ KERNEL=="mspblk[0-9]p[0-9]", ENV{ID_NAME}=="?*", ENV{ID_SERIAL}=="?*", SYMLINK+=
+ # by-path (parent device path)
+ ENV{DEVTYPE}=="disk", DEVPATH!="*/virtual/*", IMPORT{builtin}="path_id"
+ ENV{DEVTYPE}=="disk", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}"
++ENV{DEVTYPE}=="disk", ENV{ID_SAS_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_SAS_PATH}"
+ ENV{DEVTYPE}=="partition", ENV{ID_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_PATH}-part%n"
++ENV{DEVTYPE}=="partition", ENV{ID_SAS_PATH}=="?*", SYMLINK+="disk/by-path/$env{ID_SAS_PATH}-part%n"
+ 
+ # skip unpartitioned removable media devices from drivers which do not send "change" events
+ ENV{DEVTYPE}=="disk", KERNEL!="sd*|sr*", ATTR{removable}=="1", GOTO="persistent_storage_end"
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index bb0a624..025392d 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -154,7 +154,7 @@ out:
+         return parent;
+ }
+ 
+-static struct udev_device *handle_scsi_sas(struct udev_device *parent, char **path)
++static struct udev_device *handle_scsi_sas(struct udev_device *parent, bool enable_new_sas_path, char **path, bool *new_sas_path)
+ {
+         struct udev *udev  = udev_device_get_udev(parent);
+         struct udev_device *targetdev;
+@@ -169,6 +169,8 @@ static struct udev_device *handle_scsi_sas(struct udev_device *parent, char **pa
+         const char *phy_count;
+         char *lun = NULL;
+ 
++        *new_sas_path = false;
++
+         targetdev = udev_device_get_parent_with_subsystem_devtype(parent, "scsi", "scsi_target");
+         if (targetdev == NULL)
+                 return NULL;
+@@ -201,7 +203,7 @@ static struct udev_device *handle_scsi_sas(struct udev_device *parent, char **pa
+         }
+ 
+         /* Check if we are simple disk */
+-        if (strncmp(phy_count, "1", 2) != 0) {
++        if (strncmp(phy_count, "1", 2) != 0 || !enable_new_sas_path) {
+                  parent = handle_scsi_sas_wide_port(parent, path);
+                  goto out;
+         }
+@@ -241,6 +243,8 @@ static struct udev_device *handle_scsi_sas(struct udev_device *parent, char **pa
+ 
+         if (lun)
+                 free(lun);
++
++        *new_sas_path = true;
+ out:
+         udev_device_unref(target_sasdev);
+         udev_device_unref(expander_sasdev);
+@@ -466,7 +470,7 @@ out:
+         return hostdev;
+ }
+ 
+-static struct udev_device *handle_scsi(struct udev_device *parent, char **path, bool *supported_parent) {
++static struct udev_device *handle_scsi(struct udev_device *parent, bool enable_new_sas_path, char **path, bool *supported_parent, bool *new_sas_path) {
+         const char *devtype;
+         const char *name;
+         const char *id;
+@@ -494,7 +498,7 @@ static struct udev_device *handle_scsi(struct udev_device *parent, char **path,
+         }
+ 
+         if (strstr(name, "/end_device-") != NULL) {
+-                parent = handle_scsi_sas(parent, path);
++                parent = handle_scsi_sas(parent, enable_new_sas_path, path, new_sas_path);
+                 *supported_parent = true;
+                 goto out;
+         }
+@@ -610,6 +614,8 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
+         char *path = NULL;
+         bool supported_transport = false;
+         bool supported_parent = false;
++        bool new_sas_path = false;
++        bool enable_new_sas_path = true;
+ 
+         /* S390 ccw bus */
+         parent = udev_device_get_parent_with_subsystem_devtype(dev, "ccw", NULL);
+@@ -618,6 +624,8 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
+                 goto out;
+         }
+ 
++restart:
++        ;
+         /* walk up the chain of devices and compose path */
+         parent = dev;
+         while (parent != NULL) {
+@@ -629,7 +637,7 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool
+                 } else if (streq(subsys, "scsi_tape")) {
+                         handle_scsi_tape(parent, &path);
+                 } else if (streq(subsys, "scsi")) {
+-                        parent = handle_scsi(parent, &path, &supported_parent);
++                        parent = handle_scsi(parent, enable_new_sas_path, &path, &supported_parent, &new_sas_path);
+                         supported_transport = true;
+                 } else if (streq(subsys, "cciss")) {
+                         parent = handle_cciss(parent, &path);
+@@ -721,9 +729,20 @@ out:
+                         i--;
+                 tag[i] = '\0';
+ 
+-                udev_builtin_add_property(dev, test, "ID_PATH", path);
+-                udev_builtin_add_property(dev, test, "ID_PATH_TAG", tag);
++                if (new_sas_path) {
++                        udev_builtin_add_property(dev, test, "ID_SAS_PATH", path);
++                } else {
++                        udev_builtin_add_property(dev, test, "ID_PATH", path);
++                        udev_builtin_add_property(dev, test, "ID_PATH_TAG", tag);
++                }
++
+                 free(path);
++
++                if (new_sas_path) {
++                        enable_new_sas_path = false;
++                        goto restart;
++                }
++
+                 return EXIT_SUCCESS;
+         }
+         return EXIT_FAILURE;
diff --git a/SOURCES/0187-gpt-auto-generator-skip-nonexistent-devices.patch b/SOURCES/0187-gpt-auto-generator-skip-nonexistent-devices.patch
deleted file mode 100644
index 4b7115f..0000000
--- a/SOURCES/0187-gpt-auto-generator-skip-nonexistent-devices.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 7f3f1b3f979a96182b2eb44eeea86993506108d5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=C5=81ukasz=20Stelmach?= <l.stelmach@samsung.com>
-Date: Tue, 7 Jan 2014 15:00:22 +0100
-Subject: [PATCH] gpt-auto-generator: skip nonexistent devices
-
-The devices we work with have eMMC chips for storage. The chips
-provide four "hardware" partitions.  The first is /dev/mmcblk0, it
-takes almost whole space and holds a GPT with several real partitions
-(/dev/mmcblk0p?). Then there are three block devices (mmcblk0boot0,
-mmcblk0boot1, rpmb) that are part of the same hardware as mmcblk0 that
-are presented by the kernel as children of the latter. That relationship
-makes gpt-auto-generator try to peek them but since they are not GPT
-partitions blkid_do_safeprobe() returns -2 making verify_gpt_parition()
-function return -ENODEV.
----
- src/gpt-auto-generator/gpt-auto-generator.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
-index d2b4213..1f09aed 100644
---- a/src/gpt-auto-generator/gpt-auto-generator.c
-+++ b/src/gpt-auto-generator/gpt-auto-generator.c
-@@ -306,6 +306,9 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
- 
-                 r = verify_gpt_partition(node, &type_id, &nr, &fstype);
-                 if (r < 0) {
-+                        /* skip child devices which are not detected properly */
-+                        if (r == -ENODEV)
-+                                continue;
-                         log_error("Failed to verify GPT partition %s: %s",
-                                   node, strerror(-r));
-                         udev_device_unref(q);
diff --git a/SOURCES/0187-journald-do-not-strip-leading-whitespace-from-messag.patch b/SOURCES/0187-journald-do-not-strip-leading-whitespace-from-messag.patch
new file mode 100644
index 0000000..f74bb27
--- /dev/null
+++ b/SOURCES/0187-journald-do-not-strip-leading-whitespace-from-messag.patch
@@ -0,0 +1,34 @@
+From fa74ba131041161f1ae9fbc0a3b11f9a005b9d8f Mon Sep 17 00:00:00 2001
+From: Filipe Brandenburger <filbranden@google.com>
+Date: Wed, 10 Jun 2015 22:33:44 -0700
+Subject: [PATCH] journald: do not strip leading whitespace from messages
+
+Keep leading whitespace for compatibility with older syslog
+implementations.  Also useful when piping formatted output to the
+`logger` command.  Keep removing trailing whitespace.
+
+Tested with `pstree | logger` and checking that the output of
+`journalctl | tail` included aligned and formatted output.
+
+Confirmed that all test cases still pass as expected.
+
+Cherry-picked from: ec5ff444
+Resolves: #1227396
+---
+ src/journal/journald-syslog.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
+index 7d545ca..ba80941 100644
+--- a/src/journal/journald-syslog.c
++++ b/src/journal/journald-syslog.c
+@@ -232,7 +232,8 @@ size_t syslog_parse_identifier(const char **buf, char **identifier, char **pid)
+         if (t)
+                 *identifier = t;
+ 
+-        e += strspn(p + e, WHITESPACE);
++        if (strchr(WHITESPACE, p[e]))
++                e++;
+         *buf = p + e;
+         return e;
+ }
diff --git a/SOURCES/0188-Revert-core-one-step-back-again-for-nspawn-we-actual.patch b/SOURCES/0188-Revert-core-one-step-back-again-for-nspawn-we-actual.patch
new file mode 100644
index 0000000..8a758c7
--- /dev/null
+++ b/SOURCES/0188-Revert-core-one-step-back-again-for-nspawn-we-actual.patch
@@ -0,0 +1,39 @@
+From 647a7761e2fa423c6e1bd6785b043dbe7b525e3c Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 25 Jun 2015 09:20:59 +0200
+Subject: [PATCH] Revert "core: one step back again, for nspawn we actually
+ can't wait for cgroups running empty since systemd will get exactly zero
+ notifications about it"
+
+This reverts commit 743970d2ea6d08aa7c7bff8220f6b7702f2b1db7.
+
+RHEL-only
+https://bugzilla.redhat.com/show_bug.cgi?id=1141137
+https://github.com/systemd/systemd/pull/350
+
+Resolves: #1199644
+---
+ src/core/unit.c | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/src/core/unit.c b/src/core/unit.c
+index b9e1f13..fa17567 100644
+--- a/src/core/unit.c
++++ b/src/core/unit.c
+@@ -3546,15 +3546,7 @@ int unit_kill_context(
+                                 log_unit_warning_errno(u->id, r, "Failed to kill control group: %m");
+                 } else if (r > 0) {
+ 
+-                        /* FIXME: For now, we will not wait for the
+-                         * cgroup members to die, simply because
+-                         * cgroup notification is unreliable. It
+-                         * doesn't work at all in containers, and
+-                         * outside of containers it can be confused
+-                         * easily by leaving directories in the
+-                         * cgroup. */
+-
+-                        /* wait_for_exit = true; */
++                        wait_for_exit = true;
+ 
+                         if (c->send_sighup && k != KILL_KILL) {
+                                 set_free(pid_set);
diff --git a/SOURCES/0188-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch b/SOURCES/0188-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch
deleted file mode 100644
index 3b194f3..0000000
--- a/SOURCES/0188-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 59250a9f6ac82b91cae43ae6a022298df1a67ee1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 11 Jan 2014 16:45:29 -0500
-Subject: [PATCH] gpt-auto-generator: use EBADSLT code when unable to detect
- partition type
-
-ENODEV suggests that something is missing, which is be misleading
-here.
----
- src/gpt-auto-generator/gpt-auto-generator.c | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
-index 1f09aed..f1749be 100644
---- a/src/gpt-auto-generator/gpt-auto-generator.c
-+++ b/src/gpt-auto-generator/gpt-auto-generator.c
-@@ -73,10 +73,8 @@ static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr
- 
-         errno = 0;
-         r = blkid_do_safeprobe(b);
--        if (r == -2)
--                return -ENODEV;
--        else if (r == 1)
--                return -ENODEV;
-+        if (r == -2 || r == 1) /* no result or uncertain */
-+                return -EBADSLT;
-         else if (r != 0)
-                 return errno ? -errno : -EIO;
- 
-@@ -307,7 +305,7 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
-                 r = verify_gpt_partition(node, &type_id, &nr, &fstype);
-                 if (r < 0) {
-                         /* skip child devices which are not detected properly */
--                        if (r == -ENODEV)
-+                        if (r == -EBADSLT)
-                                 continue;
-                         log_error("Failed to verify GPT partition %s: %s",
-                                   node, strerror(-r));
diff --git a/SOURCES/0189-bus-creds-always-set-SD_BUS_CREDS_PID-when-we-set-pi.patch b/SOURCES/0189-bus-creds-always-set-SD_BUS_CREDS_PID-when-we-set-pi.patch
new file mode 100644
index 0000000..39e7156
--- /dev/null
+++ b/SOURCES/0189-bus-creds-always-set-SD_BUS_CREDS_PID-when-we-set-pi.patch
@@ -0,0 +1,61 @@
+From 0ca06b7178ac205855238941eef7fe981447822a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sun, 24 May 2015 20:20:06 -0400
+Subject: [PATCH] bus-creds: always set SD_BUS_CREDS_PID when we set pid in the
+ mask
+
+Also reorder the code a bit to be easier to parse.
+
+Cherry-picked from: 236f83a
+Related: #1230190
+---
+ src/core/selinux-access.c         |  2 +-
+ src/libsystemd/sd-bus/bus-creds.c | 17 +++++++----------
+ 2 files changed, 8 insertions(+), 11 deletions(-)
+
+diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
+index 1888874..ce4f394 100644
+--- a/src/core/selinux-access.c
++++ b/src/core/selinux-access.c
+@@ -240,7 +240,7 @@ int mac_selinux_generic_access_check(
+         audit_info.path = path;
+         audit_info.cmdline = cl;
+ 
+-        r = selinux_check_access((security_context_t) scon, fcon, tclass, permission, &audit_info);
++        r = selinux_check_access(scon, fcon, tclass, permission, &audit_info);
+         if (r < 0)
+                 r = sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "SELinux policy denies access.");
+ 
+diff --git a/src/libsystemd/sd-bus/bus-creds.c b/src/libsystemd/sd-bus/bus-creds.c
+index ea8a619..5b87fa9 100644
+--- a/src/libsystemd/sd-bus/bus-creds.c
++++ b/src/libsystemd/sd-bus/bus-creds.c
+@@ -698,21 +698,18 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
+                 return 0;
+ 
+         /* Try to retrieve PID from creds if it wasn't passed to us */
+-        if (pid <= 0 && (c->mask & SD_BUS_CREDS_PID))
++        if (pid > 0) {
++                c->pid = pid;
++                c->mask |= SD_BUS_CREDS_PID;
++        } else if (c->mask & SD_BUS_CREDS_PID)
+                 pid = c->pid;
++        else
++                /* Without pid we cannot do much... */
++                return 0;
+ 
+         if (tid <= 0 && (c->mask & SD_BUS_CREDS_TID))
+                 tid = c->pid;
+ 
+-        /* Without pid we cannot do much... */
+-        if (pid <= 0)
+-                return 0;
+-
+-        if (pid > 0) {
+-                c->pid = pid;
+-                c->mask |= SD_BUS_CREDS_PID;
+-        }
+-
+         if (tid > 0) {
+                 c->tid = tid;
+                 c->mask |= SD_BUS_CREDS_TID;
diff --git a/SOURCES/0189-nspawn-explicitly-terminate-machines-when-we-exit-ns.patch b/SOURCES/0189-nspawn-explicitly-terminate-machines-when-we-exit-ns.patch
deleted file mode 100644
index b3eb736..0000000
--- a/SOURCES/0189-nspawn-explicitly-terminate-machines-when-we-exit-ns.patch
+++ /dev/null
@@ -1,123 +0,0 @@
-From 5a69011a7d265ec42562fdfdb99d886570a49d7a Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 6 Nov 2013 02:05:06 +0100
-Subject: [PATCH] nspawn: explicitly terminate machines when we exit nspawn
-
-https://bugs.freedesktop.org/show_bug.cgi?id=68370
-https://bugzilla.redhat.com/show_bug.cgi?id=988883
-
-Conflicts:
-	src/nspawn/nspawn.c
-
-Conflicts:
-	src/nspawn/nspawn.c
----
- src/nspawn/nspawn.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++----
- 1 file changed, 64 insertions(+), 4 deletions(-)
-
-diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index 4bc49a3..f326f99 100644
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -43,9 +43,9 @@
- #include <sys/socket.h>
- #include <linux/netlink.h>
- 
--#include <systemd/sd-daemon.h>
--#include <systemd/sd-bus.h>
--
-+#include "sd-daemon.h"
-+#include "sd-bus.h"
-+#include "sd-id128.h"
- #include "log.h"
- #include "util.h"
- #include "mkdir.h"
-@@ -56,13 +56,13 @@
- #include "strv.h"
- #include "path-util.h"
- #include "loopback-setup.h"
--#include "sd-id128.h"
- #include "dev-setup.h"
- #include "fdset.h"
- #include "build.h"
- #include "fileio.h"
- #include "bus-internal.h"
- #include "bus-message.h"
-+#include "bus-error.h"
- 
- #ifndef TTY_GID
- #define TTY_GID 5
-@@ -1229,6 +1229,60 @@ static int register_machine(void) {
-         return 0;
- }
- 
-+static int terminate_machine(pid_t pid) {
-+        _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
-+        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
-+        _cleanup_bus_unref_ sd_bus *bus = NULL;
-+        const char *path;
-+        int r;
-+
-+        r = sd_bus_open_system(&bus);
-+        if (r < 0) {
-+                log_error("Failed to open system bus: %s", strerror(-r));
-+                return r;
-+        }
-+
-+        r = sd_bus_call_method(
-+                        bus,
-+                        "org.freedesktop.machine1",
-+                        "/org/freedesktop/machine1",
-+                        "org.freedesktop.machine1.Manager",
-+                        "GetMachineByPID",
-+                        &error,
-+                        &reply,
-+                        "u",
-+                        (uint32_t) pid);
-+        if (r < 0) {
-+                /* Note that the machine might already have been
-+                 * cleaned up automatically, hence don't consider it a
-+                 * failure if we cannot get the machine object. */
-+                log_debug("Failed to get machine: %s", bus_error_message(&error, r));
-+                return 0;
-+        }
-+
-+        r = sd_bus_message_read(reply, "o", &path);
-+        if (r < 0) {
-+                log_error("Failed to parse GetMachineByPID() reply: %s", bus_error_message(&error, r));
-+                return r;
-+        }
-+
-+        r = sd_bus_call_method(
-+                        bus,
-+                        "org.freedesktop.machine1",
-+                        path,
-+                        "org.freedesktop.machine1.Machine",
-+                        "Terminate",
-+                        &error,
-+                        NULL,
-+                        NULL);
-+        if (r < 0) {
-+                log_debug("Failed to terminate machine: %s", bus_error_message(&error, r));
-+                return 0;
-+        }
-+
-+        return 0;
-+}
-+
- static bool audit_enabled(void) {
-         int fd;
- 
-@@ -1704,6 +1758,12 @@ int main(int argc, char *argv[]) {
-                 if (saved_attr_valid)
-                         tcsetattr(STDIN_FILENO, TCSANOW, &saved_attr);
- 
-+                /* Kill if it is not dead yet anyway */
-+                terminate_machine(pid);
-+
-+                /* Redundant, but better safe than sorry */
-+                kill(pid, SIGKILL);
-+
-                 k = wait_for_terminate(pid, &status);
-                 if (k < 0) {
-                         r = EXIT_FAILURE;
diff --git a/SOURCES/0190-bash-completion-journalctl-file.patch b/SOURCES/0190-bash-completion-journalctl-file.patch
deleted file mode 100644
index 2da6b7c..0000000
--- a/SOURCES/0190-bash-completion-journalctl-file.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 30b346ca4f331934ce49a1199137778562ff38d2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 15 Nov 2013 19:00:01 -0500
-Subject: [PATCH] bash-completion: journalctl --file
-
-Conflicts:
-	shell-completion/bash/journalctl
----
- shell-completion/bash/journalctl | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl
-index 3c40d57..441b636 100644
---- a/shell-completion/bash/journalctl
-+++ b/shell-completion/bash/journalctl
-@@ -43,7 +43,7 @@ _journalctl() {
-                               -h --help -l --local --new-id128 -m --merge --no-pager
-                               --no-tail -q --quiet --setup-keys --this-boot --verify
-                               --version --list-catalog --update-catalog'
--                       [ARG]='-b --boot --this-boot -D --directory -F --field
-+                       [ARG]='-b --boot --this-boot -D --directory --file -F --field
-                               -o --output -u --unit --user-unit'
-                 [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until
-                               --verify-key'
-@@ -58,6 +58,10 @@ _journalctl() {
-                                 comps=$(compgen -d -- "$cur")
-                                 compopt -o filenames
-                         ;;
-+                        --file)
-+                                comps=$(compgen -f -- "$cur")
-+                                compopt -o filenames
-+                        ;;
-                         --output|-o)
-                                 comps='short short-monotonic verbose export json cat'
-                         ;;
diff --git a/SOURCES/0190-sd-bus-do-not-use-per-datagram-auxiliary-information.patch b/SOURCES/0190-sd-bus-do-not-use-per-datagram-auxiliary-information.patch
new file mode 100644
index 0000000..bed34e4
--- /dev/null
+++ b/SOURCES/0190-sd-bus-do-not-use-per-datagram-auxiliary-information.patch
@@ -0,0 +1,137 @@
+From d0986e46b74de3b131fccbf79bd00de5ff054f71 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 6 Jun 2015 18:59:27 -0400
+Subject: [PATCH] sd-bus: do not use per-datagram auxiliary information
+
+SELinux information cannot be retrieved this way, since we are
+using stream unix sockets and SCM_SECURITY does not work for
+them.
+
+SCM_CREDENTIALS use dropped to be consistent. We also should
+get this information at connection time.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1224211
+"SCM_SECURITY was only added for datagram sockets."
+
+Cherry-picked from: d868f2a
+Related: #1230190
+---
+ src/libsystemd/sd-bus/bus-socket.c | 70 +++++++-------------------------------
+ 1 file changed, 12 insertions(+), 58 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
+index 52883fa..abd9ece 100644
+--- a/src/libsystemd/sd-bus/bus-socket.c
++++ b/src/libsystemd/sd-bus/bus-socket.c
+@@ -501,9 +501,7 @@ static int bus_socket_read_auth(sd_bus *b) {
+         void *p;
+         union {
+                 struct cmsghdr cmsghdr;
+-                uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) +
+-                            CMSG_SPACE(sizeof(struct ucred)) +
+-                            CMSG_SPACE(NAME_MAX)]; /*selinux label */
++                uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX)];
+         } control;
+         struct cmsghdr *cmsg;
+         bool handle_cmsg = false;
+@@ -556,8 +554,8 @@ static int bus_socket_read_auth(sd_bus *b) {
+ 
+         b->rbuffer_size += k;
+ 
+-        if (handle_cmsg) {
+-                for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) {
++        if (handle_cmsg)
++                for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg))
+                         if (cmsg->cmsg_level == SOL_SOCKET &&
+                             cmsg->cmsg_type == SCM_RIGHTS) {
+                                 int j;
+@@ -568,31 +566,9 @@ static int bus_socket_read_auth(sd_bus *b) {
+                                 j = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int);
+                                 close_many((int*) CMSG_DATA(cmsg), j);
+                                 return -EIO;
+-
+-                        } else if (cmsg->cmsg_level == SOL_SOCKET &&
+-                                   cmsg->cmsg_type == SCM_CREDENTIALS &&
+-                                   cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) {
+-
+-                                /* Ignore bogus data, which we might
+-                                 * get on socketpair() sockets */
+-                                if (((struct ucred*) CMSG_DATA(cmsg))->pid != 0) {
+-                                        memcpy(&b->ucred, CMSG_DATA(cmsg), sizeof(struct ucred));
+-                                        b->ucred_valid = true;
+-                                }
+-
+-                        } else if (cmsg->cmsg_level == SOL_SOCKET &&
+-                                   cmsg->cmsg_type == SCM_SECURITY) {
+-
+-                                size_t l;
+-
+-                                l = cmsg->cmsg_len - CMSG_LEN(0);
+-                                if (l > 0) {
+-                                        memcpy(&b->label, CMSG_DATA(cmsg), l);
+-                                        b->label[l] = 0;
+-                                }
+-                        }
+-                }
+-        }
++                        } else
++                                log_debug("Got unexpected auxiliary data with level=%d and type=%d",
++                                          cmsg->cmsg_level, cmsg->cmsg_type);
+ 
+         r = bus_socket_auth_verify(b);
+         if (r != 0)
+@@ -945,9 +921,7 @@ int bus_socket_read_message(sd_bus *bus) {
+         void *b;
+         union {
+                 struct cmsghdr cmsghdr;
+-                uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) +
+-                            CMSG_SPACE(sizeof(struct ucred)) +
+-                            CMSG_SPACE(NAME_MAX)]; /*selinux label */
++                uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX)];
+         } control;
+         struct cmsghdr *cmsg;
+         bool handle_cmsg = false;
+@@ -995,8 +969,8 @@ int bus_socket_read_message(sd_bus *bus) {
+ 
+         bus->rbuffer_size += k;
+ 
+-        if (handle_cmsg) {
+-                for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) {
++        if (handle_cmsg)
++                for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg))
+                         if (cmsg->cmsg_level == SOL_SOCKET &&
+                             cmsg->cmsg_type == SCM_RIGHTS) {
+                                 int n, *f;
+@@ -1021,29 +995,9 @@ int bus_socket_read_message(sd_bus *bus) {
+                                 memcpy(f + bus->n_fds, CMSG_DATA(cmsg), n * sizeof(int));
+                                 bus->fds = f;
+                                 bus->n_fds += n;
+-                        } else if (cmsg->cmsg_level == SOL_SOCKET &&
+-                                   cmsg->cmsg_type == SCM_CREDENTIALS &&
+-                                   cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) {
+-
+-                                /* Ignore bogus data, which we might
+-                                 * get on socketpair() sockets */
+-                                if (((struct ucred*) CMSG_DATA(cmsg))->pid != 0) {
+-                                        memcpy(&bus->ucred, CMSG_DATA(cmsg), sizeof(struct ucred));
+-                                        bus->ucred_valid = true;
+-                                }
+-
+-                        } else if (cmsg->cmsg_level == SOL_SOCKET &&
+-                                   cmsg->cmsg_type == SCM_SECURITY) {
+-
+-                                size_t l;
+-                                l = cmsg->cmsg_len - CMSG_LEN(0);
+-                                if (l > 0) {
+-                                        memcpy(&bus->label, CMSG_DATA(cmsg), l);
+-                                        bus->label[l] = 0;
+-                                }
+-                        }
+-                }
+-        }
++                        } else
++                                log_debug("Got unexpected auxiliary data with level=%d and type=%d",
++                                          cmsg->cmsg_level, cmsg->cmsg_type);
+ 
+         r = bus_socket_read_message_need(bus, &need);
+         if (r < 0)
diff --git a/SOURCES/0191-journalctl-zsh-completion-fix-several-issues-in-help.patch b/SOURCES/0191-journalctl-zsh-completion-fix-several-issues-in-help.patch
deleted file mode 100644
index 24cc9fe..0000000
--- a/SOURCES/0191-journalctl-zsh-completion-fix-several-issues-in-help.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From d7e71959bf4e186404e112e0c5c5c1ecdbe2056c Mon Sep 17 00:00:00 2001
-From: "Jason St. John" <jstjohn@purdue.edu>
-Date: Tue, 17 Dec 2013 21:36:27 -0500
-Subject: [PATCH] journalctl,zsh-completion: fix several issues in --help
- message text
-
--- fix grammar and reword some descriptions for clarity
--- add a useful description of what --follow does
--- fix the description for --after-cursor
--- properly introduce the FSS acronym for "Forward Secure Sealing" in
-both sections
--- clarify the --disk-usage command
-
-[zj: perform similar changes to zsh completions]
-
-squash! journalctl: fix several issues in --help message text
-
-Conflicts:
-	src/journal/journalctl.c
-
-Conflicts:
-	shell-completion/zsh/_journalctl
-	src/journal/journalctl.c
----
- shell-completion/zsh/_journalctl | 14 +++++++-------
- src/journal/journalctl.c         | 34 +++++++++++++++++-----------------
- 2 files changed, 24 insertions(+), 24 deletions(-)
-
-diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl
-index 73646b5..57f9452 100644
---- a/shell-completion/zsh/_journalctl
-+++ b/shell-completion/zsh/_journalctl
-@@ -70,14 +70,14 @@ _arguments -s \
-     {-q,--quiet}"[Don't show privilege warning]" \
-     {-m,--merge}'[Show entries from all available journals]' \
-     {-b+,--boot=}'[Show data only from the specified boot or offset]:boot id or offset:_journal_boots' \
--    {-k,--dmesg}'[Show only kernel messages, Implies -b]' \
-+    {-k,--dmesg}'[Show only kernel messages from the current boot]' \
-     {-u+,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \
-     '--user-unit=[Show data only from the specified user session unit]:units:_journal_fields USER_UNIT' \
-     {-p+,--priority=}'[Show only messages within the specified priority range]:priority:_journal_fields PRIORITY' \
--    {-c+,--cursor=}'[Start showing entries from specified cursor]:cursors:_journal_fields __CURSORS' \
--    '--after-cursor=[Start showing entries from the location in the journal after the cursor]:cursors:_journal_fields __CURSORS' \
--    '--since=[Start showing entries newer or of the specified date]:YYYY-MM-DD HH\:MM\:SS' \
--    '--until=[Stop showing entries older or of the specified date]:YYYY-MM-DD HH\:MM\:SS' \
-+    {-c+,--cursor=}'[Start showing entries from the specified cursor]:cursors:_journal_fields __CURSORS' \
-+    '--after-cursor=[Start showing entries from after the specified cursor]:cursors:_journal_fields __CURSORS' \
-+    '--since=[Start showing entries on or newer than the specified date]:YYYY-MM-DD HH\:MM\:SS' \
-+    '--until=[Stop showing entries on or older than the specified date]:YYYY-MM-DD HH\:MM\:SS' \
-     {-F,--field=}'[List all values a certain field takes]:Fields:_list_fields' \
-     '--system[Show system and kernel messages]' \
-     '--user[Show messages from user services]' \
-@@ -90,8 +90,8 @@ _arguments -s \
-     '--list-catalog[List messages in catalog]' \
-     '--dump-catalog[Dump messages in catalog]' \
-     '--update-catalog[Update binary catalog database]' \
--    '--setup-keys[Generate new FSS key pair]' \
--    '--force[Force recreation of FSS keys]' \
-+    '--setup-keys[Generate a new FSS key pair]' \
-+    '--force[Force recreation of the FSS keys]' \
-     '--interval=[Time interval for changing the FSS sealing key]:time interval' \
-     '--verify[Verify journal file consistency]' \
-     '--verify-key=[Specify FSS verification key]:FSS key' \
-diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
-index 0876ee6..54e3ddd 100644
---- a/src/journal/journalctl.c
-+++ b/src/journal/journalctl.c
-@@ -118,29 +118,29 @@ static int help(void) {
-                "Query the journal.\n\n"
-                "Flags:\n"
-                "     --system              Show only the system journal\n"
--               "     --user                Show only the user journal for current user\n"
--               "     --since=DATE          Start showing entries newer or of the specified date\n"
--               "     --until=DATE          Stop showing entries older or of the specified date\n"
--               "  -c --cursor=CURSOR       Start showing entries from specified cursor\n"
--               "     --after-cursor=CURSOR Start showing entries from specified cursor\n"
-+               "     --user                Show only the user journal for the current user\n"
-+               "     --since=DATE          Start showing entries on or newer than the specified date\n"
-+               "     --until=DATE          Stop showing entries on or older than the specified date\n"
-+               "  -c --cursor=CURSOR       Start showing entries from the specified cursor\n"
-+               "     --after-cursor=CURSOR Start showing entries from after the specified cursor\n"
-                "     --show-cursor         Print the cursor after all the entries\n"
--               "  -b --boot[=ID]           Show data only from ID or current boot if unspecified\n"
--               "  -k --dmesg               Show kernel message log from current boot\n"
-+               "  -b --boot[=ID]           Show data only from ID or, if unspecified, the current boot\n"
-+               "  -k --dmesg               Show kernel message log from the current boot\n"
-                "  -u --unit=UNIT           Show data only from the specified unit\n"
-                "     --user-unit=UNIT      Show data only from the specified user session unit\n"
-                "  -p --priority=RANGE      Show only messages within the specified priority range\n"
-                "  -e --pager-end           Immediately jump to end of the journal in the pager\n"
--               "  -f --follow              Follow journal\n"
-+               "  -f --follow              Follow the journal\n"
-                "  -n --lines[=INTEGER]     Number of journal entries to show\n"
-                "     --no-tail             Show all lines, even in follow mode\n"
-                "  -r --reverse             Show the newest entries first\n"
-                "  -o --output=STRING       Change journal output mode (short, short-iso,\n"
--               "                           short-precise, short-monotonic, verbose,\n"
--               "                           export, json, json-pretty, json-sse, cat)\n"
-+               "                                   short-precise, short-monotonic, verbose,\n"
-+               "                                   export, json, json-pretty, json-sse, cat)\n"
-                "  -x --catalog             Add message explanations where available\n"
-                "  -l --full                Do not ellipsize fields\n"
-                "  -a --all                 Show all fields, including long and unprintable\n"
--               "  -q --quiet               Don't show privilege warning\n"
-+               "  -q --quiet               Do not show privilege warning\n"
-                "     --no-pager            Do not pipe output into a pager\n"
-                "  -m --merge               Show entries from all available journals\n"
-                "  -D --directory=PATH      Show journal files from directory\n"
-@@ -149,20 +149,20 @@ static int help(void) {
- #ifdef HAVE_GCRYPT
-                "     --interval=TIME       Time interval for changing the FSS sealing key\n"
-                "     --verify-key=KEY      Specify FSS verification key\n"
--               "     --force               Force overriding new FSS key pair with --setup-keys\n"
-+               "     --force               Force overriding of the FSS key pair with --setup-keys\n"
- #endif
-                "\nCommands:\n"
--               "  -h --help                Show this help\n"
-+               "  -h --help                Show this help text\n"
-                "     --version             Show package version\n"
--               "     --new-id128           Generate a new 128 Bit ID\n"
-+               "     --new-id128           Generate a new 128-bit ID\n"
-                "     --header              Show journal header information\n"
--               "     --disk-usage          Show total disk usage\n"
--               "  -F --field=FIELD         List all values a certain field takes\n"
-+               "     --disk-usage          Show total disk usage of all journal files\n"
-+               "  -F --field=FIELD         List all values that a specified field takes\n"
-                "     --list-catalog        Show message IDs of all entries in the message catalog\n"
-                "     --dump-catalog        Show entries in the message catalog\n"
-                "     --update-catalog      Update the message catalog database\n"
- #ifdef HAVE_GCRYPT
--               "     --setup-keys          Generate new FSS key pair\n"
-+               "     --setup-keys          Generate a new FSS key pair\n"
-                "     --verify              Verify journal file consistency\n"
- #endif
-                , program_invocation_short_name);
diff --git a/SOURCES/0191-sd-bus-store-selinux-context-at-connection-time.patch b/SOURCES/0191-sd-bus-store-selinux-context-at-connection-time.patch
new file mode 100644
index 0000000..c26486d
--- /dev/null
+++ b/SOURCES/0191-sd-bus-store-selinux-context-at-connection-time.patch
@@ -0,0 +1,94 @@
+From d491fd1068446f74992e76154e5e9d57bd67e7ac Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 6 Jun 2015 21:24:45 -0400
+Subject: [PATCH] sd-bus: store selinux context at connection time
+
+This appears to be the right time to do it for SOCK_STREAM
+unix sockets.
+
+Also: condition bus_get_owner_creds_dbus1 was reversed. Split
+it out to a separate variable for clarity and fix.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1224211
+
+Cherry-picked from: c4e6556
+Related: #1230190
+---
+ src/libsystemd/sd-bus/bus-control.c  | 6 ++++--
+ src/libsystemd/sd-bus/bus-internal.h | 2 +-
+ src/libsystemd/sd-bus/bus-socket.c   | 7 +++++++
+ src/libsystemd/sd-bus/sd-bus.c       | 1 +
+ 4 files changed, 13 insertions(+), 3 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-control.c b/src/libsystemd/sd-bus/bus-control.c
+index 06e5b4f..8b84b94 100644
+--- a/src/libsystemd/sd-bus/bus-control.c
++++ b/src/libsystemd/sd-bus/bus-control.c
+@@ -945,8 +945,10 @@ static int bus_get_owner_creds_dbus1(sd_bus *bus, uint64_t mask, sd_bus_creds **
+         _cleanup_bus_creds_unref_ sd_bus_creds *c = NULL;
+         pid_t pid = 0;
+         int r;
++        bool do_label = bus->label && (mask & SD_BUS_CREDS_SELINUX_CONTEXT);
+ 
+-        if (!bus->ucred_valid && !isempty(bus->label))
++        /* Avoid allocating anything if we have no chance of returning useful data */
++        if (!bus->ucred_valid && !do_label)
+                 return -ENODATA;
+ 
+         c = bus_creds_new();
+@@ -970,7 +972,7 @@ static int bus_get_owner_creds_dbus1(sd_bus *bus, uint64_t mask, sd_bus_creds **
+                 }
+         }
+ 
+-        if (!isempty(bus->label) && (mask & SD_BUS_CREDS_SELINUX_CONTEXT)) {
++        if (do_label) {
+                 c->label = strdup(bus->label);
+                 if (!c->label)
+                         return -ENOMEM;
+diff --git a/src/libsystemd/sd-bus/bus-internal.h b/src/libsystemd/sd-bus/bus-internal.h
+index e9f1a81..071b3da 100644
+--- a/src/libsystemd/sd-bus/bus-internal.h
++++ b/src/libsystemd/sd-bus/bus-internal.h
+@@ -262,7 +262,7 @@ struct sd_bus {
+         usec_t auth_timeout;
+ 
+         struct ucred ucred;
+-        char label[NAME_MAX];
++        char *label;
+ 
+         uint64_t creds_mask;
+ 
+diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
+index abd9ece..d00cd01 100644
+--- a/src/libsystemd/sd-bus/bus-socket.c
++++ b/src/libsystemd/sd-bus/bus-socket.c
+@@ -600,10 +600,17 @@ void bus_socket_setup(sd_bus *b) {
+ }
+ 
+ static void bus_get_peercred(sd_bus *b) {
++        int r;
++
+         assert(b);
+ 
+         /* Get the peer for socketpair() sockets */
+         b->ucred_valid = getpeercred(b->input_fd, &b->ucred) >= 0;
++
++        /* Get the SELinux context of the peer */
++        r = getpeersec(b->input_fd, &b->label);
++        if (r < 0 && r != -EOPNOTSUPP)
++                log_debug_errno(r, "Failed to determine peer security context: %m");
+ }
+ 
+ static int bus_socket_start_auth_client(sd_bus *b) {
+diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
+index cac9b65..b0a3237 100644
+--- a/src/libsystemd/sd-bus/sd-bus.c
++++ b/src/libsystemd/sd-bus/sd-bus.c
+@@ -121,6 +121,7 @@ static void bus_free(sd_bus *b) {
+         if (b->kdbus_buffer)
+                 munmap(b->kdbus_buffer, KDBUS_POOL_SIZE);
+ 
++        free(b->label);
+         free(b->rbuffer);
+         free(b->unique_name);
+         free(b->auth_buffer);
diff --git a/SOURCES/0192-cgroup-run-PID-1-in-the-root-cgroup.patch b/SOURCES/0192-cgroup-run-PID-1-in-the-root-cgroup.patch
deleted file mode 100644
index 38a14e5..0000000
--- a/SOURCES/0192-cgroup-run-PID-1-in-the-root-cgroup.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From c46be83563a2d20a480988dab55404f941b9cc35 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 5 Nov 2013 22:14:52 +0100
-Subject: [PATCH] cgroup: run PID 1 in the root cgroup
-
-This way cleaning up the cgroup tree on shutdown is a lot easier since
-we are in the root dir. Also PID 1 was previously artificially placed in
-system.slice, even though our rule actually was not to have processes in
-slices. The root slice otoh is magic anyway, so having PID 1 in there
-sounds less surprising.
-
-Of course, this means that PID is scheduled against the three top-level
-slices.
----
- src/core/cgroup.c | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/core/cgroup.c b/src/core/cgroup.c
-index b60707c..32e2599 100644
---- a/src/core/cgroup.c
-+++ b/src/core/cgroup.c
-@@ -591,8 +591,8 @@ pid_t unit_search_main_pid(Unit *u) {
- 
- int manager_setup_cgroup(Manager *m) {
-         _cleanup_free_ char *path = NULL;
-+        char *e;
-         int r;
--        char *e, *a;
- 
-         assert(m);
- 
-@@ -612,9 +612,13 @@ int manager_setup_cgroup(Manager *m) {
-                 return r;
-         }
- 
--        /* Already in /system.slice? If so, let's cut this off again */
-+        /* LEGACY: Already in /system.slice? If so, let's cut this
-+         * off. This is to support live upgrades from older systemd
-+         * versions where PID 1 was moved there. */
-         if (m->running_as == SYSTEMD_SYSTEM) {
-                 e = endswith(m->cgroup_root, "/" SPECIAL_SYSTEM_SLICE);
-+                if (!e)
-+                        e = endswith(m->cgroup_root, "/system");
-                 if (e)
-                         *e = 0;
-         }
-@@ -645,12 +649,8 @@ int manager_setup_cgroup(Manager *m) {
-                         log_debug("Release agent already installed.");
-         }
- 
--        /* 4. Realize the system slice and put us in there */
--        if (m->running_as == SYSTEMD_SYSTEM) {
--                a = strappenda(m->cgroup_root, "/" SPECIAL_SYSTEM_SLICE);
--                r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, a, 0);
--        } else
--                r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, 0);
-+        /* 4. Make sure we are in the root cgroup */
-+        r = cg_create_and_attach(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_root, 0);
-         if (r < 0) {
-                 log_error("Failed to create root cgroup hierarchy: %s", strerror(-r));
-                 return r;
diff --git a/SOURCES/0192-journald-simplify-context-handling.patch b/SOURCES/0192-journald-simplify-context-handling.patch
new file mode 100644
index 0000000..b6e92fd
--- /dev/null
+++ b/SOURCES/0192-journald-simplify-context-handling.patch
@@ -0,0 +1,81 @@
+From da4f4b5c330ad648c9ca9c33e1f0e65148042c12 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 6 Jun 2015 21:36:52 -0400
+Subject: [PATCH] journald: simplify context handling
+
+By using our homegrown function we can dispense with all the iffdefery.
+
+Cherry-picked from: 2de56f7
+Related: #1230190
+---
+ src/journal/journald-stream.c | 29 ++++++++---------------------
+ 1 file changed, 8 insertions(+), 21 deletions(-)
+
+diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c
+index 11b852d..15a554c 100644
+--- a/src/journal/journald-stream.c
++++ b/src/journal/journald-stream.c
+@@ -57,10 +57,7 @@ struct StdoutStream {
+         int fd;
+ 
+         struct ucred ucred;
+-#ifdef HAVE_SELINUX
+-        security_context_t security_context;
+-#endif
+-
++        char *label;
+         char *identifier;
+         char *unit_id;
+         int priority;
+@@ -84,8 +81,7 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
+         char syslog_facility[sizeof("SYSLOG_FACILITY=")-1 + DECIMAL_STR_MAX(int) + 1];
+         _cleanup_free_ char *message = NULL, *syslog_identifier = NULL;
+         unsigned n = 0;
+-        char *label = NULL;
+-        size_t label_len = 0;
++        size_t label_len;
+ 
+         assert(s);
+         assert(p);
+@@ -130,14 +126,8 @@ static int stdout_stream_log(StdoutStream *s, const char *p) {
+         if (message)
+                 IOVEC_SET_STRING(iovec[n++], message);
+ 
+-#ifdef HAVE_SELINUX
+-        if (s->security_context) {
+-                label = (char*) s->security_context;
+-                label_len = strlen((char*) s->security_context);
+-        }
+-#endif
+-
+-        server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, label, label_len, s->unit_id, priority, 0);
++        label_len = s->label ? strlen(s->label) : 0;
++        server_dispatch_message(s->server, iovec, n, ELEMENTSOF(iovec), &s->ucred, NULL, s->label, label_len, s->unit_id, priority, 0);
+         return 0;
+ }
+ 
+@@ -343,11 +333,7 @@ void stdout_stream_free(StdoutStream *s) {
+ 
+         safe_close(s->fd);
+ 
+-#ifdef HAVE_SELINUX
+-        if (s->security_context)
+-                freecon(s->security_context);
+-#endif
+-
++        free(s->label);
+         free(s->identifier);
+         free(s->unit_id);
+         free(s);
+@@ -396,8 +382,9 @@ static int stdout_stream_new(sd_event_source *es, int listen_fd, uint32_t revent
+ 
+ #ifdef HAVE_SELINUX
+         if (mac_selinux_use()) {
+-                if (getpeercon(fd, &stream->security_context) < 0 && errno != ENOPROTOOPT)
+-                        log_error_errno(errno, "Failed to determine peer security context: %m");
++                r = getpeersec(fd, &stream->label);
++                if (r < 0 && r != -EOPNOTSUPP)
++                        (void) log_warning_errno(r, "Failed to determine peer security context: %m");
+         }
+ #endif
+ 
diff --git a/SOURCES/0193-bash-completion-add-verb-set-property.patch b/SOURCES/0193-bash-completion-add-verb-set-property.patch
new file mode 100644
index 0000000..8bc3cda
--- /dev/null
+++ b/SOURCES/0193-bash-completion-add-verb-set-property.patch
@@ -0,0 +1,51 @@
+From 19c1015ce732c387cae8d0a2b116eb2022087ca2 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 23 Sep 2014 14:59:11 +0200
+Subject: [PATCH] bash-completion: add verb set-property
+
+not in upstream yet
+
+Resolves: #1235635
+---
+ shell-completion/bash/systemctl.in | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
+index 3d787cd..496c756 100644
+--- a/shell-completion/bash/systemctl.in
++++ b/shell-completion/bash/systemctl.in
+@@ -96,6 +96,12 @@ _systemctl () {
+                       [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
+         )
+ 
++        local -A PROPS='CPUQuota= CPUAccounting= MemoryAccounting= BlockIOAccounting= SendSIGHUP= SendSIGKILL= WakeSystem=
++        DefaultDependencies= MemoryLimit= CPUShares= BlockIOWeight= User= Group= DevicePolicy= KillMode= DeviceAllow=
++        BlockIOReadBandwidth= BlockIOWriteBandwidth= BlockIODeviceWeight= Nice= Environment= KillSignal= AccuracySec=
++        LimitCPU= LimitFSIZE= LimitDATA= LimitSTACK= LimitCORE= LimitRSS= LimitNOFILE= LimitAS= LimitNPROC= LimitMEMLOCK=
++        LimitLOCKS= LimitSIGPENDING= LimitMSGQUEUE= LimitNICE= LimitRTPRIO= LimitRTTIME='
++
+         if __contains_word "--user" ${COMP_WORDS[*]}; then
+             mode=--user
+         else
+@@ -153,6 +159,7 @@ _systemctl () {
+              [MASKED_UNITS]='unmask'
+                      [JOBS]='cancel'
+                 [SNAPSHOTS]='delete'
++               [PROPERTIES]='set-property'
+                      [ENVS]='set-environment unset-environment'
+                [STANDALONE]='daemon-reexec daemon-reload default
+                              emergency exit halt hibernate hybrid-sleep kexec list-jobs
+@@ -258,6 +265,13 @@ _systemctl () {
+         elif __contains_word "$verb" ${VERBS[TARGETS]}; then
+                 comps=$( __systemctl $mode list-unit-files --type target --full --all \
+                         | { while read -r a b; do echo " $a"; done; } )
++        elif __contains_word "$verb" ${VERBS[PROPERTIES]}; then
++                if __contains_word "$prev" ${VERBS[PROPERTIES]}; then
++                        comps=$( __get_active_units $mode )
++                else
++                        comps=$PROPS
++                        compopt -o nospace
++                fi
+         fi
+ 
+         COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") )
diff --git a/SOURCES/0193-pam-retrieve-value-of-debug-param-first.patch b/SOURCES/0193-pam-retrieve-value-of-debug-param-first.patch
deleted file mode 100644
index 5d6a2f1..0000000
--- a/SOURCES/0193-pam-retrieve-value-of-debug-param-first.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From c9f24bd31d2b980718ecdc55ab33f5baa35ec4a2 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Feb 2014 13:47:38 +0100
-Subject: [PATCH] pam: retrieve value of debug param first
-
-We are setting debug to false by default, so we should should first retrieve
-value of debug parameter and then log only if debug was set. Now we don't take
-the value passed to us into the count.
----
- src/login/pam-module.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/login/pam-module.c b/src/login/pam-module.c
-index 973daf7..878a704 100644
---- a/src/login/pam-module.c
-+++ b/src/login/pam-module.c
-@@ -199,9 +199,6 @@ _public_ PAM_EXTERN int pam_sm_open_session(
- 
-         dbus_error_init(&error);
- 
--        if (debug)
--                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
--
-         /* Make this a NOP on non-logind systems */
-         if (!logind_running())
-                 return PAM_SUCCESS;
-@@ -214,6 +211,9 @@ _public_ PAM_EXTERN int pam_sm_open_session(
-                 goto finish;
-         }
- 
-+        if (debug)
-+                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
-+
-         r = get_user_data(handle, &username, &pw);
-         if (r != PAM_SUCCESS)
-                 goto finish;
diff --git a/SOURCES/0194-sd-bus-don-t-inherit-connection-creds-into-message-c.patch b/SOURCES/0194-sd-bus-don-t-inherit-connection-creds-into-message-c.patch
new file mode 100644
index 0000000..a3e0212
--- /dev/null
+++ b/SOURCES/0194-sd-bus-don-t-inherit-connection-creds-into-message-c.patch
@@ -0,0 +1,33 @@
+From 61a6ce79defd59fee00cd2bc28d58f7c3e637ae2 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 23 Apr 2015 13:37:03 +0200
+Subject: [PATCH] sd-bus: don't inherit connection creds into message creds
+ when we have a direct connection
+
+It's never a good idea, let's just not do it, not even on dierct
+connections.
+
+Conflicts:
+	src/libsystemd/sd-bus/bus-socket.c
+
+Cherry-picked from: 038f9863
+Related: #1230190
+---
+ src/libsystemd/sd-bus/bus-socket.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
+index d00cd01..a3c3a45 100644
+--- a/src/libsystemd/sd-bus/bus-socket.c
++++ b/src/libsystemd/sd-bus/bus-socket.c
+@@ -900,8 +900,8 @@ static int bus_socket_make_message(sd_bus *bus, size_t size) {
+         r = bus_message_from_malloc(bus,
+                                     bus->rbuffer, size,
+                                     bus->fds, bus->n_fds,
+-                                    !bus->bus_client && bus->ucred_valid ? &bus->ucred : NULL,
+-                                    !bus->bus_client && bus->label[0] ? bus->label : NULL,
++                                    NULL,
++                                    NULL,
+                                     &t);
+         if (r < 0) {
+                 free(b);
diff --git a/SOURCES/0194-utils-silence-the-compiler-warning.patch b/SOURCES/0194-utils-silence-the-compiler-warning.patch
deleted file mode 100644
index 7c644e0..0000000
--- a/SOURCES/0194-utils-silence-the-compiler-warning.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 34c5f9d3b7020312310de1ea9b6446c51b911cb3 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Feb 2014 15:41:47 +0100
-Subject: [PATCH] utils: silence the compiler warning
-
----
- src/shared/util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index e9b8255..2086847 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -427,7 +427,7 @@ char *split_quoted(const char *c, size_t *l, char **state) {
-                 *state = (char*) e;
-         }
- 
--        return current;
-+        return (char *) current;
- }
- 
- int get_parent_of_pid(pid_t pid, pid_t *_ppid) {
diff --git a/SOURCES/0195-s390-getty-generator-initialize-essential-system-ter.patch b/SOURCES/0195-s390-getty-generator-initialize-essential-system-ter.patch
deleted file mode 100644
index ce31e20..0000000
--- a/SOURCES/0195-s390-getty-generator-initialize-essential-system-ter.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From d87f3874bac62d012ff5e573c2b803b3244a02da Mon Sep 17 00:00:00 2001
-From: Hendrik Brueckner <brueckner@redhat.com>
-Date: Fri, 31 Jan 2014 17:08:37 +0100
-Subject: [PATCH] s390/getty-generator: initialize essential system
- terminals/consoles
-
-Ensure to start getty programs on all essential system consoles on Linux on
-System z.  Add these essential devices to the list of virtualization_consoles
-to always generate getty configurations.
-
-For the sake of completion, the list of essential consoles is:
-
-  /dev/sclp_line0 - Operating system messages applet (LPAR)
-  /dev/ttysclp0 - Integrated ASCII console applet (z/VM and LPAR)
-  /dev/ttyS0 - Already handled by systemd (3215 console on z/VM)
-  /dev/hvc0  - Already handled by systemd (IUCV HVC terminal on z/VM)
-
-Depending on the environment, z/VM or LPAR, only a subset of these terminals
-are available.
-
-See also RH BZ 860158[1] "Cannot login via Operating System Console into RHEL7
-instance installed on a LPAR".  This bugzilla actually blocks the installation
-of Linux on System z instances in LPAR mode.
-
-[1] https://bugzilla.redhat.com/show_bug.cgi?id=860158
----
- rules/99-systemd.rules.in             | 2 +-
- src/getty-generator/getty-generator.c | 4 +++-
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
-index 307f18f..0e0a567 100644
---- a/rules/99-systemd.rules.in
-+++ b/rules/99-systemd.rules.in
-@@ -7,7 +7,7 @@
- 
- ACTION=="remove", GOTO="systemd_end"
- 
--SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*", TAG+="systemd"
-+SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*", TAG+="systemd"
- 
- KERNEL=="vport*", TAG+="systemd"
- 
-diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
-index 6c93806..40374b5 100644
---- a/src/getty-generator/getty-generator.c
-+++ b/src/getty-generator/getty-generator.c
-@@ -91,7 +91,9 @@ int main(int argc, char *argv[]) {
-         static const char virtualization_consoles[] =
-                 "hvc0\0"
-                 "xvc0\0"
--                "hvsi0\0";
-+                "hvsi0\0"
-+                "sclp_line0\0"
-+                "ttysclp0\0";
- 
-         int r = EXIT_SUCCESS;
-         char *active;
diff --git a/SOURCES/0195-udev-fix-crash-in-path_id-builtin.patch b/SOURCES/0195-udev-fix-crash-in-path_id-builtin.patch
new file mode 100644
index 0000000..0234c47
--- /dev/null
+++ b/SOURCES/0195-udev-fix-crash-in-path_id-builtin.patch
@@ -0,0 +1,27 @@
+From a571e5420b188913e4986f65c33294c2b39e3f7d Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 14 Jul 2015 17:24:09 +0200
+Subject: [PATCH] udev: fix crash in path_id builtin
+
+RHEL-only
+
+Resolves: #957112
+---
+ src/udev/udev-builtin-path_id.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
+index 025392d..9ca6084 100644
+--- a/src/udev/udev-builtin-path_id.c
++++ b/src/udev/udev-builtin-path_id.c
+@@ -737,6 +737,10 @@ out:
+                 }
+ 
+                 free(path);
++                path = NULL;
++                supported_transport = false;
++                supported_parent = false;
++
+ 
+                 if (new_sas_path) {
+                         enable_new_sas_path = false;
diff --git a/SOURCES/0196-pam-use-correct-log-level.patch b/SOURCES/0196-pam-use-correct-log-level.patch
deleted file mode 100644
index fb6ba86..0000000
--- a/SOURCES/0196-pam-use-correct-log-level.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From e4478da5da5d3cfa56cf88e8d8ef598245e96535 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Feb 2014 16:53:05 +0100
-Subject: [PATCH] pam: use correct log level
-
----
- src/login/pam-module.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/pam-module.c b/src/login/pam-module.c
-index 878a704..02f1618 100644
---- a/src/login/pam-module.c
-+++ b/src/login/pam-module.c
-@@ -212,7 +212,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
-         }
- 
-         if (debug)
--                pam_syslog(handle, LOG_INFO, "pam-systemd initializing");
-+                pam_syslog(handle, LOG_DEBUG, "pam-systemd initializing");
- 
-         r = get_user_data(handle, &username, &pw);
-         if (r != PAM_SUCCESS)
diff --git a/SOURCES/0196-sysv-generator-test-Fix-assertion.patch b/SOURCES/0196-sysv-generator-test-Fix-assertion.patch
new file mode 100644
index 0000000..bc5c3c0
--- /dev/null
+++ b/SOURCES/0196-sysv-generator-test-Fix-assertion.patch
@@ -0,0 +1,35 @@
+From 20f5864e8f41957f6ed4b94a0199253a821b8c40 Mon Sep 17 00:00:00 2001
+From: Alberto Fanjul Alonso <albertofanjul@gmail.com>
+Date: Tue, 28 Apr 2015 15:44:23 +0200
+Subject: [PATCH] sysv-generator test: Fix assertion
+
+(cherry picked from commit 230f04856647fcfb07d5658f4b8c1cb3557fa0d8)
+
+Cherry-picked from: 230f048
+Resolves: #1222517
+---
+ test/sysv-generator-test.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/test/sysv-generator-test.py b/test/sysv-generator-test.py
+index 09f5c01..509899e 100644
+--- a/test/sysv-generator-test.py
++++ b/test/sysv-generator-test.py
+@@ -323,7 +323,7 @@ class SysvGeneratorTest(unittest.TestCase):
+         self.add_sysv('foo.sh', {'Provides': 'foo bar'})
+         err, results = self.run_generator()
+         # ensure we don't try to create a symlink to itself
+-        self.assertNotIn(err, 'itself')
++        self.assertNotIn('itself', err)
+         self.assertEqual(list(results), ['foo.service'])
+         self.assertEqual(results['foo.service'].get('Unit', 'Description'),
+                          'LSB: test foo service')
+@@ -361,7 +361,7 @@ class SysvGeneratorTest(unittest.TestCase):
+                          ['foo.bak.service', 'foo.old.service', 'foo.service'])
+ 
+         # ensure we don't try to create a symlink to itself
+-        self.assertNotIn(err, 'itself')
++        self.assertNotIn('itself', err)
+ 
+         self.assert_enabled('foo.service', [2, 3, 4, 5])
+         self.assert_enabled('foo.bak.service', [])
diff --git a/SOURCES/0197-man-avoid-line-break-in-url.patch b/SOURCES/0197-man-avoid-line-break-in-url.patch
new file mode 100644
index 0000000..1867541
--- /dev/null
+++ b/SOURCES/0197-man-avoid-line-break-in-url.patch
@@ -0,0 +1,27 @@
+From ab0d796698509ca5da4ac4c926ab123925b25b4e Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 29 Apr 2015 12:04:16 +0200
+Subject: [PATCH] man: avoid line break in url
+
+(cherry picked from commit b53c3c2d24ed1398ee427139cd880b07bc35fa24)
+
+Cherry-picked from: b53c3c2
+Resolves: #1222517
+---
+ man/os-release.xml | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/man/os-release.xml b/man/os-release.xml
+index 8f4ab10..4f57323 100644
+--- a/man/os-release.xml
++++ b/man/os-release.xml
+@@ -104,8 +104,7 @@
+ 
+     <para>For a longer rationale for <filename>os-release</filename>
+     please refer to the <ulink
+-    url="http://0pointer.de/blog/projects/os-release">Announcement of
+-    <filename>/etc/os-release</filename></ulink>.</para>
++    url="http://0pointer.de/blog/projects/os-release">Announcement of <filename>/etc/os-release</filename></ulink>.</para>
+   </refsect1>
+ 
+   <refsect1>
diff --git a/SOURCES/0197-pam-do-not-set-XDG_RUNTIME_DIR-unconditionally.patch b/SOURCES/0197-pam-do-not-set-XDG_RUNTIME_DIR-unconditionally.patch
deleted file mode 100644
index 0e128e9..0000000
--- a/SOURCES/0197-pam-do-not-set-XDG_RUNTIME_DIR-unconditionally.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-From 281100560056e06f69d2cdb4dcc854bd3717734f Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Feb 2014 17:41:32 +0100
-Subject: [PATCH] pam: do not set XDG_RUNTIME_DIR unconditionally
-
-If the session's original user is not the same as the newly logged in one we
-will not set XDG_RUNTIME_DIR.
-
-Patch based on upstream commit baae0358f349870544884e405e82e4be7d8add9f
----
- src/login/logind-dbus.c         |  2 ++
- src/login/logind-session-dbus.c |  1 +
- src/login/pam-module.c          | 52 ++++++++++++++++++++---------------------
- 3 files changed, 29 insertions(+), 26 deletions(-)
-
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index bb85c7d..69e94aa 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -90,6 +90,7 @@
-         "   <arg name=\"path\" type=\"o\" direction=\"out\"/>\n"        \
-         "   <arg name=\"runtime_path\" type=\"o\" direction=\"out\"/>\n" \
-         "   <arg name=\"fd\" type=\"h\" direction=\"out\"/>\n"          \
-+        "   <arg name=\"uid\" type=\"u\" direction=\"out\"/>\n"         \
-         "   <arg name=\"seat\" type=\"s\" direction=\"out\"/>\n"        \
-         "   <arg name=\"vtnr\" type=\"u\" direction=\"out\"/>\n"        \
-         "   <arg name=\"existing\" type=\"b\" direction=\"out\"/>\n"    \
-@@ -523,6 +524,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message) {
-                                 DBUS_TYPE_OBJECT_PATH, &path,
-                                 DBUS_TYPE_STRING, &session->user->runtime_path,
-                                 DBUS_TYPE_UNIX_FD, &fifo_fd,
-+                                DBUS_TYPE_UINT32, &session->user->uid,
-                                 DBUS_TYPE_STRING, &cseat,
-                                 DBUS_TYPE_UINT32, &vtnr,
-                                 DBUS_TYPE_BOOLEAN, &exists,
-diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
-index be4e01c..86b0746 100644
---- a/src/login/logind-session-dbus.c
-+++ b/src/login/logind-session-dbus.c
-@@ -755,6 +755,7 @@ int session_send_create_reply(Session *s, DBusError *error) {
-                                     DBUS_TYPE_OBJECT_PATH, &path,
-                                     DBUS_TYPE_STRING, &s->user->runtime_path,
-                                     DBUS_TYPE_UNIX_FD, &fifo_fd,
-+                                    DBUS_TYPE_UINT32, &s->user->uid,
-                                     DBUS_TYPE_STRING, &cseat,
-                                     DBUS_TYPE_UINT32, &vtnr,
-                                     DBUS_TYPE_BOOLEAN, &exists,
-diff --git a/src/login/pam-module.c b/src/login/pam-module.c
-index 02f1618..22d9733 100644
---- a/src/login/pam-module.c
-+++ b/src/login/pam-module.c
-@@ -86,31 +86,24 @@ static int get_user_data(
- 
-         const char *username = NULL;
-         struct passwd *pw = NULL;
--        uid_t uid;
-         int r;
- 
-         assert(handle);
-         assert(ret_username);
-         assert(ret_pw);
- 
--        r = audit_loginuid_from_pid(0, &uid);
--        if (r >= 0)
--                pw = pam_modutil_getpwuid(handle, uid);
--        else {
--                r = pam_get_user(handle, &username, NULL);
--                if (r != PAM_SUCCESS) {
--                        pam_syslog(handle, LOG_ERR, "Failed to get user name.");
--                        return r;
--                }
--
--                if (isempty(username)) {
--                        pam_syslog(handle, LOG_ERR, "User name not valid.");
--                        return PAM_AUTH_ERR;
--                }
-+        r = pam_get_user(handle, &username, NULL);
-+        if (r != PAM_SUCCESS) {
-+                pam_syslog(handle, LOG_ERR, "Failed to get user name.");
-+                return r;
-+        }
- 
--                pw = pam_modutil_getpwnam(handle, username);
-+        if (isempty(username)) {
-+                pam_syslog(handle, LOG_ERR, "User name not valid.");
-+                return PAM_AUTH_ERR;
-         }
- 
-+        pw = pam_modutil_getpwnam(handle, username);
-         if (!pw) {
-                 pam_syslog(handle, LOG_ERR, "Failed to get user data.");
-                 return PAM_USER_UNKNOWN;
-@@ -123,16 +116,14 @@ static int get_user_data(
- }
- 
- static int get_seat_from_display(const char *display, const char **seat, uint32_t *vtnr) {
--        _cleanup_free_ char *p = NULL;
--        int r;
-+        _cleanup_free_ char *p = NULL, *tty=NULL;
-         _cleanup_close_ int fd = -1;
-         union sockaddr_union sa = {
-                 .un.sun_family = AF_UNIX,
-         };
-         struct ucred ucred;
-         socklen_t l;
--        _cleanup_free_ char *tty = NULL;
--        int v;
-+        int v, r;
- 
-         assert(display);
-         assert(vtnr);
-@@ -186,14 +177,14 @@ _public_ PAM_EXTERN int pam_sm_open_session(
-         bool debug = false;
-         const char *username, *id, *object_path, *runtime_path, *service = NULL, *tty = NULL, *display = NULL, *remote_user = NULL, *remote_host = NULL, *seat = NULL, *type = NULL, *class = NULL, *class_pam = NULL, *cvtnr = NULL;
-         DBusError error;
--        uint32_t uid, pid;
-         DBusMessageIter iter;
-         int session_fd = -1;
-         DBusConnection *bus = NULL;
-         DBusMessage *m = NULL, *reply = NULL;
-         dbus_bool_t remote, existing;
-         int r;
--        uint32_t vtnr = 0;
-+        uint32_t uid, pid, vtnr = 0;
-+        uid_t original_uid;
- 
-         assert(handle);
- 
-@@ -389,6 +380,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
-                                    DBUS_TYPE_OBJECT_PATH, &object_path,
-                                    DBUS_TYPE_STRING, &runtime_path,
-                                    DBUS_TYPE_UNIX_FD, &session_fd,
-+                                   DBUS_TYPE_UINT32, &original_uid,
-                                    DBUS_TYPE_STRING, &seat,
-                                    DBUS_TYPE_UINT32, &vtnr,
-                                    DBUS_TYPE_BOOLEAN, &existing,
-@@ -409,10 +401,18 @@ _public_ PAM_EXTERN int pam_sm_open_session(
-                 goto finish;
-         }
- 
--        r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0);
--        if (r != PAM_SUCCESS) {
--                pam_syslog(handle, LOG_ERR, "Failed to set runtime dir.");
--                goto finish;
-+        if (original_uid == pw->pw_uid) {
-+               /* Don't set $XDG_RUNTIME_DIR if the user we now
-+                * authenticated for does not match the original user
-+                * of the session. We do this in order not to result
-+                * in privileged apps clobbering the runtime directory
-+                * unnecessarily. */
-+
-+                r = pam_misc_setenv(handle, "XDG_RUNTIME_DIR", runtime_path, 0);
-+                if (r != PAM_SUCCESS) {
-+                        pam_syslog(handle, LOG_ERR, "Failed to set runtime dir.");
-+                        return r;
-+                }
-         }
- 
-         if (!isempty(seat)) {
diff --git a/SOURCES/0198-Add-VARIANT-as-a-standard-value-for-etc-os-release.patch b/SOURCES/0198-Add-VARIANT-as-a-standard-value-for-etc-os-release.patch
new file mode 100644
index 0000000..25b66fb
--- /dev/null
+++ b/SOURCES/0198-Add-VARIANT-as-a-standard-value-for-etc-os-release.patch
@@ -0,0 +1,75 @@
+From e31c6804ca177ab911f6212b34930969b83f2d30 Mon Sep 17 00:00:00 2001
+From: Stephen Gallagher <sgallagh@redhat.com>
+Date: Wed, 29 Apr 2015 08:19:05 -0400
+Subject: [PATCH] Add VARIANT as a standard value for /etc/os-release
+
+Some distributions (such as Fedora) are using the VARIANT field to
+indicate to select packages which of several default configurations
+they should be using. For example, VARIANT=Server provides a
+different default firewall configuration (blocking basically
+everything but SSH and the management console) whereas
+VARIANT=Workstation opens many other ports for application
+compatibility.
+
+By adding this patch to the manual pages, we can standardize on a
+cross-distribution mechanism for accomplishing this.
+
+Fedora implementation details are available at
+https://fedoraproject.org/wiki/Packaging:Per-Product_Configuration
+
+(David: drop double paranthesis)
+
+(cherry picked from commit be7d0048ddda1e994f651e2825f96266d537d10d)
+
+Cherry-picked from: be7d004
+Resolves: #1222517
+---
+ man/os-release.xml | 35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+diff --git a/man/os-release.xml b/man/os-release.xml
+index 4f57323..4ca2e59 100644
+--- a/man/os-release.xml
++++ b/man/os-release.xml
+@@ -273,6 +273,41 @@
+         </para></listitem>
+       </varlistentry>
+ 
++      <varlistentry>
++        <term><varname>VARIANT=</varname></term>
++
++        <listitem><para>
++        A string identifying a specific variant or edition of the
++        operating system suitable for presentation to the user. This
++        field may be used to inform the user that the configuration of
++        this system is subject to a specific divergent set of rules or
++        default configuration settings. This field is optional and may
++        not be implemented on all systems.
++        Examples:
++        <literal>VARIANT="Server Edition"</literal>,
++        <literal>VARIANT="Smart Refrigerator Edition"</literal>
++        Note: this field is for display purposes only. The
++        <varname>VARIANT_ID</varname> field should be used for making
++        programmatic decisions.
++        </para></listitem>
++      </varlistentry>
++
++      <varlistentry>
++        <term><varname>VARIANT_ID=</varname></term>
++
++        <listitem><para>
++        A lower-case string (no spaces or other characters outside of
++        0-9, a-z, ".", "_" and "-"), identifying a specific variant or
++        edition of the operating system. This may be interpreted by
++        other packages in order to determine a divergent default
++        configuration. This field is optional and may not be
++        implemented on all systems.
++        Examples:
++        <literal>VARIANT_ID=server</literal>,
++        <literal>VARIANT_ID=embedded</literal>
++        </para></listitem>
++      </varlistentry>
++
+     </variablelist>
+ 
+     <para>If you are reading this file from C code or a shell script
diff --git a/SOURCES/0198-selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch b/SOURCES/0198-selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch
deleted file mode 100644
index 9efd464..0000000
--- a/SOURCES/0198-selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 4083e4d76b61bc9eb40583f941412c1ea1a0285b Mon Sep 17 00:00:00 2001
-From: Colin Walters <walters@verbum.org>
-Date: Fri, 21 Feb 2014 03:29:00 +0100
-Subject: [PATCH] selinux: Don't attempt to load policy in initramfs if it
- doesn't exist
-
-Currently on at least Fedora, SELinux policy does not come in the
-initramfs.  systemd will attempt to load *both* in the initramfs and
-in the real root.
-
-Now, the selinux_init_load_policy() API has a regular error return
-value, as well as an "enforcing" boolean.  To determine enforcing
-state, it looks for /etc/selinux/config as well as the presence of
-"enforcing=" on the kernel command line.
-
-Ordinarily, neither of those exist in the initramfs, so it will return
-"unknown" for enforcing, and systemd will simply ignore the failure to
-load policy.
----
- src/core/selinux-setup.c | 7 +++++++
- 1 file changed, 7 insertions(+)
-
-diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c
-index 7a32ed5..9a5d6b2 100644
---- a/src/core/selinux-setup.c
-+++ b/src/core/selinux-setup.c
-@@ -58,6 +58,13 @@ int selinux_setup(bool *loaded_policy) {
-        cb.func_log = null_log;
-        selinux_set_callback(SELINUX_CB_LOG, cb);
- 
-+       /* Don't load policy in the initrd if we don't appear to have
-+        * it.  For the real root, we check below if we've already
-+        * loaded policy, and return gracefully.
-+        */
-+       if (in_initrd() && access(selinux_path(), F_OK) < 0)
-+               return 0;
-+
-        /* Already initialized by somebody else? */
-        r = getcon_raw(&con);
-        if (r == 0) {
diff --git a/SOURCES/0199-Fix-permissions-on-run-systemd-nspawn-locks.patch b/SOURCES/0199-Fix-permissions-on-run-systemd-nspawn-locks.patch
new file mode 100644
index 0000000..94e9f33
--- /dev/null
+++ b/SOURCES/0199-Fix-permissions-on-run-systemd-nspawn-locks.patch
@@ -0,0 +1,44 @@
+From b0a6aa4de054e69213d0902094a1ae85fe2c5e58 Mon Sep 17 00:00:00 2001
+From: Seth Jennings <sjenning@redhat.com>
+Date: Tue, 5 May 2015 13:31:01 -0500
+Subject: [PATCH] Fix permissions on /run/systemd/nspawn/locks
+
+machined is getting an EACCES when trying to create the lock file for
+images because the mode on /run/systemd/nspawn/locks is 0600.
+
+mkdir("/run/systemd/nspawn/locks", 0600) = -1 EEXIST (File exists)
+stat("/run/systemd/nspawn/locks", {st_mode=S_IFDIR|0600, st_size=40, ...}) = 0
+open("/run/systemd/nspawn/locks/inode-41:256", O_RDWR|O_CREAT|O_NOCTTY|O_NOFOLLOW|O_CLOEXEC, 0600) = -1 EACCES (Permission denied)
+
+This commit adjusts the mode to 0700 to correct the issue.
+
+(cherry picked from commit 7e7cddb22493642dad826ec42ac00979f40b2d17)
+
+Cherry-picked from: 7e7cddb
+Resolves: #1222517
+---
+ src/shared/machine-image.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/machine-image.c b/src/shared/machine-image.c
+index 8d61507..c02ee81 100644
+--- a/src/shared/machine-image.c
++++ b/src/shared/machine-image.c
+@@ -601,7 +601,7 @@ int image_path_lock(const char *path, int operation, LockFile *global, LockFile
+                 return r;
+ 
+         if (p) {
+-                mkdir_p("/run/systemd/nspawn/locks", 0600);
++                mkdir_p("/run/systemd/nspawn/locks", 0700);
+ 
+                 r = make_lock_file(p, operation, global);
+                 if (r < 0) {
+@@ -628,7 +628,7 @@ int image_name_lock(const char *name, int operation, LockFile *ret) {
+         if (streq(name, ".host"))
+                 return -EBUSY;
+ 
+-        mkdir_p("/run/systemd/nspawn/locks", 0600);
++        mkdir_p("/run/systemd/nspawn/locks", 0700);
+         p = strjoina("/run/systemd/nspawn/locks/name-", name);
+ 
+         return make_lock_file(p, operation, ret);
diff --git a/SOURCES/0199-kernel-install-add-fedora-specific-callouts-to-new-k.patch b/SOURCES/0199-kernel-install-add-fedora-specific-callouts-to-new-k.patch
deleted file mode 100644
index 092bc0e..0000000
--- a/SOURCES/0199-kernel-install-add-fedora-specific-callouts-to-new-k.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 4d66c1673654c639a350f784c59b4c613c94edf7 Mon Sep 17 00:00:00 2001
-From: Harald Hoyer <harald@redhat.com>
-Date: Wed, 13 Mar 2013 07:57:53 +0100
-Subject: [PATCH] kernel-install: add fedora specific callouts to
- new-kernel-pkg
-
----
- src/kernel-install/kernel-install | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
-
-diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install
-index 3ae1d77..3a2ac56 100644
---- a/src/kernel-install/kernel-install
-+++ b/src/kernel-install/kernel-install
-@@ -19,6 +19,27 @@
- # You should have received a copy of the GNU Lesser General Public License
- # along with systemd; If not, see <http://www.gnu.org/licenses/>.
- 
-+if [[ -x /sbin/new-kernel-pkg ]]; then
-+    [[ "$2" == *\+* ]] && flavor=-"${2##*+}"
-+    case "$1" in
-+        add)
-+            /sbin/new-kernel-pkg --package "kernel${flavor}" --install "$2" || exit $?
-+            /sbin/new-kernel-pkg --package "kernel${flavor}" --mkinitrd --dracut --depmod --update "$2" || exit $?
-+            /sbin/new-kernel-pkg --package "kernel${flavor}" --rpmposttrans "$2" || exit $?
-+            ;;
-+        remove)
-+            /sbin/new-kernel-pkg --package "kernel${flavor+-$flavor}" --rminitrd --rmmoddep --remove "$2" || exit $?
-+            ;;
-+        *)
-+            ;;
-+    esac
-+
-+    # exit, if we can't find a boot loader spec conforming setup
-+    if ! [[ -d /boot/loader/entries || -L /boot/loader/entries ]]; then
-+        exit 0
-+    fi
-+fi
-+
- usage()
- {
-     echo "Usage:"
diff --git a/SOURCES/0200-generators-rename-add_-root-usr-_mount-to-add_-sysro.patch b/SOURCES/0200-generators-rename-add_-root-usr-_mount-to-add_-sysro.patch
new file mode 100644
index 0000000..7ff6b9a
--- /dev/null
+++ b/SOURCES/0200-generators-rename-add_-root-usr-_mount-to-add_-sysro.patch
@@ -0,0 +1,163 @@
+From 3282d24f8f9f7561312779710f250396f2ecc29b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 2 May 2015 12:01:29 -0500
+Subject: [PATCH] generators: rename add_{root,usr}_mount to
+ add_{sysroot,sysroot_usr}_mount
+
+This makes it obvious that those functions are only usable in the
+initramfs.
+
+Also, add a warning when noauto, nofail, or automount is used for the
+root fs, instead of silently ignoring. Using those options would be a
+sign of significant misconfiguration, and if we bother to check for
+them, than let's go all the way and complain.
+
+Other various small cleanups and reformattings elsewhere.
+
+(cherry picked from commit 2e8522767e27d5686206794c69e0aa95da6e798b)
+
+Cherry-picked from: 2e85227
+Resolves: #1222517
+---
+ src/fstab-generator/fstab-generator.c | 20 ++++++++++++--------
+ src/shared/generator.c                | 21 ++++++++++++---------
+ src/shared/generator.h                | 17 +++++++++++++----
+ 3 files changed, 37 insertions(+), 21 deletions(-)
+
+diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
+index 65ed205..029eb16 100644
+--- a/src/fstab-generator/fstab-generator.c
++++ b/src/fstab-generator/fstab-generator.c
+@@ -250,10 +250,14 @@ static int add_mount(
+                 return 0;
+ 
+         if (path_equal(where, "/")) {
+-                /* The root disk is not an option */
+-                automount = false;
+-                noauto = false;
+-                nofail = false;
++                if (noauto)
++                        log_warning("Ignoring \"noauto\" for root device");
++                if (nofail)
++                        log_warning("Ignoring \"nofail\" for root device");
++                if (automount)
++                        log_warning("Ignoring automount option for root device");
++
++                noauto = nofail = automount = false;
+         }
+ 
+         name = unit_name_from_path(where, ".mount");
+@@ -470,7 +474,7 @@ static int parse_fstab(bool initrd) {
+         return r;
+ }
+ 
+-static int add_root_mount(void) {
++static int add_sysroot_mount(void) {
+         _cleanup_free_ char *what = NULL;
+         const char *opts;
+ 
+@@ -506,7 +510,7 @@ static int add_root_mount(void) {
+                          "/proc/cmdline");
+ }
+ 
+-static int add_usr_mount(void) {
++static int add_sysroot_usr_mount(void) {
+         _cleanup_free_ char *what = NULL;
+         const char *opts;
+ 
+@@ -653,9 +657,9 @@ int main(int argc, char *argv[]) {
+ 
+         /* Always honour root= and usr= in the kernel command line if we are in an initrd */
+         if (in_initrd()) {
+-                r = add_root_mount();
++                r = add_sysroot_mount();
+                 if (r == 0)
+-                        r = add_usr_mount();
++                        r = add_sysroot_usr_mount();
+         }
+ 
+         /* Honour /etc/fstab only when that's enabled */
+diff --git a/src/shared/generator.c b/src/shared/generator.c
+index 7f16d5c..cd37812 100644
+--- a/src/shared/generator.c
++++ b/src/shared/generator.c
+@@ -33,13 +33,13 @@
+ 
+ int generator_write_fsck_deps(
+                 FILE *f,
+-                const char *dest,
++                const char *dir,
+                 const char *what,
+                 const char *where,
+                 const char *fstype) {
+ 
+         assert(f);
+-        assert(dest);
++        assert(dir);
+         assert(what);
+         assert(where);
+ 
+@@ -59,10 +59,10 @@ int generator_write_fsck_deps(
+                         return log_warning_errno(r, "Checking was requested for %s, but fsck.%s cannot be used: %m", what, fstype);
+         }
+ 
+-        if (streq(where, "/")) {
++        if (path_equal(where, "/")) {
+                 char *lnk;
+ 
+-                lnk = strjoina(dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
++                lnk = strjoina(dir, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
+ 
+                 mkdir_parents(lnk, 0755);
+                 if (symlink(SYSTEM_DATA_UNIT_PATH "/systemd-fsck-root.service", lnk) < 0)
+@@ -76,17 +76,20 @@ int generator_write_fsck_deps(
+                         return log_oom();
+ 
+                 fprintf(f,
+-                        "RequiresOverridable=%s\n"
+-                        "After=%s\n",
+-                        fsck,
++                        "RequiresOverridable=%1$s\n"
++                        "After=%1$s\n",
+                         fsck);
+         }
+ 
+         return 0;
+ }
+ 
+-int generator_write_timeouts(const char *dir, const char *what, const char *where,
+-                             const char *opts, char **filtered) {
++int generator_write_timeouts(
++                const char *dir,
++                const char *what,
++                const char *where,
++                const char *opts,
++                char **filtered) {
+ 
+         /* Allow configuration how long we wait for a device that
+          * backs a mount point to show up. This is useful to support
+diff --git a/src/shared/generator.h b/src/shared/generator.h
+index 64bd28f..6c3f38a 100644
+--- a/src/shared/generator.h
++++ b/src/shared/generator.h
+@@ -23,7 +23,16 @@
+ 
+ #include <stdio.h>
+ 
+-int generator_write_fsck_deps(FILE *f, const char *dest, const char *what, const char *where, const char *type);
+-
+-int generator_write_timeouts(const char *dir, const char *what, const char *where,
+-                             const char *opts, char **filtered);
++int generator_write_fsck_deps(
++        FILE *f,
++        const char *dir,
++        const char *what,
++        const char *where,
++        const char *type);
++
++int generator_write_timeouts(
++        const char *dir,
++        const char *what,
++        const char *where,
++        const char *opts,
++        char **filtered);
diff --git a/SOURCES/0200-remove-user-.service.patch b/SOURCES/0200-remove-user-.service.patch
deleted file mode 100644
index d6784ca..0000000
--- a/SOURCES/0200-remove-user-.service.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-From a76f607703911f314fea41148ef7c23fac20029d Mon Sep 17 00:00:00 2001
-From: Harald Hoyer <harald@redhat.com>
-Date: Wed, 30 Oct 2013 18:22:49 +0100
-Subject: [PATCH] remove user@.service
-
-fixes rhbz#1019738
----
- Makefile.am             |  2 --
- src/login/logind-user.c | 42 ------------------------------------------
- 2 files changed, 44 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index f4867d9..df63275 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -437,7 +437,6 @@ nodist_systemunit_DATA = \
- 	units/systemd-sysctl.service \
- 	units/emergency.service \
- 	units/rescue.service \
--	units/user@.service \
- 	units/systemd-hibernate.service \
- 	units/systemd-hybrid-sleep.service \
- 	units/systemd-suspend.service \
-@@ -486,7 +485,6 @@ EXTRA_DIST += \
- 	units/user/systemd-exit.service.in \
- 	units/systemd-fsck@.service.in \
- 	units/systemd-fsck-root.service.in \
--	units/user@.service.in \
- 	units/systemd-udevd.service \
- 	units/systemd-udev-trigger.service \
- 	units/systemd-udev-settle.service \
-diff --git a/src/login/logind-user.c b/src/login/logind-user.c
-index b87311c..8e7256b 100644
---- a/src/login/logind-user.c
-+++ b/src/login/logind-user.c
-@@ -365,43 +365,6 @@ static int user_start_slice(User *u) {
-         return 0;
- }
- 
--static int user_start_service(User *u) {
--        DBusError error;
--        char *job;
--        int r;
--
--        assert(u);
--
--        dbus_error_init(&error);
--
--        if (!u->service) {
--                char lu[DECIMAL_STR_MAX(unsigned long) + 1], *service;
--                sprintf(lu, "%lu", (unsigned long) u->uid);
--
--                service = unit_name_build("user", lu, ".service");
--                if (!service)
--                        return log_oom();
--
--                r = manager_start_unit(u->manager, service, &error, &job);
--                if (r < 0) {
--                        log_error("Failed to start user service: %s", bus_error(&error, r));
--                        dbus_error_free(&error);
--
--                        free(service);
--                } else {
--                        u->service = service;
--
--                        free(u->service_job);
--                        u->service_job = job;
--                }
--        }
--
--        if (u->service)
--                hashmap_put(u->manager->user_units, u->service, u);
--
--        return 0;
--}
--
- int user_start(User *u) {
-         int r;
- 
-@@ -422,11 +385,6 @@ int user_start(User *u) {
-         if (r < 0)
-                 return r;
- 
--        /* Spawn user systemd */
--        r = user_start_service(u);
--        if (r < 0)
--                return r;
--
-         if (!dual_timestamp_is_set(&u->timestamp))
-                 dual_timestamp_get(&u->timestamp);
- 
diff --git a/SOURCES/0201-Fix-bad-assert-in-show_pid_array.patch b/SOURCES/0201-Fix-bad-assert-in-show_pid_array.patch
deleted file mode 100644
index 5a7ef1d..0000000
--- a/SOURCES/0201-Fix-bad-assert-in-show_pid_array.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a01fee0ef04e93dbe1eecb1aa276e515114e9c1b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 14 Oct 2013 19:15:24 -0400
-Subject: [PATCH] Fix bad assert in show_pid_array
-
-This function should get the same treatment as other qsort uses
-did in 7ff7394 "Never call qsort on potentially NULL arrays".
-
-Reported-by: Oleksii Shevchuk <alxchk@gmail.com>
----
- src/shared/cgroup-show.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c
-index f6e56db..aa0f017 100644
---- a/src/shared/cgroup-show.c
-+++ b/src/shared/cgroup-show.c
-@@ -44,8 +44,6 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi
-         unsigned i, m, pid_width;
-         pid_t biggest = 0;
- 
--        assert(n_pids > 0);
--
-         /* Filter duplicates */
-         m = 0;
-         for (i = 0; i < n_pids; i++) {
diff --git a/SOURCES/0201-Generate-systemd-fsck-root.service-in-the-initramfs.patch b/SOURCES/0201-Generate-systemd-fsck-root.service-in-the-initramfs.patch
new file mode 100644
index 0000000..341fbb3
--- /dev/null
+++ b/SOURCES/0201-Generate-systemd-fsck-root.service-in-the-initramfs.patch
@@ -0,0 +1,109 @@
+From 306dfc00aefbd35197ca30469f4b40bb120caf91 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 6 May 2015 01:09:53 -0400
+Subject: [PATCH] Generate systemd-fsck-root.service in the initramfs
+
+In the initrafms, generate a systemd-fsck-root.service to replace
+systemd-fsck@<sysroot-device>.service. This way, after we transition
+to the real root, systemd-fsck-root.service is marked as already done.
+
+This introduces an unnecessary synchronization point, because
+systemd-fsck@* is ordered after systemd-fsck-root also in the
+initramfs. In practice this shouldn't be a problem.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1201979
+
+C.f. 956eaf2b8d6c9999024705ddadc7393bc707de02.
+
+(cherry picked from commit 4dda4e637e4c17a14db6cd265f36f5e8a5050367)
+
+Cherry-picked from: 4dda4e6
+Resolves: #1222517
+---
+ src/shared/generator.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 59 insertions(+), 4 deletions(-)
+
+diff --git a/src/shared/generator.c b/src/shared/generator.c
+index cd37812..148a0b0 100644
+--- a/src/shared/generator.c
++++ b/src/shared/generator.c
+@@ -29,8 +29,51 @@
+ #include "generator.h"
+ #include "path-util.h"
+ #include "fstab-util.h"
++#include "fileio.h"
+ #include "dropin.h"
+ 
++static int write_fsck_sysroot_service(const char *dir, const char *what) {
++        const char *unit;
++        _cleanup_free_ char *device = NULL;
++        _cleanup_fclose_ FILE *f = NULL;
++
++        unit = strjoina(dir, "/systemd-fsck-root.service");
++        log_debug("Creating %s", unit);
++
++        device = unit_name_from_path(what, ".device");
++        if (!device)
++                return log_oom();
++
++        f = fopen(unit, "wxe");
++        if (!f)
++                return log_error_errno(errno, "Failed to create unit file %s: %m", unit);
++
++        fprintf(f,
++                "# Automatically generated by %1$s\n\n"
++                "[Unit]\n"
++                "Documentation=man:systemd-fsck-root.service(8)\n"
++                "Description=File System Check on %2$s\n"
++                "DefaultDependencies=no\n"
++                "BindsTo=%3$s\n"
++                "After=%3$s\n"
++                "Before=shutdown.target\n"
++                "\n"
++                "[Service]\n"
++                "Type=oneshot\n"
++                "RemainAfterExit=yes\n"
++                "ExecStart=/usr/lib/systemd/systemd-fsck %2$s\n"
++                "TimeoutSec=0\n",
++                program_invocation_short_name,
++                what,
++                device);
++
++        fflush(f);
++        if (ferror(f))
++                return log_error_errno(errno, "Failed to write unit file %s: %m", unit);
++
++        return 0;
++}
++
+ int generator_write_fsck_deps(
+                 FILE *f,
+                 const char *dir,
+@@ -69,11 +112,23 @@ int generator_write_fsck_deps(
+                         return log_error_errno(errno, "Failed to create symlink %s: %m", lnk);
+ 
+         } else {
+-                _cleanup_free_ char *fsck = NULL;
++                _cleanup_free_ char *_fsck = NULL;
++                const char *fsck;
++                int r;
++
++                if (in_initrd() && path_equal(where, "/sysroot")) {
++                        r = write_fsck_sysroot_service(dir, what);
++                        if (r < 0)
++                                return r;
++
++                        fsck = "systemd-fsck-root.service";
++                } else {
++                        _fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
++                        if (!_fsck)
++                                return log_oom();
+ 
+-                fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
+-                if (!fsck)
+-                        return log_oom();
++                        fsck = _fsck;
++                }
+ 
+                 fprintf(f,
+                         "RequiresOverridable=%1$s\n"
diff --git a/SOURCES/0202-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch b/SOURCES/0202-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch
deleted file mode 100644
index d3e7674..0000000
--- a/SOURCES/0202-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From 3b321e8bb1548432624b374f7077f4aaaae40a2d Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 26 Feb 2014 04:27:50 +0100
-Subject: [PATCH] mount: don't send out PropertiesChanged message if actually
- nothing got changed
-
-Conflicts:
-	src/core/mount.c
----
- src/core/mount.c | 15 ++++++++++++---
- 1 file changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/src/core/mount.c b/src/core/mount.c
-index c0445a6..62ec7fe 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -1414,7 +1414,7 @@ static int mount_add_one(
-                 bool set_flags) {
-         int r;
-         Unit *u;
--        bool delete;
-+        bool delete, changed = false;;
-         char *e, *w = NULL, *o = NULL, *f = NULL;
-         MountParameters *p;
-         bool load_extras = false;
-@@ -1483,6 +1483,7 @@ static int mount_add_one(
-                 }
- 
-                 unit_add_to_load_queue(u);
-+                changed = true;
-         } else {
-                 delete = false;
-                 free(e);
-@@ -1502,6 +1503,7 @@ static int mount_add_one(
-                         /* Load in the extras later on, after we
-                          * finished initialization of the unit */
-                         load_extras = true;
-+                        changed = true;
-                 }
-         }
- 
-@@ -1513,10 +1515,16 @@ static int mount_add_one(
-         }
- 
-         p = &MOUNT(u)->parameters_proc_self_mountinfo;
-+
-+        changed = changed ||
-+                !streq_ptr(p->options, options) ||
-+                !streq_ptr(p->what, what) ||
-+                !streq_ptr(p->fstype, fstype);
-+
-         if (set_flags) {
-                 MOUNT(u)->is_mounted = true;
-                 MOUNT(u)->just_mounted = !MOUNT(u)->from_proc_self_mountinfo;
--                MOUNT(u)->just_changed = !streq_ptr(p->options, o);
-+                MOUNT(u)->just_changed = changed;
-         }
- 
-         MOUNT(u)->from_proc_self_mountinfo = true;
-@@ -1538,7 +1546,8 @@ static int mount_add_one(
-                         goto fail;
-         }
- 
--        unit_add_to_dbus_queue(u);
-+        if (changed)
-+                unit_add_to_dbus_queue(u);
- 
-         return 0;
- 
diff --git a/SOURCES/0202-units-fix-typo-in-systemd-resolved.service.patch b/SOURCES/0202-units-fix-typo-in-systemd-resolved.service.patch
new file mode 100644
index 0000000..782d2d8
--- /dev/null
+++ b/SOURCES/0202-units-fix-typo-in-systemd-resolved.service.patch
@@ -0,0 +1,33 @@
+From 9e7315f4149a97fa8d5b826770610cd59316db2d Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Thu, 14 May 2015 22:32:35 +0200
+Subject: [PATCH] units: fix typo in systemd-resolved.service
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+There's no network.service unit, we actually mean network.target here.
+
+Reported by Fco. Eduardo Ramírez.
+
+(cherry picked from commit 1dff3202941786dd00060f078f6b031efe52d3c3)
+
+Cherry-picked from: 1dff320
+Resolves: #1222517
+---
+ units/systemd-resolved.service.m4.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/units/systemd-resolved.service.m4.in b/units/systemd-resolved.service.m4.in
+index d133847..98ae564 100644
+--- a/units/systemd-resolved.service.m4.in
++++ b/units/systemd-resolved.service.m4.in
+@@ -8,7 +8,7 @@
+ [Unit]
+ Description=Network Name Resolution
+ Documentation=man:systemd-resolved.service(8)
+-After=systemd-networkd.service network.service
++After=systemd-networkd.service network.target
+ 
+ m4_ifdef(`ENABLE_KDBUS',
+ # On kdbus systems we pull in the busname explicitly, because it
diff --git a/SOURCES/0203-core-don-t-consider-umask-for-SocketMode.patch b/SOURCES/0203-core-don-t-consider-umask-for-SocketMode.patch
new file mode 100644
index 0000000..e97df69
--- /dev/null
+++ b/SOURCES/0203-core-don-t-consider-umask-for-SocketMode.patch
@@ -0,0 +1,28 @@
+From a8ad87112c0992579fcf4fc91234490ec82ce939 Mon Sep 17 00:00:00 2001
+From: Davide Bettio <davide.bettio@ispirata.com>
+Date: Fri, 15 May 2015 16:36:28 +0200
+Subject: [PATCH] core: don't consider umask for SocketMode=
+
+https://bugs.freedesktop.org/show_bug.cgi?id=89248
+(cherry picked from commit a2c7f25aec23b6d74ff5cf169e38159754e6dfe8)
+
+Cherry-picked from: a2c7f25
+Resolves: #1222517
+---
+ src/shared/socket-label.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/src/shared/socket-label.c b/src/shared/socket-label.c
+index 6806c51..a6289eb 100644
+--- a/src/shared/socket-label.c
++++ b/src/shared/socket-label.c
+@@ -117,9 +117,6 @@ int socket_address_listen(
+                 /* Enforce the right access mode for the socket */
+                 old_mask = umask(~ socket_mode);
+ 
+-                /* Include the original umask in our mask */
+-                umask(~socket_mode | old_mask);
+-
+                 r = mac_selinux_bind(fd, &a->sockaddr.sa, a->size);
+ 
+                 if (r < 0 && errno == EADDRINUSE) {
diff --git a/SOURCES/0203-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch b/SOURCES/0203-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch
deleted file mode 100644
index b9d9a8c..0000000
--- a/SOURCES/0203-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 01f17a96d58033e281e52483d1afb73362c98aa8 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 27 Feb 2014 11:19:09 +0100
-Subject: [PATCH] udev/rules: setup tty permissions and group for sclp_line,
- ttysclp and 3270/tty
-
----
- rules/50-udev-default.rules | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules
-index 679dfdf..0bccf67 100644
---- a/rules/50-udev-default.rules
-+++ b/rules/50-udev-default.rules
-@@ -15,6 +15,9 @@ ACTION!="add", GOTO="default_permissions_end"
- SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666"
- SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666"
- SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620"
-+SUBSYSTEM=="tty", KERNEL=="sclp_line[0-9]*", GROUP="tty", MODE="0620"
-+SUBSYSTEM=="tty", KERNEL=="ttysclp[0-9]*", GROUP="tty", MODE="0620"
-+SUBSYSTEM=="tty", KERNEL=="3270/tty[0-9]*", GROUP="tty", MODE="0620"
- SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty"
- KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout"
- 
diff --git a/SOURCES/0204-cdrom_id-use-the-old-MMC-fallback.patch b/SOURCES/0204-cdrom_id-use-the-old-MMC-fallback.patch
deleted file mode 100644
index bc9671f..0000000
--- a/SOURCES/0204-cdrom_id-use-the-old-MMC-fallback.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 0f9f786f2f6fa8e7aa0c00b29c36296e8b291d76 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 27 Feb 2014 11:06:37 +0100
-Subject: [PATCH] cdrom_id: use the old MMC fallback
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1038015
-The problem seems to be that the your virtual DVD is emulating a really
-old DVD device, and doing it kind of strangely.
-
-> dracut:# /lib/udev/cdrom_id --debug /dev/sr0
-> probing: '/dev/sr0'
-> INQUIRY: [IMM     ][Virtual CD/DVD   ][0316]
-> GET CONFIGURATION failed with SK=5h/ASC=24h/ACQ=00h
-
-So your virtual drive rejects the GET CONFIGURATION command as illegal.
-
-Other pre-MMC2 drives that don't accept this command usually return the
-error
-SK=5h,ASC=20h (invalid/unsupported command code), in which case cdrom_id
-tries an older method, and then ID_CDROM_MEDIA_TRACK_COUNT_DATA gets set
-and all the /dev/disk/by-label (etc) links get set up.
-
-The virtual drive returns the error SK=5h,ASC=24h (invalid field in
-Command Descriptor Block), which cdrom_id doesn't handle, so it gives up
-and the links never get made.
-
-The ideal solution would be to make the IMM to emulate a device that's
-less than 15 years old, but I'm not going to hold my breath waiting for
-that.
-
-So probably cdrom_id should also use the old MMC fallback when the error
-is SK=5h,ASC=24h, and then all of this would work as expected.
-
-Suggested-by:Luca Miccini <lmiccini@redhat.com>
-
-Conflicts:
-	src/udev/cdrom_id/cdrom_id.c
----
- src/udev/cdrom_id/cdrom_id.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c
-index 1ad0459..ae19542 100644
---- a/src/udev/cdrom_id/cdrom_id.c
-+++ b/src/udev/cdrom_id/cdrom_id.c
-@@ -555,7 +555,7 @@ static int cd_profiles(struct udev *udev, int fd)
-         if ((err != 0)) {
-                 info_scsi_cmd_err(udev, "GET CONFIGURATION", err);
-                 /* handle pre-MMC2 drives which do not support GET CONFIGURATION */
--                if (SK(err) == 0x5 && ASC(err) == 0x20) {
-+                if (SK(err) == 0x5 && (ASC(err) == 0x20 || ASC(err) == 0x24)) {
-                         log_debug("drive is pre-MMC2 and does not support 46h get configuration command\n");
-                         log_debug("trying to work around the problem\n");
-                         ret = cd_profiles_old_mmc(udev, fd);
diff --git a/SOURCES/0204-timedate-fix-memory-leak-in-timedated.patch b/SOURCES/0204-timedate-fix-memory-leak-in-timedated.patch
new file mode 100644
index 0000000..d037012
--- /dev/null
+++ b/SOURCES/0204-timedate-fix-memory-leak-in-timedated.patch
@@ -0,0 +1,71 @@
+From 266eacb3e5a46caba3a56485a9ba54ad8027ff61 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
+Date: Fri, 15 May 2015 13:26:18 -0300
+Subject: [PATCH] timedate: fix memory leak in timedated
+
+$ /usr/lib/systemd/systemd-timedated (wait until auto-exit)
+
+=================================================================
+==396==ERROR: LeakSanitizer: detected memory leaks
+
+Direct leak of 928 byte(s) in 1 object(s) allocated from:
+    #0 0x7f782f788db1 in __interceptor_calloc (/usr/lib64/libasan.so.2+0x96db1)
+    #1 0x562a83ae60cf in bus_message_from_header src/libsystemd/sd-bus/bus-message.c:480
+    #2 0x562a83ae6f5a in bus_message_from_malloc src/libsystemd/sd-bus/bus-message.c:576
+    #3 0x562a83ad3cad in bus_socket_make_message src/libsystemd/sd-bus/bus-socket.c:915
+    #4 0x562a83ad4cfc in bus_socket_read_message src/libsystemd/sd-bus/bus-socket.c:1051
+    #5 0x562a83ab733f in bus_read_message src/libsystemd/sd-bus/sd-bus.c:1647
+    #6 0x562a83ab98ea in sd_bus_call src/libsystemd/sd-bus/sd-bus.c:2038
+    #7 0x562a83b1f46d in sd_bus_call_method src/libsystemd/sd-bus/bus-convenience.c:94
+    #8 0x562a83aab3e1 in context_read_ntp src/timedate/timedated.c:192
+    #9 0x562a83aae1af in main src/timedate/timedated.c:730
+    #10 0x7f782eb238c4 in __libc_start_main (/lib64/libc.so.6+0x208c4)
+
+Indirect leak of 77 byte(s) in 1 object(s) allocated from:
+    #0 0x7f782f788f6a in realloc (/usr/lib64/libasan.so.2+0x96f6a)
+    #1 0x562a83ad418a in bus_socket_read_message src/libsystemd/sd-bus/bus-socket.c:963
+    #2 0x562a83ab733f in bus_read_message src/libsystemd/sd-bus/sd-bus.c:1647
+    #3 0x562a83ab98ea in sd_bus_call src/libsystemd/sd-bus/sd-bus.c:2038
+    #4 0x562a83b1f46d in sd_bus_call_method src/libsystemd/sd-bus/bus-convenience.c:94
+    #5 0x562a83aab3e1 in context_read_ntp src/timedate/timedated.c:192
+    #6 0x562a83aae1af in main src/timedate/timedated.c:730
+    #7 0x7f782eb238c4 in __libc_start_main (/lib64/libc.so.6+0x208c4)
+
+Indirect leak of 2 byte(s) in 1 object(s) allocated from:
+    #0 0x7f782f75493f in strdup (/usr/lib64/libasan.so.2+0x6293f)
+    #1 0x562a83b0229b in bus_message_parse_fields src/libsystemd/sd-bus/bus-message.c:5382
+    #2 0x562a83ae7290 in bus_message_from_malloc src/libsystemd/sd-bus/bus-message.c:601
+    #3 0x562a83ad3cad in bus_socket_make_message src/libsystemd/sd-bus/bus-socket.c:915
+    #4 0x562a83ad4cfc in bus_socket_read_message src/libsystemd/sd-bus/bus-socket.c:1051
+    #5 0x562a83ab733f in bus_read_message src/libsystemd/sd-bus/sd-bus.c:1647
+    #6 0x562a83ab98ea in sd_bus_call src/libsystemd/sd-bus/sd-bus.c:2038
+    #7 0x562a83b1f46d in sd_bus_call_method src/libsystemd/sd-bus/bus-convenience.c:94
+    #8 0x562a83aab3e1 in context_read_ntp src/timedate/timedated.c:192
+    #9 0x562a83aae1af in main src/timedate/timedated.c:730
+    #10 0x7f782eb238c4 in __libc_start_main (/lib64/libc.so.6+0x208c4)
+
+SUMMARY: AddressSanitizer: 1007 byte(s) leaked in 3 allocation(s).
+
+This is due to missing  _cleanup_bus_message_unref_ in context_read_ntp()
+
+(cherry picked from commit 6b71bab08dc6c92156263daba0e969313eed1323)
+
+Cherry-picked from: 6b71bab
+Resolves: #1222517
+---
+ src/timedate/timedated.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
+index f875149..09d0dba 100644
+--- a/src/timedate/timedated.c
++++ b/src/timedate/timedated.c
+@@ -245,7 +245,7 @@ static int context_read_ntp(Context *c, sd_bus *bus) {
+         l = get_ntp_services();
+         STRV_FOREACH(i, l) {
+                 _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
+-                sd_bus_message *reply = NULL;
++                _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
+                 const char *s;
+ 
+                 r = sd_bus_call_method(
diff --git a/SOURCES/0205-core-introduce-new-stop-protocol-for-unit-scopes.patch b/SOURCES/0205-core-introduce-new-stop-protocol-for-unit-scopes.patch
deleted file mode 100644
index 6f6c239..0000000
--- a/SOURCES/0205-core-introduce-new-stop-protocol-for-unit-scopes.patch
+++ /dev/null
@@ -1,265 +0,0 @@
-From 1c961f8bf67a798d51d88195f89d035012a681d4 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Thu, 27 Feb 2014 17:56:16 +0100
-Subject: [PATCH] core: introduce new stop protocol for unit scopes
-
-By specifiy a Controller property when creating the scope a client can
-specify a bus name that will be notified with a RequestStop bus signal
-when the scope has been asked to shut down, instead of sending SIGTERM
-to the scope processes themselves.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1032695
-
-Based-on: 2d4a39e759c4ab846ad8a546abeddd40bc8d736e
----
- src/core/dbus-scope.c    | 55 ++++++++++++++++++++++++++++++++++++++++++++++++
- src/core/dbus-scope.h    |  2 ++
- src/core/scope.c         | 20 +++++++++++++++---
- src/core/scope.h         |  2 ++
- src/run/run.c            |  8 +++++++
- src/shared/dbus-common.c | 42 ++++++++++++++++++++++++++++++++++++
- src/shared/dbus-common.h |  2 ++
- 7 files changed, 128 insertions(+), 3 deletions(-)
-
-diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
-index 783a969..b576f76 100644
---- a/src/core/dbus-scope.c
-+++ b/src/core/dbus-scope.c
-@@ -31,10 +31,12 @@
- #define BUS_SCOPE_INTERFACE                                             \
-         " <interface name=\"org.freedesktop.systemd1.Scope\">\n"        \
-         BUS_UNIT_CGROUP_INTERFACE                                       \
-+        "  <property name=\"Controller\" type=\"s\" access=\"read\"/>\n"\
-         "  <property name=\"TimeoutStopUSec\" type=\"t\" access=\"read\"/>\n" \
-         BUS_KILL_CONTEXT_INTERFACE                                      \
-         BUS_CGROUP_CONTEXT_INTERFACE                                    \
-         "  <property name=\"Result\" type=\"s\" access=\"read\"/>\n"    \
-+        "  <signal name=\"RequestStop\"/>\n"                            \
-         " </interface>\n"
- 
- #define INTROSPECTION                                                   \
-@@ -56,6 +58,7 @@ const char bus_scope_interface[] _introspect_("Scope") = BUS_SCOPE_INTERFACE;
- static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_scope_append_scope_result, scope_result, ScopeResult);
- 
- static const BusProperty bus_scope_properties[] = {
-+        { "Controller",             bus_property_append_string,    "s", offsetof(Scope, controller)        },
-         { "TimeoutStopUSec",        bus_property_append_usec,      "t", offsetof(Scope, timeout_stop_usec) },
-         { "Result",                 bus_scope_append_scope_result, "s", offsetof(Scope, result)            },
-         {}
-@@ -127,6 +130,31 @@ static int bus_scope_set_transient_property(
- 
-                 return 1;
- 
-+        } else if (streq(name, "Controller")) {
-+                const char *controller;
-+
-+                if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_STRING)
-+                        return -EINVAL;
-+
-+                dbus_message_iter_get_basic(i, &controller);
-+
-+                if (!isempty(controller) && !bus_service_name_is_valid(controller))
-+                        return -EINVAL;
-+
-+                if (mode != UNIT_CHECK) {
-+                        char *c = NULL;
-+
-+                        if (!isempty(controller)) {
-+                                c = strdup(controller);
-+                                if (!c)
-+                                        return -ENOMEM;
-+                        }
-+
-+                        free(s->controller);
-+                        s->controller = c;
-+                }
-+
-+                return 1;
-         } else if (streq(name, "TimeoutStopUSec")) {
- 
-                 if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_UINT64)
-@@ -187,3 +215,30 @@ int bus_scope_commit_properties(Unit *u) {
-         unit_realize_cgroup(u);
-         return 0;
- }
-+
-+int bus_scope_send_request_stop(Scope *s) {
-+        _cleanup_dbus_message_unref_ DBusMessage *m = NULL;
-+        _cleanup_free_ char *p = NULL;
-+        int r;
-+
-+        assert(s);
-+
-+        if (!s->controller)
-+                return 0;
-+
-+        p = unit_dbus_path(UNIT(s));
-+        if (!p)
-+                return -ENOMEM;
-+
-+        m = dbus_message_new_signal(p,
-+                                    "org.freedesktop.systemd1.Scope",
-+                                    "RequestStop");
-+        if (!m)
-+                return 0;
-+
-+        r = dbus_message_set_destination(m, s->controller);
-+        if (!r)
-+                return 0;
-+
-+        return dbus_connection_send(UNIT(s)->manager->api_bus, m, NULL);
-+}
-diff --git a/src/core/dbus-scope.h b/src/core/dbus-scope.h
-index e6836f1..34720f2 100644
---- a/src/core/dbus-scope.h
-+++ b/src/core/dbus-scope.h
-@@ -30,4 +30,6 @@ DBusHandlerResult bus_scope_message_handler(Unit *u, DBusConnection *c, DBusMess
- int bus_scope_set_property(Unit *u, const char *name, DBusMessageIter *i, UnitSetPropertiesMode mode, DBusError *error);
- int bus_scope_commit_properties(Unit *u);
- 
-+int bus_scope_send_request_stop(Scope *s);
-+
- extern const char bus_scope_interface[];
-diff --git a/src/core/scope.c b/src/core/scope.c
-index 41da3b9..e75fc2b 100644
---- a/src/core/scope.c
-+++ b/src/core/scope.c
-@@ -64,6 +64,9 @@ static void scope_done(Unit *u) {
- 
-         cgroup_context_done(&s->cgroup_context);
- 
-+        free(s->controller);
-+        s->controller = NULL;
-+
-         set_free(s->pids);
-         s->pids = NULL;
- 
-@@ -198,6 +201,7 @@ static void scope_enter_dead(Scope *s, ScopeResult f) {
- }
- 
- static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
-+        bool skip_signal = false;
-         int r;
- 
-         assert(s);
-@@ -205,13 +209,23 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
-         if (f != SCOPE_SUCCESS)
-                 s->result = f;
- 
--        r = unit_kill_context(
-+        /* If we have a controller set let's ask the controller nicely
-+         * to terminate the scope, instead of us going directly into
-+         * SIGTERM beserk mode */
-+        if (state == SCOPE_STOP_SIGTERM)
-+                skip_signal = bus_scope_send_request_stop(s) > 0;
-+
-+        if (!skip_signal) {
-+                r = unit_kill_context(
-                         UNIT(s),
-                         &s->kill_context,
-                         state != SCOPE_STOP_SIGTERM,
-                         -1, -1, false);
--        if (r < 0)
--                goto fail;
-+
-+                if (r < 0)
-+                        goto fail;
-+        } else
-+                r = 1;
- 
-         if (r > 0) {
-                 if (s->timeout_stop_usec > 0) {
-diff --git a/src/core/scope.h b/src/core/scope.h
-index 2a3dcb7..b4bafa7 100644
---- a/src/core/scope.h
-+++ b/src/core/scope.h
-@@ -55,6 +55,8 @@ struct Scope {
- 
-         usec_t timeout_stop_usec;
- 
-+        char *controller;
-+
-         Set *pids;
- 
-         Watch timer_watch;
-diff --git a/src/run/run.c b/src/run/run.c
-index a6abead..93e3f88 100644
---- a/src/run/run.c
-+++ b/src/run/run.c
-@@ -315,6 +315,14 @@ static int start_transient_scope(
-         if (r < 0)
-                 return r;
- 
-+        {
-+                const char *unique_id;
-+                sd_bus_get_unique_name(bus, &unique_id);
-+                r = sd_bus_message_append(m, "(sv)", "Controller", "s", unique_id);
-+                if (r < 0)
-+                        return r;
-+        }
-+
-         r = sd_bus_message_append(m, "(sv)", "PIDs", "au", 1, (uint32_t) getpid());
-         if (r < 0)
-                 return r;
-diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c
-index 3ba2d87..8a68708 100644
---- a/src/shared/dbus-common.c
-+++ b/src/shared/dbus-common.c
-@@ -1428,3 +1428,45 @@ const char *bus_message_get_sender_with_fallback(DBusMessage *m) {
- 
-         return ":no-sender";
- }
-+
-+bool bus_service_name_is_valid(const char *p) {
-+        const char *q;
-+        bool dot, found_dot = false, unique;
-+
-+        if (isempty(p))
-+                return false;
-+
-+        unique = p[0] == ':';
-+
-+        for (dot = true, q = unique ? p+1 : p; *q; q++)
-+                if (*q == '.') {
-+                        if (dot)
-+                                return false;
-+
-+                        found_dot = dot = true;
-+                } else {
-+                        bool good;
-+
-+                        good =
-+                                (*q >= 'a' && *q <= 'z') ||
-+                                (*q >= 'A' && *q <= 'Z') ||
-+                                ((!dot || unique) && *q >= '0' && *q <= '9') ||
-+                                *q == '_' || *q == '-';
-+
-+                        if (!good)
-+                                return false;
-+
-+                        dot = false;
-+                }
-+
-+        if (q - p > 255)
-+                return false;
-+
-+        if (dot)
-+                return false;
-+
-+        if (!found_dot)
-+                return false;
-+
-+        return true;
-+}
-diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h
-index 9752f08..8d01d14 100644
---- a/src/shared/dbus-common.h
-+++ b/src/shared/dbus-common.h
-@@ -242,5 +242,7 @@ const char *bus_message_get_sender_with_fallback(DBusMessage *m);
- 
- void bus_message_unrefp(DBusMessage **reply);
- 
-+bool bus_service_name_is_valid(const char *p);
-+
- #define _cleanup_dbus_message_unref_ __attribute__((cleanup(bus_message_unrefp)))
- #define _cleanup_dbus_error_free_ __attribute__((cleanup(dbus_error_free)))
diff --git a/SOURCES/0205-coredump-make-sure-we-vacuum-by-default.patch b/SOURCES/0205-coredump-make-sure-we-vacuum-by-default.patch
new file mode 100644
index 0000000..e9edb96
--- /dev/null
+++ b/SOURCES/0205-coredump-make-sure-we-vacuum-by-default.patch
@@ -0,0 +1,57 @@
+From c730efd5335cf49ef78008b7d49fc5d5215089eb Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 15 May 2015 20:56:55 +0200
+Subject: [PATCH] coredump: make sure we vacuum by default
+
+Only if both keep_free and max_use are actually 0 we can shortcut things
+and avoid vacuuming. If either are positive or -1 we need to execute the
+vacuuming.
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-April/031382.html
+(cherry picked from commit 5470c03b37d8421a903564c2c8028c8b8d67d403)
+
+Cherry-picked from: 5470c03
+Resolves: #1222517
+---
+ man/coredump.conf.xml         | 4 +++-
+ src/journal/coredump-vacuum.c | 5 ++---
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/man/coredump.conf.xml b/man/coredump.conf.xml
+index 0b7329b..fd54c59 100644
+--- a/man/coredump.conf.xml
++++ b/man/coredump.conf.xml
+@@ -134,7 +134,9 @@
+         by coredumps might temporarily exceed these limits while
+         coredumps are processed. Note that old coredumps are also
+         removed based on time via
+-        <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>.</para></listitem>
++        <citerefentry><refentrytitle>systemd-tmpfiles</refentrytitle><manvolnum>8</manvolnum></citerefentry>. Set
++        either value to 0 to turn off size based
++        clean-up.</para></listitem>
+       </varlistentry>
+     </variablelist>
+ 
+diff --git a/src/journal/coredump-vacuum.c b/src/journal/coredump-vacuum.c
+index 9b73795..c0347ef 100644
+--- a/src/journal/coredump-vacuum.c
++++ b/src/journal/coredump-vacuum.c
+@@ -103,8 +103,7 @@ static bool vacuum_necessary(int fd, off_t sum, off_t keep_free, off_t max_use)
+ 
+                         if (max_use < DEFAULT_MAX_USE_LOWER)
+                                 max_use = DEFAULT_MAX_USE_LOWER;
+-                }
+-                else
++                } else
+                         max_use = DEFAULT_MAX_USE_LOWER;
+         } else
+                 max_use = PAGE_ALIGN(max_use);
+@@ -135,7 +134,7 @@ int coredump_vacuum(int exclude_fd, off_t keep_free, off_t max_use) {
+         struct stat exclude_st;
+         int r;
+ 
+-        if (keep_free <= 0 && max_use <= 0)
++        if (keep_free == 0 && max_use == 0)
+                 return 0;
+ 
+         if (exclude_fd >= 0) {
diff --git a/SOURCES/0206-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch b/SOURCES/0206-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch
deleted file mode 100644
index 5ebd63a..0000000
--- a/SOURCES/0206-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch
+++ /dev/null
@@ -1,716 +0,0 @@
-From 1386240aee3f78a9101a118f11a7028571d33a71 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Thu, 27 Feb 2014 18:16:19 +0100
-Subject: [PATCH] core: watch SIGCHLD more closely to track processes of units
- with no reliable cgroup empty notifier
-
-When a process dies that we can associate with a specific unit, start
-watching all other processes of that unit, so that we can associate
-those processes with the unit too.
-
-Also, for service units start doing this as soon as we get the first
-SIGCHLD for either control or main process, so that we can follow the
-processes of the service from one to the other, as long as process that
-remain are processes of the ones we watched that died and got reassigned
-to us as parent.
-
-Similar, for scope units start doing this as soon as the scope
-controller abandons the unit, and thus management entirely reverts to
-systemd. To abandon a unit introduce a new Abandon() scope unit method
-call.
-
-Based-on: a911bb9ab27ac0eb3bbf4e8b4109e5da9b88eee3
----
- src/core/dbus-scope.c |  36 +++++++++----
- src/core/manager.c    |   2 +-
- src/core/scope.c      |  87 ++++++++++++++++++++++---------
- src/core/scope.h      |   5 +-
- src/core/service.c    | 140 ++++++++++++++++++++++++++++++--------------------
- src/core/unit.c       | 112 +++++++++++++++++++++++++++++++++++++++-
- src/core/unit.h       |   9 ++++
- 7 files changed, 298 insertions(+), 93 deletions(-)
-
-diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
-index b576f76..58dd9ff 100644
---- a/src/core/dbus-scope.c
-+++ b/src/core/dbus-scope.c
-@@ -30,6 +30,7 @@
- 
- #define BUS_SCOPE_INTERFACE                                             \
-         " <interface name=\"org.freedesktop.systemd1.Scope\">\n"        \
-+        "  <method name=\"Abandon\"/>\n"                                \
-         BUS_UNIT_CGROUP_INTERFACE                                       \
-         "  <property name=\"Controller\" type=\"s\" access=\"read\"/>\n"\
-         "  <property name=\"TimeoutStopUSec\" type=\"t\" access=\"read\"/>\n" \
-@@ -66,19 +67,40 @@ static const BusProperty bus_scope_properties[] = {
- 
- DBusHandlerResult bus_scope_message_handler(Unit *u, DBusConnection *c, DBusMessage *message) {
-         Scope *s = SCOPE(u);
-+        _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
- 
--        const BusBoundProperties bps[] = {
-+        SELINUX_UNIT_ACCESS_CHECK(u, c, message, "status");
-+
-+        if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Scope", "Abandon")) {
-+                int r;
-+
-+                r = scope_abandon(s);
-+                if (r < 0)
-+                        log_error("Failed to mark scope %s as abandoned : %s", UNIT(s)->id, strerror(-r));
-+
-+                reply = dbus_message_new_method_return(message);
-+                if (!reply)
-+                        goto oom;
-+        } else {
-+                const BusBoundProperties bps[] = {
-                 { "org.freedesktop.systemd1.Unit",  bus_unit_properties,           u },
-                 { "org.freedesktop.systemd1.Scope", bus_unit_cgroup_properties,    u },
-                 { "org.freedesktop.systemd1.Scope", bus_scope_properties,          s },
-                 { "org.freedesktop.systemd1.Scope", bus_cgroup_context_properties, &s->cgroup_context },
-                 { "org.freedesktop.systemd1.Scope", bus_kill_context_properties,   &s->kill_context   },
-                 {}
--        };
-+                };
- 
--        SELINUX_UNIT_ACCESS_CHECK(u, c, message, "status");
-+               return  bus_default_message_handler(c, message, INTROSPECTION, INTERFACES_LIST, bps);
-+        }
-+
-+        if (reply)
-+                if (!bus_maybe_send_reply(c, message, reply))
-+                        goto oom;
- 
--        return bus_default_message_handler(c, message, INTROSPECTION, INTERFACES_LIST, bps);
-+        return DBUS_HANDLER_RESULT_HANDLED;
-+oom:
-+        return DBUS_HANDLER_RESULT_NEED_MEMORY;
- }
- 
- static int bus_scope_set_transient_property(
-@@ -102,10 +124,6 @@ static int bus_scope_set_transient_property(
-                     dbus_message_iter_get_element_type(i) != DBUS_TYPE_UINT32)
-                         return -EINVAL;
- 
--                r = set_ensure_allocated(&s->pids, trivial_hash_func, trivial_compare_func);
--                if (r < 0)
--                        return r;
--
-                 dbus_message_iter_recurse(i, &sub);
-                 while (dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_UINT32) {
-                         uint32_t pid;
-@@ -116,7 +134,7 @@ static int bus_scope_set_transient_property(
-                                 return -EINVAL;
- 
-                         if (mode != UNIT_CHECK) {
--                                r = set_put(s->pids, LONG_TO_PTR(pid));
-+                                r = unit_watch_pid(UNIT(s), pid);
-                                 if (r < 0 && r != -EEXIST)
-                                         return r;
-                         }
-diff --git a/src/core/manager.c b/src/core/manager.c
-index a34a3c6..db5094f 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -1389,7 +1389,7 @@ static int manager_dispatch_sigchld(Manager *m) {
-                 log_debug_unit(u->id,
-                                "Child %lu belongs to %s", (long unsigned) si.si_pid, u->id);
- 
--                hashmap_remove(m->watch_pids, LONG_TO_PTR(si.si_pid));
-+                unit_unwatch_pid(u, si.si_pid);
-                 UNIT_VTABLE(u)->sigchld_event(u, si.si_pid, si.si_code, si.si_status);
-         }
- 
-diff --git a/src/core/scope.c b/src/core/scope.c
-index e75fc2b..22bdfb2 100644
---- a/src/core/scope.c
-+++ b/src/core/scope.c
-@@ -35,6 +35,7 @@
- static const UnitActiveState state_translation_table[_SCOPE_STATE_MAX] = {
-         [SCOPE_DEAD] = UNIT_INACTIVE,
-         [SCOPE_RUNNING] = UNIT_ACTIVE,
-+        [SCOPE_ABANDONED] = UNIT_ACTIVE,
-         [SCOPE_STOP_SIGTERM] = UNIT_DEACTIVATING,
-         [SCOPE_STOP_SIGKILL] = UNIT_DEACTIVATING,
-         [SCOPE_FAILED] = UNIT_FAILED
-@@ -67,9 +68,6 @@ static void scope_done(Unit *u) {
-         free(s->controller);
-         s->controller = NULL;
- 
--        set_free(s->pids);
--        s->pids = NULL;
--
-         unit_unwatch_timer(u, &s->timer_watch);
- }
- 
-@@ -84,6 +82,9 @@ static void scope_set_state(Scope *s, ScopeState state) {
-             state != SCOPE_STOP_SIGKILL)
-                 unit_unwatch_timer(UNIT(s), &s->timer_watch);
- 
-+        if (state == SCOPE_DEAD || state == SCOPE_FAILED)
-+                unit_unwatch_all_pids(UNIT(s));
-+
-         if (state != old_state)
-                 log_debug("%s changed %s -> %s",
-                           UNIT(s)->id,
-@@ -115,7 +116,7 @@ static int scope_verify(Scope *s) {
-         if (UNIT(s)->load_state != UNIT_LOADED)
-                 return 0;
- 
--        if (set_size(s->pids) <= 0 && UNIT(s)->manager->n_reloading <= 0) {
-+        if (set_size(UNIT(s)->pids) <= 0 && UNIT(s)->manager->n_reloading <= 0) {
-                 log_error_unit(UNIT(s)->id, "Scope %s has no PIDs. Refusing.", UNIT(s)->id);
-                 return -EINVAL;
-         }
-@@ -169,6 +170,9 @@ static int scope_coldplug(Unit *u) {
-                                 return r;
-                 }
- 
-+                if (s->deserialized_state != SCOPE_DEAD && s->deserialized_state != SCOPE_FAILED)
-+                        unit_watch_all_pids(UNIT(s));
-+
-                 scope_set_state(s, s->deserialized_state);
-         }
- 
-@@ -209,6 +213,8 @@ static void scope_enter_signal(Scope *s, ScopeState state, ScopeResult f) {
-         if (f != SCOPE_SUCCESS)
-                 s->result = f;
- 
-+        unit_watch_all_pids(UNIT(s));
-+
-         /* If we have a controller set let's ask the controller nicely
-          * to terminate the scope, instead of us going directly into
-          * SIGTERM beserk mode */
-@@ -271,13 +277,10 @@ static int scope_start(Unit *u) {
-                 return r;
-         }
- 
--        r = cg_attach_many_everywhere(u->manager->cgroup_supported, u->cgroup_path, s->pids);
-+        r = cg_attach_many_everywhere(u->manager->cgroup_supported, u->cgroup_path, UNIT(s)->pids);
-         if (r < 0)
-                 return r;
- 
--        set_free(s->pids);
--        s->pids = NULL;
--
-         s->result = SCOPE_SUCCESS;
- 
-         scope_set_state(s, SCOPE_RUNNING);
-@@ -288,13 +291,13 @@ static int scope_stop(Unit *u) {
-         Scope *s = SCOPE(u);
- 
-         assert(s);
--        assert(s->state == SCOPE_RUNNING);
- 
-         if (s->state == SCOPE_STOP_SIGTERM ||
-             s->state == SCOPE_STOP_SIGKILL)
-                 return 0;
- 
--        assert(s->state == SCOPE_RUNNING);
-+        assert(s->state == SCOPE_RUNNING ||
-+               s->state == SCOPE_ABANDONED);
- 
-         scope_enter_signal(s, SCOPE_STOP_SIGTERM, SCOPE_SUCCESS);
-         return 0;
-@@ -358,7 +361,7 @@ static bool scope_check_gc(Unit *u) {
-         /* Never clean up scopes that still have a process around,
-          * even if the scope is formally dead. */
- 
--        if (UNIT(s)->cgroup_path) {
-+        if (u->cgroup_path) {
-                 r = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, UNIT(s)->cgroup_path, true);
-                 if (r <= 0)
-                         return true;
-@@ -367,6 +370,33 @@ static bool scope_check_gc(Unit *u) {
-         return false;
- }
- 
-+static void scope_notify_cgroup_empty_event(Unit *u) {
-+        Scope *s = SCOPE(u);
-+
-+        assert(u);
-+
-+        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
-+
-+        if (s->state == SCOPE_RUNNING || s->state == SCOPE_ABANDONED ||
-+            s->state == SCOPE_STOP_SIGTERM || SCOPE_STOP_SIGKILL)
-+                scope_enter_dead(s, SCOPE_SUCCESS);
-+}
-+
-+static void scope_sigchld_event(Unit *u, pid_t pid, int code, int status) {
-+        /* If we get a SIGCHLD event for one of the processes we were
-+           interested in, then we look for others to watch, under the
-+           assumption that we'll sooner or later get a SIGCHLD for
-+           them, as the original process we watched was probably the
-+           parent of them, and they are hence now our children. */
-+
-+        unit_tidy_watch_pids(u, 0, 0);
-+        unit_watch_all_pids(u);
-+
-+        /* If the PID set is empty now, then let's finish this off */
-+        if (set_isempty(u->pids))
-+                scope_notify_cgroup_empty_event(u);
-+}
-+
- static void scope_timer_event(Unit *u, uint64_t elapsed, Watch*w) {
-         Scope *s = SCOPE(u);
- 
-@@ -397,24 +427,30 @@ static void scope_timer_event(Unit *u, uint64_t elapsed, Watch*w) {
-         }
- }
- 
--static void scope_notify_cgroup_empty_event(Unit *u) {
--        Scope *s = SCOPE(u);
--        assert(u);
-+int scope_abandon(Scope *s) {
-+        assert(s);
- 
--        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
-+        if (s->state != SCOPE_RUNNING && s->state != SCOPE_ABANDONED)
-+                return -ESTALE;
- 
--        switch (s->state) {
-+        free(s->controller);
-+        s->controller = NULL;
- 
--        case SCOPE_RUNNING:
--        case SCOPE_STOP_SIGTERM:
--        case SCOPE_STOP_SIGKILL:
--                scope_enter_dead(s, SCOPE_SUCCESS);
-+        /* The client is no longer watching the remaining processes,
-+         * so let's step in here, under the assumption that the
-+         * remaining processes will be sooner or later reassigned to
-+         * us as parent. */
- 
--                break;
-+        unit_tidy_watch_pids(UNIT(s), 0, 0);
-+        unit_watch_all_pids(UNIT(s));
- 
--        default:
--                ;
--        }
-+        /* If the PID set is empty now, then let's finish this off */
-+        if (set_isempty(UNIT(s)->pids))
-+                scope_notify_cgroup_empty_event(UNIT(s));
-+        else
-+                scope_set_state(s, SCOPE_ABANDONED);
-+
-+        return 0;
- }
- 
- _pure_ static UnitActiveState scope_active_state(Unit *u) {
-@@ -432,6 +468,7 @@ _pure_ static const char *scope_sub_state_to_string(Unit *u) {
- static const char* const scope_state_table[_SCOPE_STATE_MAX] = {
-         [SCOPE_DEAD] = "dead",
-         [SCOPE_RUNNING] = "running",
-+        [SCOPE_ABANDONED] = "abandoned",
-         [SCOPE_STOP_SIGTERM] = "stop-sigterm",
-         [SCOPE_STOP_SIGKILL] = "stop-sigkill",
-         [SCOPE_FAILED] = "failed",
-@@ -481,6 +518,8 @@ const UnitVTable scope_vtable = {
- 
-         .check_gc = scope_check_gc,
- 
-+        .sigchld_event = scope_sigchld_event,
-+
-         .timer_event = scope_timer_event,
- 
-         .reset_failed = scope_reset_failed,
-diff --git a/src/core/scope.h b/src/core/scope.h
-index b4bafa7..1e9f201 100644
---- a/src/core/scope.h
-+++ b/src/core/scope.h
-@@ -29,6 +29,7 @@ typedef struct Scope Scope;
- typedef enum ScopeState {
-         SCOPE_DEAD,
-         SCOPE_RUNNING,
-+        SCOPE_ABANDONED,
-         SCOPE_STOP_SIGTERM,
-         SCOPE_STOP_SIGKILL,
-         SCOPE_FAILED,
-@@ -57,13 +58,13 @@ struct Scope {
- 
-         char *controller;
- 
--        Set *pids;
--
-         Watch timer_watch;
- };
- 
- extern const UnitVTable scope_vtable;
- 
-+int scope_abandon(Scope *s);
-+
- const char* scope_state_to_string(ScopeState i) _const_;
- ScopeState scope_state_from_string(const char *s) _pure_;
- 
-diff --git a/src/core/service.c b/src/core/service.c
-index f0acda1..41e5cb5 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -1546,6 +1546,11 @@ static void service_set_state(Service *s, ServiceState state) {
-                 s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID;
-         }
- 
-+        if (state == SERVICE_DEAD ||
-+            state == SERVICE_FAILED ||
-+            state == SERVICE_AUTO_RESTART)
-+                unit_unwatch_all_pids(UNIT(s));
-+
-         if (state != SERVICE_START_PRE &&
-             state != SERVICE_START &&
-             state != SERVICE_START_POST &&
-@@ -1661,8 +1666,14 @@ static int service_coldplug(Unit *u) {
-                                         return r;
-                         }
- 
-+                if (s->deserialized_state != SERVICE_DEAD &&
-+                    s->deserialized_state != SERVICE_FAILED &&
-+                    s->deserialized_state != SERVICE_AUTO_RESTART)
-+                        unit_watch_all_pids(UNIT(s));
-+
-                 if (s->deserialized_state == SERVICE_START_POST ||
--                    s->deserialized_state == SERVICE_RUNNING)
-+                    s->deserialized_state == SERVICE_RUNNING ||
-+                    s->deserialized_state == SERVICE_RELOAD)
-                         service_handle_watchdog(s);
- 
-                 service_set_state(s, s->deserialized_state);
-@@ -1970,6 +1981,7 @@ static void service_enter_stop_post(Service *s, ServiceResult f) {
-                 s->result = f;
- 
-         service_unwatch_control_pid(s);
-+        unit_watch_all_pids(UNIT(s));
- 
-         s->control_command = s->exec_command[SERVICE_EXEC_STOP_POST];
-         if (s->control_command) {
-@@ -2010,6 +2022,8 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f
-         if (f != SERVICE_SUCCESS)
-                 s->result = f;
- 
-+        unit_watch_all_pids(UNIT(s));
-+
-         r = unit_kill_context(
-                         UNIT(s),
-                         &s->kill_context,
-@@ -2055,6 +2069,7 @@ static void service_enter_stop(Service *s, ServiceResult f) {
-                 s->result = f;
- 
-         service_unwatch_control_pid(s);
-+        unit_watch_all_pids(UNIT(s));
- 
-         s->control_command = s->exec_command[SERVICE_EXEC_STOP];
-         if (s->control_command) {
-@@ -2961,6 +2976,62 @@ fail:
-         service_enter_signal(s, SERVICE_STOP_SIGTERM, SERVICE_FAILURE_RESOURCES);
- }
- 
-+static void service_notify_cgroup_empty_event(Unit *u) {
-+        Service *s = SERVICE(u);
-+
-+        assert(u);
-+
-+        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
-+
-+        switch (s->state) {
-+
-+                /* Waiting for SIGCHLD is usually more interesting,
-+                 * because it includes return codes/signals. Which is
-+                 * why we ignore the cgroup events for most cases,
-+                 * except when we don't know pid which to expect the
-+                 * SIGCHLD for. */
-+
-+        case SERVICE_START:
-+        case SERVICE_START_POST:
-+                /* If we were hoping for the daemon to write its PID file,
-+                 * we can give up now. */
-+                if (s->pid_file_pathspec) {
-+                        log_warning_unit(u->id,
-+                                         "%s never wrote its PID file. Failing.", UNIT(s)->id);
-+                        service_unwatch_pid_file(s);
-+                        if (s->state == SERVICE_START)
-+                                service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_FAILURE_RESOURCES);
-+                        else
-+                                service_enter_stop(s, SERVICE_FAILURE_RESOURCES);
-+                }
-+                break;
-+
-+        case SERVICE_RUNNING:
-+                /* service_enter_running() will figure out what to do */
-+                service_enter_running(s, SERVICE_SUCCESS);
-+                break;
-+
-+        case SERVICE_STOP_SIGTERM:
-+        case SERVICE_STOP_SIGKILL:
-+
-+                if (main_pid_good(s) <= 0 && !control_pid_good(s))
-+                        service_enter_stop_post(s, SERVICE_SUCCESS);
-+
-+                break;
-+
-+        case SERVICE_STOP_POST:
-+        case SERVICE_FINAL_SIGTERM:
-+        case SERVICE_FINAL_SIGKILL:
-+                if (main_pid_good(s) <= 0 && !control_pid_good(s))
-+                        service_enter_dead(s, SERVICE_SUCCESS, true);
-+
-+                break;
-+
-+        default:
-+                ;
-+        }
-+}
-+
- static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
-         Service *s = SERVICE(u);
-         ServiceResult f;
-@@ -3229,6 +3300,18 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
- 
-         /* Notify clients about changed exit status */
-         unit_add_to_dbus_queue(u);
-+
-+        /* We got one SIGCHLD for the service, let's watch all
-+         * processes that are now running of the service, and watch
-+         * that. Among the PIDs we then watch will be children
-+         * reassigned to us, which hopefully allows us to identify
-+         * when all children are gone */
-+        unit_tidy_watch_pids(u, s->main_pid, s->control_pid);
-+        unit_watch_all_pids(u);
-+
-+        /* If the PID set is empty now, then let's finish this off */
-+        if (set_isempty(u->pids))
-+                service_notify_cgroup_empty_event(u);
- }
- 
- static void service_timer_event(Unit *u, uint64_t elapsed, Watch* w) {
-@@ -3332,61 +3415,6 @@ static void service_timer_event(Unit *u, uint64_t elapsed, Watch* w) {
-         }
- }
- 
--static void service_notify_cgroup_empty_event(Unit *u) {
--        Service *s = SERVICE(u);
--
--        assert(u);
--
--        log_debug_unit(u->id, "%s: cgroup is empty", u->id);
--
--        switch (s->state) {
--
--                /* Waiting for SIGCHLD is usually more interesting,
--                 * because it includes return codes/signals. Which is
--                 * why we ignore the cgroup events for most cases,
--                 * except when we don't know pid which to expect the
--                 * SIGCHLD for. */
--
--        case SERVICE_START:
--        case SERVICE_START_POST:
--                /* If we were hoping for the daemon to write its PID file,
--                 * we can give up now. */
--                if (s->pid_file_pathspec) {
--                        log_warning_unit(u->id,
--                                         "%s never wrote its PID file. Failing.", UNIT(s)->id);
--                        service_unwatch_pid_file(s);
--                        if (s->state == SERVICE_START)
--                                service_enter_signal(s, SERVICE_FINAL_SIGTERM, SERVICE_FAILURE_RESOURCES);
--                        else
--                                service_enter_stop(s, SERVICE_FAILURE_RESOURCES);
--                }
--                break;
--
--        case SERVICE_RUNNING:
--                /* service_enter_running() will figure out what to do */
--                service_enter_running(s, SERVICE_SUCCESS);
--                break;
--
--        case SERVICE_STOP_SIGTERM:
--        case SERVICE_STOP_SIGKILL:
--
--                if (main_pid_good(s) <= 0 && !control_pid_good(s))
--                        service_enter_stop_post(s, SERVICE_SUCCESS);
--
--                break;
--
--        case SERVICE_FINAL_SIGTERM:
--        case SERVICE_FINAL_SIGKILL:
--                if (main_pid_good(s) <= 0 && !control_pid_good(s))
--                        service_enter_dead(s, SERVICE_SUCCESS, true);
--
--                break;
--
--        default:
--                ;
--        }
--}
--
- static void service_notify_message(Unit *u, pid_t pid, char **tags) {
-         Service *s = SERVICE(u);
-         const char *e;
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 6c2c4a0..0332094 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -472,6 +472,8 @@ void unit_free(Unit *u) {
- 
-         set_free_free(u->names);
- 
-+        unit_unwatch_all_pids(u);
-+
-         condition_free_list(u->conditions);
- 
-         unit_ref_unset(&u->slice);
-@@ -1658,13 +1660,25 @@ void unit_unwatch_fd(Unit *u, Watch *w) {
- }
- 
- int unit_watch_pid(Unit *u, pid_t pid) {
-+        int q, r;
-+
-         assert(u);
-         assert(pid >= 1);
- 
-+        r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
-+        if (r < 0)
-+                return r;
-+
-         /* Watch a specific PID. We only support one unit watching
-          * each PID for now. */
- 
--        return hashmap_put(u->manager->watch_pids, LONG_TO_PTR(pid), u);
-+        r = set_put(u->pids, LONG_TO_PTR(pid));
-+
-+        q = hashmap_put(u->manager->watch_pids, LONG_TO_PTR(pid), u);
-+        if (q < 0)
-+                return q;
-+
-+        return r;
- }
- 
- void unit_unwatch_pid(Unit *u, pid_t pid) {
-@@ -1672,6 +1686,102 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
-         assert(pid >= 1);
- 
-         hashmap_remove_value(u->manager->watch_pids, LONG_TO_PTR(pid), u);
-+        set_remove(u->pids, LONG_TO_PTR(pid));
-+}
-+
-+static int watch_pids_in_path(Unit *u, const char *path) {
-+        _cleanup_closedir_ DIR *d = NULL;
-+        _cleanup_fclose_ FILE *f = NULL;
-+        int ret = 0, r;
-+
-+        assert(u);
-+        assert(path);
-+
-+        /* Adds all PIDs from a specific cgroup path to the set of PIDs we watch. */
-+
-+        r = cg_enumerate_processes(SYSTEMD_CGROUP_CONTROLLER, path, &f);
-+        if (r >= 0) {
-+                pid_t pid;
-+
-+                while ((r = cg_read_pid(f, &pid)) > 0) {
-+                        r = unit_watch_pid(u, pid);
-+                        if (r < 0 && ret >= 0)
-+                                ret = r;
-+                }
-+                if (r < 0 && ret >= 0)
-+                        ret = r;
-+
-+        } else if (ret >= 0)
-+                ret = r;
-+
-+        r = cg_enumerate_subgroups(SYSTEMD_CGROUP_CONTROLLER, path, &d);
-+        if (r >= 0) {
-+                char *fn;
-+
-+                while ((r = cg_read_subgroup(d, &fn)) > 0) {
-+                        _cleanup_free_ char *p = NULL;
-+
-+                        p = strjoin(path, "/", fn, NULL);
-+                        free(fn);
-+
-+                        if (!p)
-+                                return -ENOMEM;
-+
-+                        r = watch_pids_in_path(u, p);
-+                        if (r < 0 && ret >= 0)
-+                                ret = r;
-+                }
-+                if (r < 0 && ret >= 0)
-+                        ret = r;
-+
-+        } else if (ret >= 0)
-+                ret = r;
-+
-+        return ret;
-+}
-+
-+
-+int unit_watch_all_pids(Unit *u) {
-+        assert(u);
-+
-+        if (!u->cgroup_path)
-+                return -ENOENT;
-+
-+        /* Adds all PIDs from our cgroup to the set of PIDs we watch */
-+
-+        return watch_pids_in_path(u, u->cgroup_path);
-+}
-+
-+void unit_unwatch_all_pids(Unit *u) {
-+        Iterator i;
-+        void *e;
-+
-+        assert(u);
-+
-+        SET_FOREACH(e, u->pids, i)
-+                hashmap_remove_value(u->manager->watch_pids, e, u);
-+
-+        set_free(u->pids);
-+        u->pids = NULL;
-+}
-+
-+void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
-+        Iterator i;
-+        void *e;
-+
-+        assert(u);
-+
-+        /* Cleans dead PIDs from our list */
-+
-+        SET_FOREACH(e, u->pids, i) {
-+                pid_t pid = PTR_TO_LONG(e);
-+
-+                if (pid == except1 || pid == except2)
-+                        continue;
-+
-+                if (kill(pid, 0) < 0 && errno == ESRCH)
-+                        set_remove(u->pids, e);
-+        }
- }
- 
- int unit_watch_timer(Unit *u, clockid_t clock_id, bool relative, usec_t usec, Watch *w) {
-diff --git a/src/core/unit.h b/src/core/unit.h
-index 6dd750f..6dff25e 100644
---- a/src/core/unit.h
-+++ b/src/core/unit.h
-@@ -198,6 +198,11 @@ struct Unit {
-         /* CGroup realize members queue */
-         LIST_FIELDS(Unit, cgroup_queue);
- 
-+        /* PIDs we keep an eye on. Note that a unit might have many
-+         * more, but these are the ones we care enough about to
-+         * process SIGCHLD for */
-+        Set *pids;
-+
-         /* Used during GC sweeps */
-         unsigned gc_marker;
- 
-@@ -531,6 +536,10 @@ void unit_unwatch_fd(Unit *u, Watch *w);
- 
- int unit_watch_pid(Unit *u, pid_t pid);
- void unit_unwatch_pid(Unit *u, pid_t pid);
-+int unit_watch_all_pids(Unit *u);
-+void unit_unwatch_all_pids(Unit *u);
-+
-+void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2);
- 
- int unit_watch_timer(Unit *u, clockid_t, bool relative, usec_t usec, Watch *w);
- void unit_unwatch_timer(Unit *u, Watch *w);
diff --git a/SOURCES/0206-tmpfiles-don-t-fail-if-we-cannot-create-a-subvolume-.patch b/SOURCES/0206-tmpfiles-don-t-fail-if-we-cannot-create-a-subvolume-.patch
new file mode 100644
index 0000000..84c89b6
--- /dev/null
+++ b/SOURCES/0206-tmpfiles-don-t-fail-if-we-cannot-create-a-subvolume-.patch
@@ -0,0 +1,51 @@
+From e2550d725cf94c01dee40f5f02ad242ee8e02072 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Fri, 15 May 2015 21:47:22 +0200
+Subject: [PATCH] tmpfiles: don't fail if we cannot create a subvolume because
+ a file system is read-only but a dir already exists anyway
+
+https://bugs.freedesktop.org/show_bug.cgi?id=90281
+(cherry picked from commit 7b135a73999b6911ebb85c053b6f7701fdac1883)
+
+Cherry-picked from: 7b135a7
+Resolves: #1222517
+---
+ src/tmpfiles/tmpfiles.c | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
+index 73a9c9d..d0e6567 100644
+--- a/src/tmpfiles/tmpfiles.c
++++ b/src/tmpfiles/tmpfiles.c
+@@ -1002,20 +1002,25 @@ static int create_item(Item *i) {
+                                 r = mkdir_label(i->path, i->mode);
+ 
+                 if (r < 0) {
+-                        if (r != -EEXIST)
+-                                return log_error_errno(r, "Failed to create directory or subvolume \"%s\": %m", i->path);
++                        int k;
+ 
+-                        if (stat(i->path, &st) < 0)
+-                                return log_error_errno(errno, "stat(%s) failed: %m", i->path);
++                        if (r != -EEXIST && r != -EROFS)
++                                return log_error_errno(r, "Failed to create directory or subvolume \"%s\": %m", i->path);
+ 
+-                        if (!S_ISDIR(st.st_mode)) {
+-                                log_debug("\"%s\" already exists and is not a directory.", i->path);
++                        k = is_dir(i->path, false);
++                        if (k == -ENOENT && r == -EROFS)
++                                return log_error_errno(r, "%s does not exist and cannot be created as the file system is read-only.", i->path);
++                        if (k < 0)
++                                return log_error_errno(k, "Failed to check if %s exists: %m", i->path);
++                        if (!k) {
++                                log_warning("\"%s\" already exists and is not a directory.", i->path);
+                                 return 0;
+                         }
+ 
+                         creation = CREATION_EXISTING;
+                 } else
+                         creation = CREATION_NORMAL;
++
+                 log_debug("%s directory \"%s\".", creation_mode_verb_to_string(creation), i->path);
+ 
+                 r = path_set_perms(i, i->path);
diff --git a/SOURCES/0207-logind-rework-session-shutdown-logic.patch b/SOURCES/0207-logind-rework-session-shutdown-logic.patch
deleted file mode 100644
index b9387e2..0000000
--- a/SOURCES/0207-logind-rework-session-shutdown-logic.patch
+++ /dev/null
@@ -1,597 +0,0 @@
-From 553a962a570cade5c44953593209d25e28ec5145 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 3 Mar 2014 15:37:49 +0100
-Subject: [PATCH] logind: rework session shutdown logic
-
-Simplify the shutdown logic a bit:
-
-- Keep the session FIFO around in the PAM module, even after the session
-  shutdown hook has been finished. This allows logind to track precisely
-  when the PAM handler goes away.
-
-- In the ReleaseSession() call start a timer, that will stop terminate
-  the session when elapsed.
-
-- Never fiddle with the KillMode of scopes to configure whether user
-  processes should be killed or not. Instead, simply leave the scope
-  units around when we terminate a session whose processes should not be
-  killed.
-
-- When killing is enabled, stop the session scope on FIFO EOF or after
-  the ReleaseSession() timeout. When killing is disabled, simply tell
-  PID 1 to abandon the scope.
-
-Because the scopes stay around and hence all processes are always member
-of a scope, the system shutdown logic should be more robust, as the
-scopes can be shutdown as part of the usual shutdown logic.
-
-Based-on: 5f41d1f10fd97e93517b6a762b1bec247f4d1171
----
- src/login/logind-dbus.c    |  51 +++++++++++-------
- src/login/logind-session.c | 130 +++++++++++++++++++++++++++++++++++----------
- src/login/logind-session.h |   4 ++
- src/login/logind-user.c    |  23 +++++---
- src/login/logind-user.h    |   1 +
- src/login/logind.c         |  23 ++++++--
- src/login/logind.h         |   4 +-
- src/login/pam-module.c     |  11 ++--
- 8 files changed, 182 insertions(+), 65 deletions(-)
-
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index 69e94aa..8de301e 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -1747,13 +1747,7 @@ static DBusHandlerResult manager_message_handler(
-                 if (!session)
-                         return bus_send_error_reply(connection, message, &error, -ENOENT);
- 
--                /* We use the FIFO to detect stray sessions where the
--                process invoking PAM dies abnormally. We need to make
--                sure that that process is not killed if at the clean
--                end of the session it closes the FIFO. Hence, with
--                this call explicitly turn off the FIFO logic, so that
--                the PAM code can finish clean up on its own */
--                session_remove_fifo(session);
-+                session_release(session);
- 
-                 reply = dbus_message_new_method_return(message);
-                 if (!reply)
-@@ -2551,7 +2545,6 @@ int manager_start_scope(
-                 const char *slice,
-                 const char *description,
-                 const char *after,
--                const char *kill_mode,
-                 DBusError *error,
-                 char **job) {
- 
-@@ -2623,18 +2616,6 @@ int manager_start_scope(
-                         return log_oom();
-         }
- 
--        if (!isempty(kill_mode)) {
--                const char *kill_mode_property = "KillMode";
--
--                if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
--                    !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &kill_mode_property) ||
--                    !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "s", &sub3) ||
--                    !dbus_message_iter_append_basic(&sub3, DBUS_TYPE_STRING, &kill_mode) ||
--                    !dbus_message_iter_close_container(&sub2, &sub3) ||
--                    !dbus_message_iter_close_container(&sub, &sub2))
--                        return log_oom();
--        }
--
-         /* cgroup empty notification is not available in containers
-          * currently. To make this less problematic, let's shorten the
-          * stop timeout for sessions, so that we don't wait
-@@ -2793,6 +2774,36 @@ int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char
-         return 1;
- }
- 
-+int manager_abandon_scope(Manager *manager, const char *scope, DBusError *error) {
-+        _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
-+        _cleanup_free_ char *path = NULL;
-+        int r;
-+
-+        assert(manager);
-+        assert(scope);
-+
-+        path = unit_dbus_path_from_name(scope);
-+        if (!path)
-+                return -ENOMEM;
-+
-+        r = bus_method_call_with_reply(
-+                manager->bus,
-+                "org.freedesktop.systemd1",
-+                path,
-+                "org.freedesktop.systemd1.Scope",
-+                "Abandon",
-+                &reply,
-+                error,
-+                DBUS_TYPE_INVALID);
-+
-+        if (r < 0) {
-+                log_error("Failed to abandon scope %s", scope);
-+                return r;
-+        }
-+
-+        return 1;
-+}
-+
- int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo, DBusError *error) {
-         _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
-         const char *w;
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index 27aa335..78e6d74 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -24,6 +24,7 @@
- #include <unistd.h>
- #include <sys/epoll.h>
- #include <fcntl.h>
-+#include <sys/timerfd.h>
- 
- #include <systemd/sd-id128.h>
- #include <systemd/sd-messages.h>
-@@ -36,6 +37,8 @@
- #include "dbus-common.h"
- #include "logind-session.h"
- 
-+#define RELEASE_SEC 20
-+
- static unsigned devt_hash_func(const void *p) {
-         uint64_t u = *(const dev_t*)p;
- 
-@@ -505,7 +508,6 @@ static int session_start_scope(Session *s) {
- 
-         if (!s->scope) {
-                 _cleanup_free_ char *description = NULL;
--                const char *kill_mode;
-                 char *scope, *job;
- 
-                 description = strjoin("Session ", s->id, " of user ", s->user->name, NULL);
-@@ -516,9 +518,7 @@ static int session_start_scope(Session *s) {
-                 if (!scope)
-                         return log_oom();
- 
--                kill_mode = manager_shall_kill(s->manager, s->user->name) ? "control-group" : "none";
--
--                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-user-sessions.service", kill_mode, &error, &job);
-+                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", &error, &job);
-                 if (r < 0) {
-                         log_error("Failed to start session scope %s: %s %s",
-                                   scope, bus_error(&error, r), error.name);
-@@ -579,23 +579,22 @@ int session_start(Session *s) {
- 
-         s->started = true;
- 
--        /* Save session data */
-+        /* Save data */
-         session_save(s);
-         user_save(s->user);
-+        if (s->seat)
-+                seat_save(s->seat);
- 
-+        /* Send signals */
-         session_send_signal(s, true);
- 
-         if (s->seat) {
--                seat_save(s->seat);
--
-                 if (s->seat->active == s)
-                         seat_send_changed(s->seat, "Sessions\0ActiveSession\0");
-                 else
-                         seat_send_changed(s->seat, "Sessions\0");
-         }
- 
--        user_send_changed(s->user, "Sessions\0");
--
-         return 0;
- }
- 
-@@ -611,15 +610,24 @@ static int session_stop_scope(Session *s) {
-         if (!s->scope)
-                 return 0;
- 
--        r = manager_stop_unit(s->manager, s->scope, &error, &job);
--        if (r < 0) {
--                log_error("Failed to stop session scope: %s", bus_error(&error, r));
--                dbus_error_free(&error);
--                return r;
--        }
-+        if (manager_shall_kill(s->manager, s->user->name)) {
-+                r = manager_stop_unit(s->manager, s->scope, &error, &job);
-+                if (r < 0) {
-+                        log_error("Failed to stop session scope: %s", bus_error(&error, r));
-+                        dbus_error_free(&error);
-+                        return r;
-+                }
- 
--        free(s->scope_job);
--        s->scope_job = job;
-+                free(s->scope_job);
-+                s->scope_job = job;
-+        } else {
-+                r = manager_abandon_scope(s->manager, s->scope, &error);
-+                if (r < 0) {
-+                        log_error("Failed to abandon session scope: %s", bus_error(&error, r));
-+                        dbus_error_free(&error);
-+                        return r;
-+                }
-+        }
- 
-         return 0;
- }
-@@ -644,6 +652,19 @@ static int session_unlink_x11_socket(Session *s) {
-         return r < 0 ? -errno : 0;
- }
- 
-+static void session_close_timer_fd(Session *s) {
-+        assert(s);
-+
-+        if (s->timer_fd <= 0)
-+                return;
-+
-+        hashmap_remove(s->manager->timer_fds, INT_TO_PTR(s->timer_fd + 1));
-+        epoll_ctl(s->manager->epoll_fd, EPOLL_CTL_DEL, s->timer_fd, NULL);
-+
-+        close_nointr(s->timer_fd);
-+        s->timer_fd = -1;
-+}
-+
- int session_stop(Session *s) {
-         int r;
- 
-@@ -652,11 +673,18 @@ int session_stop(Session *s) {
-         if (!s->user)
-                 return -ESTALE;
- 
-+        session_close_timer_fd(s);
-+
-+        /* We are going down, don't care about FIFOs anymore */
-+        session_remove_fifo(s);
-+
-         /* Kill cgroup */
-         r = session_stop_scope(s);
- 
-         session_save(s);
- 
-+        s->stopping = true;
-+
-         return r;
- }
- 
-@@ -678,6 +706,8 @@ int session_finalize(Session *s) {
-                            "MESSAGE=Removed session %s.", s->id,
-                            NULL);
- 
-+        session_close_timer_fd(s);
-+
-         /* Kill session devices */
-         while ((sd = hashmap_first(s->devices)))
-                 session_device_free(sd);
-@@ -698,16 +728,64 @@ int session_finalize(Session *s) {
-                 if (s->seat->active == s)
-                         seat_set_active(s->seat, NULL);
- 
--                seat_send_changed(s->seat, "Sessions\0");
-                 seat_save(s->seat);
-+                seat_send_changed(s->seat, "Sessions\0");
-         }
- 
--        user_send_changed(s->user, "Sessions\0");
-         user_save(s->user);
-+        user_send_changed(s->user, "Sessions\0");
- 
-         return r;
- }
- 
-+void session_release(Session *s) {
-+        int r;
-+
-+        struct itimerspec its = { .it_value.tv_sec = RELEASE_SEC };
-+        struct epoll_event ev = {};
-+
-+        assert(s);
-+
-+        if (!s->started || s->stopping)
-+                return;
-+
-+        if (s->timer_fd >= 0)
-+                return;
-+
-+        s->timer_fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC);
-+        if (s->timer_fd < 0) {
-+                log_error("Failed to create session release timer fd");
-+                goto out;
-+        }
-+
-+        r = hashmap_put(s->manager->timer_fds, INT_TO_PTR(s->timer_fd + 1), s);
-+        if (r < 0) {
-+                log_error("Failed to store session release timer fd");
-+                goto out;
-+        }
-+
-+        ev.events = EPOLLONESHOT;
-+        ev.data.u32 = FD_OTHER_BASE + s->timer_fd;
-+
-+        r = epoll_ctl(s->manager->epoll_fd, EPOLL_CTL_ADD, s->timer_fd, &ev);
-+        if (r < 0) {
-+                log_error("Failed to add session release timer fd to epoll instance");
-+                goto out;
-+        }
-+
-+        r = timerfd_settime(s->timer_fd, TFD_TIMER_ABSTIME, &its, NULL);
-+        if (r < 0) {
-+                log_error("Failed to arm timer : %m");
-+                goto out;
-+        }
-+
-+out:
-+        if (s->timer_fd >= 0) {
-+                close_nointr(s->timer_fd);
-+                s->timer_fd = -1;
-+        }
-+}
-+
- bool session_is_active(Session *s) {
-         assert(s);
- 
-@@ -904,8 +982,6 @@ void session_remove_fifo(Session *s) {
- }
- 
- int session_check_gc(Session *s, bool drop_not_started) {
--        int r;
--
-         assert(s);
- 
-         if (drop_not_started && !s->started)
-@@ -915,11 +991,7 @@ int session_check_gc(Session *s, bool drop_not_started) {
-                 return 0;
- 
-         if (s->fifo_fd >= 0) {
--                r = pipe_eof(s->fifo_fd);
--                if (r < 0)
--                        return r;
--
--                if (r == 0)
-+                if (pipe_eof(s->fifo_fd) <= 0)
-                         return 1;
-         }
- 
-@@ -945,15 +1017,15 @@ void session_add_to_gc_queue(Session *s) {
- SessionState session_get_state(Session *s) {
-         assert(s);
- 
-+        if (s->stopping || s->timer_fd >= 0)
-+                return SESSION_CLOSING;
-+
-         if (s->closing)
-                 return SESSION_CLOSING;
- 
-         if (s->scope_job)
-                 return SESSION_OPENING;
- 
--        if (s->fifo_fd < 0)
--                return SESSION_CLOSING;
--
-         if (session_is_active(s))
-                 return SESSION_ACTIVE;
- 
-diff --git a/src/login/logind-session.h b/src/login/logind-session.h
-index f175a89..9b76582 100644
---- a/src/login/logind-session.h
-+++ b/src/login/logind-session.h
-@@ -98,11 +98,14 @@ struct Session {
-         int fifo_fd;
-         char *fifo_path;
- 
-+        int timer_fd;
-+
-         bool idle_hint;
-         dual_timestamp idle_hint_timestamp;
- 
-         bool in_gc_queue:1;
-         bool started:1;
-+        bool stopping:1;
-         bool closing:1;
- 
-         DBusMessage *create_message;
-@@ -130,6 +133,7 @@ void session_remove_fifo(Session *s);
- int session_start(Session *s);
- int session_stop(Session *s);
- int session_finalize(Session *s);
-+void session_release(Session *s);
- int session_save(Session *s);
- int session_load(Session *s);
- int session_kill(Session *s, KillWho who, int signo);
-diff --git a/src/login/logind-user.c b/src/login/logind-user.c
-index 8e7256b..653574e 100644
---- a/src/login/logind-user.c
-+++ b/src/login/logind-user.c
-@@ -487,6 +487,8 @@ int user_stop(User *u) {
-         if (k < 0)
-                 r = k;
- 
-+        u->stopping = true;
-+
-         user_save(u);
- 
-         return r;
-@@ -602,22 +604,27 @@ void user_add_to_gc_queue(User *u) {
- 
- UserState user_get_state(User *u) {
-         Session *i;
--        bool all_closing = true;
- 
-         assert(u);
- 
-+        if (u->stopping)
-+                return USER_CLOSING;
-+
-         if (u->slice_job || u->service_job)
-                 return USER_OPENING;
- 
--        LIST_FOREACH(sessions_by_user, i, u->sessions) {
--                if (session_is_active(i))
--                        return USER_ACTIVE;
--                if (session_get_state(i) != SESSION_CLOSING)
--                        all_closing = false;
--        }
-+        if (u->sessions) {
-+                bool all_closing = true;
-+
-+                LIST_FOREACH(sessions_by_user, i, u->sessions) {
-+                        if (session_is_active(i))
-+                                return USER_ACTIVE;
-+                        if (session_get_state(i) != SESSION_CLOSING)
-+                                all_closing = false;
-+                }
- 
--        if (u->sessions)
-                 return all_closing ? USER_CLOSING : USER_ONLINE;
-+        }
- 
-         if (user_check_linger_file(u) > 0)
-                 return USER_LINGERING;
-diff --git a/src/login/logind-user.h b/src/login/logind-user.h
-index a36f456..a12532e 100644
---- a/src/login/logind-user.h
-+++ b/src/login/logind-user.h
-@@ -61,6 +61,7 @@ struct User {
- 
-         bool in_gc_queue:1;
-         bool started:1;
-+        bool stopping:1;
- 
-         LIST_HEAD(Session, sessions);
-         LIST_FIELDS(User, gc_queue);
-diff --git a/src/login/logind.c b/src/login/logind.c
-index 0628032..5180be7 100644
---- a/src/login/logind.c
-+++ b/src/login/logind.c
-@@ -80,10 +80,11 @@ Manager *manager_new(void) {
-         m->session_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
-         m->inhibitor_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
-         m->button_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
-+        m->timer_fds = hashmap_new(trivial_hash_func, trivial_compare_func);
- 
-         if (!m->devices || !m->seats || !m->sessions || !m->users || !m->inhibitors || !m->buttons || !m->busnames ||
-             !m->user_units || !m->session_units ||
--            !m->session_fds || !m->inhibitor_fds || !m->button_fds) {
-+            !m->session_fds || !m->inhibitor_fds || !m->button_fds || !m->timer_fds) {
-                 manager_free(m);
-                 return NULL;
-         }
-@@ -149,6 +150,7 @@ void manager_free(Manager *m) {
-         hashmap_free(m->session_fds);
-         hashmap_free(m->inhibitor_fds);
-         hashmap_free(m->button_fds);
-+        hashmap_free(m->timer_fds);
- 
-         if (m->console_active_fd >= 0)
-                 close_nointr_nofail(m->console_active_fd);
-@@ -620,6 +622,13 @@ static void manager_dispatch_other(Manager *m, int fd) {
-                 return;
-         }
- 
-+        s = hashmap_get(m->timer_fds, INT_TO_PTR(fd + 1));
-+        if (s) {
-+                assert(s->timer_fd == fd);
-+                session_stop(s);
-+                return;
-+        }
-+
-         i = hashmap_get(m->inhibitor_fds, INT_TO_PTR(fd + 1));
-         if (i) {
-                 assert(i->fifo_fd == fd);
-@@ -942,8 +951,12 @@ void manager_gc(Manager *m, bool drop_not_started) {
-                 LIST_REMOVE(Session, gc_queue, m->session_gc_queue, session);
-                 session->in_gc_queue = false;
- 
--                if (session_check_gc(session, drop_not_started) == 0) {
-+                /* First, if we are not closing yet, initiate stopping */
-+                if (!session_check_gc(session, drop_not_started) &&
-+                    session_get_state(session) != SESSION_CLOSING)
-                         session_stop(session);
-+
-+                if (!session_check_gc(session, drop_not_started)) {
-                         session_finalize(session);
-                         session_free(session);
-                 }
-@@ -953,8 +966,11 @@ void manager_gc(Manager *m, bool drop_not_started) {
-                 LIST_REMOVE(User, gc_queue, m->user_gc_queue, user);
-                 user->in_gc_queue = false;
- 
--                if (user_check_gc(user, drop_not_started) == 0) {
-+                if (!user_check_gc(user, drop_not_started) &&
-+                    user_get_state(user) != USER_CLOSING)
-                         user_stop(user);
-+
-+                if (!user_check_gc(user, drop_not_started)) {
-                         user_finalize(user);
-                         user_free(user);
-                 }
-@@ -1032,6 +1048,7 @@ finish:
- 
-         return r;
- }
-+
- int manager_startup(Manager *m) {
-         int r;
-         Seat *seat;
-diff --git a/src/login/logind.h b/src/login/logind.h
-index 9e6296c..0d2248f 100644
---- a/src/login/logind.h
-+++ b/src/login/logind.h
-@@ -88,6 +88,7 @@ struct Manager {
-         Hashmap *session_fds;
-         Hashmap *inhibitor_fds;
-         Hashmap *button_fds;
-+        Hashmap *timer_fds;
- 
-         usec_t inhibit_delay_max;
- 
-@@ -183,9 +184,10 @@ int manager_send_changed(Manager *manager, const char *properties);
- 
- int manager_dispatch_delayed(Manager *manager);
- 
--int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, const char *kill_mode, DBusError *error, char **job);
-+int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, DBusError *error, char **job);
- int manager_start_unit(Manager *manager, const char *unit, DBusError *error, char **job);
- int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char **job);
-+int manager_abandon_scope(Manager *manager, const char *scope, DBusError *error);
- int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo, DBusError *error);
- int manager_unit_is_active(Manager *manager, const char *unit);
- 
-diff --git a/src/login/pam-module.c b/src/login/pam-module.c
-index 22d9733..7bd4783 100644
---- a/src/login/pam-module.c
-+++ b/src/login/pam-module.c
-@@ -478,7 +478,7 @@ _public_ PAM_EXTERN int pam_sm_close_session(
-                 int flags,
-                 int argc, const char **argv) {
- 
--        const void *p = NULL, *existing = NULL;
-+        const void *existing = NULL;
-         const char *id;
-         DBusConnection *bus = NULL;
-         DBusMessage *m = NULL, *reply = NULL;
-@@ -535,12 +535,15 @@ _public_ PAM_EXTERN int pam_sm_close_session(
-                 }
-         }
- 
-+
-+        /* Note that we are knowingly leaking the FIFO fd here. This
-+         * way, logind can watch us die. If we closed it here it would
-+         * not have any clue when that is completed. Given that one
-+         * cannot really have multiple PAM sessions open from the same
-+         * process this means we will leak one FD at max. */
-         r = PAM_SUCCESS;
- 
- finish:
--        pam_get_data(handle, "systemd.session-fd", &p);
--        if (p)
--                close_nointr(PTR_TO_INT(p) - 1);
- 
-         dbus_error_free(&error);
- 
diff --git a/SOURCES/0207-resolved-fix-crash-when-shutting-down.patch b/SOURCES/0207-resolved-fix-crash-when-shutting-down.patch
new file mode 100644
index 0000000..c635021
--- /dev/null
+++ b/SOURCES/0207-resolved-fix-crash-when-shutting-down.patch
@@ -0,0 +1,148 @@
+From c724e008771aaaed70f909cb28fdcab1c9244d22 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 18 May 2015 23:23:17 +0200
+Subject: [PATCH] resolved: fix crash when shutting down
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Reported by Cristian Rodríguez
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-May/031626.html
+(cherry picked from commit cab5b05903096e1c9cf5575ccc73f89d15c8db69)
+
+Cherry-picked from: cab5b05
+Resolves: #1222517
+---
+ src/resolve/resolved-dns-cache.c  |  4 +---
+ src/resolve/resolved-dns-server.c | 15 ++++++++-------
+ src/resolve/resolved-link.c       |  6 +++---
+ src/resolve/resolved-manager.c    |  4 ++--
+ src/shared/prioq.c                |  6 ++++--
+ src/shared/prioq.h                |  2 +-
+ 6 files changed, 19 insertions(+), 18 deletions(-)
+
+diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c
+index 33ca4d1..874207c 100644
+--- a/src/resolve/resolved-dns-cache.c
++++ b/src/resolve/resolved-dns-cache.c
+@@ -93,9 +93,7 @@ void dns_cache_flush(DnsCache *c) {
+ 
+         hashmap_free(c->by_key);
+         c->by_key = NULL;
+-
+-        prioq_free(c->by_expiry);
+-        c->by_expiry = NULL;
++        c->by_expiry = prioq_free(c->by_expiry);
+ }
+ 
+ static void dns_cache_remove(DnsCache *c, DnsResourceKey *key) {
+diff --git a/src/resolve/resolved-dns-server.c b/src/resolve/resolved-dns-server.c
+index caf06fe..9a62a63 100644
+--- a/src/resolve/resolved-dns-server.c
++++ b/src/resolve/resolved-dns-server.c
+@@ -78,23 +78,24 @@ DnsServer* dns_server_free(DnsServer *s)  {
+         if (!s)
+                 return NULL;
+ 
+-        if (s->manager) {
++        if (s->link) {
+                 if (s->type == DNS_SERVER_LINK)
+                         LIST_REMOVE(servers, s->link->dns_servers, s);
+-                else if (s->type == DNS_SERVER_SYSTEM)
++
++                if (s->link->current_dns_server == s)
++                        link_set_dns_server(s->link, NULL);
++        }
++
++        if (s->manager) {
++                if (s->type == DNS_SERVER_SYSTEM)
+                         LIST_REMOVE(servers, s->manager->dns_servers, s);
+                 else if (s->type == DNS_SERVER_FALLBACK)
+                         LIST_REMOVE(servers, s->manager->fallback_dns_servers, s);
+-                else
+-                        assert_not_reached("Unknown server type");
+ 
+                 if (s->manager->current_dns_server == s)
+                         manager_set_dns_server(s->manager, NULL);
+         }
+ 
+-        if (s->link && s->link->current_dns_server == s)
+-                link_set_dns_server(s->link, NULL);
+-
+         free(s);
+ 
+         return NULL;
+diff --git a/src/resolve/resolved-link.c b/src/resolve/resolved-link.c
+index f94e4bb..27d9129 100644
+--- a/src/resolve/resolved-link.c
++++ b/src/resolve/resolved-link.c
+@@ -68,13 +68,13 @@ Link *link_free(Link *l) {
+         if (l->manager)
+                 hashmap_remove(l->manager->links, INT_TO_PTR(l->ifindex));
+ 
++        while (l->dns_servers)
++                dns_server_free(l->dns_servers);
++
+         dns_scope_free(l->unicast_scope);
+         dns_scope_free(l->llmnr_ipv4_scope);
+         dns_scope_free(l->llmnr_ipv6_scope);
+ 
+-        while (l->dns_servers)
+-                dns_server_free(l->dns_servers);
+-
+         free(l);
+         return NULL;
+ }
+diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
+index b5ad701..7c253aa 100644
+--- a/src/resolve/resolved-manager.c
++++ b/src/resolve/resolved-manager.c
+@@ -536,11 +536,11 @@ Manager *manager_free(Manager *m) {
+         while (m->dns_queries)
+                 dns_query_free(m->dns_queries);
+ 
+-        dns_scope_free(m->unicast_scope);
+-
+         manager_flush_dns_servers(m, DNS_SERVER_SYSTEM);
+         manager_flush_dns_servers(m, DNS_SERVER_FALLBACK);
+ 
++        dns_scope_free(m->unicast_scope);
++
+         hashmap_free(m->links);
+         hashmap_free(m->dns_transactions);
+ 
+diff --git a/src/shared/prioq.c b/src/shared/prioq.c
+index 8af4c51..b89888b 100644
+--- a/src/shared/prioq.c
++++ b/src/shared/prioq.c
+@@ -45,12 +45,14 @@ Prioq *prioq_new(compare_func_t compare_func) {
+         return q;
+ }
+ 
+-void prioq_free(Prioq *q) {
++Prioq* prioq_free(Prioq *q) {
+         if (!q)
+-                return;
++                return NULL;
+ 
+         free(q->items);
+         free(q);
++
++        return NULL;
+ }
+ 
+ int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func) {
+diff --git a/src/shared/prioq.h b/src/shared/prioq.h
+index d836b36..1c044b1 100644
+--- a/src/shared/prioq.h
++++ b/src/shared/prioq.h
+@@ -28,7 +28,7 @@ typedef struct Prioq Prioq;
+ #define PRIOQ_IDX_NULL ((unsigned) -1)
+ 
+ Prioq *prioq_new(compare_func_t compare);
+-void prioq_free(Prioq *q);
++Prioq *prioq_free(Prioq *q);
+ int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func);
+ 
+ int prioq_put(Prioq *q, void *data, unsigned *idx);
diff --git a/SOURCES/0208-logind-order-all-scopes-after-both-systemd-logind.se.patch b/SOURCES/0208-logind-order-all-scopes-after-both-systemd-logind.se.patch
deleted file mode 100644
index 53803da..0000000
--- a/SOURCES/0208-logind-order-all-scopes-after-both-systemd-logind.se.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 10c5a4fec72a42369af812769802be974af3a012 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 3 Mar 2014 16:07:39 +0100
-Subject: [PATCH] logind: order all scopes after both systemd-logind.service
- and systemd-user-sessions.service
-
-This way at shutdown we can be sure that the sessions go away before the
-network.
-
-Based-on: ba4c5d93b73ef7bba0ae0c6bf2b36a42360f7a34
----
- src/login/logind-dbus.c    | 17 ++++++++++++++---
- src/login/logind-session.c |  2 +-
- src/login/logind.h         |  2 +-
- 3 files changed, 16 insertions(+), 5 deletions(-)
-
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index 8de301e..a68e9b4 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -2545,10 +2545,11 @@ int manager_start_scope(
-                 const char *slice,
-                 const char *description,
-                 const char *after,
-+                const char *after2,
-                 DBusError *error,
-                 char **job) {
- 
--        const char *timeout_stop_property = "TimeoutStopUSec", *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs";
-+        const char *timeout_stop_property = "TimeoutStopUSec", *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs", *after_property = "After";
-         _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL;
-         DBusMessageIter iter, sub, sub2, sub3, sub4;
-         uint64_t timeout = 500 * USEC_PER_MSEC;
-@@ -2603,8 +2604,6 @@ int manager_start_scope(
-         }
- 
-         if (!isempty(after)) {
--                const char *after_property = "After";
--
-                 if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
-                     !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &after_property) ||
-                     !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "as", &sub3) ||
-@@ -2616,6 +2615,18 @@ int manager_start_scope(
-                         return log_oom();
-         }
- 
-+        if (!isempty(after2)) {
-+                if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
-+                    !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &after_property) ||
-+                    !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "as", &sub3) ||
-+                    !dbus_message_iter_open_container(&sub3, DBUS_TYPE_ARRAY, "s", &sub4) ||
-+                    !dbus_message_iter_append_basic(&sub4, DBUS_TYPE_STRING, &after2) ||
-+                    !dbus_message_iter_close_container(&sub3, &sub4) ||
-+                    !dbus_message_iter_close_container(&sub2, &sub3) ||
-+                    !dbus_message_iter_close_container(&sub, &sub2))
-+                        return log_oom();
-+        }
-+
-         /* cgroup empty notification is not available in containers
-          * currently. To make this less problematic, let's shorten the
-          * stop timeout for sessions, so that we don't wait
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index 78e6d74..2bac0a2 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -518,7 +518,7 @@ static int session_start_scope(Session *s) {
-                 if (!scope)
-                         return log_oom();
- 
--                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", &error, &job);
-+                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-session.service", &error, &job);
-                 if (r < 0) {
-                         log_error("Failed to start session scope %s: %s %s",
-                                   scope, bus_error(&error, r), error.name);
-diff --git a/src/login/logind.h b/src/login/logind.h
-index 0d2248f..540572f 100644
---- a/src/login/logind.h
-+++ b/src/login/logind.h
-@@ -184,7 +184,7 @@ int manager_send_changed(Manager *manager, const char *properties);
- 
- int manager_dispatch_delayed(Manager *manager);
- 
--int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, DBusError *error, char **job);
-+int manager_start_scope(Manager *manager, const char *scope, pid_t pid, const char *slice, const char *description, const char *after, const char *after2, DBusError *error, char **job);
- int manager_start_unit(Manager *manager, const char *unit, DBusError *error, char **job);
- int manager_stop_unit(Manager *manager, const char *unit, DBusError *error, char **job);
- int manager_abandon_scope(Manager *manager, const char *scope, DBusError *error);
diff --git a/SOURCES/0208-resolved-allow-DnsAnswer-objects-with-no-space-for-R.patch b/SOURCES/0208-resolved-allow-DnsAnswer-objects-with-no-space-for-R.patch
new file mode 100644
index 0000000..64d5902
--- /dev/null
+++ b/SOURCES/0208-resolved-allow-DnsAnswer-objects-with-no-space-for-R.patch
@@ -0,0 +1,30 @@
+From d5b06145261637bcb69c1a213874cce10918a189 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Mon, 18 May 2015 23:38:47 +0200
+Subject: [PATCH] resolved: allow DnsAnswer objects with no space for RRs
+
+They might be created as result of merged answer sets, hence accept
+them.
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-April/030834.html
+(cherry picked from commit 084cea6cee1471d81e078bea4e7ee5f50a5dc009)
+
+Cherry-picked from: 084cea6
+Resolves: #1222517
+---
+ src/resolve/resolved-dns-answer.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/resolve/resolved-dns-answer.c b/src/resolve/resolved-dns-answer.c
+index 7c4ab18..e08eb66 100644
+--- a/src/resolve/resolved-dns-answer.c
++++ b/src/resolve/resolved-dns-answer.c
+@@ -25,8 +25,6 @@
+ DnsAnswer *dns_answer_new(unsigned n) {
+         DnsAnswer *a;
+ 
+-        assert(n > 0);
+-
+         a = malloc0(offsetof(DnsAnswer, rrs) + sizeof(DnsResourceRecord*) * n);
+         if (!a)
+                 return NULL;
diff --git a/SOURCES/0209-id128-add-new-sd_id128_is_null-call.patch b/SOURCES/0209-id128-add-new-sd_id128_is_null-call.patch
new file mode 100644
index 0000000..1801a9a
--- /dev/null
+++ b/SOURCES/0209-id128-add-new-sd_id128_is_null-call.patch
@@ -0,0 +1,28 @@
+From 69c2ae8ed9bb861a0bc47ce553b1749390009036 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 24 Feb 2015 00:10:35 +0100
+Subject: [PATCH] id128: add new sd_id128_is_null() call
+
+(cherry picked from commit 15e80c7b75c3a3188bfaaa0baddccf31ae661a7a)
+
+Cherry-picked from: 15e80c7
+Resolves: #1222517
+---
+ src/systemd/sd-id128.h | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h
+index 48fd876..9f44527 100644
+--- a/src/systemd/sd-id128.h
++++ b/src/systemd/sd-id128.h
+@@ -106,6 +106,10 @@ _sd_pure_ static inline int sd_id128_equal(sd_id128_t a, sd_id128_t b) {
+         return memcmp(&a, &b, 16) == 0;
+ }
+ 
++_sd_pure_ static inline int sd_id128_is_null(sd_id128_t a) {
++        return a.qwords[0] == 0 && a.qwords[1] == 0;
++}
++
+ #define SD_ID128_NULL ((const sd_id128_t) { .qwords = { 0, 0 }})
+ 
+ _SD_END_DECLARATIONS;
diff --git a/SOURCES/0209-logind-given-that-we-can-now-relatively-safely-shutd.patch b/SOURCES/0209-logind-given-that-we-can-now-relatively-safely-shutd.patch
deleted file mode 100644
index 547f5bf..0000000
--- a/SOURCES/0209-logind-given-that-we-can-now-relatively-safely-shutd.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From adc1b71d84ab8b618c623749f43dc6350d75de6b Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Tue, 4 Mar 2014 17:00:54 +0100
-Subject: [PATCH] logind: given that we can now relatively safely shutdown
- sessions copes without working cgroup empty notifications there's no need to
- set the stop timeout of sessions scopes low
-
-Based-on: a50df72b37ce2a7caf7775c70d18c3f9504b9e80
----
- src/login/logind-dbus.c | 11 +----------
- 1 file changed, 1 insertion(+), 10 deletions(-)
-
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index a68e9b4..6cabb7b 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -2549,10 +2549,9 @@ int manager_start_scope(
-                 DBusError *error,
-                 char **job) {
- 
--        const char *timeout_stop_property = "TimeoutStopUSec", *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs", *after_property = "After";
-+        const char *send_sighup_property = "SendSIGHUP", *pids_property = "PIDs", *after_property = "After";
-         _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL;
-         DBusMessageIter iter, sub, sub2, sub3, sub4;
--        uint64_t timeout = 500 * USEC_PER_MSEC;
-         dbus_bool_t send_sighup = true;
-         const char *fail = "fail";
-         uint32_t u;
-@@ -2632,14 +2631,6 @@ int manager_start_scope(
-          * stop timeout for sessions, so that we don't wait
-          * forever. */
- 
--        if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
--            !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &timeout_stop_property) ||
--            !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "t", &sub3) ||
--            !dbus_message_iter_append_basic(&sub3, DBUS_TYPE_UINT64, &timeout) ||
--            !dbus_message_iter_close_container(&sub2, &sub3) ||
--            !dbus_message_iter_close_container(&sub, &sub2))
--                return log_oom();
--
-         /* Make sure that the session shells are terminated with
-          * SIGHUP since bash and friends tend to ignore SIGTERM */
-         if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
diff --git a/SOURCES/0210-journalctl-Improve-boot-ID-lookup.patch b/SOURCES/0210-journalctl-Improve-boot-ID-lookup.patch
new file mode 100644
index 0000000..b1c78f9
--- /dev/null
+++ b/SOURCES/0210-journalctl-Improve-boot-ID-lookup.patch
@@ -0,0 +1,403 @@
+From 99ea430346f3f8ffba504cd3de1a269ab4eac8e6 Mon Sep 17 00:00:00 2001
+From: Jan Janssen <medhefgo@web.de>
+Date: Fri, 1 May 2015 15:15:16 +0200
+Subject: [PATCH] journalctl: Improve boot ID lookup
+
+This method should greatly improve offset based lookup, by simply jumping
+from one boot to the next boot. It starts at the journal head to get the
+a boot ID, makes a _BOOT_ID match and then comes from the opposite
+journal direction (tail) to get to the end that boot. After flushing the matches
+and advancing the journal from that exact position, we arrive at the start
+of next boot. Rinse and repeat.
+
+This is faster than the old method of aggregating the full boot listing just
+so we can jump to a specific boot, which can be a real pain on big journals
+just for a mere "-b -1" case.
+
+As an additional benefit --list-boots should improve slightly too, because
+it does less seeking.
+
+Note that there can be a change in boot order with this lookup method
+because it will use the order of boots in the journal, not the realtime stamp
+stored in them. That's arguably better, though.
+Another deficiency is that it will get confused with boots interleaving in the
+journal, therefore, it will refuse operation in --merge, --file and --directory mode.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=72601
+(cherry picked from commit 596a23293d28f93843aef86721b90043e74d3081)
+
+Cherry-picked from: 596a232
+Resolves: #1222517
+---
+ src/journal/journalctl.c | 275 ++++++++++++++++++++++++++++++-----------------
+ 1 file changed, 174 insertions(+), 101 deletions(-)
+
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index 12c869f..c26cc00 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -131,6 +131,7 @@ typedef struct boot_id_t {
+         sd_id128_t id;
+         uint64_t first;
+         uint64_t last;
++        LIST_FIELDS(struct boot_id_t, boot_list);
+ } boot_id_t;
+ 
+ static void pager_open_if_enabled(void) {
+@@ -735,6 +736,11 @@ static int parse_argv(int argc, char *argv[]) {
+                 return -EINVAL;
+         }
+ 
++        if ((arg_boot || arg_action == ACTION_LIST_BOOTS) && (arg_file || arg_directory || arg_merge)) {
++                log_error("Using --boot or --list-boots with --file, --directory or --merge is not supported.");
++                return -EINVAL;
++        }
++
+         return 1;
+ }
+ 
+@@ -854,111 +860,203 @@ static int add_matches(sd_journal *j, char **args) {
+         return 0;
+ }
+ 
+-static int boot_id_cmp(const void *a, const void *b) {
+-        uint64_t _a, _b;
++static int discover_next_boot(sd_journal *j,
++                              boot_id_t **boot,
++                              bool advance_older,
++                              bool read_realtime) {
++        int r;
++        char match[9+32+1] = "_BOOT_ID=";
++        _cleanup_free_ boot_id_t *next_boot = NULL;
+ 
+-        _a = ((const boot_id_t *)a)->first;
+-        _b = ((const boot_id_t *)b)->first;
++        assert(j);
++        assert(boot);
+ 
+-        return _a < _b ? -1 : (_a > _b ? 1 : 0);
+-}
++        /* We expect the journal to be on the last position of a boot
++         * (in relation to the direction we are going), so that the next
++         * invocation of sd_journal_next/previous will be from a different
++         * boot. We then collect any information we desire and then jump
++         * to the last location of the new boot by using a _BOOT_ID match
++         * coming from the other journal direction. */
+ 
+-static int get_boots(sd_journal *j,
+-                     boot_id_t **boots,
+-                     unsigned int *count,
+-                     boot_id_t *query_ref_boot) {
+-        int r;
+-        const void *data;
+-        size_t length, allocated = 0;
++        /* Make sure we aren't restricted by any _BOOT_ID matches, so that
++         * we can actually advance to a *different* boot. */
++        sd_journal_flush_matches(j);
+ 
+-        assert(j);
+-        assert(boots);
+-        assert(count);
++        if (advance_older)
++                r = sd_journal_previous(j);
++        else
++                r = sd_journal_next(j);
++        if (r < 0)
++                return r;
++        else if (r == 0)
++                return 0; /* End of journal, yay. */
++
++        next_boot = new0(boot_id_t, 1);
++        if (!next_boot)
++                return log_oom();
+ 
+-        r = sd_journal_query_unique(j, "_BOOT_ID");
++        r = sd_journal_get_monotonic_usec(j, NULL, &next_boot->id);
+         if (r < 0)
+                 return r;
+ 
+-        *count = 0;
+-        SD_JOURNAL_FOREACH_UNIQUE(j, data, length) {
+-                boot_id_t *id;
++        if (read_realtime) {
++                r = sd_journal_get_realtime_usec(j, &next_boot->first);
++                if (r < 0)
++                        return r;
++        }
+ 
+-                assert(startswith(data, "_BOOT_ID="));
++        /* Now seek to the last occurrence of this boot ID. */
++        sd_id128_to_string(next_boot->id, match + 9);
++        r = sd_journal_add_match(j, match, sizeof(match) - 1);
++        if (r < 0)
++                return r;
+ 
+-                if (!GREEDY_REALLOC(*boots, allocated, *count + 1))
+-                        return log_oom();
++        if (advance_older)
++                r = sd_journal_seek_head(j);
++        else
++                r = sd_journal_seek_tail(j);
++        if (r < 0)
++                return r;
+ 
+-                id = *boots + *count;
++        if (advance_older)
++                r = sd_journal_next(j);
++        else
++                r = sd_journal_previous(j);
++        if (r < 0)
++                return r;
++        else if (r == 0)
++                return -ENODATA; /* This shouldn't happen. We just came from this very boot ID. */
+ 
+-                r = sd_id128_from_string(((const char *)data) + strlen("_BOOT_ID="), &id->id);
++        if (read_realtime) {
++                r = sd_journal_get_realtime_usec(j, &next_boot->last);
+                 if (r < 0)
+-                        continue;
++                        return r;
++        }
++
++        *boot = next_boot;
++        next_boot = NULL;
++        return 0;
++}
++
++static int get_boots(sd_journal *j,
++                     boot_id_t **boots,
++                     boot_id_t *query_ref_boot,
++                     int ref_boot_offset) {
++        bool skip_once;
++        int r, count = 0;
++        boot_id_t *head = NULL, *tail = NULL;
++        const bool advance_older = query_ref_boot && ref_boot_offset <= 0;
++
++        assert(j);
++
++        /* Adjust for the asymmetry that offset 0 is
++         * the last (and current) boot, while 1 is considered the
++         * (chronological) first boot in the journal. */
++        skip_once = query_ref_boot && sd_id128_is_null(query_ref_boot->id) && ref_boot_offset < 0;
++
++        /* Advance to the earliest/latest occurrence of our reference
++         * boot ID (taking our lookup direction into account), so that
++         * discover_next_boot() can do its job.
++         * If no reference is given, the journal head/tail will do,
++         * they're "virtual" boots after all. */
++        if (query_ref_boot && !sd_id128_is_null(query_ref_boot->id)) {
++                char match[9+32+1] = "_BOOT_ID=";
++
++                sd_journal_flush_matches(j);
+ 
+-                r = sd_journal_add_match(j, data, length);
++                sd_id128_to_string(query_ref_boot->id, match + 9);
++                r = sd_journal_add_match(j, match, sizeof(match) - 1);
+                 if (r < 0)
+                         return r;
+ 
+-                r = sd_journal_seek_head(j);
++                if (advance_older)
++                        r = sd_journal_seek_head(j);
++                else
++                        r = sd_journal_seek_tail(j);
+                 if (r < 0)
+                         return r;
+ 
+-                r = sd_journal_next(j);
++                if (advance_older)
++                        r = sd_journal_next(j);
++                else
++                        r = sd_journal_previous(j);
+                 if (r < 0)
+                         return r;
+                 else if (r == 0)
+-                        goto flush;
+-
+-                r = sd_journal_get_realtime_usec(j, &id->first);
++                        goto finish;
++                else if (ref_boot_offset == 0) {
++                        count = 1;
++                        goto finish;
++                }
++        } else {
++                if (advance_older)
++                        r = sd_journal_seek_tail(j);
++                else
++                        r = sd_journal_seek_head(j);
+                 if (r < 0)
+                         return r;
+ 
+-                if (query_ref_boot) {
+-                        id->last = 0;
+-                        if (sd_id128_equal(id->id, query_ref_boot->id))
+-                                *query_ref_boot = *id;
+-                } else {
+-                        r = sd_journal_seek_tail(j);
+-                        if (r < 0)
+-                                return r;
++                /* No sd_journal_next/previous here. */
++        }
+ 
+-                        r = sd_journal_previous(j);
+-                        if (r < 0)
+-                                return r;
+-                        else if (r == 0)
+-                                goto flush;
++        while (true) {
++                _cleanup_free_ boot_id_t *current = NULL;
+ 
+-                        r = sd_journal_get_realtime_usec(j, &id->last);
+-                        if (r < 0)
+-                                return r;
++                r = discover_next_boot(j, &current, advance_older, !query_ref_boot);
++                if (r < 0) {
++                        boot_id_t *id, *id_next;
++                        LIST_FOREACH_SAFE(boot_list, id, id_next, head)
++                                free(id);
++                        return r;
+                 }
+ 
+-                (*count)++;
+-        flush:
+-                sd_journal_flush_matches(j);
++                if (!current)
++                        break;
++
++                if (query_ref_boot) {
++                        if (!skip_once)
++                                ref_boot_offset += advance_older ? 1 : -1;
++                        skip_once = false;
++
++                        if (ref_boot_offset == 0) {
++                                count = 1;
++                                query_ref_boot->id = current->id;
++                                break;
++                        }
++                } else {
++                        LIST_INSERT_AFTER(boot_list, head, tail, current);
++                        tail = current;
++                        current = NULL;
++                        count++;
++                }
+         }
+ 
+-        qsort_safe(*boots, *count, sizeof(boot_id_t), boot_id_cmp);
+-        return 0;
++finish:
++        if (boots)
++                *boots = head;
++
++        sd_journal_flush_matches(j);
++
++        return count;
+ }
+ 
+ static int list_boots(sd_journal *j) {
+-        int r, w, i;
+-        unsigned int count;
+-        boot_id_t *id;
+-        _cleanup_free_ boot_id_t *all_ids = NULL;
++        int w, i, count;
++        boot_id_t *id, *id_next, *all_ids;
+ 
+         assert(j);
+ 
+-        r = get_boots(j, &all_ids, &count, NULL);
+-        if (r < 0)
+-                return r;
++        count = get_boots(j, &all_ids, NULL, 0);
++        if (count <= 0)
++                return count;
+ 
+         pager_open_if_enabled();
+ 
+         /* numbers are one less, but we need an extra char for the sign */
+         w = DECIMAL_STR_WIDTH(count - 1) + 1;
+ 
+-        for (id = all_ids, i = 0; id < all_ids + count; id++, i++) {
++        i = 0;
++        LIST_FOREACH_SAFE(boot_list, id, id_next, all_ids) {
+                 char a[FORMAT_TIMESTAMP_MAX], b[FORMAT_TIMESTAMP_MAX];
+ 
+                 printf("% *i " SD_ID128_FORMAT_STR " %s—%s\n",
+@@ -966,39 +1064,8 @@ static int list_boots(sd_journal *j) {
+                        SD_ID128_FORMAT_VAL(id->id),
+                        format_timestamp_maybe_utc(a, sizeof(a), id->first),
+                        format_timestamp_maybe_utc(b, sizeof(b), id->last));
+-        }
+-
+-        return 0;
+-}
+-
+-static int get_boot_id_by_offset(sd_journal *j, sd_id128_t *boot_id, int offset) {
+-        int r;
+-        unsigned int count;
+-        boot_id_t ref_boot_id = {}, *id;
+-        _cleanup_free_ boot_id_t *all_ids = NULL;
+-
+-        assert(j);
+-        assert(boot_id);
+-
+-        ref_boot_id.id = *boot_id;
+-        r = get_boots(j, &all_ids, &count, &ref_boot_id);
+-        if (r < 0)
+-                return r;
+-
+-        if (sd_id128_equal(*boot_id, SD_ID128_NULL)) {
+-                if (offset > (int) count || offset <= -(int)count)
+-                        return -EADDRNOTAVAIL;
+-
+-                *boot_id = all_ids[(offset <= 0)*count + offset - 1].id;
+-        } else {
+-                id = bsearch(&ref_boot_id, all_ids, count, sizeof(boot_id_t), boot_id_cmp);
+-
+-                if (!id ||
+-                    offset <= 0 ? (id - all_ids) + offset < 0 :
+-                                    (id - all_ids) + offset >= (int) count)
+-                        return -EADDRNOTAVAIL;
+-
+-                *boot_id = (id + offset)->id;
++                i++;
++                free(id);
+         }
+ 
+         return 0;
+@@ -1007,6 +1074,7 @@ static int get_boot_id_by_offset(sd_journal *j, sd_id128_t *boot_id, int offset)
+ static int add_boot(sd_journal *j) {
+         char match[9+32+1] = "_BOOT_ID=";
+         int r;
++        boot_id_t ref_boot_id = {};
+ 
+         assert(j);
+ 
+@@ -1016,17 +1084,22 @@ static int add_boot(sd_journal *j) {
+         if (arg_boot_offset == 0 && sd_id128_equal(arg_boot_id, SD_ID128_NULL))
+                 return add_match_this_boot(j, arg_machine);
+ 
+-        r = get_boot_id_by_offset(j, &arg_boot_id, arg_boot_offset);
+-        if (r < 0) {
+-                if (sd_id128_equal(arg_boot_id, SD_ID128_NULL))
+-                        log_error_errno(r, "Failed to look up boot %+i: %m", arg_boot_offset);
++        ref_boot_id.id = arg_boot_id;
++        r = get_boots(j, NULL, &ref_boot_id, arg_boot_offset);
++        assert(r <= 1);
++        if (r <= 0) {
++                const char *reason = (r == 0) ? "No such boot ID in journal" : strerror(-r);
++
++                if (sd_id128_is_null(arg_boot_id))
++                        log_error("Failed to look up boot %+i: %s", arg_boot_offset, reason);
+                 else
+                         log_error("Failed to look up boot ID "SD_ID128_FORMAT_STR"%+i: %s",
+-                                  SD_ID128_FORMAT_VAL(arg_boot_id), arg_boot_offset, strerror(-r));
+-                return r;
++                                  SD_ID128_FORMAT_VAL(arg_boot_id), arg_boot_offset, reason);
++
++                return r == 0 ? -ENODATA : r;
+         }
+ 
+-        sd_id128_to_string(arg_boot_id, match + 9);
++        sd_id128_to_string(ref_boot_id.id, match + 9);
+ 
+         r = sd_journal_add_match(j, match, sizeof(match) - 1);
+         if (r < 0)
diff --git a/SOURCES/0210-utmp-make-sure-we-don-t-write-the-utmp-reboot-record.patch b/SOURCES/0210-utmp-make-sure-we-don-t-write-the-utmp-reboot-record.patch
deleted file mode 100644
index fdee14a..0000000
--- a/SOURCES/0210-utmp-make-sure-we-don-t-write-the-utmp-reboot-record.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From cd31a2a77cccee55836ae77ac9f436c3764baf88 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 30 Jan 2014 14:37:23 +0100
-Subject: [PATCH] utmp: make sure we don't write the utmp reboot record twice
- on each boot
-
----
- src/update-utmp/update-utmp.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/src/update-utmp/update-utmp.c b/src/update-utmp/update-utmp.c
-index 202aa98..3606d17 100644
---- a/src/update-utmp/update-utmp.c
-+++ b/src/update-utmp/update-utmp.c
-@@ -268,9 +268,6 @@ static int on_runlevel(Context *c) {
-                         return q;
-                 }
- 
--                /* Hmm, we didn't find any runlevel, that means we
--                 * have been rebooted */
--                r = on_reboot(c);
-                 previous = 0;
-         }
- 
diff --git a/SOURCES/0211-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch b/SOURCES/0211-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch
deleted file mode 100644
index e47f069..0000000
--- a/SOURCES/0211-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 4c3ce66158917f3fff65e25b5dde622bff3ec6f8 Mon Sep 17 00:00:00 2001
-From: Peter Rajnoha <prajnoha@redhat.com>
-Date: Thu, 6 Mar 2014 15:49:55 +0100
-Subject: [PATCH] rules: mark loop device as SYSTEMD_READY=0 if no file is
- attached
-
-Check existence of loop/backing_file in sysfs and mark loop
-devices with SYSTEMD_READY if missing. Such loop files is
-uninitialized and it's not ready for use yet (there's no file
-attached).
----
- rules/99-systemd.rules.in | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
-index 0e0a567..0471719 100644
---- a/rules/99-systemd.rules.in
-+++ b/rules/99-systemd.rules.in
-@@ -25,6 +25,9 @@ SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", KERNEL=="md*", ATTR{md/array_state}=="
- # Ignore nbd devices in the "add" event, with "change" the nbd is ready
- ACTION=="add", SUBSYSTEM=="block", KERNEL=="nbd*", ENV{SYSTEMD_READY}="0"
- 
-+# Ignore loop devices that don't have any file attached
-+ACTION=="add|change", KERNEL=="loop[0-9]*", TEST!="loop/backing_file", ENV{SYSTEMD_READY}="0"
-+
- # We need a hardware independent way to identify network devices. We
- # use the /sys/subsystem path for this. Current vanilla kernels don't
- # actually support that hierarchy right now, however upcoming kernels
diff --git a/SOURCES/0211-test-hashmap-fix-an-assert.patch b/SOURCES/0211-test-hashmap-fix-an-assert.patch
new file mode 100644
index 0000000..4d3dbd1
--- /dev/null
+++ b/SOURCES/0211-test-hashmap-fix-an-assert.patch
@@ -0,0 +1,28 @@
+From 2c52141dcf9c1bc2445dde5265036abca7e5c2c7 Mon Sep 17 00:00:00 2001
+From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Tue, 19 May 2015 06:33:54 +0200
+Subject: [PATCH] test-hashmap: fix an assert
+
+CID#1299016
+
+(cherry picked from commit b669934fae49c9158c35e612e54e1765edca8584)
+
+Cherry-picked from: b669934
+Resolves: #1222517
+---
+ src/test/test-hashmap-plain.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/test/test-hashmap-plain.c b/src/test/test-hashmap-plain.c
+index 84b508f..c1a5ccf 100644
+--- a/src/test/test-hashmap-plain.c
++++ b/src/test/test-hashmap-plain.c
+@@ -682,7 +682,7 @@ static void test_hashmap_get2(void) {
+         r = hashmap_get2(m, key_orig, &key_copy);
+         assert_se(streq(r, val));
+         assert_se(key_orig != key_copy);
+-        assert_se(streq(key_orig, key_orig));
++        assert_se(streq(key_orig, key_copy));
+ 
+         r = hashmap_get2(m, "no such key", NULL);
+         assert_se(r == NULL);
diff --git a/SOURCES/0212-logind-fix-reference-to-systemd-user-sessions.servic.patch b/SOURCES/0212-logind-fix-reference-to-systemd-user-sessions.servic.patch
deleted file mode 100644
index c4a2f33..0000000
--- a/SOURCES/0212-logind-fix-reference-to-systemd-user-sessions.servic.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From eed10abd7ed29316dcc0a234506117069c98f949 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Mar 2014 17:47:35 +0100
-Subject: [PATCH] logind: fix reference to systemd-user-sessions.service
-
----
- src/login/logind-session.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index 2bac0a2..f31961a 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -518,7 +518,7 @@ static int session_start_scope(Session *s) {
-                 if (!scope)
-                         return log_oom();
- 
--                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-session.service", &error, &job);
-+                r = manager_start_scope(s->manager, scope, s->leader, s->user->slice, description, "systemd-logind.service", "systemd-user-sessions.service", &error, &job);
-                 if (r < 0) {
-                         log_error("Failed to start session scope %s: %s %s",
-                                   scope, bus_error(&error, r), error.name);
diff --git a/SOURCES/0212-units-make-sure-systemd-nspawn-.slice-instances-are-.patch b/SOURCES/0212-units-make-sure-systemd-nspawn-.slice-instances-are-.patch
new file mode 100644
index 0000000..d6c0ec5
--- /dev/null
+++ b/SOURCES/0212-units-make-sure-systemd-nspawn-.slice-instances-are-.patch
@@ -0,0 +1,27 @@
+From 68932296f01cd3eee3ee47f3e8f339f33c18b95d Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 19 May 2015 19:47:52 +0200
+Subject: [PATCH] units: make sure systemd-nspawn@.slice instances are actually
+ located in machine.slice
+
+https://plus.google.com/112206451048767236518/posts/SYAueyXHeEX
+(cherry picked from commit 45d383a3b888195b01b58dbd2c46a11027ff5022)
+
+Cherry-picked from: 45d383a
+Resolves: #1222517
+---
+ units/systemd-nspawn@.service.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in
+index 3e26b53..5e86121 100644
+--- a/units/systemd-nspawn@.service.in
++++ b/units/systemd-nspawn@.service.in
+@@ -17,6 +17,7 @@ KillMode=mixed
+ Type=notify
+ RestartForceExitStatus=133
+ SuccessExitStatus=133
++Slice=machine.slice
+ Delegate=yes
+ 
+ [Install]
diff --git a/SOURCES/0213-Revert-journald-audit-exit-gracefully-in-the-case-we.patch b/SOURCES/0213-Revert-journald-audit-exit-gracefully-in-the-case-we.patch
new file mode 100644
index 0000000..a5caea0
--- /dev/null
+++ b/SOURCES/0213-Revert-journald-audit-exit-gracefully-in-the-case-we.patch
@@ -0,0 +1,31 @@
+From d5e8f58887c572e3d9317b68999ca5d6320f2815 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Wed, 15 Jul 2015 14:52:04 +0200
+Subject: [PATCH] Revert "journald-audit: exit gracefully in the case we can't
+ join audit multicast group"
+
+This reverts commit 9b5e05005e534fc7fb6dc56c94e3296bb17fe122.
+
+Cherry-picked from:
+Resolves: #1222517
+---
+ src/journal/journald-audit.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c
+index 77abe2e..46eb82f 100644
+--- a/src/journal/journald-audit.c
++++ b/src/journal/journald-audit.c
+@@ -533,10 +533,8 @@ int server_open_audit(Server *s) {
+                 }
+ 
+                 r = bind(s->audit_fd, &sa.sa, sizeof(sa.nl));
+-                if (r < 0) {
+-                        log_warning_errno(errno, "Failed to join audit multicast group, ignoring: %m");
+-                        return 0;
+-                }
++                if (r < 0)
++                        return log_error_errno(errno, "Failed to join audit multicast group: %m");
+         } else
+                 fd_nonblock(s->audit_fd, 1);
+ 
diff --git a/SOURCES/0213-logind-add-forgotten-call-to-user_send_changed.patch b/SOURCES/0213-logind-add-forgotten-call-to-user_send_changed.patch
deleted file mode 100644
index 858c260..0000000
--- a/SOURCES/0213-logind-add-forgotten-call-to-user_send_changed.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From 4a725025497979ad512e242335360b23fb43b349 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Mar 2014 18:11:45 +0100
-Subject: [PATCH] logind: add forgotten call to user_send_changed()
-
----
- src/login/logind-session.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index f31961a..e519d35 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -587,6 +587,7 @@ int session_start(Session *s) {
- 
-         /* Send signals */
-         session_send_signal(s, true);
-+        user_send_changed(s->user, "Sessions\0");
- 
-         if (s->seat) {
-                 if (s->seat->active == s)
diff --git a/SOURCES/0214-journald-handle-more-gracefully-when-bind-fails-on-a.patch b/SOURCES/0214-journald-handle-more-gracefully-when-bind-fails-on-a.patch
new file mode 100644
index 0000000..b4688c3
--- /dev/null
+++ b/SOURCES/0214-journald-handle-more-gracefully-when-bind-fails-on-a.patch
@@ -0,0 +1,36 @@
+From a81ba5e1bfabf643e11fec41c1ce646874ae0df1 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Wed, 20 May 2015 14:37:21 +0200
+Subject: [PATCH] journald: handle more gracefully when bind() fails on audit
+ sockets
+
+(cherry picked from commit 417a7fdc418ec76cc4c321c9a07ec15c72b3ac7d)
+
+Cherry-picked from: 417a7fd
+Resolves: #1222517
+---
+ src/journal/journald-audit.c | 11 ++++++++---
+ 1 file changed, 8 insertions(+), 3 deletions(-)
+
+diff --git a/src/journal/journald-audit.c b/src/journal/journald-audit.c
+index 46eb82f..0e739a2 100644
+--- a/src/journal/journald-audit.c
++++ b/src/journal/journald-audit.c
+@@ -532,9 +532,14 @@ int server_open_audit(Server *s) {
+                         return 0;
+                 }
+ 
+-                r = bind(s->audit_fd, &sa.sa, sizeof(sa.nl));
+-                if (r < 0)
+-                        return log_error_errno(errno, "Failed to join audit multicast group: %m");
++                if (bind(s->audit_fd, &sa.sa, sizeof(sa.nl)) < 0) {
++                        log_warning_errno(errno,
++                                          "Failed to join audit multicast group. "
++                                          "The kernel is probably too old or multicast reading is not supported. "
++                                          "Ignoring: %m");
++                        s->audit_fd = safe_close(s->audit_fd);
++                        return 0;
++                }
+         } else
+                 fd_nonblock(s->audit_fd, 1);
+ 
diff --git a/SOURCES/0214-logind-save-session-after-setting-the-stopping-flag.patch b/SOURCES/0214-logind-save-session-after-setting-the-stopping-flag.patch
deleted file mode 100644
index 8e10f41..0000000
--- a/SOURCES/0214-logind-save-session-after-setting-the-stopping-flag.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 66cd858045170353359d05dd0b4d259d6059de72 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Mar 2014 18:22:55 +0100
-Subject: [PATCH] logind: save session after setting the stopping flag
-
----
- src/login/logind-session.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index e519d35..3ab41e6 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -682,10 +682,9 @@ int session_stop(Session *s) {
-         /* Kill cgroup */
-         r = session_stop_scope(s);
- 
--        session_save(s);
--
-         s->stopping = true;
- 
-+        session_save(s);
-         return r;
- }
- 
diff --git a/SOURCES/0215-logind-save-user-state-after-stopping-the-session.patch b/SOURCES/0215-logind-save-user-state-after-stopping-the-session.patch
deleted file mode 100644
index ea53156..0000000
--- a/SOURCES/0215-logind-save-user-state-after-stopping-the-session.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 34c3bd12815064d0d3820ac0b30c0952ba5fd1fe Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 10 Mar 2014 18:26:34 +0100
-Subject: [PATCH] logind: save user state after stopping the session
-
----
- src/login/logind-session.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index 3ab41e6..2a2a670 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -685,6 +685,8 @@ int session_stop(Session *s) {
-         s->stopping = true;
- 
-         session_save(s);
-+        user_save(s);
-+
-         return r;
- }
- 
diff --git a/SOURCES/0215-udev-link-config-fix-corruption.patch b/SOURCES/0215-udev-link-config-fix-corruption.patch
new file mode 100644
index 0000000..5ddb976
--- /dev/null
+++ b/SOURCES/0215-udev-link-config-fix-corruption.patch
@@ -0,0 +1,72 @@
+From f50fbeaf7c2ce57027f774d02d9e2b09f810ec2a Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Thu, 21 May 2015 15:22:07 +0200
+Subject: [PATCH] udev: link-config - fix corruption
+
+The parser used for MTU and Speed expects them to be size_t, not unsigned int.
+
+This caused a corruption in the rest of the structure.
+
+Reported by David O Neill <david.m.oneill@intel.com>.
+
+(cherry picked from commit dab495dc23bf9a5ba0487a057bb594355555a0e9)
+
+Cherry-picked from: dab495d
+Resolves: #1222517
+---
+ src/udev/net/link-config.c | 11 ++++++-----
+ src/udev/net/link-config.h |  4 ++--
+ 2 files changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/src/udev/net/link-config.c b/src/udev/net/link-config.c
+index 8b3dc45..489593f 100644
+--- a/src/udev/net/link-config.c
++++ b/src/udev/net/link-config.c
+@@ -177,6 +177,9 @@ static int load_link(link_config_ctx *ctx, const char *filename) {
+         else
+                 log_debug("Parsed configuration file %s", filename);
+ 
++        if (link->mtu > UINT_MAX || link->speed > UINT_MAX)
++                return -ERANGE;
++
+         link->filename = strdup(filename);
+ 
+         LIST_PREPEND(links, ctx->links, link);
+@@ -379,10 +382,9 @@ int link_config_apply(link_config_ctx *ctx, link_config *config,
+         if (!old_name)
+                 return -EINVAL;
+ 
+-        r = ethtool_set_speed(&ctx->ethtool_fd, old_name, config->speed / 1024,
+-                              config->duplex);
++        r = ethtool_set_speed(&ctx->ethtool_fd, old_name, config->speed / 1024, config->duplex);
+         if (r < 0)
+-                log_warning_errno(r, "Could not set speed or duplex of %s to %u Mbps (%s): %m",
++                log_warning_errno(r, "Could not set speed or duplex of %s to %zu Mbps (%s): %m",
+                                   old_name, config->speed / 1024,
+                                   duplex_to_string(config->duplex));
+ 
+@@ -461,8 +463,7 @@ int link_config_apply(link_config_ctx *ctx, link_config *config,
+                         mac = config->mac;
+         }
+ 
+-        r = rtnl_set_link_properties(&ctx->rtnl, ifindex, config->alias, mac,
+-                                     config->mtu);
++        r = rtnl_set_link_properties(&ctx->rtnl, ifindex, config->alias, mac, config->mtu);
+         if (r < 0)
+                 return log_warning_errno(r, "Could not set Alias, MACAddress or MTU on %s: %m", old_name);
+ 
+diff --git a/src/udev/net/link-config.h b/src/udev/net/link-config.h
+index cb434d1..f2e9174 100644
+--- a/src/udev/net/link-config.h
++++ b/src/udev/net/link-config.h
+@@ -67,8 +67,8 @@ struct link_config {
+         NamePolicy *name_policy;
+         char *name;
+         char *alias;
+-        unsigned int mtu;
+-        unsigned int speed;
++        size_t mtu;
++        size_t speed;
+         Duplex duplex;
+         WakeOnLan wol;
+ 
diff --git a/SOURCES/0216-logind-initialize-timer_fd.patch b/SOURCES/0216-logind-initialize-timer_fd.patch
deleted file mode 100644
index 19d5cac..0000000
--- a/SOURCES/0216-logind-initialize-timer_fd.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From fe828286b888871e18bc68173cd281619bd7b4b2 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Tue, 11 Mar 2014 13:26:38 +0100
-Subject: [PATCH] logind: initialize timer_fd
-
----
- src/login/logind-session.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index 2a2a670..d7c3187 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -89,6 +89,7 @@ Session* session_new(Manager *m, const char *id) {
- 
-         s->manager = m;
-         s->fifo_fd = -1;
-+        s->timer_fd = -1;
- 
-         return s;
- }
diff --git a/SOURCES/0216-udev-net_id-Only-read-the-first-64-bytes-of-PCI-conf.patch b/SOURCES/0216-udev-net_id-Only-read-the-first-64-bytes-of-PCI-conf.patch
new file mode 100644
index 0000000..37d3d53
--- /dev/null
+++ b/SOURCES/0216-udev-net_id-Only-read-the-first-64-bytes-of-PCI-conf.patch
@@ -0,0 +1,59 @@
+From 210ec6353d3cab2029e1eb160671fea918c97814 Mon Sep 17 00:00:00 2001
+From: "Jason S. McMullan" <jason.mcmullan@gmail.com>
+Date: Fri, 22 May 2015 20:30:01 +0200
+Subject: [PATCH] udev/net_id: Only read the first 64 bytes of PCI config space
+
+The original code used fread(), which on some libc implementions
+(ie glibc 2.17) would pre-read a full 4K (PAGE_SIZE) of the
+PCI config space, when only 64 bytes were requested.
+
+I have recently come across PCIe hardware which responds with
+Completion Timeouts when accesses above 256 bytes are attempted.
+
+This can cause server systems with GHES/AEPI support to cause
+and immediate kernel panic due to the failed PCI transaction.
+
+This change replaces the buffered fread() with an explict
+unbuffered read() of 64 bytes, which corrects this issue by
+only reading the guaranteed first 64 bytes of PCIe config space.
+
+(cherry picked from commit 0454229c100a2113ba82df55703436d6cb2c492b)
+
+Cherry-picked from: 0454229
+Resolves: #1222517
+---
+ src/udev/udev-builtin-net_id.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index 66474f7..dd2886c 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -91,6 +91,7 @@
+ #include <stdlib.h>
+ #include <stdarg.h>
+ #include <unistd.h>
++#include <fcntl.h>
+ #include <string.h>
+ #include <errno.h>
+ #include <net/if.h>
+@@ -166,15 +167,15 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
+ 
+ /* read the 256 bytes PCI configuration space to check the multi-function bit */
+ static bool is_pci_multifunction(struct udev_device *dev) {
+-        _cleanup_fclose_ FILE *f = NULL;
++        _cleanup_close_ int fd = -1;
+         const char *filename;
+         uint8_t config[64];
+ 
+         filename = strjoina(udev_device_get_syspath(dev), "/config");
+-        f = fopen(filename, "re");
+-        if (!f)
++        fd = open(filename, O_RDONLY | O_CLOEXEC);
++        if (fd < 0)
+                 return false;
+-        if (fread(&config, sizeof(config), 1, f) != 1)
++        if (read(fd, &config, sizeof(config)) != sizeof(config))
+                 return false;
+ 
+         /* bit 0-6 header type, bit 7 multi/single function device */
diff --git a/SOURCES/0217-service-don-t-create-extra-cgroup-for-control-proces.patch b/SOURCES/0217-service-don-t-create-extra-cgroup-for-control-proces.patch
deleted file mode 100644
index c7ffdb4..0000000
--- a/SOURCES/0217-service-don-t-create-extra-cgroup-for-control-proces.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From d09b7328c7757cebdc2fb0032361c086733bd3f7 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Mon, 10 Mar 2014 15:11:29 +0100
-Subject: [PATCH] service: don't create extra cgroup for control process when
- reloading SysV service
-
-Unfortunately common practice in initscripts is to have reload as an
-alias for restart (https://fedoraproject.org/wiki/Packaging:SysVInitScript).
-In that case the newly started process will be killed immediately after
-the reload process ends and its cgroup is destroyed.
----
- src/core/service.c | 13 ++++++++++++-
- 1 file changed, 12 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 41e5cb5..dff5286 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -2353,7 +2353,15 @@ static void service_enter_reload(Service *s) {
-                                   !s->root_directory_start_only,
-                                   false,
-                                   false,
-+#ifdef HAVE_SYSV_COMPAT
-+                                  /* Don't create extra cgroup for SysV services.
-+                                   * Unfortunately common practice was to have reload as an alias
-+                                   * for restart and we are killing the new main process, when destroying
-+                                   * cgroup for the control process*/
-+                                  !s->is_sysv,
-+#else
-                                   true,
-+#endif
-                                   &s->control_pid);
-                 if (r < 0)
-                         goto fail;
-@@ -3174,7 +3182,10 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) {
-                 /* Immediately get rid of the cgroup, so that the
-                  * kernel doesn't delay the cgroup empty messages for
-                  * the service cgroup any longer than necessary */
--                service_kill_control_processes(s);
-+#ifdef HAVE_SYSV_COMPAT
-+                if (!s->is_sysv)
-+#endif
-+                        service_kill_control_processes(s);
- 
-                 if (s->control_command &&
-                     s->control_command->command_next &&
diff --git a/SOURCES/0217-shared-generator-correct-path-to-systemd-fsck.patch b/SOURCES/0217-shared-generator-correct-path-to-systemd-fsck.patch
new file mode 100644
index 0000000..d63575e
--- /dev/null
+++ b/SOURCES/0217-shared-generator-correct-path-to-systemd-fsck.patch
@@ -0,0 +1,44 @@
+From 36bc4ca74d03fcff5808a7efb107886749472819 Mon Sep 17 00:00:00 2001
+From: Mike Gilbert <floppym@gentoo.org>
+Date: Sun, 24 May 2015 16:33:35 -0400
+Subject: [PATCH] shared: generator - correct path to systemd-fsck
+
+In generated systemd-fsck-root.service. This would break if rootprefix
+is not /usr/lib/systemd.
+
+[tomegun: flesh out commit message]
+
+(cherry picked from commit 77eb82f9f0f60535ab5f585834ed6e66cf39b184)
+
+Cherry-picked from: 77eb82f
+Resolves: #1222517
+---
+ Makefile.am            | 1 +
+ src/shared/generator.c | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index d3fb398..a81d3c1 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -177,6 +177,7 @@ AM_CPPFLAGS = \
+ 	-DCATALOG_DATABASE=\"$(catalogstatedir)/database\" \
+ 	-DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/systemd-cgroups-agent\" \
+ 	-DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" \
++	-DSYSTEMD_FSCK_PATH=\"$(rootlibexecdir)/systemd-fsck\" \
+ 	-DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" \
+ 	-DSYSTEMD_SLEEP_BINARY_PATH=\"$(rootlibexecdir)/systemd-sleep\" \
+ 	-DSYSTEMCTL_BINARY_PATH=\"$(rootbindir)/systemctl\" \
+diff --git a/src/shared/generator.c b/src/shared/generator.c
+index 148a0b0..3af84a3 100644
+--- a/src/shared/generator.c
++++ b/src/shared/generator.c
+@@ -61,7 +61,7 @@ static int write_fsck_sysroot_service(const char *dir, const char *what) {
+                 "[Service]\n"
+                 "Type=oneshot\n"
+                 "RemainAfterExit=yes\n"
+-                "ExecStart=/usr/lib/systemd/systemd-fsck %2$s\n"
++                "ExecStart=" SYSTEMD_FSCK_PATH " %2$s\n"
+                 "TimeoutSec=0\n",
+                 program_invocation_short_name,
+                 what,
diff --git a/SOURCES/0218-logind-Save-the-user-s-state-when-a-session-enters-S.patch b/SOURCES/0218-logind-Save-the-user-s-state-when-a-session-enters-S.patch
new file mode 100644
index 0000000..3127350
--- /dev/null
+++ b/SOURCES/0218-logind-Save-the-user-s-state-when-a-session-enters-S.patch
@@ -0,0 +1,47 @@
+From a01e2476f0421026d12384292b34f303fc01c43c Mon Sep 17 00:00:00 2001
+From: Philip Withnall <philip.withnall@collabora.co.uk>
+Date: Tue, 2 Jun 2015 14:17:10 +0100
+Subject: [PATCH] =?UTF-8?q?logind:=20Save=20the=20user=E2=80=99s=20state?=
+ =?UTF-8?q?=20when=20a=20session=20enters=20SESSION=5FACTIVE?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When (for example) switching from X11 to a new VT and logging in there,
+creating a new session, the user state file (/run/systemd/users/$uid) is
+not updated after the session becomes active. The latest time it is
+saved is when the session is in SESSION_OPENING.
+
+This results in a /run/systemd/users/$uid file which contains
+STATE=online for the current user on the current active VT, which is
+obviously wrong.
+
+As functions like sd_uid_get_state() use this file to get the user’s
+state, this could result in things like PolicyKit making incorrect
+decisions about the user’s state. (See
+https://bugs.freedesktop.org/show_bug.cgi?id=76358.)
+
+Fix this by re-saving the state for a session’s user after completing
+the state_job for that session.
+
+https://bugs.freedesktop.org/show_bug.cgi?id=90818
+(cherry picked from commit 41dfeaa194c18de49706b5cecf4e53accd12b7f6)
+
+Cherry-picked from: 41dfeaa
+Resolves: #1222517
+---
+ src/login/logind-dbus.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
+index 8b0bafd..fb84e92 100644
+--- a/src/login/logind-dbus.c
++++ b/src/login/logind-dbus.c
+@@ -2124,6 +2124,7 @@ int match_job_removed(sd_bus *bus, sd_bus_message *message, void *userdata, sd_b
+                 session_jobs_reply(session, unit, result);
+ 
+                 session_save(session);
++                user_save(session->user);
+                 session_add_to_gc_queue(session);
+         }
+ 
diff --git a/SOURCES/0218-logind-pass-pointer-to-User-object-to-user_save.patch b/SOURCES/0218-logind-pass-pointer-to-User-object-to-user_save.patch
deleted file mode 100644
index a9deb00..0000000
--- a/SOURCES/0218-logind-pass-pointer-to-User-object-to-user_save.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 83062f40f3e39d089396ad7918620ecab8534179 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Tue, 11 Mar 2014 20:42:42 +0100
-Subject: [PATCH] logind: pass pointer to User object to user_save()
-
----
- src/login/logind-session.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index d7c3187..b0e4bf6 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -686,7 +686,7 @@ int session_stop(Session *s) {
-         s->stopping = true;
- 
-         session_save(s);
--        user_save(s);
-+        user_save(s->user);
- 
-         return r;
- }
diff --git a/SOURCES/0219-fstab-generator-When-parsing-the-root-cmdline-option.patch b/SOURCES/0219-fstab-generator-When-parsing-the-root-cmdline-option.patch
deleted file mode 100644
index 2f4467c..0000000
--- a/SOURCES/0219-fstab-generator-When-parsing-the-root-cmdline-option.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 42f30a9750ca939f1e805d5fb7790cd8dd3dee62 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org>
-Date: Mon, 30 Sep 2013 00:32:33 +0200
-Subject: [PATCH] fstab-generator: When parsing the root= cmdline option, set
- FsckPassNo to 1
-
-[tomegun: without this we would never fsck the rootfs if it was directly
-mounted 'rw' from the initrd. We now risk fsck'ing it twice in the case it
-is mounted 'ro', so that should be addressed in a separate patch.]
----
- src/fstab-generator/fstab-generator.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
-index 9efccb9..6cecb4e 100644
---- a/src/fstab-generator/fstab-generator.c
-+++ b/src/fstab-generator/fstab-generator.c
-@@ -449,7 +449,7 @@ static int parse_new_root_from_proc_cmdline(void) {
-         }
- 
-         log_debug("Found entry what=%s where=/sysroot type=%s", what, type);
--        r = add_mount(what, "/sysroot", type, opts, 0, noauto, nofail, false,
-+        r = add_mount(what, "/sysroot", type, opts, 1, noauto, nofail, false,
-                       SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline");
- 
-         return (r < 0) ? r : 0;
diff --git a/SOURCES/0219-small-fix-ru-translation.patch b/SOURCES/0219-small-fix-ru-translation.patch
new file mode 100644
index 0000000..7a484c1
--- /dev/null
+++ b/SOURCES/0219-small-fix-ru-translation.patch
@@ -0,0 +1,44 @@
+From 376e273fd9efb41fbeefc1e273fb4bd69135d041 Mon Sep 17 00:00:00 2001
+From: kloun <andrey0bolkonsky@gmail.com>
+Date: Thu, 4 Jun 2015 17:56:59 +0300
+Subject: [PATCH] small fix ru translation
+
+(cherry picked from commit fcf3f5958e0441c9cc00f035ef6c86c278442366)
+
+Cherry-picked from: fcf3f59
+Resolves: #1222517
+---
+ catalog/systemd.ru.catalog | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/catalog/systemd.ru.catalog b/catalog/systemd.ru.catalog
+index f995324..03eea04 100644
+--- a/catalog/systemd.ru.catalog
++++ b/catalog/systemd.ru.catalog
+@@ -81,7 +81,7 @@ Documentation: man:core(5)
+ Записан дамп памяти.
+ 
+ Вероятно, это произошло из-за ошибки, допущенной в коде программы.
+-Рекомендуется сообщить ее разработчикам о возникшей проблеме.
++Рекомендуется сообщить её разработчикам о возникшей проблеме.
+ 
+ # Subject: A new session @SESSION_ID@ has been created for user @USER_ID@
+ -- 8d45620c1a4348dbb17410da57c60c66
+@@ -146,7 +146,7 @@ Defined-By: systemd
+ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+ 
+ Все системные службы, запуск которых предписан настройками, были запущены.
+-Впрочем, это еще не означает, что система в данный момент ничем не занята,
++Впрочем, это ещё не означает, что система в данный момент ничем не занята,
+ так как некоторые службы могут продолжать инициализацию даже после того, как
+ отчитались о своем запуске.
+ 
+@@ -274,7 +274,7 @@ Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
+ столбце файла /etc/fstab, либо в параметре Where= файла конфигурации юнита),
+ не является пустым. Это никак не мешает монтированию, однако ранее находившиеся
+ в нем файлы будут недоступны. Чтобы получить к ним доступ, вы можете вручную
+-перемонтировать нижележащую файловую систему в другую точку.
++перемонтировать эту файловую систему в другую точку.
+ 
+ # Subject: A virtual machine or container has been started
+ -- 24d8d4452573402496068381a6312df2
diff --git a/SOURCES/0220-gpt-auto-generator-Generate-explicit-dependencies-on.patch b/SOURCES/0220-gpt-auto-generator-Generate-explicit-dependencies-on.patch
deleted file mode 100644
index 5f88f3d..0000000
--- a/SOURCES/0220-gpt-auto-generator-Generate-explicit-dependencies-on.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-From 23623890843b81c5d0bd6115ae1f458539b2d43b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org>
-Date: Mon, 30 Sep 2013 01:34:45 +0200
-Subject: [PATCH] gpt-auto-generator: Generate explicit dependencies on
- systemd-fsck@.service instead of using FsckPassNo
-
-[tomegun: check for OOM]
----
- src/gpt-auto-generator/gpt-auto-generator.c | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
-index f1749be..adbf71d 100644
---- a/src/gpt-auto-generator/gpt-auto-generator.c
-+++ b/src/gpt-auto-generator/gpt-auto-generator.c
-@@ -179,7 +179,7 @@ static int add_swap(const char *path, const char *fstype) {
- }
- 
- static int add_home(const char *path, const char *fstype) {
--        _cleanup_free_ char *unit = NULL, *lnk = NULL;
-+        _cleanup_free_ char *unit = NULL, *lnk = NULL, *fsck = NULL;
-         _cleanup_fclose_ FILE *f = NULL;
- 
-         if (dir_is_empty("/home") <= 0)
-@@ -197,19 +197,23 @@ static int add_home(const char *path, const char *fstype) {
-                 return -errno;
-         }
- 
-+        fsck = unit_name_from_path_instance("systemd-fsck", path, ".service");
-+        if (!fsck)
-+                return log_oom();
-+
-         fprintf(f,
-                 "# Automatically generated by systemd-gpt-auto-generator\n\n"
-                 "[Unit]\n"
-                 "DefaultDependencies=no\n"
--                "After=" SPECIAL_LOCAL_FS_PRE_TARGET "\n"
-+                "Requires=%s\n"
-+                "After=" SPECIAL_LOCAL_FS_PRE_TARGET " %s\n"
-                 "Conflicts=" SPECIAL_UMOUNT_TARGET "\n"
-                 "Before=" SPECIAL_UMOUNT_TARGET " " SPECIAL_LOCAL_FS_TARGET "\n\n"
-                 "[Mount]\n"
-                 "What=%s\n"
-                 "Where=/home\n"
--                "Type=%s\n"
--                "FsckPassNo=2\n",
--                path, fstype);
-+                "Type=%s\n",
-+                fsck, fsck, path, fstype);
- 
-         fflush(f);
-         if (ferror(f)) {
diff --git a/SOURCES/0220-kmod-setup-don-t-warn-when-ipv6-can-t-be-loaded.patch b/SOURCES/0220-kmod-setup-don-t-warn-when-ipv6-can-t-be-loaded.patch
new file mode 100644
index 0000000..fd3e4ac
--- /dev/null
+++ b/SOURCES/0220-kmod-setup-don-t-warn-when-ipv6-can-t-be-loaded.patch
@@ -0,0 +1,33 @@
+From 7076491959d3e67f339a520dcdfb824a46ff5ccb Mon Sep 17 00:00:00 2001
+From: Daniel Mack <daniel@zonque.org>
+Date: Fri, 5 Jun 2015 14:59:36 +0200
+Subject: [PATCH] kmod-setup: don't warn when ipv6 can't be loaded
+
+Not having IPv6 is a valid setup. Let's not print a warning in that
+case.
+
+Addresses:
+
+  https://bugs.freedesktop.org/show_bug.cgi?id=87475
+
+(cherry picked from commit b4aa82f168913b7bff42017023b43933b3aa0d24)
+
+Cherry-picked from: b4aa82f
+Resolves: #1222517
+---
+ src/core/kmod-setup.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
+index 97f3b9b..6b2f295 100644
+--- a/src/core/kmod-setup.c
++++ b/src/core/kmod-setup.c
+@@ -66,7 +66,7 @@ int kmod_setup(void) {
+                 { "autofs4",   "/sys/class/misc/autofs",    true,  NULL                },
+ 
+                 /* early configure of ::1 on the loopback device */
+-                { "ipv6",      "/sys/module/ipv6",          true,  NULL                },
++                { "ipv6",      "/sys/module/ipv6",          false,  NULL               },
+ 
+                 /* this should never be a module */
+                 { "unix",      "/proc/net/unix",            true,  NULL                },
diff --git a/SOURCES/0221-Partially-revert-ma-setup-simplify.patch b/SOURCES/0221-Partially-revert-ma-setup-simplify.patch
new file mode 100644
index 0000000..df497de
--- /dev/null
+++ b/SOURCES/0221-Partially-revert-ma-setup-simplify.patch
@@ -0,0 +1,67 @@
+From 21559c09b39155d44f8997703a35211623a38689 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 1 Jun 2015 10:33:48 -0400
+Subject: [PATCH] Partially revert "ma-setup: simplify"
+
+copy_bytes() tries to do the write in chunks, but ima kernel code
+needs every rule to be written in one write. Writing the whole file
+at once avoids the issue.
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-June/032623.html
+http://sourceforge.net/p/linux-ima/mailman/message/34145236/
+https://bugzilla.redhat.com/show_bug.cgi?id=1226948
+(cherry picked from commit 116b6c8687e1da25fcecf80ba6ac16866e308d50)
+
+Cherry-picked from: 116b6c8
+Resolves: #1222517
+---
+ src/core/ima-setup.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c
+index 0e0d16a..1d4acfa 100644
+--- a/src/core/ima-setup.c
++++ b/src/core/ima-setup.c
+@@ -27,9 +27,10 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <fcntl.h>
++#include <sys/stat.h>
++#include <sys/mman.h>
+ 
+ #include "ima-setup.h"
+-#include "copy.h"
+ #include "util.h"
+ #include "log.h"
+ 
+@@ -42,6 +43,8 @@ int ima_setup(void) {
+ 
+ #ifdef HAVE_IMA
+         _cleanup_close_ int policyfd = -1, imafd = -1;
++        struct stat st;
++        char *policy;
+ 
+         if (access(IMA_SECFS_DIR, F_OK) < 0) {
+                 log_debug("IMA support is disabled in the kernel, ignoring.");
+@@ -66,12 +69,20 @@ int ima_setup(void) {
+                 return 0;
+         }
+ 
+-        r = copy_bytes(policyfd, imafd, (off_t) -1, false);
++        if (fstat(policyfd, &st) < 0)
++                return log_error_errno(errno, "Failed to fstat "IMA_POLICY_PATH": %m");
++
++        policy = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, policyfd, 0);
++        if (policy == MAP_FAILED)
++                return log_error_errno(errno, "Failed to mmap "IMA_POLICY_PATH": %m");
++
++        r = loop_write(imafd, policy, (size_t) st.st_size, false);
+         if (r < 0)
+                 log_error_errno(r, "Failed to load the IMA custom policy file "IMA_POLICY_PATH": %m");
+         else
+                 log_info("Successfully loaded the IMA custom policy "IMA_POLICY_PATH".");
+ 
++        munmap(policy, st.st_size);
+ #endif /* HAVE_IMA */
+         return r;
+ }
diff --git a/SOURCES/0221-fstab-generator-Generate-explicit-dependencies-on-sy.patch b/SOURCES/0221-fstab-generator-Generate-explicit-dependencies-on-sy.patch
deleted file mode 100644
index 7404814..0000000
--- a/SOURCES/0221-fstab-generator-Generate-explicit-dependencies-on-sy.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From 8a9eab141ab379c658fc198fb0b0ee4ca3bdd1d2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org>
-Date: Mon, 30 Sep 2013 01:34:44 +0200
-Subject: [PATCH] fstab-generator: Generate explicit dependencies on
- systemd-fsck@.service instead of using FsckPassNo
-
-[tomegun:
-  * order all fsck instances after fsck-root
-  * check for OOM
-  * added notes in the manpages]
-
-Conflicts:
-	man/systemd-fsck@.service.xml
-	man/systemd-fstab-generator.xml
----
- man/systemd-fsck@.service.xml         |  4 +---
- man/systemd-fstab-generator.xml       |  9 ++++-----
- src/fstab-generator/fstab-generator.c | 21 +++++++++++++++++----
- units/systemd-fsck@.service.in        |  2 +-
- 4 files changed, 23 insertions(+), 13 deletions(-)
-
-diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
-index c653dc5..17bd1c0 100644
---- a/man/systemd-fsck@.service.xml
-+++ b/man/systemd-fsck@.service.xml
-@@ -63,9 +63,7 @@
-                 check. <filename>systemd-fsck-root.service</filename> is
-                 responsible for file system checks on the root
-                 file system. The root file system check is performed
--                before the other file systems. Either service is enabled
--                at boot if passno in <filename>/etc/fstab</filename> for
--                the file system is set to a value greater than zero.</para>
-+                before the other file systems.</para>
- 
-                 <para><filename>systemd-fsck</filename> will
-                 forward file system checking progress to the
-diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml
-index e3cf5d2..740db8f 100644
---- a/man/systemd-fstab-generator.xml
-+++ b/man/systemd-fstab-generator.xml
-@@ -61,11 +61,10 @@
-                 reloaded. This will instantiate mount and swap units
-                 as necessary.</para>
- 
--                <para>The <varname>passno</varname> field is treated
--                like a simple boolean, and the ordering information is
--                discarded. However, if the root file system is
--                checked, it is checked before all the other
--                file systems.</para>
-+                <para>The <term><varname>passno</varname></term> field
-+                is treated like a simlpe boolean, and the ordering information
-+                is discarded. However, the root filesystem is checked
-+                before all the other filesystems.</para>
- 
-                 <para>See
-                 <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry>
-diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
-index 6cecb4e..7874ff1 100644
---- a/src/fstab-generator/fstab-generator.c
-+++ b/src/fstab-generator/fstab-generator.c
-@@ -209,17 +209,30 @@ static int add_mount(
-                         "Before=%s\n",
-                         post);
- 
-+        if (passno > 0) {
-+                _cleanup_free_ char *fsck = NULL;
-+
-+                fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
-+                if (!fsck)
-+                        return log_oom();
-+
-+                fprintf(f,
-+                        "Requires=%s\n"
-+                        "After=%s\n",
-+                        fsck,
-+                        fsck);
-+        }
-+
-+
-         fprintf(f,
-                 "\n"
-                 "[Mount]\n"
-                 "What=%s\n"
-                 "Where=%s\n"
--                "Type=%s\n"
--                "FsckPassNo=%i\n",
-+                "Type=%s\n",
-                 what,
-                 where,
--                type,
--                passno);
-+                type);
- 
-         if (!isempty(opts) &&
-             !streq(opts, "defaults"))
-diff --git a/units/systemd-fsck@.service.in b/units/systemd-fsck@.service.in
-index e229cdc..c12efa8 100644
---- a/units/systemd-fsck@.service.in
-+++ b/units/systemd-fsck@.service.in
-@@ -10,7 +10,7 @@ Description=File System Check on %f
- Documentation=man:systemd-fsck@.service(8)
- DefaultDependencies=no
- BindsTo=%i.device
--After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device
-+After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device systemd-fsck-root.service
- Before=shutdown.target
- 
- [Service]
diff --git a/SOURCES/0222-fsck-root-only-run-when-requested-in-fstab.patch b/SOURCES/0222-fsck-root-only-run-when-requested-in-fstab.patch
deleted file mode 100644
index 21d7714..0000000
--- a/SOURCES/0222-fsck-root-only-run-when-requested-in-fstab.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 8610788332cb6492d8e5275b32200db4138401bb Mon Sep 17 00:00:00 2001
-From: Tom Gundersen <teg@jklm.no>
-Date: Sat, 19 Oct 2013 11:38:42 +0200
-Subject: [PATCH] fsck-root: only run when requested in fstab
-
-fsck-root is redundant in case an initrd is used, or in case the rootfs
-is never remounted 'rw', so the new default is the correct behavior for
-most users. For the rest, they should enable it in fstab.
----
- Makefile.am                           |  1 -
- man/systemd-fsck@.service.xml         |  4 +++-
- src/fstab-generator/fstab-generator.c | 31 ++++++++++++++++++++++---------
- 3 files changed, 25 insertions(+), 11 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index df63275..fa2fba6 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -4415,7 +4415,6 @@ SYSINIT_TARGET_WANTS += \
- 	systemd-update-utmp.service
- LOCAL_FS_TARGET_WANTS += \
- 	systemd-remount-fs.service \
--	systemd-fsck-root.service \
- 	tmp.mount
- MULTI_USER_TARGET_WANTS += \
- 	getty.target \
-diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
-index 17bd1c0..811392b 100644
---- a/man/systemd-fsck@.service.xml
-+++ b/man/systemd-fsck@.service.xml
-@@ -63,7 +63,9 @@
-                 check. <filename>systemd-fsck-root.service</filename> is
-                 responsible for file system checks on the root
-                 file system. The root file system check is performed
--                before the other file systems.</para>
-+                before the other file systems. Either service is enabled
-+                at boot if passno in <filename>/etc/fstab</filename> for
-+                the filesystem is set to a value greater than zero.</para>
- 
-                 <para><filename>systemd-fsck</filename> will
-                 forward file system checking progress to the
-diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
-index 7874ff1..c0c2992 100644
---- a/src/fstab-generator/fstab-generator.c
-+++ b/src/fstab-generator/fstab-generator.c
-@@ -210,17 +210,29 @@ static int add_mount(
-                         post);
- 
-         if (passno > 0) {
--                _cleanup_free_ char *fsck = NULL;
-+                if (streq(where, "/")) {
-+                        lnk = strjoin(arg_dest, "/", SPECIAL_LOCAL_FS_TARGET, ".wants/", "systemd-fsck-root.service", NULL);
-+                        if (!lnk)
-+                                return log_oom();
- 
--                fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
--                if (!fsck)
--                        return log_oom();
-+                        mkdir_parents_label(lnk, 0755);
-+                        if (symlink("systemd-fsck-root.service", lnk) < 0) {
-+                                log_error("Failed to create symlink %s: %m", lnk);
-+                                return -errno;
-+                        }
-+                } else {
-+                        _cleanup_free_ char *fsck = NULL;
- 
--                fprintf(f,
--                        "Requires=%s\n"
--                        "After=%s\n",
--                        fsck,
--                        fsck);
-+                        fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
-+                        if (!fsck)
-+                                return log_oom();
-+
-+                        fprintf(f,
-+                                "Requires=%s\n"
-+                                "After=%s\n",
-+                                fsck,
-+                                fsck);
-+                }
-         }
- 
- 
-@@ -248,6 +260,7 @@ static int add_mount(
- 
-         if (!noauto) {
-                 if (post) {
-+                        free(lnk);
-                         lnk = strjoin(arg_dest, "/", post, nofail || automount ? ".wants/" : ".requires/", name, NULL);
-                         if (!lnk)
-                                 return log_oom();
diff --git a/SOURCES/0222-ima-setup-write-policy-one-line-at-a-time.patch b/SOURCES/0222-ima-setup-write-policy-one-line-at-a-time.patch
new file mode 100644
index 0000000..cd5d2f0
--- /dev/null
+++ b/SOURCES/0222-ima-setup-write-policy-one-line-at-a-time.patch
@@ -0,0 +1,94 @@
+From 877774af9162dde25e314ff99a427dd28435c26a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Wed, 10 Jun 2015 15:19:03 -0400
+Subject: [PATCH] ima-setup: write policy one line at a time
+
+ima_write_policy() expects data to be written as one or more
+rules, no more than PAGE_SIZE at a time. Easiest way to ensure
+that we are not splitting rules is to read and write one line at
+a time.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1226948
+(cherry picked from commit 92994160afa888255a7ede525dd16e3f1e2ed10d)
+
+Cherry-picked from: 9299416
+Resolves: #1222517
+---
+ src/core/ima-setup.c | 41 +++++++++++++++++------------------------
+ 1 file changed, 17 insertions(+), 24 deletions(-)
+
+diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c
+index 1d4acfa..81ce2cd 100644
+--- a/src/core/ima-setup.c
++++ b/src/core/ima-setup.c
+@@ -24,11 +24,6 @@
+ #include <unistd.h>
+ #include <stdio.h>
+ #include <errno.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-#include <fcntl.h>
+-#include <sys/stat.h>
+-#include <sys/mman.h>
+ 
+ #include "ima-setup.h"
+ #include "util.h"
+@@ -39,20 +34,19 @@
+ #define IMA_POLICY_PATH "/etc/ima/ima-policy"
+ 
+ int ima_setup(void) {
+-        int r = 0;
+-
+ #ifdef HAVE_IMA
+-        _cleanup_close_ int policyfd = -1, imafd = -1;
+-        struct stat st;
+-        char *policy;
++        _cleanup_fclose_ FILE *input = NULL;
++        _cleanup_close_ int imafd = -1;
++        unsigned lineno = 0;
++        char line[page_size()];
+ 
+         if (access(IMA_SECFS_DIR, F_OK) < 0) {
+                 log_debug("IMA support is disabled in the kernel, ignoring.");
+                 return 0;
+         }
+ 
+-        policyfd = open(IMA_POLICY_PATH, O_RDONLY|O_CLOEXEC);
+-        if (policyfd < 0) {
++        input = fopen(IMA_POLICY_PATH, "re");
++        if (!input) {
+                 log_full_errno(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, errno,
+                                "Failed to open the IMA custom policy file "IMA_POLICY_PATH", ignoring: %m");
+                 return 0;
+@@ -69,20 +63,19 @@ int ima_setup(void) {
+                 return 0;
+         }
+ 
+-        if (fstat(policyfd, &st) < 0)
+-                return log_error_errno(errno, "Failed to fstat "IMA_POLICY_PATH": %m");
++        FOREACH_LINE(line, input,
++                     return log_error_errno(errno, "Failed to read the IMA custom policy file "IMA_POLICY_PATH": %m")) {
++                size_t len;
+ 
+-        policy = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, policyfd, 0);
+-        if (policy == MAP_FAILED)
+-                return log_error_errno(errno, "Failed to mmap "IMA_POLICY_PATH": %m");
++                len = strlen(line);
++                lineno++;
+ 
+-        r = loop_write(imafd, policy, (size_t) st.st_size, false);
+-        if (r < 0)
+-                log_error_errno(r, "Failed to load the IMA custom policy file "IMA_POLICY_PATH": %m");
+-        else
+-                log_info("Successfully loaded the IMA custom policy "IMA_POLICY_PATH".");
++                if (len > 0 && write(imafd, line, len) < 0)
++                        return log_error_errno(errno, "Failed to load the IMA custom policy file "IMA_POLICY_PATH"%u: %m",
++                                               lineno);
++        }
+ 
+-        munmap(policy, st.st_size);
++        log_info("Successfully loaded the IMA custom policy "IMA_POLICY_PATH".");
+ #endif /* HAVE_IMA */
+-        return r;
++        return 0;
+ }
diff --git a/SOURCES/0223-ata_id-unbotch-format-specifier.patch b/SOURCES/0223-ata_id-unbotch-format-specifier.patch
new file mode 100644
index 0000000..c388f3a
--- /dev/null
+++ b/SOURCES/0223-ata_id-unbotch-format-specifier.patch
@@ -0,0 +1,34 @@
+From b2aa96a5e92762adaff127227338fe5034175fcd Mon Sep 17 00:00:00 2001
+From: Jan Engelhardt <jengelh@inai.de>
+Date: Wed, 24 Jun 2015 01:48:18 +0200
+Subject: [PATCH] ata_id: unbotch format specifier
+
+Commit v218-247-g11c6f69 broke the output of the utility. "%1$" PRIu64
+"x" expands to "%1$lux", essentially "%lux", which shows the problem.
+u and x cannot be combined, u wins as the type character, and x gets
+emitted verbatim to stdout.
+
+References: https://bugzilla.redhat.com/show_bug.cgi?id=1227503
+(cherry picked from commit ec62e858734a66130f68d036c55c2050bde1e52e)
+
+Cherry-picked from: ec62e85
+Resolves: #1222517
+---
+ src/udev/ata_id/ata_id.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/udev/ata_id/ata_id.c b/src/udev/ata_id/ata_id.c
+index 9e4f674..b6f28c6 100644
+--- a/src/udev/ata_id/ata_id.c
++++ b/src/udev/ata_id/ata_id.c
+@@ -639,8 +639,8 @@ int main(int argc, char *argv[])
+                  */
+                 word = identify.wyde[108];
+                 if ((word & 0xf000) == 0x5000)
+-                        printf("ID_WWN=0x%1$"PRIu64"x\n"
+-                               "ID_WWN_WITH_EXTENSION=0x%1$"PRIu64"x\n",
++                        printf("ID_WWN=0x%1$" PRIx64 "\n"
++                               "ID_WWN_WITH_EXTENSION=0x%1$" PRIx64 "\n",
+                                identify.octa[108/4]);
+ 
+                 /* from Linux's include/linux/ata.h */
diff --git a/SOURCES/0223-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch b/SOURCES/0223-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch
deleted file mode 100644
index 62ebf31..0000000
--- a/SOURCES/0223-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch
+++ /dev/null
@@ -1,360 +0,0 @@
-From 49bfaaa65107a9d79fbb1276e44fd4e3c98b0e9c Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 7 Feb 2014 11:58:25 +0100
-Subject: [PATCH] core: allow PIDs to be watched by two units at the same time
-
-In some cases it is interesting to map a PID to two units at the same
-time. For example, when a user logs in via a getty, which is reexeced to
-/sbin/login that binary will be explicitly referenced as main pid of the
-getty service, as well as implicitly referenced as part of the session
-scope.
-
-Conflicts:
-	src/core/manager.c
-	src/core/manager.h
----
- src/core/manager.c | 201 ++++++++++++++++++++++++++++++-----------------------
- src/core/manager.h |   9 ++-
- src/core/unit.c    |  28 ++++++--
- 3 files changed, 142 insertions(+), 96 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index db5094f..2829c95 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -525,7 +525,10 @@ int manager_new(SystemdRunningAs running_as, bool reexecuting, Manager **_m) {
-         if (!(m->jobs = hashmap_new(trivial_hash_func, trivial_compare_func)))
-                 goto fail;
- 
--        if (!(m->watch_pids = hashmap_new(trivial_hash_func, trivial_compare_func)))
-+        if (!(m->watch_pids1 = hashmap_new(trivial_hash_func, trivial_compare_func)))
-+                goto fail;
-+
-+        if (!(m->watch_pids2 = hashmap_new(trivial_hash_func, trivial_compare_func)))
-                 goto fail;
- 
-         m->cgroup_unit = hashmap_new(string_hash_func, string_compare_func);
-@@ -740,7 +743,8 @@ void manager_free(Manager *m) {
- 
-         hashmap_free(m->units);
-         hashmap_free(m->jobs);
--        hashmap_free(m->watch_pids);
-+        hashmap_free(m->watch_pids1);
-+        hashmap_free(m->watch_pids2);
-         hashmap_free(m->watch_bus);
- 
-         if (m->epoll_fd >= 0)
-@@ -1247,6 +1251,26 @@ unsigned manager_dispatch_dbus_queue(Manager *m) {
-         return n;
- }
- 
-+static void manager_invoke_notify_message(Manager *m, Unit *u, pid_t pid, char *buf, size_t n) {
-+        _cleanup_strv_free_ char **tags = NULL;
-+
-+        assert(m);
-+        assert(u);
-+        assert(buf);
-+        assert(n > 0);
-+
-+        tags = strv_split(buf, "\n\r");
-+        if (!tags) {
-+                log_oom();
-+                return;
-+        }
-+
-+        log_debug_unit(u->id, "Got notification message for unit %s", u->id);
-+
-+        if (UNIT_VTABLE(u)->notify_message)
-+                UNIT_VTABLE(u)->notify_message(u, pid, tags);
-+}
-+
- static int manager_process_notify_fd(Manager *m) {
-         ssize_t n;
- 
-@@ -1259,6 +1283,8 @@ static int manager_process_notify_fd(Manager *m) {
-                         .iov_len = sizeof(buf)-1,
-                 };
- 
-+                bool found = false;
-+
-                 union {
-                         struct cmsghdr cmsghdr;
-                         uint8_t buf[CMSG_SPACE(sizeof(struct ucred))];
-@@ -1272,7 +1298,6 @@ static int manager_process_notify_fd(Manager *m) {
-                 };
-                 struct ucred *ucred;
-                 Unit *u;
--                _cleanup_strv_free_ char **tags = NULL;
- 
-                 n = recvmsg(m->notify_watch.fd, &msghdr, MSG_DONTWAIT);
-                 if (n <= 0) {
-@@ -1295,105 +1320,105 @@ static int manager_process_notify_fd(Manager *m) {
- 
-                 ucred = (struct ucred*) CMSG_DATA(&control.cmsghdr);
- 
--                u = hashmap_get(m->watch_pids, LONG_TO_PTR(ucred->pid));
--                if (!u) {
--                        u = manager_get_unit_by_pid(m, ucred->pid);
--                        if (!u) {
--                                log_warning("Cannot find unit for notify message of PID %lu.", (unsigned long) ucred->pid);
--                                continue;
--                        }
--                }
--
-                 assert((size_t) n < sizeof(buf));
-                 buf[n] = 0;
--                tags = strv_split(buf, "\n\r");
--                if (!tags)
--                        return log_oom();
--
--                log_debug_unit(u->id, "Got notification message for unit %s", u->id);
--
--                if (UNIT_VTABLE(u)->notify_message)
--                        UNIT_VTABLE(u)->notify_message(u, ucred->pid, tags);
--        }
--
--        return 0;
--}
--
--static int manager_dispatch_sigchld(Manager *m) {
--        assert(m);
--
--        for (;;) {
--                siginfo_t si = {};
--                Unit *u;
--                int r;
--
--                /* First we call waitd() for a PID and do not reap the
--                 * zombie. That way we can still access /proc/$PID for
--                 * it while it is a zombie. */
--                if (waitid(P_ALL, 0, &si, WEXITED|WNOHANG|WNOWAIT) < 0) {
--
--                        if (errno == ECHILD)
--                                break;
- 
--                        if (errno == EINTR)
--                                continue;
--
--                        return -errno;
-+                u = manager_get_unit_by_pid(m, ucred->pid);
-+                if (u) {
-+                        manager_invoke_notify_message(m, u, ucred->pid, buf, n);
-+                        found = true;
-                 }
- 
--                if (si.si_pid <= 0)
--                        break;
--
--                if (si.si_code == CLD_EXITED || si.si_code == CLD_KILLED || si.si_code == CLD_DUMPED) {
--                        _cleanup_free_ char *name = NULL;
--
--                        get_process_comm(si.si_pid, &name);
--                        log_debug("Got SIGCHLD for process %lu (%s)", (unsigned long) si.si_pid, strna(name));
-+                u = hashmap_get(m->watch_pids1, LONG_TO_PTR(ucred->pid));
-+                if (u) {
-+                        manager_invoke_notify_message(m, u, ucred->pid, buf, n);
-+                        found = true;
-                 }
- 
--                /* Let's flush any message the dying child might still
--                 * have queued for us. This ensures that the process
--                 * still exists in /proc so that we can figure out
--                 * which cgroup and hence unit it belongs to. */
--                r = manager_process_notify_fd(m);
--                if (r < 0)
--                        return r;
--
--                /* And now figure out the unit this belongs to */
--                u = hashmap_get(m->watch_pids, LONG_TO_PTR(si.si_pid));
--                if (!u)
--                        u = manager_get_unit_by_pid(m, si.si_pid);
--
--                /* And now, we actually reap the zombie. */
--                if (waitid(P_PID, si.si_pid, &si, WEXITED) < 0) {
--                        if (errno == EINTR)
--                                continue;
--
--                        return -errno;
-+                u = hashmap_get(m->watch_pids2, LONG_TO_PTR(ucred->pid));
-+                if (u) {
-+                        manager_invoke_notify_message(m, u, ucred->pid, buf, n);
-+                        found = true;
-                 }
- 
--                if (si.si_code != CLD_EXITED && si.si_code != CLD_KILLED && si.si_code != CLD_DUMPED)
--                        continue;
-+                if (!found)
-+                        log_warning("Cannot find unit for notify message of PID %lu.",(long unsigned) ucred->pid);
-+        }
- 
--                log_debug("Child %lu died (code=%s, status=%i/%s)",
--                          (long unsigned) si.si_pid,
--                          sigchld_code_to_string(si.si_code),
--                          si.si_status,
--                          strna(si.si_code == CLD_EXITED
--                                ? exit_status_to_string(si.si_status, EXIT_STATUS_FULL)
--                                : signal_to_string(si.si_status)));
-+        return 0;
-+}
- 
--                if (!u)
--                        continue;
-+static void invoke_sigchld_event(Manager *m, Unit *u, siginfo_t *si) {
-+        assert(m);
-+        assert(u);
-+        assert(si);
- 
--                log_debug_unit(u->id,
--                               "Child %lu belongs to %s", (long unsigned) si.si_pid, u->id);
-+        log_debug_unit(u->id, "Child %lu belongs to %s",(long unsigned) si->si_pid, u->id);
- 
--                unit_unwatch_pid(u, si.si_pid);
--                UNIT_VTABLE(u)->sigchld_event(u, si.si_pid, si.si_code, si.si_status);
--        }
-+        unit_unwatch_pid(u, si->si_pid);
-+        UNIT_VTABLE(u)->sigchld_event(u, si->si_pid, si->si_code, si->si_status);
-+}
- 
--        return 0;
-+static int manager_dispatch_sigchld(Manager *m) {
-+    assert(m);
-+
-+    for (;;) {
-+            siginfo_t si = {};
-+
-+            /* First we call waitd() for a PID and do not reap the
-+             * zombie. That way we can still access /proc/$PID for
-+             * it while it is a zombie. */
-+            if (waitid(P_ALL, 0, &si, WEXITED|WNOHANG|WNOWAIT) < 0) {
-+
-+                    if (errno == ECHILD)
-+                            break;
-+
-+                    if (errno == EINTR)
-+                            continue;
-+
-+                    return -errno;
-+            }
-+
-+            if (si.si_pid <= 0)
-+                    break;
-+
-+            if (si.si_code == CLD_EXITED || si.si_code == CLD_KILLED || si.si_code == CLD_DUMPED) {
-+                    _cleanup_free_ char *name = NULL;
-+                    Unit *u;
-+
-+                    get_process_comm(si.si_pid, &name);
-+
-+                    log_debug("Child %lu (%s) died (code=%s, status=%i/%s)",
-+                              (long unsigned) si.si_pid, strna(name),
-+                              sigchld_code_to_string(si.si_code),
-+                              si.si_status,
-+                              strna(si.si_code == CLD_EXITED
-+                                    ? exit_status_to_string(si.si_status, EXIT_STATUS_FULL)
-+                                    : signal_to_string(si.si_status)));
-+
-+                    /* And now figure out the unit this belongs
-+                     * to, it might be multiple... */
-+                    u = manager_get_unit_by_pid(m, si.si_pid);
-+                    if (u)
-+                            invoke_sigchld_event(m, u, &si);
-+                    u = hashmap_get(m->watch_pids1, LONG_TO_PTR(si.si_pid));
-+                    if (u)
-+                            invoke_sigchld_event(m, u, &si);
-+                    u = hashmap_get(m->watch_pids2, LONG_TO_PTR(si.si_pid));
-+                    if (u)
-+                            invoke_sigchld_event(m, u, &si);
-+            }
-+
-+            /* And now, we actually reap the zombie. */
-+            if (waitid(P_PID, si.si_pid, &si, WEXITED) < 0) {
-+                    if (errno == EINTR)
-+                            continue;
-+
-+                    return -errno;
-+            }
-+    }
-+
-+    return 0;
- }
- 
- static int manager_start_target(Manager *m, const char *name, JobMode mode) {
-diff --git a/src/core/manager.h b/src/core/manager.h
-index ee42c5e..0133ea5 100644
---- a/src/core/manager.h
-+++ b/src/core/manager.h
-@@ -125,7 +125,14 @@ struct Manager {
-         /* Units that should be realized */
-         LIST_HEAD(Unit, cgroup_queue);
- 
--        Hashmap *watch_pids;  /* pid => Unit object n:1 */
-+        /* We use two hash tables here, since the same PID might be
-+         * watched by two different units: once the unit that forked
-+         * it off, and possibly a different unit to which it was
-+         * joined as cgroup member. Since we know that it is either
-+         * one or two units for each PID we just use to hashmaps
-+         * here. */
-+        Hashmap *watch_pids1;  /* pid => Unit object n:1 */
-+        Hashmap *watch_pids2;  /* pid => Unit object n:1 */
- 
-         char *notify_socket;
- 
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 0332094..a510eb2 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1665,16 +1665,27 @@ int unit_watch_pid(Unit *u, pid_t pid) {
-         assert(u);
-         assert(pid >= 1);
- 
-+        /* Watch a specific PID. We only support one or two units
-+         * watching each PID for now, not more. */
-+
-+        r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
-+        if (r < 0)
-+                return r;
-+
-         r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
-         if (r < 0)
-                 return r;
- 
--        /* Watch a specific PID. We only support one unit watching
--         * each PID for now. */
-+        r = hashmap_put(u->manager->watch_pids1, LONG_TO_PTR(pid), u);
-+        if (r == -EEXIST) {
-+                r = hashmap_ensure_allocated(&u->manager->watch_pids2, trivial_hash_func, trivial_compare_func);
-+                if (r < 0)
-+                        return r;
- 
--        r = set_put(u->pids, LONG_TO_PTR(pid));
-+                r = hashmap_put(u->manager->watch_pids2, LONG_TO_PTR(pid), u);
-+        }
- 
--        q = hashmap_put(u->manager->watch_pids, LONG_TO_PTR(pid), u);
-+        q = set_put(u->pids, LONG_TO_PTR(pid));
-         if (q < 0)
-                 return q;
- 
-@@ -1685,7 +1696,8 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
-         assert(u);
-         assert(pid >= 1);
- 
--        hashmap_remove_value(u->manager->watch_pids, LONG_TO_PTR(pid), u);
-+        hashmap_remove_value(u->manager->watch_pids1, LONG_TO_PTR(pid), u);
-+        hashmap_remove_value(u->manager->watch_pids2, LONG_TO_PTR(pid), u);
-         set_remove(u->pids, LONG_TO_PTR(pid));
- }
- 
-@@ -1758,8 +1770,10 @@ void unit_unwatch_all_pids(Unit *u) {
- 
-         assert(u);
- 
--        SET_FOREACH(e, u->pids, i)
--                hashmap_remove_value(u->manager->watch_pids, e, u);
-+        SET_FOREACH(e, u->pids, i) {
-+                hashmap_remove_value(u->manager->watch_pids1, e, u);
-+                hashmap_remove_value(u->manager->watch_pids2, e, u);
-+        }
- 
-         set_free(u->pids);
-         u->pids = NULL;
diff --git a/SOURCES/0224-core-correctly-unregister-PIDs-from-PID-hashtables.patch b/SOURCES/0224-core-correctly-unregister-PIDs-from-PID-hashtables.patch
deleted file mode 100644
index 19726e6..0000000
--- a/SOURCES/0224-core-correctly-unregister-PIDs-from-PID-hashtables.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-From 8581dc72de05227a236b6ff3751c40f1e0be1b2f Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 6 Mar 2014 02:19:42 +0100
-Subject: [PATCH] core: correctly unregister PIDs from PID hashtables
-
-Conflicts:
-	src/core/unit.c
----
- src/core/unit.c | 41 ++++++++++++++++++-----------------------
- 1 file changed, 18 insertions(+), 23 deletions(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index a510eb2..6ee34ec 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1668,11 +1668,11 @@ int unit_watch_pid(Unit *u, pid_t pid) {
-         /* Watch a specific PID. We only support one or two units
-          * watching each PID for now, not more. */
- 
--        r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
-+        r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
-         if (r < 0)
-                 return r;
- 
--        r = set_ensure_allocated(&u->pids, trivial_hash_func, trivial_compare_func);
-+        r = hashmap_ensure_allocated(&u->manager->watch_pids1, trivial_hash_func, trivial_compare_func);
-         if (r < 0)
-                 return r;
- 
-@@ -1701,7 +1701,17 @@ void unit_unwatch_pid(Unit *u, pid_t pid) {
-         set_remove(u->pids, LONG_TO_PTR(pid));
- }
- 
--static int watch_pids_in_path(Unit *u, const char *path) {
-+void unit_unwatch_all_pids(Unit *u) {
-+        assert(u);
-+
-+        while (!set_isempty(u->pids))
-+                unit_unwatch_pid(u, PTR_TO_LONG(set_first(u->pids)));
-+
-+        set_free(u->pids);
-+        u->pids = NULL;
-+}
-+
-+static int unit_watch_pids_in_path(Unit *u, const char *path) {
-         _cleanup_closedir_ DIR *d = NULL;
-         _cleanup_fclose_ FILE *f = NULL;
-         int ret = 0, r;
-@@ -1739,7 +1749,7 @@ static int watch_pids_in_path(Unit *u, const char *path) {
-                         if (!p)
-                                 return -ENOMEM;
- 
--                        r = watch_pids_in_path(u, p);
-+                        r = unit_watch_pids_in_path(u, p);
-                         if (r < 0 && ret >= 0)
-                                 ret = r;
-                 }
-@@ -1756,27 +1766,12 @@ static int watch_pids_in_path(Unit *u, const char *path) {
- int unit_watch_all_pids(Unit *u) {
-         assert(u);
- 
--        if (!u->cgroup_path)
--                return -ENOENT;
--
-         /* Adds all PIDs from our cgroup to the set of PIDs we watch */
- 
--        return watch_pids_in_path(u, u->cgroup_path);
--}
--
--void unit_unwatch_all_pids(Unit *u) {
--        Iterator i;
--        void *e;
--
--        assert(u);
--
--        SET_FOREACH(e, u->pids, i) {
--                hashmap_remove_value(u->manager->watch_pids1, e, u);
--                hashmap_remove_value(u->manager->watch_pids2, e, u);
--        }
-+        if (!u->cgroup_path)
-+                return -ENOENT;
- 
--        set_free(u->pids);
--        u->pids = NULL;
-+        return unit_watch_pids_in_path(u, u->cgroup_path);
- }
- 
- void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
-@@ -1794,7 +1789,7 @@ void unit_tidy_watch_pids(Unit *u, pid_t except1, pid_t except2) {
-                         continue;
- 
-                 if (kill(pid, 0) < 0 && errno == ESRCH)
--                        set_remove(u->pids, e);
-+                        unit_unwatch_pid(u, pid);
-         }
- }
- 
diff --git a/SOURCES/0224-install-explicitly-return-0-on-success.patch b/SOURCES/0224-install-explicitly-return-0-on-success.patch
new file mode 100644
index 0000000..b3073af
--- /dev/null
+++ b/SOURCES/0224-install-explicitly-return-0-on-success.patch
@@ -0,0 +1,35 @@
+From c086e8c91b0dc455bfa5fa09f3f5aa20c582b2a0 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Thu, 25 Jun 2015 16:06:40 +0200
+Subject: [PATCH] install: explicitly return 0 on success
+
+Maybe there is some left-over value stored in r from previous function
+call. Let's make sure we always return consistent error code when we reach end of
+the function body.
+
+Fixes following crash of test-install,
+
+Assertion 'r == 0' failed at src/test/test-install.c:52, function main(). Aborting.
+[1]    11703 abort (core dumped)  ./test-install
+
+(cherry picked from commit 77cd2c87a47c49aa9063fbaa4d9077f4a381cab1)
+
+Cherry-picked from: 77cd2c8
+Resolves: #1222517
+---
+ src/shared/install.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/install.c b/src/shared/install.c
+index b62065b..aa197e9 100644
+--- a/src/shared/install.c
++++ b/src/shared/install.c
+@@ -2265,7 +2265,7 @@ int unit_file_get_list(
+                 }
+         }
+ 
+-        return r;
++        return 0;
+ }
+ 
+ static const char* const unit_file_state_table[_UNIT_FILE_STATE_MAX] = {
diff --git a/SOURCES/0225-logind-uninitialized-timer_fd-is-set-to-1.patch b/SOURCES/0225-logind-uninitialized-timer_fd-is-set-to-1.patch
deleted file mode 100644
index 214ad91..0000000
--- a/SOURCES/0225-logind-uninitialized-timer_fd-is-set-to-1.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 855cfba6fb79066f46f02bbab09d498eda0d7cdd Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Thu, 13 Mar 2014 11:16:36 +0100
-Subject: [PATCH] logind: uninitialized timer_fd is set to -1
-
----
- src/login/logind-session.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index b0e4bf6..730f11d 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -657,7 +657,7 @@ static int session_unlink_x11_socket(Session *s) {
- static void session_close_timer_fd(Session *s) {
-         assert(s);
- 
--        if (s->timer_fd <= 0)
-+        if (s->timer_fd < 0)
-                 return;
- 
-         hashmap_remove(s->manager->timer_fds, INT_TO_PTR(s->timer_fd + 1));
diff --git a/SOURCES/0225-systemd.service.xml-document-that-systemd-removes-th.patch b/SOURCES/0225-systemd.service.xml-document-that-systemd-removes-th.patch
new file mode 100644
index 0000000..c7623d2
--- /dev/null
+++ b/SOURCES/0225-systemd.service.xml-document-that-systemd-removes-th.patch
@@ -0,0 +1,30 @@
+From 7dbfc725ccbdcdf33aa46f97a68275fbd5f936c5 Mon Sep 17 00:00:00 2001
+From: Felipe Sateler <fsateler@debian.org>
+Date: Sat, 27 Jun 2015 17:25:06 -0300
+Subject: [PATCH] systemd.service.xml: document that systemd removes the
+ PIDFile
+
+(cherry picked from commit 341db20b7e98199003b4ce6aa52b339757828204)
+
+Cherry-picked from: 341db20
+Resolves: #1222517
+---
+ man/systemd.service.xml | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/man/systemd.service.xml b/man/systemd.service.xml
+index f598705..a274db4 100644
+--- a/man/systemd.service.xml
++++ b/man/systemd.service.xml
+@@ -226,7 +226,10 @@
+         services where <varname>Type=</varname> is set to
+         <option>forking</option>. systemd will read the PID of the
+         main process of the daemon after start-up of the service.
+-        systemd will not write to the file configured here.</para>
++        systemd will not write to the file configured here, although
++        it will remove the file after the service has shut down if it
++        still exists.
++        </para>
+         </listitem>
+       </varlistentry>
+ 
diff --git a/SOURCES/0226-core-handle-log-target-null-when-calling-systemd-shu.patch b/SOURCES/0226-core-handle-log-target-null-when-calling-systemd-shu.patch
new file mode 100644
index 0000000..5fb2cb4
--- /dev/null
+++ b/SOURCES/0226-core-handle-log-target-null-when-calling-systemd-shu.patch
@@ -0,0 +1,31 @@
+From ce82f7886b2326a507d523dcf459be4ab7fd8eb1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Iago=20L=C3=B3pez=20Galeiras?= <iago@endocode.com>
+Date: Tue, 30 Jun 2015 15:08:49 +0200
+Subject: [PATCH] core: handle --log-target=null when calling systemd-shutdown
+
+When shutting down, if systemd was started with --log-target=null,
+systemd-shutdown was being called with --log-target=console.
+
+(cherry picked from commit 10f00ff17b9c9b55dc77c99797d27cb819fa5fdf)
+
+Cherry-picked from: 10f00ff
+Resolves: #1222517
+---
+ src/core/main.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/core/main.c b/src/core/main.c
+index fd527d4..1c8d67d 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -2001,6 +2001,10 @@ finish:
+                         command_line[pos++] = "kmsg";
+                         break;
+ 
++                case LOG_TARGET_NULL:
++                        command_line[pos++] = "null";
++                        break;
++
+                 case LOG_TARGET_CONSOLE:
+                 default:
+                         command_line[pos++] = "console";
diff --git a/SOURCES/0226-logind-add-forgotten-return-statement.patch b/SOURCES/0226-logind-add-forgotten-return-statement.patch
deleted file mode 100644
index dc11357..0000000
--- a/SOURCES/0226-logind-add-forgotten-return-statement.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From bb13793eb734f73c4faba11d4d90077c977ec673 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Thu, 13 Mar 2014 11:18:27 +0100
-Subject: [PATCH] logind: add forgotten return statement
-
----
- src/login/logind-session.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index 730f11d..ece222a 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -782,6 +782,8 @@ void session_release(Session *s) {
-                 goto out;
-         }
- 
-+        return;
-+
- out:
-         if (s->timer_fd >= 0) {
-                 close_nointr(s->timer_fd);
diff --git a/SOURCES/0227-core-remove-extra-semicolon-and-make-gcc-shut-up.patch b/SOURCES/0227-core-remove-extra-semicolon-and-make-gcc-shut-up.patch
deleted file mode 100644
index 96c3003..0000000
--- a/SOURCES/0227-core-remove-extra-semicolon-and-make-gcc-shut-up.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From dce7f7c81bebf628623aad4a666fef6449294a8e Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Thu, 13 Mar 2014 11:25:45 +0100
-Subject: [PATCH] core: remove extra semicolon and make gcc shut up
-
----
- src/core/mount.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/mount.c b/src/core/mount.c
-index 62ec7fe..3672338 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -1414,7 +1414,7 @@ static int mount_add_one(
-                 bool set_flags) {
-         int r;
-         Unit *u;
--        bool delete, changed = false;;
-+        bool delete, changed = false;
-         char *e, *w = NULL, *o = NULL, *f = NULL;
-         MountParameters *p;
-         bool load_extras = false;
diff --git a/SOURCES/0227-man-ProtectHome-protects-root-as-well.patch b/SOURCES/0227-man-ProtectHome-protects-root-as-well.patch
new file mode 100644
index 0000000..5fe757e
--- /dev/null
+++ b/SOURCES/0227-man-ProtectHome-protects-root-as-well.patch
@@ -0,0 +1,30 @@
+From 421fa6e97928bca5a55414ad38bd9659d0e99a15 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Tue, 30 Jun 2015 19:12:20 +0200
+Subject: [PATCH] man: ProtectHome= protects /root as well
+
+(cherry picked from commit 5833143708733a3fc9e6935922bf11d7d27cb768)
+
+Cherry-picked from: 5833143
+Resolves: #1222517
+---
+ man/systemd.exec.xml | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index 56b53e6..5b93aa7 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -858,9 +858,10 @@
+ 
+         <listitem><para>Takes a boolean argument or
+         <literal>read-only</literal>. If true, the directories
+-        <filename>/home</filename> and <filename>/run/user</filename>
++        <filename>/home</filename>, <filename>/root</filename> and
++        <filename>/run/user</filename>
+         are made inaccessible and empty for processes invoked by this
+-        unit. If set to <literal>read-only</literal>, the two
++        unit. If set to <literal>read-only</literal>, the three
+         directories are made read-only instead. It is recommended to
+         enable this setting for all long-running services (in
+         particular network-facing ones), to ensure they cannot get
diff --git a/SOURCES/0228-core-fix-detection-of-dead-processes.patch b/SOURCES/0228-core-fix-detection-of-dead-processes.patch
deleted file mode 100644
index 9c35a9b..0000000
--- a/SOURCES/0228-core-fix-detection-of-dead-processes.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From f04488d2842544de263e245ee1a21e789ec818a8 Mon Sep 17 00:00:00 2001
-From: Yuxuan Shui <yshuiv7@gmail.com>
-Date: Sat, 15 Feb 2014 02:38:50 +0800
-Subject: [PATCH] core: fix detection of dead processes
-
-Commit 5ba6985b moves the UNIT_VTABLE(u)->sigchld_event before systemd
-actually reaps the zombie. Which leads to service_load_pid_file accepting
-zombie as a valid pid.
-
-This fixes timeouts like:
-[ 2746.602243] systemd[1]: chronyd.service stop-sigterm timed out. Killing.
-[ 2836.852545] systemd[1]: chronyd.service still around after SIGKILL. Ignoring.
-[ 2927.102187] systemd[1]: chronyd.service stop-final-sigterm timed out. Killing.
-[ 3017.352560] systemd[1]: chronyd.service still around after final SIGKILL. Entering failed mode.
----
- src/core/service.c |  8 ++++++++
- src/shared/util.c  | 25 +++++++++++++++++++++++++
- src/shared/util.h  |  1 +
- 3 files changed, 34 insertions(+)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index dff5286..3eacf3b 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -1429,6 +1429,14 @@ static int service_load_pid_file(Service *s, bool may_warn) {
-                 return -ESRCH;
-         }
- 
-+        if (get_process_state(pid) == 'Z') {
-+                if (may_warn)
-+                        log_info_unit(UNIT(s)->id,
-+                                      "PID "PID_FMT" read from file %s is a zombie.",
-+                                      pid, s->pid_file);
-+                return -ESRCH;
-+        }
-+
-         if (s->main_pid_known) {
-                 if (pid == s->main_pid)
-                         return 0;
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 2086847..090a204 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -558,6 +558,31 @@ char *truncate_nl(char *s) {
-         return s;
- }
- 
-+int get_process_state(pid_t pid) {
-+        const char *p;
-+        char state;
-+        int r;
-+        _cleanup_free_ char *line = NULL;
-+
-+        assert(pid >= 0);
-+
-+        p = procfs_file_alloca(pid, "stat");
-+        r = read_one_line_file(p, &line);
-+        if (r < 0)
-+                return r;
-+
-+        p = strrchr(line, ')');
-+        if (!p)
-+                return -EIO;
-+
-+        p++;
-+
-+        if (sscanf(p, " %c", &state) != 1)
-+                return -EIO;
-+
-+        return (unsigned char) state;
-+}
-+
- int get_process_comm(pid_t pid, char **name) {
-         const char *p;
- 
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 222abe0..1d60687 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -215,6 +215,7 @@ char *file_in_same_dir(const char *path, const char *filename);
- 
- int rmdir_parents(const char *path, const char *stop);
- 
-+char get_process_state(pid_t pid);
- int get_process_comm(pid_t pid, char **name);
- int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line);
- int get_process_exe(pid_t pid, char **name);
diff --git a/SOURCES/0228-timedatectl-trim-non-local-RTC-warning-to-80-chars-w.patch b/SOURCES/0228-timedatectl-trim-non-local-RTC-warning-to-80-chars-w.patch
new file mode 100644
index 0000000..3f3d9af
--- /dev/null
+++ b/SOURCES/0228-timedatectl-trim-non-local-RTC-warning-to-80-chars-w.patch
@@ -0,0 +1,35 @@
+From 205750e2144e942bb6c04bb901684cc1aea82a26 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Vedran=20Mileti=C4=87?= <rivanvx@gmail.com>
+Date: Thu, 2 Jul 2015 00:13:31 +0200
+Subject: [PATCH] timedatectl: trim non-local RTC warning to 80 chars wide
+
+(cherry picked from commit ab59f4123a6f9c32953e522cc9afc5fc610d59ca)
+
+Cherry-picked from: ab59f41
+Resolves: #1222517
+---
+ src/timedate/timedatectl.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c
+index 4d89886..1accccb 100644
+--- a/src/timedate/timedatectl.c
++++ b/src/timedate/timedatectl.c
+@@ -190,11 +190,12 @@ static void print_status_info(const StatusInfo *i) {
+ 
+         if (i->rtc_local)
+                 fputs("\n" ANSI_HIGHLIGHT_ON
+-                      "Warning: The system is configured to read the RTC time in the local time zone. This\n"
+-                      "         mode can not be fully supported. It will create various problems with time\n"
+-                      "         zone changes and daylight saving time adjustments. The RTC time is never updated,\n"
+-                      "         it relies on external facilities to maintain it. If at all possible, use\n"
+-                      "         RTC in UTC by calling 'timedatectl set-local-rtc 0'" ANSI_HIGHLIGHT_OFF ".\n", stdout);
++                      "Warning: The system is configured to read the RTC time in the local time zone.\n"
++                      "         This mode can not be fully supported. It will create various problems\n"
++                      "         with time zone changes and daylight saving time adjustments. The RTC\n"
++                      "         time is never updated, it relies on external facilities to maintain it.\n"
++                      "         If at all possible, use RTC in UTC by calling\n"
++                      "         'timedatectl set-local-rtc 0'" ANSI_HIGHLIGHT_OFF ".\n", stdout);
+ }
+ 
+ static int show_status(sd_bus *bus, char **args, unsigned n) {
diff --git a/SOURCES/0229-Fix-prototype-of-get_process_state.patch b/SOURCES/0229-Fix-prototype-of-get_process_state.patch
deleted file mode 100644
index 571ba22..0000000
--- a/SOURCES/0229-Fix-prototype-of-get_process_state.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 9ada721f27bbf373f407b40de1ae558397e4c851 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 14 Feb 2014 23:04:50 -0500
-Subject: [PATCH] Fix prototype of get_process_state
-
----
- src/shared/util.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 1d60687..3a4bc98 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -215,7 +215,7 @@ char *file_in_same_dir(const char *path, const char *filename);
- 
- int rmdir_parents(const char *path, const char *stop);
- 
--char get_process_state(pid_t pid);
-+int get_process_state(pid_t pid);
- int get_process_comm(pid_t pid, char **name);
- int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line);
- int get_process_exe(pid_t pid, char **name);
diff --git a/SOURCES/0229-escape-fix-exit-code.patch b/SOURCES/0229-escape-fix-exit-code.patch
new file mode 100644
index 0000000..1c00f1d
--- /dev/null
+++ b/SOURCES/0229-escape-fix-exit-code.patch
@@ -0,0 +1,26 @@
+From 3eb63550d4222d9edd6ed2d257b8b03eff65fd24 Mon Sep 17 00:00:00 2001
+From: Michael Marineau <michael.marineau@coreos.com>
+Date: Wed, 1 Jul 2015 23:46:42 -0700
+Subject: [PATCH] escape: fix exit code
+
+r == 0 indicates success, not failure
+
+(cherry picked from commit ff9c82cc399c37dd3d3fad4ec116b33c9efe70ea)
+
+Cherry-picked from: ff9c82c
+Resolves: #1222517
+---
+ src/escape/escape.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/escape/escape.c b/src/escape/escape.c
+index f2a0721..766a2c2 100644
+--- a/src/escape/escape.c
++++ b/src/escape/escape.c
+@@ -232,5 +232,5 @@ int main(int argc, char *argv[]) {
+         fputc('\n', stdout);
+ 
+ finish:
+-        return r <= 0 ? EXIT_FAILURE : EXIT_SUCCESS;
++        return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
+ }
diff --git a/SOURCES/0230-core-check-for-return-value-from-get_process_state.patch b/SOURCES/0230-core-check-for-return-value-from-get_process_state.patch
deleted file mode 100644
index 411e573..0000000
--- a/SOURCES/0230-core-check-for-return-value-from-get_process_state.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 54461c902d71e43fd5cc0010e0352903685c3974 Mon Sep 17 00:00:00 2001
-From: Yuxuan Shui <yshuiv7@gmail.com>
-Date: Sat, 15 Feb 2014 13:20:55 +0800
-Subject: [PATCH] core: check for return value from get_process_state
-
-Fix for commit e10c9985bb.
----
- src/core/service.c | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 3eacf3b..f6fdbbc 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -1429,11 +1429,17 @@ static int service_load_pid_file(Service *s, bool may_warn) {
-                 return -ESRCH;
-         }
- 
--        if (get_process_state(pid) == 'Z') {
-+        r = get_process_state(pid);
-+        if (r < 0) {
-+                if (may_warn)
-+                        log_info_unit(UNIT(s)->id, "Failed to read /proc/%d/stat: %s",
-+                                      pid, strerror(-r));
-+                return r;
-+        } else if (r == 'Z') {
-                 if (may_warn)
-                         log_info_unit(UNIT(s)->id,
--                                      "PID "PID_FMT" read from file %s is a zombie.",
--                                      pid, s->pid_file);
-+                                      "PID %lu read from file %s is a zombie.",
-+                                      (unsigned long) pid, s->pid_file);
-                 return -ESRCH;
-         }
- 
diff --git a/SOURCES/0230-man-information-about-available-properties.patch b/SOURCES/0230-man-information-about-available-properties.patch
new file mode 100644
index 0000000..38a7d09
--- /dev/null
+++ b/SOURCES/0230-man-information-about-available-properties.patch
@@ -0,0 +1,54 @@
+From 285bd714e050c189f6e5e9aa6b59173997ae550e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Mon, 29 Jun 2015 20:19:56 -0400
+Subject: [PATCH] man: information about available properties
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1144496
+(cherry picked from commit ea539eb65950bea7a9734424e660ef84f6f30e6c)
+
+Cherry-picked from: ea539eb
+Resolves: #1222517
+---
+ man/systemctl.xml | 28 +++++++++++++++++++++++-----
+ 1 file changed, 23 insertions(+), 5 deletions(-)
+
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 44ec0d7..6b29b8c 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -111,12 +111,30 @@
+ 
+         <listitem>
+           <para>When showing unit/job/manager properties with the
+-          <command>show</command> command, limit display to certain
+-          properties as specified as argument. If not specified, all
+-          set properties are shown. The argument should be a
++          <command>show</command> command, limit display to properties
++          specified in the argument. The argument should be a
+           comma-separated list of property names, such as
+-          <literal>MainPID</literal>. If specified more than once, all
+-          properties with the specified names are shown.</para>
++          <literal>MainPID</literal>. Unless specified, all known
++          properties are shown. If specified more than once, all
++          properties with the specified names are shown. Shell
++          completion is implemented for property names.</para>
++
++          <para>For the manager itself,
++          <command>systemctl show</command> will show all available
++          properties. Those properties are documented in
++          <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
++          </para>
++
++          <para>Properties for units vary by unit type, so showing any
++          unit (even a non-existent one) is a way to list properties
++          pertaining to this type. Similarly showing any job will list
++          properties pertaining to all jobs. Properties for units are
++          documented in
++          <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++          and the pages for individual unit types
++          <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++          <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
++          etc.</para>
+         </listitem>
+       </varlistentry>
+ 
diff --git a/SOURCES/0231-journal-in-persistent-mode-create-var-log-journal-wi.patch b/SOURCES/0231-journal-in-persistent-mode-create-var-log-journal-wi.patch
new file mode 100644
index 0000000..717b98a
--- /dev/null
+++ b/SOURCES/0231-journal-in-persistent-mode-create-var-log-journal-wi.patch
@@ -0,0 +1,36 @@
+From c9c9111ad96ab8827a8866f80adbacf4f58e055e Mon Sep 17 00:00:00 2001
+From: Dimitri John Ledkov <dimitri.j.ledkov@intel.com>
+Date: Fri, 3 Jul 2015 11:34:12 +0100
+Subject: [PATCH] journal: in persistent mode create /var/log/journal, with all
+ parents.
+
+systemd-journald races with systemd-tmpfiles-setup, and hence both are
+started at about the same time. On a bare-bones system (e.g. with
+empty /var, or even non-existent /var), systemd-tmpfiles will create
+/var/log. But it can happen too late, that is systemd-journald already
+attempted to mkdir /var/log/journal, ignoring the error. Thus failing
+to create /var/log/journal. One option, without modifiying the
+dependency graph is to create /var/log/journal directory with parents,
+when persistent storage has been requested.
+
+(cherry picked from commit ac892057c2ddd8f06323c73ebd80423cc3ec7190)
+
+Cherry-picked from: ac89205
+Resolves: #1222517
+---
+ src/journal/journald-server.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index 04839c9..d692c06 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -942,7 +942,7 @@ static int system_journal_open(Server *s, bool flush_requested) {
+                  * the machine path */
+ 
+                 if (s->storage == STORAGE_PERSISTENT)
+-                        (void) mkdir("/var/log/journal/", 0755);
++                        (void) mkdir_p("/var/log/journal/", 0755);
+ 
+                 fn = strjoina("/var/log/journal/", ids);
+                 (void) mkdir(fn, 0755);
diff --git a/SOURCES/0231-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch b/SOURCES/0231-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch
deleted file mode 100644
index d412557..0000000
--- a/SOURCES/0231-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 95f08deefa7c0611854d2831960e77be9a814969 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Wed, 2 Apr 2014 15:13:18 +0200
-Subject: [PATCH] unit: add waiting jobs to run queue in unit_coldplug
-
-When we have job installed and added to run queue for service which is still in
-dead state and systemd initiates reload then after reload we never add
-deserialized job to the run queue again. This is caused by check in
-service_coldplug() where we check if deserialized state is something else than
-dead state, which is not the case thus we never call service_set_state() and
-finally unit_notify() where we would have added job to the run queue.
----
- src/core/unit.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 6ee34ec..a4e6c18 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -2539,6 +2539,9 @@ int unit_coldplug(Unit *u) {
-                 r = job_coldplug(u->job);
-                 if (r < 0)
-                         return r;
-+
-+                if (u->job->state == JOB_WAITING)
-+                        job_add_to_run_queue(u->job);
-         } else if (u->deserialized_job >= 0) {
-                 /* legacy */
-                 r = manager_add_job(u->manager, u->deserialized_job, u, JOB_IGNORE_REQUIREMENTS, false, NULL, NULL);
diff --git a/SOURCES/0232-logind-session-save-stopping-flag.patch b/SOURCES/0232-logind-session-save-stopping-flag.patch
deleted file mode 100644
index e19886b..0000000
--- a/SOURCES/0232-logind-session-save-stopping-flag.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From bd9127d97ae66b547a6e3a89a70b5045d706b68c Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Wed, 2 Apr 2014 14:41:26 +0200
-Subject: [PATCH] logind-session: save stopping flag
-
----
- src/login/logind-session.c | 15 ++++++++++++---
- 1 file changed, 12 insertions(+), 3 deletions(-)
-
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index ece222a..0fa290b 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -187,12 +187,14 @@ int session_save(Session *s) {
-                 "USER=%s\n"
-                 "ACTIVE=%i\n"
-                 "STATE=%s\n"
--                "REMOTE=%i\n",
-+                "REMOTE=%i\n"
-+                "STOPPING=%i\n",
-                 (unsigned long) s->user->uid,
-                 s->user->name,
-                 session_is_active(s),
-                 session_state_to_string(session_get_state(s)),
--                s->remote);
-+                s->remote,
-+                s->stopping);
- 
-         if (s->type >= 0)
-                 fprintf(f, "TYPE=%s\n", session_type_to_string(s->type));
-@@ -267,7 +269,8 @@ int session_load(Session *s) {
-                 *class = NULL,
-                 *uid = NULL,
-                 *realtime = NULL,
--                *monotonic = NULL;
-+                *monotonic = NULL,
-+                *stopping = NULL;
- 
-         int k, r;
- 
-@@ -291,6 +294,7 @@ int session_load(Session *s) {
-                            "UID",            &uid,
-                            "REALTIME",       &realtime,
-                            "MONOTONIC",      &monotonic,
-+                           "STOPPING",       &stopping,
-                            NULL);
- 
-         if (r < 0) {
-@@ -391,6 +395,11 @@ int session_load(Session *s) {
-                         s->timestamp.monotonic = l;
-         }
- 
-+        if (stopping) {
-+                k = parse_boolean(stopping);
-+                if (k >= 0)
-+                        s->stopping = k;
-+        }
-         return r;
- }
- 
diff --git a/SOURCES/0232-sysv-generator-fix-wrong-Overwriting-existing-symlin.patch b/SOURCES/0232-sysv-generator-fix-wrong-Overwriting-existing-symlin.patch
new file mode 100644
index 0000000..6b64911
--- /dev/null
+++ b/SOURCES/0232-sysv-generator-fix-wrong-Overwriting-existing-symlin.patch
@@ -0,0 +1,75 @@
+From c59c376b2623330a70ab692844ca00eb58f67576 Mon Sep 17 00:00:00 2001
+From: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu, 19 Feb 2015 11:06:24 +0100
+Subject: [PATCH] sysv-generator: fix wrong "Overwriting existing symlink"
+ warnings
+
+Fix result testing of is_symlink() to ignore negative results, which happen if
+the file name does not exist at all. In this case we do not want a warning and
+unlink the non-existing link.
+
+https://bugs.debian.org/778700
+(cherry picked from commit 4e5589836c9e143796c3f3d81e67ab7a9209e2b0)
+
+Apparently this was missed for some reason and did not end up in
+stable previously.
+
+Cherry-picked from: 4e55898
+Resolves: #1222517
+---
+ src/sysv-generator/sysv-generator.c | 2 +-
+ test/sysv-generator-test.py         | 7 +++++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/sysv-generator/sysv-generator.c b/src/sysv-generator/sysv-generator.c
+index cfc4a99..3c6cb8f 100644
+--- a/src/sysv-generator/sysv-generator.c
++++ b/src/sysv-generator/sysv-generator.c
+@@ -166,7 +166,7 @@ static int generate_unit_file(SysvStub *s) {
+         /* We might already have a symlink with the same name from a Provides:,
+          * or from backup files like /etc/init.d/foo.bak. Real scripts always win,
+          * so remove an existing link */
+-        if (is_symlink(unit)) {
++        if (is_symlink(unit) > 0) {
+                 log_warning("Overwriting existing symlink %s with real service", unit);
+                 (void) unlink(unit);
+         }
+diff --git a/test/sysv-generator-test.py b/test/sysv-generator-test.py
+index 509899e..e716d70 100644
+--- a/test/sysv-generator-test.py
++++ b/test/sysv-generator-test.py
+@@ -178,6 +178,8 @@ class SysvGeneratorTest(unittest.TestCase):
+         self.assertEqual(s.get('Service', 'ExecStop'),
+                          '%s stop' % init_script)
+ 
++        self.assertNotIn('Overwriting', err)
++
+     def test_simple_enabled_all(self):
+         '''simple service without dependencies, enabled in all runlevels'''
+ 
+@@ -185,6 +187,7 @@ class SysvGeneratorTest(unittest.TestCase):
+         err, results = self.run_generator()
+         self.assertEqual(list(results), ['foo.service'])
+         self.assert_enabled('foo.service', [2, 3, 4, 5])
++        self.assertNotIn('Overwriting', err)
+ 
+     def test_simple_enabled_some(self):
+         '''simple service without dependencies, enabled in some runlevels'''
+@@ -270,6 +273,7 @@ class SysvGeneratorTest(unittest.TestCase):
+         for f in ['bar.service', 'baz.service']:
+             self.assertEqual(os.readlink(os.path.join(self.out_dir, f)),
+                              'foo.service')
++        self.assertNotIn('Overwriting', err)
+ 
+     def test_same_provides_in_multiple_scripts(self):
+         '''multiple init.d scripts provide the same name'''
+@@ -289,6 +293,9 @@ class SysvGeneratorTest(unittest.TestCase):
+         self.add_sysv('bar', {'Provides': 'bar'}, enable=True)
+         err, results = self.run_generator()
+         self.assertEqual(sorted(results), ['bar.service', 'foo.service'])
++        # we do expect an overwrite here, bar.service should overwrite the
++        # alias link from foo.service
++        self.assertIn('Overwriting', err)
+ 
+     def test_nonexecutable_script(self):
+         '''ignores non-executable init.d script'''
diff --git a/SOURCES/0233-mount-don-t-claim-a-device-is-gone-from-proc-self-mo.patch b/SOURCES/0233-mount-don-t-claim-a-device-is-gone-from-proc-self-mo.patch
new file mode 100644
index 0000000..a060bfe
--- /dev/null
+++ b/SOURCES/0233-mount-don-t-claim-a-device-is-gone-from-proc-self-mo.patch
@@ -0,0 +1,92 @@
+From 6b8fedd82c23f1d8c334c3081a1befebedc40f1f Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 19 May 2015 13:50:36 +0200
+Subject: [PATCH] mount: don't claim a device is gone from /proc/self/mountinfo
+ before it is gone from *all* lines
+
+Devices might be referenced by multiple mount points in
+/proc/self/mountinfo, hence we should consider them unmounted only after
+they disappeared from all lines, not just from one.
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-May/032026.html
+(cherry picked from commit fcd8b266edf0df2b85079fcf7b099cd4028740e6)
+
+Cherry-picked from:
+Resolves: #1222517
+---
+ src/core/mount.c | 30 +++++++++++++++++++++++++++---
+ 1 file changed, 27 insertions(+), 3 deletions(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index fd4fb6f..fa63f24 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1698,7 +1698,10 @@ fail:
+ }
+ 
+ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents, void *userdata) {
++        _cleanup_set_free_ Set *around = NULL, *gone = NULL;
+         Manager *m = userdata;
++        const char *what;
++        Iterator i;
+         Unit *u;
+         int r;
+ 
+@@ -1765,6 +1768,8 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+ 
+                 if (!mount->is_mounted) {
+ 
++                        /* A mount point is gone */
++
+                         mount->from_proc_self_mountinfo = false;
+ 
+                         switch (mount->state) {
+@@ -1780,13 +1785,17 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+                                 break;
+                         }
+ 
+-                        if (mount->parameters_proc_self_mountinfo.what)
+-                                (void) device_found_node(m, mount->parameters_proc_self_mountinfo.what, false, DEVICE_FOUND_MOUNT, true);
++                        /* Remember that this device might just have disappeared */
++                        if (mount->parameters_proc_self_mountinfo.what) {
+ 
++                                if (set_ensure_allocated(&gone, &string_hash_ops) < 0 ||
++                                    set_put(gone, mount->parameters_proc_self_mountinfo.what) < 0)
++                                        log_oom(); /* we don't care too much about OOM here... */
++                        }
+ 
+                 } else if (mount->just_mounted || mount->just_changed) {
+ 
+-                        /* New or changed mount entry */
++                        /* A mount point was added or changed */
+ 
+                         switch (mount->state) {
+ 
+@@ -1811,12 +1820,27 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+                                 mount_set_state(mount, mount->state);
+                                 break;
+                         }
++
++                        if (mount->parameters_proc_self_mountinfo.what) {
++
++                                if (set_ensure_allocated(&around, &string_hash_ops) < 0 ||
++                                    set_put(around, mount->parameters_proc_self_mountinfo.what) < 0)
++                                        log_oom();
++                        }
+                 }
+ 
+                 /* Reset the flags for later calls */
+                 mount->is_mounted = mount->just_mounted = mount->just_changed = false;
+         }
+ 
++        SET_FOREACH(what, gone, i) {
++                if (set_contains(around, what))
++                        continue;
++
++                /* Let the device units know that the device is no longer mounted */
++                (void) device_found_node(m, what, false, DEVICE_FOUND_MOUNT, true);
++        }
++
+         return 0;
+ }
+ 
diff --git a/SOURCES/0233-units-serial-getty-.service-add-Install-section.patch b/SOURCES/0233-units-serial-getty-.service-add-Install-section.patch
deleted file mode 100644
index dd560ff..0000000
--- a/SOURCES/0233-units-serial-getty-.service-add-Install-section.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 8ade7cd519f3cdccc81ed8c2fb2f72df48a191d7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 24 Feb 2014 08:02:28 -0500
-Subject: [PATCH] units/serial-getty@.service: add [Install] section
-
-This makes it easier to manually enable and disable
-specific gettys, and also mirrors getty@.service.
-
-http://lists.freedesktop.org/archives/systemd-devel/2014-February/017329.html
-
-Resolves: #1083936
----
- units/serial-getty@.service.m4 | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4
-index e32c6b7..aea078f 100644
---- a/units/serial-getty@.service.m4
-+++ b/units/serial-getty@.service.m4
-@@ -33,3 +33,6 @@ TTYVHangup=yes
- KillMode=process
- IgnoreSIGPIPE=no
- SendSIGHUP=yes
-+
-+[Install]
-+WantedBy=getty.target
diff --git a/SOURCES/0234-mount-properly-check-for-mounts-currently-in-proc-se.patch b/SOURCES/0234-mount-properly-check-for-mounts-currently-in-proc-se.patch
new file mode 100644
index 0000000..d9a2ab9
--- /dev/null
+++ b/SOURCES/0234-mount-properly-check-for-mounts-currently-in-proc-se.patch
@@ -0,0 +1,75 @@
+From 602786c9171d189e859796fd61873835fe858a06 Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 19 May 2015 17:19:27 +0200
+Subject: [PATCH] mount: properly check for mounts currently in
+ /proc/self/mountinfo
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-May/032059.html
+(cherry picked from commit 394763f63c1941cafd9d3bf81e8151a2206474a7)
+
+Cherry-picked from: 394763f
+Resolves: #1222517
+---
+ src/core/mount.c | 33 +++++++++++++++++++--------------
+ 1 file changed, 19 insertions(+), 14 deletions(-)
+
+diff --git a/src/core/mount.c b/src/core/mount.c
+index fa63f24..1f1a41a 100644
+--- a/src/core/mount.c
++++ b/src/core/mount.c
+@@ -1768,7 +1768,18 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+ 
+                 if (!mount->is_mounted) {
+ 
+-                        /* A mount point is gone */
++                        /* A mount point is not around right now. It
++                         * might be gone, or might never have
++                         * existed. */
++
++                        if (mount->from_proc_self_mountinfo &&
++                            mount->parameters_proc_self_mountinfo.what) {
++
++                                /* Remember that this device might just have disappeared */
++                                if (set_ensure_allocated(&gone, &string_hash_ops) < 0 ||
++                                    set_put(gone, mount->parameters_proc_self_mountinfo.what) < 0)
++                                        log_oom(); /* we don't care too much about OOM here... */
++                        }
+ 
+                         mount->from_proc_self_mountinfo = false;
+ 
+@@ -1785,14 +1796,6 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+                                 break;
+                         }
+ 
+-                        /* Remember that this device might just have disappeared */
+-                        if (mount->parameters_proc_self_mountinfo.what) {
+-
+-                                if (set_ensure_allocated(&gone, &string_hash_ops) < 0 ||
+-                                    set_put(gone, mount->parameters_proc_self_mountinfo.what) < 0)
+-                                        log_oom(); /* we don't care too much about OOM here... */
+-                        }
+-
+                 } else if (mount->just_mounted || mount->just_changed) {
+ 
+                         /* A mount point was added or changed */
+@@ -1820,13 +1823,15 @@ static int mount_dispatch_io(sd_event_source *source, int fd, uint32_t revents,
+                                 mount_set_state(mount, mount->state);
+                                 break;
+                         }
++                }
+ 
+-                        if (mount->parameters_proc_self_mountinfo.what) {
++                if (mount->is_mounted &&
++                    mount->from_proc_self_mountinfo &&
++                    mount->parameters_proc_self_mountinfo.what) {
+ 
+-                                if (set_ensure_allocated(&around, &string_hash_ops) < 0 ||
+-                                    set_put(around, mount->parameters_proc_self_mountinfo.what) < 0)
+-                                        log_oom();
+-                        }
++                        if (set_ensure_allocated(&around, &string_hash_ops) < 0 ||
++                            set_put(around, mount->parameters_proc_self_mountinfo.what) < 0)
++                                log_oom();
+                 }
+ 
+                 /* Reset the flags for later calls */
diff --git a/SOURCES/0234-units-order-network-online.target-after-network.targ.patch b/SOURCES/0234-units-order-network-online.target-after-network.targ.patch
deleted file mode 100644
index 4390f79..0000000
--- a/SOURCES/0234-units-order-network-online.target-after-network.targ.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From dda9057e8ee63f2e525333bf7d606f22bce0f7f5 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Mon, 21 Jul 2014 15:13:15 +0200
-Subject: [PATCH] units: order network-online.target after network.target
-
-Resolves: #1072431
----
- units/network-online.target | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/units/network-online.target b/units/network-online.target
-index a40c44c..67bc4fa 100644
---- a/units/network-online.target
-+++ b/units/network-online.target
-@@ -9,3 +9,4 @@
- Description=Network is Online
- Documentation=man:systemd.special(7)
- Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
-+After=network.target
diff --git a/SOURCES/0235-units-add-Install-section-to-tmp.mount.patch b/SOURCES/0235-units-add-Install-section-to-tmp.mount.patch
new file mode 100644
index 0000000..3952ccd
--- /dev/null
+++ b/SOURCES/0235-units-add-Install-section-to-tmp.mount.patch
@@ -0,0 +1,26 @@
+From 6e9187c22c22872e8b0ade7a0e5603895797ede2 Mon Sep 17 00:00:00 2001
+From: Michal Schmidt <mschmidt@redhat.com>
+Date: Fri, 15 Feb 2013 09:07:57 +0100
+Subject: [PATCH] units: add [Install] section to tmp.mount
+
+Change-Id: I2e6d129de00a9afaf7558006c886866f64394c29
+Related: #908253
+
+Cherry-picked from: b4aeab33
+Resolves: #1199644
+---
+ units/tmp.mount | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/units/tmp.mount b/units/tmp.mount
+index 00a0d28..af0cf4a 100644
+--- a/units/tmp.mount
++++ b/units/tmp.mount
+@@ -19,3 +19,7 @@ What=tmpfs
+ Where=/tmp
+ Type=tmpfs
+ Options=mode=1777,strictatime
++
++# Make 'systemctl enable tmp.mount' work:
++[Install]
++WantedBy=local-fs.target
diff --git a/SOURCES/0235-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch b/SOURCES/0235-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch
deleted file mode 100644
index 5cbe8ca..0000000
--- a/SOURCES/0235-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From f8615ebc34fb1a960a1bd946650a8c15a9a347fa Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 25 Mar 2014 01:46:24 +0100
-Subject: [PATCH] util: consider both fuse.glusterfs and glusterfs network file
- systems
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Based on a similar patch by Lukáš Nykrýn.
-
-Resolves: #1080229
----
- src/shared/util.c | 9 ++++++++-
- 1 file changed, 8 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 090a204..2974c2a 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -1625,7 +1625,14 @@ bool fstype_is_network(const char *fstype) {
-                 "nfs\0"
-                 "nfs4\0"
-                 "gfs\0"
--                "gfs2\0";
-+                "gfs2\0"
-+                "glusterfs\0";
-+
-+        const char *x;
-+
-+        x = startswith(fstype, "fuse.");
-+        if (x)
-+                fstype = x;
- 
-         return nulstr_contains(table, fstype);
- }
diff --git a/SOURCES/0236-bus-util-add-articles-to-explanation-messages.patch b/SOURCES/0236-bus-util-add-articles-to-explanation-messages.patch
new file mode 100644
index 0000000..25946c4
--- /dev/null
+++ b/SOURCES/0236-bus-util-add-articles-to-explanation-messages.patch
@@ -0,0 +1,52 @@
+From 18b5e1630c73438a262fea9dd76bc3e67b250335 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
+Date: Sat, 11 Apr 2015 19:39:30 -0400
+Subject: [PATCH] bus-util: add articles to explanation messages
+
+We are talking about one member of a group of things (resource limits, signals,
+timeouts), without specifying which one. An indenfinite article is in order.
+
+When we are talking about the control process, it's a specific one, so the
+definite article is used.
+
+Cherry-picked from: a61cc46
+Related: #1016680
+---
+ src/libsystemd/sd-bus/bus-util.c | 17 ++++++++---------
+ 1 file changed, 8 insertions(+), 9 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/libsystemd/sd-bus/bus-util.c
+index fff00d9..017fbaf 100644
+--- a/src/libsystemd/sd-bus/bus-util.c
++++ b/src/libsystemd/sd-bus/bus-util.c
+@@ -1714,13 +1714,13 @@ static int bus_job_get_service_result(BusWaitForJobs *d, char **result) {
+ static const struct {
+         const char *result, *explanation;
+ } explanations [] = {
+-        { "resources", "configured resource limit was exceeded" },
+-        { "timeout", "timeout was exceeded" },
+-        { "exit-code", "control process exited with error code" },
+-        { "signal", "fatal signal was delivered to the control process" },
+-        { "core-dump", "fatal signal was delivered to the control process. Core dumped" },
+-        { "watchdog", "service failed to send watchdog ping" },
+-        { "start-limit", "start of the service was attempted too often too quickly" }
++        { "resources",   "a configured resource limit was exceeded" },
++        { "timeout",     "a timeout was exceeded" },
++        { "exit-code",   "the control process exited with error code" },
++        { "signal",      "a fatal signal was delivered to the control process" },
++        { "core-dump",   "a fatal signal was delivered causing the control process to dump core" },
++        { "watchdog",    "the service failed to send watchdog ping" },
++        { "start-limit", "start of the service was attempted too often" }
+ };
+ 
+ static void log_job_error_with_service_result(const char* service, const char *result) {
+@@ -1748,8 +1748,7 @@ static void log_job_error_with_service_result(const char* service, const char *r
+ 
+         /* For some results maybe additional explanation is required */
+         if (streq_ptr(result, "start-limit"))
+-                log_info("To force a start please invoke \"systemctl reset-failed %s\" followed by \"systemctl start %s\" again.",
+-                         strna(service_shell_quoted),
++                log_info("To force a start use \"systemctl reset-failed %1$s\" followed by \"systemctl start %1$s\" again.",
+                          strna(service_shell_quoted));
+ }
+ 
diff --git a/SOURCES/0236-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch b/SOURCES/0236-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch
deleted file mode 100644
index a7cb5f3..0000000
--- a/SOURCES/0236-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From bb586b571661bd77cafe0824efecdba502c99a98 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 13 Feb 2014 02:12:27 +0100
-Subject: [PATCH] core: make StopWhenUnneeded work in conjunction with units
- that fail during their start job
-
-https://bugzilla.redhat.com/show_bug.cgi?id=997031
-
-Resolves: #986949
----
- src/core/unit.c | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index a4e6c18..17792d1 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1455,7 +1455,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
-          * sucessfully, since there's no change of state in that case. Which is
-          * why it is handled in service_set_state() */
-         if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) {
--                ExecContext *ec = unit_get_exec_context(u);
-+                ExecContext *ec;
-+
-+                ec = unit_get_exec_context(u);
-                 if (ec && exec_context_may_touch_console(ec)) {
-                         if (UNIT_IS_INACTIVE_OR_FAILED(ns)) {
-                                 m->n_on_console --;
-@@ -1551,12 +1553,11 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
-                 }
- 
-                 /* stop unneeded units regardless if going down was expected or not */
--                if (UNIT_IS_ACTIVE_OR_ACTIVATING(os) && UNIT_IS_INACTIVE_OR_DEACTIVATING(ns))
-+                if (UNIT_IS_INACTIVE_OR_DEACTIVATING(ns))
-                         check_unneeded_dependencies(u);
- 
-                 if (ns != os && ns == UNIT_FAILED) {
--                        log_notice_unit(u->id,
--                                        "Unit %s entered failed state.", u->id);
-+                        log_notice_unit(u->id, "Unit %s entered failed state.", u->id);
-                         unit_start_on_failure(u);
-                 }
-         }
diff --git a/SOURCES/0237-bus-util-print-correct-warnings-for-units-that-fail-.patch b/SOURCES/0237-bus-util-print-correct-warnings-for-units-that-fail-.patch
new file mode 100644
index 0000000..1cde3b7
--- /dev/null
+++ b/SOURCES/0237-bus-util-print-correct-warnings-for-units-that-fail-.patch
@@ -0,0 +1,65 @@
+From caff38650c2c1ae9244a30b87275db3d3a5e3b5d Mon Sep 17 00:00:00 2001
+From: Lennart Poettering <lennart@poettering.net>
+Date: Tue, 28 Apr 2015 12:12:29 +0200
+Subject: [PATCH] bus-util: print correct warnings for units that fail but for
+ which we have a NULL result only
+
+Cherry-picked from: 373a99e
+Related: #1016680
+---
+ src/libsystemd/sd-bus/bus-util.c | 34 ++++++++++++++++++++--------------
+ 1 file changed, 20 insertions(+), 14 deletions(-)
+
+diff --git a/src/libsystemd/sd-bus/bus-util.c b/src/libsystemd/sd-bus/bus-util.c
+index 017fbaf..e48abf5 100644
+--- a/src/libsystemd/sd-bus/bus-util.c
++++ b/src/libsystemd/sd-bus/bus-util.c
+@@ -1724,28 +1724,34 @@ static const struct {
+ };
+ 
+ static void log_job_error_with_service_result(const char* service, const char *result) {
+-        unsigned i;
+         _cleanup_free_ char *service_shell_quoted = NULL;
+ 
+         assert(service);
+-        assert(result);
+ 
+         service_shell_quoted = shell_maybe_quote(service);
+ 
+-        for (i = 0; i < ELEMENTSOF(explanations); ++i)
+-                if (streq(result, explanations[i].result))
+-                        break;
++        if (!isempty(result)) {
++                unsigned i;
+ 
+-        if (i < ELEMENTSOF(explanations))
+-                log_error("Job for %s failed because %s. See \"systemctl status %s\" and \"journalctl -xe\" for details.\n",
+-                          service,
+-                          explanations[i].explanation,
+-                          strna(service_shell_quoted));
+-        else
+-                log_error("Job for %s failed. See \"systemctl status %s\" and \"journalctl -xe\" for details.\n",
+-                          service,
+-                          strna(service_shell_quoted));
++                for (i = 0; i < ELEMENTSOF(explanations); ++i)
++                        if (streq(result, explanations[i].result))
++                                break;
++
++                if (i < ELEMENTSOF(explanations)) {
++                        log_error("Job for %s failed because %s. See \"systemctl status %s\" and \"journalctl -xe\" for details.\n",
++                                  service,
++                                  explanations[i].explanation,
++                                  strna(service_shell_quoted));
+ 
++                        goto finish;
++                }
++        }
++
++        log_error("Job for %s failed. See \"systemctl status %s\" and \"journalctl -xe\" for details.\n",
++                  service,
++                  strna(service_shell_quoted));
++
++finish:
+         /* For some results maybe additional explanation is required */
+         if (streq_ptr(result, "start-limit"))
+                 log_info("To force a start use \"systemctl reset-failed %1$s\" followed by \"systemctl start %1$s\" again.",
diff --git a/SOURCES/0237-cgroups-agent-down-grade-log-level.patch b/SOURCES/0237-cgroups-agent-down-grade-log-level.patch
deleted file mode 100644
index 5cc9b97..0000000
--- a/SOURCES/0237-cgroups-agent-down-grade-log-level.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From b0010d76a8c56900d15fab8ac1ed94d364d1e566 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Wed, 23 Jul 2014 14:08:18 +0200
-Subject: [PATCH] cgroups-agent: down-grade log level
-
-(cherry picked from commit 844de4355592259eebcffddfc38c63266e451cb6)
-
-Conflicts:
-        src/cgroups-agent/cgroups-agent.c
-
-Resolves: #1044386
----
- src/cgroups-agent/cgroups-agent.c | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/cgroups-agent/cgroups-agent.c b/src/cgroups-agent/cgroups-agent.c
-index a47949a..43b9b3a 100644
---- a/src/cgroups-agent/cgroups-agent.c
-+++ b/src/cgroups-agent/cgroups-agent.c
-@@ -50,7 +50,11 @@ int main(int argc, char *argv[]) {
- 
-         bus = dbus_connection_open_private("unix:path=/run/systemd/private", &error);
-         if (!bus) {
--                log_warning("Failed to get D-Bus connection: %s", bus_error_message(&error));
-+                log_warning("Failed to get D-Bus connection: %s", strerror(-r));
-+                /* If we couldn't connect we assume this was triggered
-+                 * while systemd got restarted/transitioned from
-+                 * initrd to the system, so let's ignore this */
-+                log_debug("Failed to get D-Bus connection: %s", strerror(-r));
-                 goto finish;
-         }
- 
-@@ -73,7 +77,7 @@ int main(int argc, char *argv[]) {
-         }
- 
-         if (!dbus_connection_send(bus, m, NULL)) {
--                log_error("Failed to send signal message on private connection.");
-+                log_debug("Failed to send signal message on private connection.");
-                 goto finish;
-         }
- 
diff --git a/SOURCES/0238-Revert-journald-move-dev-log-socket-to-run.patch b/SOURCES/0238-Revert-journald-move-dev-log-socket-to-run.patch
new file mode 100644
index 0000000..a60581a
--- /dev/null
+++ b/SOURCES/0238-Revert-journald-move-dev-log-socket-to-run.patch
@@ -0,0 +1,210 @@
+From 4a1723115afea68db4cbe4f7f2d97c4f5663403d Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 6 Aug 2015 11:30:19 +0200
+Subject: [PATCH] Revert "journald: move /dev/log socket to /run"
+
+This reverts commit 03ee5c38cb0da193dd08733fb4c0c2809cee6a99.
+
+rhel-only
+
+Resolves: #1249968
+---
+ Makefile-man.am                       |  5 -----
+ Makefile.am                           |  7 ++-----
+ man/systemd-journald.service.xml      |  2 --
+ src/core/namespace.c                  |  3 ++-
+ src/journal/journald-server.c         |  3 +--
+ src/journal/journald-syslog.c         |  2 +-
+ units/systemd-journald-dev-log.socket | 32 --------------------------------
+ units/systemd-journald.service.in     |  4 ++--
+ units/systemd-journald.socket         |  2 +-
+ 9 files changed, 9 insertions(+), 51 deletions(-)
+ delete mode 100644 units/systemd-journald-dev-log.socket
+
+diff --git a/Makefile-man.am b/Makefile-man.am
+index 084df75..497be66 100644
+--- a/Makefile-man.am
++++ b/Makefile-man.am
+@@ -214,7 +214,6 @@ MANPAGES_ALIAS += \
+ 	man/systemd-hybrid-sleep.service.8 \
+ 	man/systemd-initctl.8 \
+ 	man/systemd-initctl.socket.8 \
+-	man/systemd-journald-dev-log.socket.8 \
+ 	man/systemd-journald.8 \
+ 	man/systemd-journald.socket.8 \
+ 	man/systemd-kexec.service.8 \
+@@ -326,7 +325,6 @@ man/systemd-hibernate.service.8: man/systemd-suspend.service.8
+ man/systemd-hybrid-sleep.service.8: man/systemd-suspend.service.8
+ man/systemd-initctl.8: man/systemd-initctl.service.8
+ man/systemd-initctl.socket.8: man/systemd-initctl.service.8
+-man/systemd-journald-dev-log.socket.8: man/systemd-journald.service.8
+ man/systemd-journald.8: man/systemd-journald.service.8
+ man/systemd-journald.socket.8: man/systemd-journald.service.8
+ man/systemd-kexec.service.8: man/systemd-halt.service.8
+@@ -616,9 +614,6 @@ man/systemd-initctl.html: man/systemd-initctl.service.html
+ man/systemd-initctl.socket.html: man/systemd-initctl.service.html
+ 	$(html-alias)
+ 
+-man/systemd-journald-dev-log.socket.html: man/systemd-journald.service.html
+-	$(html-alias)
+-
+ man/systemd-journald.html: man/systemd-journald.service.html
+ 	$(html-alias)
+ 
+diff --git a/Makefile.am b/Makefile.am
+index a81d3c1..58bcc2c 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -4518,8 +4518,7 @@ bin_PROGRAMS += \
+ 	systemd-cat
+ 
+ dist_systemunit_DATA += \
+-	units/systemd-journald.socket \
+-	units/systemd-journald-dev-log.socket
++	units/systemd-journald.socket
+ 
+ nodist_systemunit_DATA += \
+ 	units/systemd-journald.service \
+@@ -4538,9 +4537,7 @@ dist_catalog_DATA = \
+ 	catalog/systemd.catalog
+ 
+ SOCKETS_TARGET_WANTS += \
+-	systemd-journald.socket \
+-	systemd-journald-dev-log.socket
+-
++	systemd-journald.socket
+ SYSINIT_TARGET_WANTS += \
+ 	systemd-journald.service \
+ 	systemd-journal-flush.service \
+diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml
+index 8280d6c..fe99ce9 100644
+--- a/man/systemd-journald.service.xml
++++ b/man/systemd-journald.service.xml
+@@ -45,7 +45,6 @@
+   <refnamediv>
+     <refname>systemd-journald.service</refname>
+     <refname>systemd-journald.socket</refname>
+-    <refname>systemd-journald-dev-log.socket</refname>
+     <refname>systemd-journald</refname>
+     <refpurpose>Journal service</refpurpose>
+   </refnamediv>
+@@ -53,7 +52,6 @@
+   <refsynopsisdiv>
+     <para><filename>systemd-journald.service</filename></para>
+     <para><filename>systemd-journald.socket</filename></para>
+-    <para><filename>systemd-journald-dev-log.socket</filename></para>
+     <para><filename>/usr/lib/systemd/systemd-journald</filename></para>
+   </refsynopsisdiv>
+ 
+diff --git a/src/core/namespace.c b/src/core/namespace.c
+index d4f1c86..ebd5fb3 100644
+--- a/src/core/namespace.c
++++ b/src/core/namespace.c
+@@ -187,7 +187,8 @@ static int mount_dev(BindMount *m) {
+         mount("/dev/hugepages", devhugepages, NULL, MS_BIND, NULL);
+ 
+         devlog = strjoina(temporary_mount, "/dev/log");
+-        symlink("/run/systemd/journal/dev-log", devlog);
++        (void)touch(devlog);
++        mount("/dev/log", devlog, NULL, MS_BIND, NULL);
+ 
+         NULSTR_FOREACH(d, devnodes) {
+                 _cleanup_free_ char *dn = NULL;
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index d692c06..fb7aae3 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -1531,8 +1531,7 @@ int server_init(Server *s) {
+ 
+                         s->stdout_fd = fd;
+ 
+-                } else if (sd_is_socket_unix(fd, SOCK_DGRAM, -1, "/dev/log", 0) > 0 ||
+-                           sd_is_socket_unix(fd, SOCK_DGRAM, -1, "/run/systemd/journal/dev-log", 0) > 0) {
++                } else if (sd_is_socket_unix(fd, SOCK_DGRAM, -1, "/dev/log", 0) > 0) {
+ 
+                         if (s->syslog_fd >= 0) {
+                                 log_error("Too many /dev/log sockets passed.");
+diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
+index ba80941..4e118aa 100644
+--- a/src/journal/journald-syslog.c
++++ b/src/journal/journald-syslog.c
+@@ -384,7 +384,7 @@ int server_open_syslog_socket(Server *s) {
+         if (s->syslog_fd < 0) {
+                 static const union sockaddr_union sa = {
+                         .un.sun_family = AF_UNIX,
+-                        .un.sun_path = "/run/systemd/journal/dev-log",
++                        .un.sun_path = "/dev/log",
+                 };
+ 
+                 s->syslog_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
+diff --git a/units/systemd-journald-dev-log.socket b/units/systemd-journald-dev-log.socket
+deleted file mode 100644
+index ffd44bb..0000000
+--- a/units/systemd-journald-dev-log.socket
++++ /dev/null
+@@ -1,32 +0,0 @@
+-#  This file is part of systemd.
+-#
+-#  systemd is free software; you can redistribute it and/or modify it
+-#  under the terms of the GNU Lesser General Public License as published by
+-#  the Free Software Foundation; either version 2.1 of the License, or
+-#  (at your option) any later version.
+-
+-[Unit]
+-Description=Journal Socket (/dev/log)
+-Documentation=man:systemd-journald.service(8) man:journald.conf(5)
+-DefaultDependencies=no
+-Before=sockets.target
+-
+-# Mount and swap units need this. If this socket unit is removed by an
+-# isolate request the mount and swap units would be removed too,
+-# hence let's exclude this from isolate requests.
+-IgnoreOnIsolate=yes
+-
+-[Socket]
+-Service=systemd-journald.service
+-ListenDatagram=/run/systemd/journal/dev-log
+-Symlinks=/dev/log
+-SocketMode=0666
+-PassCredentials=yes
+-PassSecurity=yes
+-
+-# Increase both the send and receive buffer, so that things don't
+-# block early. Note that journald internally uses the this socket both
+-# for receiving syslog messages, and for forwarding them to any other
+-# syslog, hence we bump both values.
+-ReceiveBuffer=8M
+-SendBuffer=8M
+diff --git a/units/systemd-journald.service.in b/units/systemd-journald.service.in
+index 1bcc290..9d44622 100644
+--- a/units/systemd-journald.service.in
++++ b/units/systemd-journald.service.in
+@@ -10,12 +10,12 @@ Description=Journal Service
+ Documentation=man:systemd-journald.service(8) man:journald.conf(5)
+ DefaultDependencies=no
+ Requires=systemd-journald.socket
+-After=systemd-journald.socket systemd-journald-dev-log.socket syslog.socket
++After=systemd-journald.socket syslog.socket
+ Before=sysinit.target
+ 
+ [Service]
+ Type=notify
+-Sockets=systemd-journald.socket systemd-journald-dev-log.socket
++Sockets=systemd-journald.socket
+ ExecStart=@rootlibexecdir@/systemd-journald
+ Restart=always
+ RestartSec=0
+diff --git a/units/systemd-journald.socket b/units/systemd-journald.socket
+index 7173701..fbeb10b 100644
+--- a/units/systemd-journald.socket
++++ b/units/systemd-journald.socket
+@@ -19,8 +19,8 @@ IgnoreOnIsolate=yes
+ [Socket]
+ ListenStream=/run/systemd/journal/stdout
+ ListenDatagram=/run/systemd/journal/socket
++ListenDatagram=/dev/log
+ SocketMode=0666
+ PassCredentials=yes
+ PassSecurity=yes
+ ReceiveBuffer=8M
+-Service=systemd-journald.service
diff --git a/SOURCES/0238-random-seed-raise-POOL_SIZE_MIN-constant-to-1024.patch b/SOURCES/0238-random-seed-raise-POOL_SIZE_MIN-constant-to-1024.patch
deleted file mode 100644
index ccf36f5..0000000
--- a/SOURCES/0238-random-seed-raise-POOL_SIZE_MIN-constant-to-1024.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 20436a1eb3a468b7bc32fe1d36cb7c4029519052 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 24 Jul 2014 11:17:36 +0200
-Subject: [PATCH] random-seed: raise POOL_SIZE_MIN constant to 1024
-
-Resolves: #1066517
----
- src/random-seed/random-seed.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c
-index af79ecf..8b7bfbb 100644
---- a/src/random-seed/random-seed.c
-+++ b/src/random-seed/random-seed.c
-@@ -29,7 +29,7 @@
- #include "util.h"
- #include "mkdir.h"
- 
--#define POOL_SIZE_MIN 512
-+#define POOL_SIZE_MIN 1024
- 
- int main(int argc, char *argv[]) {
-         _cleanup_close_ int seed_fd = -1, random_fd = -1;
diff --git a/SOURCES/0239-delta-do-not-use-unicode-chars-in-C-locale.patch b/SOURCES/0239-delta-do-not-use-unicode-chars-in-C-locale.patch
deleted file mode 100644
index c3ff191..0000000
--- a/SOURCES/0239-delta-do-not-use-unicode-chars-in-C-locale.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 719f080ce2c999febe4c9289fb09e5e2e719d4d2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 16 Apr 2014 23:33:41 -0400
-Subject: [PATCH] delta: do not use unicode chars in C locale
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1088418
-
-(cherry picked from commit 00a5cc3a63c125633e822f39efd9c32223169f62)
-
-Resolves: #1088419
----
- src/delta/delta.c | 40 +++++++++++++++++++++++++---------------
- 1 file changed, 25 insertions(+), 15 deletions(-)
-
-diff --git a/src/delta/delta.c b/src/delta/delta.c
-index a8dd57e..f1aea80 100644
---- a/src/delta/delta.c
-+++ b/src/delta/delta.c
-@@ -85,6 +85,10 @@ static void pager_open_if_enabled(void) {
-         pager_open(false);
- }
- 
-+static inline const char* arrow(void) {
-+        return is_locale_utf8() ? "→" : "->";
-+}
-+
- static int equivalent(const char *a, const char *b) {
-         _cleanup_free_ char *x = NULL, *y = NULL;
- 
-@@ -103,8 +107,9 @@ static int notify_override_masked(const char *top, const char *bottom) {
-         if (!(arg_flags & SHOW_MASKED))
-                 return 0;
- 
--        printf("%s%s%s     %s → %s\n",
--               ansi_highlight_red(), "[MASKED]", ansi_highlight_off(), top, bottom);
-+        printf("%s%s%s     %s %s %s\n",
-+               ansi_highlight_red(), "[MASKED]", ansi_highlight_off(),
-+               top, arrow(), bottom);
-         return 1;
- }
- 
-@@ -112,8 +117,9 @@ static int notify_override_equivalent(const char *top, const char *bottom) {
-         if (!(arg_flags & SHOW_EQUIVALENT))
-                 return 0;
- 
--        printf("%s%s%s %s → %s\n",
--               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight_off(), top, bottom);
-+        printf("%s%s%s %s %s %s\n",
-+               ansi_highlight_green(), "[EQUIVALENT]", ansi_highlight_off(),
-+               top, arrow(), bottom);
-         return 1;
- }
- 
-@@ -121,8 +127,9 @@ static int notify_override_redirected(const char *top, const char *bottom) {
-         if (!(arg_flags & SHOW_REDIRECTED))
-                 return 0;
- 
--        printf("%s%s%s   %s → %s\n",
--               ansi_highlight(), "[REDIRECTED]", ansi_highlight_off(), top, bottom);
-+        printf("%s%s%s   %s %s %s\n",
-+               ansi_highlight(), "[REDIRECTED]", ansi_highlight_off(),
-+               top, arrow(), bottom);
-         return 1;
- }
- 
-@@ -130,8 +137,9 @@ static int notify_override_overridden(const char *top, const char *bottom) {
-         if (!(arg_flags & SHOW_OVERRIDDEN))
-                 return 0;
- 
--        printf("%s%s%s %s → %s\n",
--               ansi_highlight(), "[OVERRIDDEN]", ansi_highlight_off(), top, bottom);
-+        printf("%s%s%s %s %s %s\n",
-+               ansi_highlight(), "[OVERRIDDEN]", ansi_highlight_off(),
-+               top, arrow(), bottom);
-         return 1;
- }
- 
-@@ -139,8 +147,9 @@ static int notify_override_extended(const char *top, const char *bottom) {
-         if (!(arg_flags & SHOW_EXTENDED))
-                return 0;
- 
--        printf("%s%s%s   %s → %s\n",
--               ansi_highlight(), "[EXTENDED]", ansi_highlight_off(), top, bottom);
-+        printf("%s%s%s   %s %s %s\n",
-+               ansi_highlight(), "[EXTENDED]", ansi_highlight_off(),
-+               top, arrow(), bottom);
-         return 1;
- }
- 
-@@ -241,7 +250,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
-                         return -ENOMEM;
-                 d = p + strlen(toppath) + 1;
- 
--                log_debug("Adding at top: %s → %s", d, p);
-+                log_debug("Adding at top: %s %s %s", d, arrow(), p);
-                 k = hashmap_put(top, d, p);
-                 if (k >= 0) {
-                         p = strdup(p);
-@@ -253,7 +262,7 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
-                         return k;
-                 }
- 
--                log_debug("Adding at bottom: %s → %s", d, p);
-+                log_debug("Adding at bottom: %s %s %s", d, arrow(), p);
-                 free(hashmap_remove(bottom, d));
-                 k = hashmap_put(bottom, d, p);
-                 if (k < 0) {
-@@ -276,7 +285,8 @@ static int enumerate_dir_d(Hashmap *top, Hashmap *bottom, Hashmap *drops, const
-                 if (!p)
-                         return -ENOMEM;
- 
--                log_debug("Adding to drops: %s → %s → %s", unit, basename(p), p);
-+                log_debug("Adding to drops: %s %s %s %s %s",
-+                          unit, arrow(), basename(p), arrow(), p);
-                 k = hashmap_put(h, basename(p), p);
-                 if (k < 0) {
-                         free(p);
-@@ -328,7 +338,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
-                 if (!p)
-                         return -ENOMEM;
- 
--                log_debug("Adding at top: %s → %s", basename(p), p);
-+                log_debug("Adding at top: %s %s %s", basename(p), arrow(), p);
-                 k = hashmap_put(top, basename(p), p);
-                 if (k >= 0) {
-                         p = strdup(p);
-@@ -339,7 +349,7 @@ static int enumerate_dir(Hashmap *top, Hashmap *bottom, Hashmap *drops, const ch
-                         return k;
-                 }
- 
--                log_debug("Adding at bottom: %s → %s", basename(p), p);
-+                log_debug("Adding at bottom: %s %s %s", basename(p), arrow(), p);
-                 free(hashmap_remove(bottom, basename(p)));
-                 k = hashmap_put(bottom, basename(p), p);
-                 if (k < 0) {
diff --git a/SOURCES/0239-journald-server-don-t-read-audit-events.patch b/SOURCES/0239-journald-server-don-t-read-audit-events.patch
new file mode 100644
index 0000000..83465f7
--- /dev/null
+++ b/SOURCES/0239-journald-server-don-t-read-audit-events.patch
@@ -0,0 +1,25 @@
+From 5dee07f71ccaf8eacd115e01e665c645f7c3a75d Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Mon, 10 Aug 2015 14:24:18 +0200
+Subject: [PATCH] journald-server: don't read audit events
+
+Resolves: #1252409
+---
+ src/journal/journald-server.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
+index fb7aae3..f13147f 100644
+--- a/src/journal/journald-server.c
++++ b/src/journal/journald-server.c
+@@ -1577,10 +1577,6 @@ int server_init(Server *s) {
+         if (r < 0)
+                 return r;
+ 
+-        r = server_open_audit(s);
+-        if (r < 0)
+-                return r;
+-
+         r = server_open_kernel_seqnum(s);
+         if (r < 0)
+                 return r;
diff --git a/SOURCES/0240-core-print-debug-instead-of-error-message.patch b/SOURCES/0240-core-print-debug-instead-of-error-message.patch
deleted file mode 100644
index a406895..0000000
--- a/SOURCES/0240-core-print-debug-instead-of-error-message.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From bcbb894a709f56ac0bccf7e5edfd59e39e8ec800 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Wed, 14 May 2014 15:13:43 +0200
-Subject: [PATCH] core: print debug instead of error message
-
-In case that session scope is in some other state than SCOPE_RUNNING or
-SCOPE_ABANDONED we will not print error message. It might be the case
-that scope is in other state because systemd realized that scope is
-empty before dispatching dbus call from pam hook. Or system is going
-down and stop job is runnig for the scope and changed scope state to
-SCOPE_STOP_SIGTERM or SCOPE_STOP_SIGKILL.
-
-(cherry picked from commit f517790db5277fa71d6ae3617244f1acc4b62572)
-
-Resolves: #1105608
----
- src/core/dbus-scope.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/dbus-scope.c b/src/core/dbus-scope.c
-index 58dd9ff..71d6921 100644
---- a/src/core/dbus-scope.c
-+++ b/src/core/dbus-scope.c
-@@ -76,7 +76,7 @@ DBusHandlerResult bus_scope_message_handler(Unit *u, DBusConnection *c, DBusMess
- 
-                 r = scope_abandon(s);
-                 if (r < 0)
--                        log_error("Failed to mark scope %s as abandoned : %s", UNIT(s)->id, strerror(-r));
-+                        log_debug("Failed to mark scope %s as abandoned : Scope is not running", UNIT(s)->id);
- 
-                 reply = dbus_message_new_method_return(message);
-                 if (!reply)
diff --git a/SOURCES/0240-everything-remove-traces-of-user.patch b/SOURCES/0240-everything-remove-traces-of-user.patch
new file mode 100644
index 0000000..1c38e23
--- /dev/null
+++ b/SOURCES/0240-everything-remove-traces-of-user.patch
@@ -0,0 +1,833 @@
+From d550b42ed66ea7e3de9d04b3d472c6c1721a2978 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 11 Aug 2015 13:53:47 +0200
+Subject: [PATCH] everything: remove traces of --user
+
+Resolves: #1071363
+---
+ man/busctl.xml                        |  6 ++--
+ man/journalctl.xml                    | 14 --------
+ man/pam_systemd.xml                   |  7 ++--
+ man/systemctl.xml                     | 55 +++++------------------------
+ man/systemd-analyze.xml               |  6 ----
+ man/systemd-run.xml                   |  1 -
+ man/systemd-system.conf.xml           |  5 +--
+ man/systemd.device.xml                |  4 +--
+ man/systemd.exec.xml                  | 17 ++-------
+ man/systemd.special.xml               | 46 ++----------------------
+ man/systemd.unit.xml                  | 66 +----------------------------------
+ man/systemd.xml                       | 63 +++++----------------------------
+ man/user-system-options.xml           |  9 -----
+ shell-completion/bash/busctl          |  2 +-
+ shell-completion/bash/journalctl      |  5 +--
+ shell-completion/bash/systemctl.in    |  2 +-
+ shell-completion/bash/systemd-analyze | 12 +++----
+ shell-completion/bash/systemd-run     |  4 +--
+ src/analyze/analyze.c                 |  1 -
+ src/core/main.c                       |  1 -
+ src/journal/journalctl.c              |  1 -
+ src/libsystemd/sd-bus/busctl.c        |  1 -
+ src/run/run.c                         |  1 -
+ src/systemctl/systemctl.c             |  1 -
+ 24 files changed, 40 insertions(+), 290 deletions(-)
+
+diff --git a/man/busctl.xml b/man/busctl.xml
+index 807fc78..0635280 100644
+--- a/man/busctl.xml
++++ b/man/busctl.xml
+@@ -75,9 +75,8 @@
+ 
+           <listitem><para>Connect to the bus specified by
+           <replaceable>ADDRESS</replaceable> instead of using suitable
+-          defaults for either the system or user bus (see
+-          <option>--system</option> and <option>--user</option>
+-          options).</para></listitem>
++          defaults for the system bus (see
++          <option>--system</option> option).</para></listitem>
+       </varlistentry>
+ 
+       <varlistentry>
+@@ -236,7 +235,6 @@
+         </listitem>
+       </varlistentry>
+ 
+-      <xi:include href="user-system-options.xml" xpointer="user" />
+       <xi:include href="user-system-options.xml" xpointer="system" />
+       <xi:include href="user-system-options.xml" xpointer="host" />
+       <xi:include href="user-system-options.xml" xpointer="machine" />
+diff --git a/man/journalctl.xml b/man/journalctl.xml
+index 08de0ff..2764f66 100644
+--- a/man/journalctl.xml
++++ b/man/journalctl.xml
+@@ -470,20 +470,6 @@
+       </varlistentry>
+ 
+       <varlistentry>
+-        <term><option>--user-unit=</option></term>
+-
+-        <listitem><para>Show messages for the specified user session
+-        unit. This will add a match for messages from the unit
+-        (<literal>_SYSTEMD_USER_UNIT=</literal> and
+-        <literal>_UID=</literal>) and additional matches for messages
+-        from session systemd and messages about coredumps for the
+-        specified unit.</para>
+-
+-        <para>This parameter can be specified multiple times.</para>
+-        </listitem>
+-      </varlistentry>
+-
+-      <varlistentry>
+         <term><option>-p</option></term>
+         <term><option>--priority=</option></term>
+ 
+diff --git a/man/pam_systemd.xml b/man/pam_systemd.xml
+index b4a3f50..a448aed 100644
+--- a/man/pam_systemd.xml
++++ b/man/pam_systemd.xml
+@@ -78,9 +78,7 @@
+       <listitem><para>A new systemd scope unit is created for the
+       session. If this is the first concurrent session of the user, an
+       implicit slice below <filename>user.slice</filename> is
+-      automatically created and the scope placed into it. An instance
+-      of the system service <filename>user@.service</filename>, which
+-      runs the systemd user manager instance, is started.
++      automatically created and the scope placed into it.
+       </para></listitem>
+     </orderedlist>
+ 
+@@ -91,8 +89,7 @@
+       <citerefentry><refentrytitle>logind.conf</refentrytitle>
+       <manvolnum>5</manvolnum></citerefentry>, all processes of the
+       session are terminated. If the last concurrent session of a user
+-      ends, the user's systemd instance will be terminated too, and so
+-      will the user's slice unit.</para></listitem>
++      ends, the user's slice unit will be terminated too.</para></listitem>
+ 
+       <listitem><para>If the last concurrent session of a user ends,
+       the <varname>$XDG_RUNTIME_DIR</varname> directory and all its
+diff --git a/man/systemctl.xml b/man/systemctl.xml
+index 6b29b8c..c6f5842 100644
+--- a/man/systemctl.xml
++++ b/man/systemctl.xml
+@@ -339,7 +339,6 @@
+         </listitem>
+       </varlistentry>
+ 
+-      <xi:include href="user-system-options.xml" xpointer="user" />
+       <xi:include href="user-system-options.xml" xpointer="system" />
+ 
+       <!-- we do not document -failed here, as it has been made
+@@ -357,17 +356,6 @@
+       </varlistentry>
+ 
+       <varlistentry>
+-        <term><option>--global</option></term>
+-
+-        <listitem>
+-          <para>When used with <command>enable</command> and
+-          <command>disable</command>, operate on the global user
+-          configuration directory, thus enabling or disabling a unit
+-          file globally for all future logins of all users.</para>
+-        </listitem>
+-      </varlistentry>
+-
+-      <varlistentry>
+         <term><option>--no-reload</option></term>
+ 
+         <listitem>
+@@ -795,9 +783,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             lines to fit in the terminal window. This can be changes
+             with <option>--lines</option> and <option>--full</option>,
+             see above. In addition, <command>journalctl
+-            --unit=<replaceable>NAME</replaceable></command> or
+-            <command>journalctl
+-            --user-unit=<replaceable>NAME</replaceable></command> use
++            --unit=<replaceable>NAME</replaceable></command> use
+             a similar filter for messages and might be more
+             convenient.
+             </para>
+@@ -973,13 +959,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             process (in case of service units), or binds the socket (in
+             case of socket units), and so on.</para>
+ 
+-            <para>Depending on whether <option>--system</option>,
+-            <option>--user</option>, <option>--runtime</option>,
+-            or <option>--global</option> is specified, this enables the unit
+-            for the system, for the calling user only, for only this boot of
+-            the system, or for all future logins of all users, or only this
+-            boot.  Note that in the last case, no systemd daemon
+-            configuration is reloaded.</para>
++            <para> If <option>--runtime</option> is specified, then
++            this enables the unit only this boot. </para>
+ 
+             <para>Using <command>enable</command> on masked units
+             results in an error.</para>
+@@ -1008,10 +989,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             output may be suppressed by passing <option>--quiet</option>.
+             </para>
+ 
+-            <para>This command honors <option>--system</option>,
+-            <option>--user</option>, <option>--runtime</option> and
+-            <option>--global</option> in a similar way as
+-            <command>enable</command>.</para>
++            <para>This command honors <option>--runtime</option>
++            in a similar way as <command>enable</command>.</para>
+           </listitem>
+         </varlistentry>
+ 
+@@ -1188,10 +1167,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             dependency to the specified <replaceable>TARGET</replaceable> for
+             one or more units. </para>
+ 
+-            <para>This command honors <option>--system</option>,
+-            <option>--user</option>, <option>--runtime</option> and
+-            <option>--global</option> in a similar way as
+-            <command>enable</command>.</para>
++            <para>This command honors <option>--runtime</option>
++            in a similar way as <command>enable</command>.</para>
+ 
+           </listitem>
+         </varlistentry>
+@@ -1204,11 +1181,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+             <option>--full</option> is specified, to extend or override the
+             specified unit.</para>
+ 
+-            <para>Depending on whether <option>--system</option> (the default),
+-            <option>--user</option>, or <option>--global</option> is specified,
+-            this creates a drop-in file for each unit either for the system,
+-            for the calling user or for all futures logins of all users. Then,
+-            the editor (see the "Environment" section below) is invoked on
++            <para>This creates a drop-in file for a unit.
++            Then, the editor (see the "Environment" section below) is invoked on
+             temporary files which will be written to the real location if the
+             editor exits successfully.</para>
+ 
+@@ -1597,17 +1571,6 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
+         </varlistentry>
+ 
+         <varlistentry>
+-          <term><command>exit</command></term>
+-
+-          <listitem>
+-            <para>Ask the systemd manager to quit. This is only
+-            supported for user service managers (i.e. in conjunction
+-            with the <option>--user</option> option) and will fail
+-            otherwise.</para>
+-          </listitem>
+-        </varlistentry>
+-
+-        <varlistentry>
+           <term><command>switch-root <replaceable>ROOT</replaceable> <optional><replaceable>INIT</replaceable></optional></command></term>
+ 
+           <listitem>
+diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml
+index 1983150..b2e0f42 100644
+--- a/man/systemd-analyze.xml
++++ b/man/systemd-analyze.xml
+@@ -188,12 +188,6 @@
+     <para>The following options are understood:</para>
+ 
+     <variablelist>
+-      <varlistentry>
+-        <term><option>--user</option></term>
+-
+-        <listitem><para>Operates on the user systemd
+-        instance.</para></listitem>
+-      </varlistentry>
+ 
+       <varlistentry>
+         <term><option>--system</option></term>
+diff --git a/man/systemd-run.xml b/man/systemd-run.xml
+index febcdb0..f46fc3a 100644
+--- a/man/systemd-run.xml
++++ b/man/systemd-run.xml
+@@ -294,7 +294,6 @@
+         <command>set-property</command> command.</para> </listitem>
+       </varlistentry>
+ 
+-      <xi:include href="user-system-options.xml" xpointer="user" />
+       <xi:include href="user-system-options.xml" xpointer="system" />
+       <xi:include href="user-system-options.xml" xpointer="host" />
+       <xi:include href="user-system-options.xml" xpointer="machine" />
+diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml
+index 1b74ed3..ca25c93 100644
+--- a/man/systemd-system.conf.xml
++++ b/man/systemd-system.conf.xml
+@@ -66,10 +66,7 @@
+ 
+     <para>When run as a system instance, systemd interprets the
+     configuration file <filename>system.conf</filename> and the files
+-    in <filename>system.conf.d</filename> directories; when run as a
+-    user instance, systemd interprets the configuration file
+-    <filename>user.conf</filename> and the files in
+-    <filename>user.conf.d</filename> directories. These configuration
++    in <filename>system.conf.d</filename> directories.  These configuration
+     files contain a few settings controlling basic manager
+     operations.</para>
+   </refsect1>
+diff --git a/man/systemd.device.xml b/man/systemd.device.xml
+index ac6deaf..d6b6a7c 100644
+--- a/man/systemd.device.xml
++++ b/man/systemd.device.xml
+@@ -97,11 +97,9 @@
+     <variablelist class='udev-directives'>
+       <varlistentry>
+         <term><varname>SYSTEMD_WANTS=</varname></term>
+-        <term><varname>SYSTEMD_USER_WANTS=</varname></term>
+         <listitem><para>Adds dependencies of type
+         <varname>Wants</varname> from the device unit to all listed
+-        units. The first form is used by the system systemd instance,
+-        the second by user systemd instances. Those settings may be
++        units. This settings may be
+         used to activate arbitrary units when a specific device
+         becomes available.</para>
+ 
+diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
+index 5b93aa7..6af7c7a 100644
+--- a/man/systemd.exec.xml
++++ b/man/systemd.exec.xml
+@@ -1148,9 +1148,7 @@
+ 
+     <para>Processes started by the system are executed in a clean
+     environment in which select variables listed below are set. System
+-    processes started by systemd do not inherit variables from PID 1,
+-    but processes started by user systemd instances inherit all
+-    environment variables from the user systemd instance.
++    processes started by systemd do not inherit variables from PID 1.
+     </para>
+ 
+     <variablelist class='environment-variables'>
+@@ -1183,8 +1181,7 @@
+ 
+         <listitem><para>User name (twice), home directory, and the
+         login shell. The variables are set for the units that have
+-        <varname>User=</varname> set, which includes user
+-        <command>systemd</command> instances. See
++        <varname>User=</varname> set. See
+         <citerefentry project='die-net'><refentrytitle>passwd</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+         </para></listitem>
+       </varlistentry>
+@@ -1192,8 +1189,7 @@
+       <varlistentry>
+         <term><varname>$XDG_RUNTIME_DIR</varname></term>
+ 
+-        <listitem><para>The directory for volatile state. Set for the
+-        user <command>systemd</command> instance, and also in user
++        <listitem><para>The directory for volatile state. Set  in user
+         sessions. See
+         <citerefentry><refentrytitle>pam_systemd</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
+         </para></listitem>
+@@ -1221,13 +1217,6 @@
+       </varlistentry>
+ 
+       <varlistentry>
+-        <term><varname>$MANAGERPID</varname></term>
+-
+-        <listitem><para>The PID of the user <command>systemd</command>
+-        instance, set for processes spawned by it. </para></listitem>
+-      </varlistentry>
+-
+-      <varlistentry>
+         <term><varname>$LISTEN_FDS</varname></term>
+         <term><varname>$LISTEN_PID</varname></term>
+ 
+diff --git a/man/systemd.special.xml b/man/systemd.special.xml
+index cf76aaf..553197d 100644
+--- a/man/systemd.special.xml
++++ b/man/systemd.special.xml
+@@ -773,47 +773,6 @@
+   </refsect1>
+ 
+   <refsect1>
+-    <title>Special User Units</title>
+-
+-    <para>When systemd runs as a user instance, the following special
+-    units are available, which have similar definitions as their
+-    system counterparts:
+-    <filename>default.target</filename>,
+-    <filename>shutdown.target</filename>,
+-    <filename>sockets.target</filename>,
+-    <filename>timers.target</filename>,
+-    <filename>paths.target</filename>,
+-    <filename>bluetooth.target</filename>,
+-    <filename>printer.target</filename>,
+-    <filename>smartcard.target</filename>,
+-    <filename>sound.target</filename>.</para>
+-
+-    <para>In addition, the following special unit is understood only
+-    when systemd runs as service instance:</para>
+-
+-    <variablelist>
+-      <varlistentry>
+-        <term><filename>exit.target</filename></term>
+-        <listitem>
+-          <para>A special service unit for shutting down the user
+-          service manager.</para>
+-
+-          <para>Applications wanting to terminate the user service
+-          manager should start this unit. If systemd receives
+-          <constant>SIGTERM</constant> or <constant>SIGINT</constant>
+-          when running as user service daemon, it will start this
+-          unit.</para>
+-
+-          <para>Normally, this pulls in
+-          <filename>shutdown.target</filename> which in turn should be
+-          conflicted by all units that want to be shut down on user
+-          service manager exit.</para>
+-        </listitem>
+-      </varlistentry>
+-    </variablelist>
+-  </refsect1>
+-
+-  <refsect1>
+     <title>Special Slice Units</title>
+ 
+     <para>There are four <literal>.slice</literal> units which form
+@@ -841,9 +800,8 @@
+       <varlistentry>
+         <term><filename>user.slice</filename></term>
+         <listitem>
+-          <para>By default, all user processes and services started on
+-          behalf of the user, including the per-user systemd instance
+-          are found in this slice.</para>
++          <para>By default, all user processes started on
++          behalf of the user are found in this slice.</para>
+         </listitem>
+       </varlistentry>
+ 
+diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
+index c2e374a..414749b 100644
+--- a/man/systemd.unit.xml
++++ b/man/systemd.unit.xml
+@@ -263,14 +263,6 @@
+     in directories listed earlier override files with the same name in
+     directories lower in the list.</para>
+ 
+-    <para>When systemd is running in user mode
+-    (<option>--user</option>) and the variable
+-    <varname>$SYSTEMD_UNIT_PATH</varname> is set, the contents of this
+-    variable overrides the unit load path. If
+-    <varname>$SYSTEMD_UNIT_PATH</varname> ends with an empty component
+-    (<literal>:</literal>), the usual unit load path will be appended
+-    to the contents of the variable.</para>
+-
+     <table>
+       <title>
+         Load path when running in system mode (<option>--system</option>).
+@@ -302,57 +294,6 @@
+       </tgroup>
+     </table>
+ 
+-    <table>
+-      <title>
+-        Load path when running in user mode (<option>--user</option>).
+-      </title>
+-
+-      <tgroup cols='2'>
+-        <colspec colname='path' />
+-        <colspec colname='expl' />
+-        <thead>
+-          <row>
+-      <entry>Path</entry>
+-      <entry>Description</entry>
+-          </row>
+-        </thead>
+-        <tbody>
+-          <row>
+-      <entry><filename>$XDG_CONFIG_HOME/systemd/user</filename></entry>
+-      <entry>User configuration (only used when $XDG_CONFIG_HOME is set)</entry>
+-          </row>
+-          <row>
+-      <entry><filename>$HOME/.config/systemd/user</filename></entry>
+-      <entry>User configuration (only used when $XDG_CONFIG_HOME is not set)</entry>
+-          </row>
+-          <row>
+-      <entry><filename>/etc/systemd/user</filename></entry>
+-      <entry>Local configuration</entry>
+-          </row>
+-          <row>
+-      <entry><filename>$XDG_RUNTIME_DIR/systemd/user</filename></entry>
+-      <entry>Runtime units (only used when $XDG_RUNTIME_DIR is set)</entry>
+-          </row>
+-          <row>
+-      <entry><filename>/run/systemd/user</filename></entry>
+-      <entry>Runtime units</entry>
+-          </row>
+-          <row>
+-      <entry><filename>$XDG_DATA_HOME/systemd/user</filename></entry>
+-      <entry>Units of packages that have been installed in the home directory (only used when $XDG_DATA_HOME is set)</entry>
+-          </row>
+-          <row>
+-      <entry><filename>$HOME/.local/share/systemd/user</filename></entry>
+-      <entry>Units of packages that have been installed in the home directory (only used when $XDG_DATA_HOME is not set)</entry>
+-          </row>
+-          <row>
+-      <entry><filename>/usr/lib/systemd/user</filename></entry>
+-      <entry>Units of packages that have been installed system-wide</entry>
+-          </row>
+-        </tbody>
+-      </tgroup>
+-    </table>
+-
+     <para>Additional units might be loaded into systemd ("linked")
+     from directories not on the unit load path. See the
+     <command>link</command> command for
+@@ -1271,8 +1212,7 @@
+     when systemd is running in system mode. PID 1 cannot query the
+     user account database for information, so the specifiers only work
+     as shortcuts for things which are already specified in a different
+-    way in the unit file. They are fully functional when systemd is
+-    running in <option>--user</option> mode.</para>
++    way in the unit file.</para>
+   </refsect1>
+ 
+   <refsect1>
+@@ -1338,10 +1278,6 @@ ExecStart=/usr/sbin/foo-daemon
+       to first clear the list before re-adding all entries except the
+       one that is to be removed. See below for an example.</para>
+ 
+-      <para>This also applies for user instances of systemd, but with
+-      different locations for the unit files. See the section on unit
+-      load paths for further details.</para>
+-
+       <para>Suppose there is a vendor-supplied unit
+       <filename>/usr/lib/systemd/system/httpd.service</filename> with
+       the following contents:</para>
+diff --git a/man/systemd.xml b/man/systemd.xml
+index d006b0b..eb289f0 100644
+--- a/man/systemd.xml
++++ b/man/systemd.xml
+@@ -77,10 +77,7 @@
+ 
+     <para>When run as a system instance, systemd interprets the
+     configuration file <filename>system.conf</filename> and the files
+-    in <filename>system.conf.d</filename> directories; when run as a
+-    user instance, systemd interprets the configuration file
+-    <filename>user.conf</filename> and the files in
+-    <filename>user.conf.d</filename> directories. See
++    in <filename>system.conf.d</filename> directories. See
+     <citerefentry><refentrytitle>systemd-system.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
+     for more information.</para>
+   </refsect1>
+@@ -113,15 +110,12 @@
+       </varlistentry>
+       <varlistentry>
+         <term><option>--system</option></term>
+-        <term><option>--user</option></term>
+ 
+-        <listitem><para>For <option>--system</option>, tell systemd to
++        <listitem><para><option>--system</option>, tell systemd to
+         run a system instance, even if the process ID is not 1, i.e.
+-        systemd is not run as init process. <option>--user</option>
+-        does the opposite, running a user instance even if the process
+-        ID is 1. Normally it should not be necessary to pass these
++        systemd is not run as init process. Normally it should not be necessary to pass this
+         options, as systemd automatically detects the mode it is
+-        started in. These options are hence of little use except for
++        started in. This option is hence of little use except for
+         debugging. Note that it is not supported booting and
+         maintaining a full system with systemd running in
+         <option>--system</option> mode, but PID not 1. In practice,
+@@ -131,29 +125,25 @@
+       <varlistentry>
+         <term><option>--dump-core</option></term>
+ 
+-        <listitem><para>Dump core on crash. This switch has no effect
+-        when run as user instance.</para></listitem>
++        <listitem><para>Dump core on crash.</para></listitem>
+       </varlistentry>
+       <varlistentry>
+         <term><option>--crash-shell</option></term>
+ 
+         <listitem><para>Run shell on
+-        crash. This switch has no effect when
+-        run as user
+-        instance.</para></listitem>
++        crash.</para></listitem>
+       </varlistentry>
+       <varlistentry>
+         <term><option>--confirm-spawn</option></term>
+ 
+         <listitem><para>Ask for confirmation when spawning processes.
+-        This switch has no effect when run as user
+-        instance.</para></listitem>
++        </para></listitem>
+       </varlistentry>
+       <varlistentry>
+         <term><option>--show-status=</option></term>
+ 
+         <listitem><para>Show terse service status information while
+-        booting. This switch has no effect when run as user instance.
++        booting.
+         Takes a boolean argument which may be omitted which is
+         interpreted as <option>true</option>.</para></listitem>
+       </varlistentry>
+@@ -454,30 +444,6 @@
+ 
+     <variablelist>
+       <varlistentry>
+-        <term>User unit directories</term>
+-
+-        <listitem><para>Similar rules apply for the user unit
+-        directories. However, here the
+-        <ulink url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
+-        Base Directory specification</ulink> is followed to find
+-        units. Applications should place their unit files in the
+-        directory returned by <command>pkg-config systemd
+-        --variable=systemduserunitdir</command>. Global configuration
+-        is done in the directory reported by <command>pkg-config
+-        systemd --variable=systemduserconfdir</command>. The
+-        <command>enable</command> and <command>disable</command>
+-        commands of the
+-        <citerefentry><refentrytitle>systemctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
+-        tool can handle both global (i.e. for all users) and private
+-        (for one user) enabling/disabling of units. Full list of
+-        directories is provided in
+-        <citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>.
+-        </para></listitem>
+-      </varlistentry>
+-    </variablelist>
+-
+-    <variablelist>
+-      <varlistentry>
+         <term>SysV init scripts directory</term>
+ 
+         <listitem><para>The location of the SysV init script directory
+@@ -514,11 +480,7 @@
+         manager serializes its state, reexecutes itself and
+         deserializes the saved state again. This is mostly equivalent
+         to <command>systemctl daemon-reexec</command>.</para>
+-
+-        <para>systemd user managers will start the
+-        <filename>exit.target</filename> unit when this signal is
+-        received. This is mostly equivalent to <command>systemctl
+-        --user start exit.target</command>.</para></listitem>
++        </listitem>
+       </varlistentry>
+ 
+       <varlistentry>
+@@ -707,13 +669,6 @@
+       </varlistentry>
+ 
+       <varlistentry>
+-        <term><constant>SIGRTMIN+24</constant></term>
+-
+-        <listitem><para>Immediately exits the manager (only available
+-        for --user instances).</para></listitem>
+-      </varlistentry>
+-
+-      <varlistentry>
+         <term><constant>SIGRTMIN+26</constant></term>
+         <term><constant>SIGRTMIN+27</constant></term>
+         <term><constant>SIGRTMIN+28</constant></term>
+diff --git a/man/user-system-options.xml b/man/user-system-options.xml
+index 8616c54..ae911a9 100644
+--- a/man/user-system-options.xml
++++ b/man/user-system-options.xml
+@@ -3,15 +3,6 @@
+           "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd">
+ 
+ <variablelist>
+-  <varlistentry id='user'>
+-    <term><option>--user</option></term>
+-
+-    <listitem id='user-text'>
+-      <para>Talk to the service manager of the calling user,
+-      rather than the service manager of the system.</para>
+-    </listitem>
+-  </varlistentry>
+-
+   <varlistentry id='system'>
+     <term><option>--system</option></term>
+ 
+diff --git a/shell-completion/bash/busctl b/shell-completion/bash/busctl
+index 6a770b1..027dfdf 100644
+--- a/shell-completion/bash/busctl
++++ b/shell-completion/bash/busctl
+@@ -75,7 +75,7 @@ _busctl() {
+         local i verb comps mode
+         local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+         local -A OPTS=(
+-               [STANDALONE]='-h --help --version --no-pager --no-legend --system --user
++               [STANDALONE]='-h --help --version --no-pager --no-legend --system
+                              --show-machine --unique --acquired --activatable --list
+                              --quiet --verbose --expect-reply=no --auto-start=no
+                              --allow-interactive-authorization=yes --augment-creds=no'
+diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl
+index 1387524..91cb369 100644
+--- a/shell-completion/bash/journalctl
++++ b/shell-completion/bash/journalctl
+@@ -49,7 +49,7 @@ _journalctl() {
+                               --utc -x --catalog --no-full --force --dump-catalog
+                               --flush'
+                        [ARG]='-b --boot --this-boot -D --directory --file -F --field
+-                              -o --output -u --unit --user-unit -p --priority'
++                              -o --output -u --unit -p --priority'
+                 [ARGUNKNOWN]='-c --cursor --interval -n --lines --since --until
+                               --after-cursor --verify-key --identifier
+                               --root --machine'
+@@ -80,9 +80,6 @@ _journalctl() {
+                         --unit|-u)
+                                 comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null)
+                         ;;
+-                        --user-unit)
+-                                comps=$(journalctl -F '_SYSTEMD_USER_UNIT' 2>/dev/null)
+-                        ;;
+                         *)
+                                 return 0
+                         ;;
+diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in
+index 496c756..0a022c4 100644
+--- a/shell-completion/bash/systemctl.in
++++ b/shell-completion/bash/systemctl.in
+@@ -92,7 +92,7 @@ _systemctl () {
+         local -A OPTS=(
+                [STANDALONE]='--all -a --reverse --after --before --defaults --fail --ignore-dependencies --failed --force -f --full -l --global
+                              --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall
+-                             --quiet -q --privileged -P --system --user --version --runtime --recursive -r'
++                             --quiet -q --privileged -P --system --version --runtime --recursive -r'
+                       [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
+         )
+ 
+diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze
+index 0094702..1c4fe40 100644
+--- a/shell-completion/bash/systemd-analyze
++++ b/shell-completion/bash/systemd-analyze
+@@ -35,7 +35,7 @@ _systemd_analyze() {
+         local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+ 
+         local -A OPTS=(
+-               [STANDALONE]='--help --version --system --user --from-pattern --to-pattern --order --require --no-pager'
++               [STANDALONE]='--help --version --system --from-pattern --to-pattern --order --require --no-pager'
+                       [ARG]='-H --host -M --machine --fuzz --man'
+         )
+ 
+@@ -80,29 +80,29 @@ _systemd_analyze() {
+ 
+         elif __contains_word "$verb" ${VERBS[STANDALONE]}; then
+                 if [[ $cur = -* ]]; then
+-                        comps='--help --version --system --user'
++                        comps='--help --version --system '
+                 fi
+ 
+         elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then
+                 if [[ $cur = -* ]]; then
+-                        comps='--help --version --system --user --fuzz'
++                        comps='--help --version --system --fuzz'
+                 fi
+ 
+         elif __contains_word "$verb" ${VERBS[DOT]}; then
+                 if [[ $cur = -* ]]; then
+-                        comps='--help --version --system --user --from-pattern --to-pattern --order --require'
++                        comps='--help --version --system --from-pattern --to-pattern --order --require'
+                 fi
+ 
+         elif __contains_word "$verb" ${VERBS[LOG_LEVEL]}; then
+                 if [[ $cur = -* ]]; then
+-                        comps='--help --version --system --user'
++                        comps='--help --version --system'
+                 else
+                         comps='debug info notice warning err crit alert emerg'
+                 fi
+ 
+         elif __contains_word "$verb" ${VERBS[VERIFY]}; then
+                 if [[ $cur = -* ]]; then
+-                        comps='--help --version --system --user --no-man'
++                        comps='--help --version --system --no-man'
+                 else
+                         comps=$( compgen -A file -- "$cur" )
+                         compopt -o filenames
+diff --git a/shell-completion/bash/systemd-run b/shell-completion/bash/systemd-run
+index 712655c..5145cd3 100644
+--- a/shell-completion/bash/systemd-run
++++ b/shell-completion/bash/systemd-run
+@@ -32,7 +32,7 @@ __get_machines() {
+ 
+ _systemd_run() {
+     local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]}
+-    local OPTS='-h --help --version --user --system --scope --unit --description --slice
++    local OPTS='-h --help --version --system --scope --unit --description --slice
+                 -r --remain-after-exit --send-sighup -H --host -M --machine --service-type
+                 --uid --gid --nice --setenv -p --property'
+ 
+@@ -45,8 +45,6 @@ _systemd_run() {
+             return
+         fi
+ 
+-        [[ ${COMP_WORDS[i]} == "--user" ]] && mode=--user
+-
+         [[ $i -lt $COMP_CWORD && ${COMP_WORDS[i]} == @(--unit|--description|--slice|--service-type|-H|--host|-M|--machine|-p|--property) ]] && ((i++))
+     done
+ 
+diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c
+index 591b4ab..ff84f68 100644
+--- a/src/analyze/analyze.c
++++ b/src/analyze/analyze.c
+@@ -1170,7 +1170,6 @@ static void help(void) {
+                "     --version            Show package version\n"
+                "     --no-pager           Do not pipe output into a pager\n"
+                "     --system             Operate on system systemd instance\n"
+-               "     --user               Operate on user systemd instance\n"
+                "  -H --host=[USER@]HOST   Operate on remote host\n"
+                "  -M --machine=CONTAINER  Operate on local container\n"
+                "     --order              Show only order in the graph\n"
+diff --git a/src/core/main.c b/src/core/main.c
+index 1c8d67d..2aec40b 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -956,7 +956,6 @@ static int help(void) {
+                "     --dump-configuration-items  Dump understood unit configuration items\n"
+                "     --unit=UNIT                 Set default unit\n"
+                "     --system                    Run a system instance, even if PID != 1\n"
+-               "     --user                      Run a user instance\n"
+                "     --dump-core[=0|1]           Dump core on crash\n"
+                "     --crash-shell[=0|1]         Run shell on crash\n"
+                "     --confirm-spawn[=0|1]       Ask for confirmation when spawning processes\n"
+diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
+index c26cc00..8236d08 100644
+--- a/src/journal/journalctl.c
++++ b/src/journal/journalctl.c
+@@ -204,7 +204,6 @@ static void help(void) {
+                "     --list-boots          Show terse information about recorded boots\n"
+                "  -k --dmesg               Show kernel message log from the current boot\n"
+                "  -u --unit=UNIT           Show logs from the specified unit\n"
+-               "     --user-unit=UNIT      Show logs from the specified user unit\n"
+                "  -t --identifier=STRING   Show entries with the specified syslog identifier\n"
+                "  -p --priority=RANGE      Show entries with the specified priority\n"
+                "  -e --pager-end           Immediately jump to the end in the pager\n"
+diff --git a/src/libsystemd/sd-bus/busctl.c b/src/libsystemd/sd-bus/busctl.c
+index d3c1772..bffbf4a 100644
+--- a/src/libsystemd/sd-bus/busctl.c
++++ b/src/libsystemd/sd-bus/busctl.c
+@@ -1688,7 +1688,6 @@ static int help(void) {
+                "     --no-pager           Do not pipe output into a pager\n"
+                "     --no-legend          Do not show the headers and footers\n"
+                "     --system             Connect to system bus\n"
+-               "     --user               Connect to user bus\n"
+                "  -H --host=[USER@]HOST   Operate on remote host\n"
+                "  -M --machine=CONTAINER  Operate on local container\n"
+                "     --address=ADDRESS    Connect to bus specified by address\n"
+diff --git a/src/run/run.c b/src/run/run.c
+index 0661b3b..0e5bde2 100644
+--- a/src/run/run.c
++++ b/src/run/run.c
+@@ -68,7 +68,6 @@ static void help(void) {
+                "specified with --unit option then command can be ommited.\n\n"
+                "  -h --help                       Show this help\n"
+                "     --version                    Show package version\n"
+-               "     --user                       Run as user unit\n"
+                "  -H --host=[USER@]HOST           Operate on remote host\n"
+                "  -M --machine=CONTAINER          Operate on local container\n"
+                "     --scope                      Run this as scope rather than service\n"
+diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
+index 9898694..89d0b3b 100644
+--- a/src/systemctl/systemctl.c
++++ b/src/systemctl/systemctl.c
+@@ -6050,7 +6050,6 @@ static void systemctl_help(void) {
+                "  -h --help           Show this help\n"
+                "     --version        Show package version\n"
+                "     --system         Connect to system manager\n"
+-               "     --user           Connect to user service manager\n"
+                "  -H --host=[USER@]HOST\n"
+                "                      Operate on remote host\n"
+                "  -M --machine=CONTAINER\n"
diff --git a/SOURCES/0241-journald-always-add-syslog-facility-for-messages-com.patch b/SOURCES/0241-journald-always-add-syslog-facility-for-messages-com.patch
deleted file mode 100644
index 3d4c49a..0000000
--- a/SOURCES/0241-journald-always-add-syslog-facility-for-messages-com.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 7f85c4184fc45c3dd2c76b4867ab252c3530f84d Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Fri, 25 Jul 2014 14:38:22 +0200
-Subject: [PATCH] journald: always add syslog facility for messages coming from
- kmsg
-
-Set SYSLOG_FACILITY field for kernel log messages too. Setting only
-SYSLOG_IDENTIFIER="kernel" is not sufficient and tools reading journal
-maybe confused by missing SYSLOG_FACILITY field for kernel log messages.
-
-(cherry picked from commit 36dd072cdf03dcac0fcd2d6b42f261444dc7ac88)
-
-Resolves: #1113215
----
- src/journal/journald-kmsg.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
-index 9895808..e393cb7 100644
---- a/src/journal/journald-kmsg.c
-+++ b/src/journal/journald-kmsg.c
-@@ -274,6 +274,9 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) {
-         if (asprintf(&syslog_priority, "PRIORITY=%i", priority & LOG_PRIMASK) >= 0)
-                 IOVEC_SET_STRING(iovec[n++], syslog_priority);
- 
-+        if (asprintf(&syslog_facility, "SYSLOG_FACILITY=%i", LOG_FAC(priority)) >= 0)
-+                IOVEC_SET_STRING(iovec[n++], syslog_facility);
-+
-         if ((priority & LOG_FACMASK) == LOG_KERN)
-                 IOVEC_SET_STRING(iovec[n++], "SYSLOG_IDENTIFIER=kernel");
-         else {
-@@ -295,9 +298,6 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) {
-                         if (syslog_pid)
-                                 IOVEC_SET_STRING(iovec[n++], syslog_pid);
-                 }
--
--                if (asprintf(&syslog_facility, "SYSLOG_FACILITY=%i", LOG_FAC(priority)) >= 0)
--                        IOVEC_SET_STRING(iovec[n++], syslog_facility);
-         }
- 
-         message = cunescape_length_with_prefix(p, pl, "MESSAGE=");
diff --git a/SOURCES/0241-selinux-fix-check-for-transient-units.patch b/SOURCES/0241-selinux-fix-check-for-transient-units.patch
new file mode 100644
index 0000000..fb51e7e
--- /dev/null
+++ b/SOURCES/0241-selinux-fix-check-for-transient-units.patch
@@ -0,0 +1,118 @@
+From e3f34eb2e0edc9cefe92e58e2ad4c98bcccf2090 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Thu, 27 Aug 2015 10:33:15 +0200
+Subject: [PATCH] selinux: fix check for transient units
+
+SELinux does not have a path to check for a snapshot service creation.
+This ends up giving us a bogus check.
+
+On snapshot creation we should check if the remote process type, has the
+ability to start a service with the type that systemd is running with.
+
+Based on patch from Vaclav Pavlin and Dan Walsh
+http://lists.freedesktop.org/archives/systemd-devel/2013-November/014021.html
+
+RHEL only
+Resolves: #1255129
+---
+ src/core/dbus-manager.c   |  4 ++--
+ src/core/selinux-access.c | 11 ++++++-----
+ src/core/selinux-access.h |  9 ++++++---
+ 3 files changed, 14 insertions(+), 10 deletions(-)
+
+diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
+index 2bc37ba..1ec350e 100644
+--- a/src/core/dbus-manager.c
++++ b/src/core/dbus-manager.c
+@@ -734,7 +734,7 @@ static int method_start_transient_unit(sd_bus *bus, sd_bus_message *message, voi
+         if (mode < 0)
+                 return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Job mode %s is invalid.", smode);
+ 
+-        r = mac_selinux_access_check(message, "start", error);
++        r = mac_selinux_runtime_unit_access_check(message, "start", error);
+         if (r < 0)
+                 return r;
+ 
+@@ -1092,7 +1092,7 @@ static int method_create_snapshot(sd_bus *bus, sd_bus_message *message, void *us
+         assert(message);
+         assert(m);
+ 
+-        r = mac_selinux_access_check(message, "start", error);
++        r = mac_selinux_runtime_unit_access_check(message, "start", error);
+         if (r < 0)
+                 return r;
+ 
+diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
+index ce4f394..91460b8 100644
+--- a/src/core/selinux-access.c
++++ b/src/core/selinux-access.c
+@@ -175,6 +175,7 @@ void mac_selinux_access_free(void) {
+ */
+ int mac_selinux_generic_access_check(
+                 sd_bus_message *message,
++                bool system,
+                 const char *path,
+                 const char *permission,
+                 sd_bus_error *error) {
+@@ -213,7 +214,9 @@ int mac_selinux_generic_access_check(
+         if (r < 0)
+                 goto finish;
+ 
+-        if (path) {
++        tclass = "service";
++
++        if (path && !system) {
+                 /* Get the file context of the unit file */
+ 
+                 r = getfilecon(path, &fcon);
+@@ -221,16 +224,14 @@ int mac_selinux_generic_access_check(
+                         r = sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Failed to get file context on %s.", path);
+                         goto finish;
+                 }
+-
+-                tclass = "service";
+         } else {
+                 r = getcon(&fcon);
+                 if (r < 0) {
+                         r = sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Failed to get current context.");
+                         goto finish;
+                 }
+-
+-                tclass = "system";
++                if (system)
++                        tclass = "system";
+         }
+ 
+         sd_bus_creds_get_cmdline(creds, &cmdline);
+diff --git a/src/core/selinux-access.h b/src/core/selinux-access.h
+index dd1e8bb..7dc271b 100644
+--- a/src/core/selinux-access.h
++++ b/src/core/selinux-access.h
+@@ -28,21 +28,24 @@
+ 
+ void mac_selinux_access_free(void);
+ 
+-int mac_selinux_generic_access_check(sd_bus_message *message, const char *path, const char *permission, sd_bus_error *error);
++int mac_selinux_generic_access_check(sd_bus_message *message, bool system, const char *path, const char *permission, sd_bus_error *error);
+ 
+ int mac_selinux_unit_access_check_strv(char **units, sd_bus_message *message, Manager *m, const char *permission, sd_bus_error *error);
+ 
+ #ifdef HAVE_SELINUX
+ 
+ #define mac_selinux_access_check(message, permission, error) \
+-        mac_selinux_generic_access_check((message), NULL, (permission), (error))
++        mac_selinux_generic_access_check((message), true, NULL, (permission), (error))
+ 
+ #define mac_selinux_unit_access_check(unit, message, permission, error) \
+         ({                                                              \
+                 Unit *_unit = (unit);                                   \
+-                mac_selinux_generic_access_check((message), _unit->source_path ?: _unit->fragment_path, (permission), (error)); \
++                mac_selinux_generic_access_check((message), false, _unit->source_path ?: _unit->fragment_path, (permission), (error)); \
+         })
+ 
++#define mac_selinux_runtime_unit_access_check(message, permission, error) \
++        mac_selinux_generic_access_check((message), false, NULL, (permission), (error))
++
+ #else
+ 
+ #define mac_selinux_access_check(message, permission, error) 0
diff --git a/SOURCES/0242-Introduce-_cleanup_endmntent_.patch b/SOURCES/0242-Introduce-_cleanup_endmntent_.patch
deleted file mode 100644
index a195d89..0000000
--- a/SOURCES/0242-Introduce-_cleanup_endmntent_.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From 8e7be40d1386e6053d4663114a00e0390400350f Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 3 Oct 2013 22:13:55 -0400
-Subject: [PATCH] Introduce _cleanup_endmntent_
-
-(cherry picked from commit 5862d652ba14178cff46b8a8fc6c6d8392bf32b1)
-
-Related: #1098310
----
- src/cryptsetup/cryptsetup.c           | 19 ++++++-------------
- src/fstab-generator/fstab-generator.c | 17 +++++------------
- src/remount-fs/remount-fs.c           | 13 ++++---------
- src/shared/util.h                     |  7 +++++++
- 4 files changed, 22 insertions(+), 34 deletions(-)
-
-diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
-index 769c3e4..4f2f52a 100644
---- a/src/cryptsetup/cryptsetup.c
-+++ b/src/cryptsetup/cryptsetup.c
-@@ -236,31 +236,24 @@ finish:
- }
- 
- static char *disk_mount_point(const char *label) {
--        char *mp = NULL;
-         _cleanup_free_ char *device = NULL;
--        FILE *f = NULL;
-+        _cleanup_endmntent_ FILE *f = NULL;
-         struct mntent *m;
- 
-         /* Yeah, we don't support native systemd unit files here for now */
- 
-         if (asprintf(&device, "/dev/mapper/%s", label) < 0)
--                goto finish;
-+                return NULL;
- 
-         f = setmntent("/etc/fstab", "r");
-         if (!f)
--                goto finish;
-+                return NULL;
- 
-         while ((m = getmntent(f)))
--                if (path_equal(m->mnt_fsname, device)) {
--                        mp = strdup(m->mnt_dir);
--                        break;
--                }
--
--finish:
--        if (f)
--                endmntent(f);
-+                if (path_equal(m->mnt_fsname, device))
-+                        return strdup(m->mnt_dir);
- 
--        return mp;
-+        return NULL;
- }
- 
- static int get_password(const char *name, usec_t until, bool accept_cached, char ***passwords) {
-diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
-index c0c2992..78d7609 100644
---- a/src/fstab-generator/fstab-generator.c
-+++ b/src/fstab-generator/fstab-generator.c
-@@ -327,15 +327,12 @@ static int add_mount(
- }
- 
- static int parse_fstab(const char *prefix, bool initrd) {
--        _cleanup_free_ char *fstab_path = NULL;
--        FILE *f;
-+        char *fstab_path;
-+        _cleanup_endmntent_ FILE *f;
-         int r = 0;
-         struct mntent *me;
- 
--        fstab_path = strjoin(strempty(prefix), "/etc/fstab", NULL);
--        if (!fstab_path)
--                return log_oom();
--
-+        fstab_path = strappenda(strempty(prefix), "/etc/fstab");
-         f = setmntent(fstab_path, "r");
-         if (!f) {
-                 if (errno == ENOENT)
-@@ -354,10 +351,8 @@ static int parse_fstab(const char *prefix, bool initrd) {
- 
-                 what = fstab_node_to_udev_node(me->mnt_fsname);
-                 where = strjoin(strempty(prefix), me->mnt_dir, NULL);
--                if (!what || !where) {
--                        r = log_oom();
--                        goto finish;
--                }
-+                if (!what || !where)
-+                        return log_oom();
- 
-                 if (is_path(where))
-                         path_kill_slashes(where);
-@@ -395,8 +390,6 @@ static int parse_fstab(const char *prefix, bool initrd) {
-                         r = k;
-         }
- 
--finish:
--        endmntent(f);
-         return r;
- }
- 
-diff --git a/src/remount-fs/remount-fs.c b/src/remount-fs/remount-fs.c
-index f432718..847637a 100644
---- a/src/remount-fs/remount-fs.c
-+++ b/src/remount-fs/remount-fs.c
-@@ -40,7 +40,7 @@
- 
- int main(int argc, char *argv[]) {
-         int ret = EXIT_FAILURE;
--        FILE *f = NULL;
-+        _cleanup_endmntent_ FILE *f = NULL;
-         struct mntent* me;
-         Hashmap *pids = NULL;
- 
-@@ -57,13 +57,11 @@ int main(int argc, char *argv[]) {
- 
-         f = setmntent("/etc/fstab", "r");
-         if (!f) {
--                if (errno == ENOENT) {
--                        ret = EXIT_SUCCESS;
--                        goto finish;
--                }
-+                if (errno == ENOENT)
-+                        return EXIT_SUCCESS;
- 
-                 log_error("Failed to open /etc/fstab: %m");
--                goto finish;
-+                return EXIT_FAILURE;
-         }
- 
-         pids = hashmap_new(trivial_hash_func, trivial_compare_func);
-@@ -162,8 +160,5 @@ finish:
-         if (pids)
-                 hashmap_free_free(pids);
- 
--        if (f)
--                endmntent(f);
--
-         return ret;
- }
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 3a4bc98..5a1e1bc 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -39,6 +39,7 @@
- #include <stddef.h>
- #include <unistd.h>
- #include <locale.h>
-+#include <mntent.h>
- 
- #include "macro.h"
- #include "time-util.h"
-@@ -579,6 +580,11 @@ static inline void umaskp(mode_t *u) {
-         umask(*u);
- }
- 
-+static inline void endmntentp(FILE **f) {
-+        if (*f)
-+                endmntent(*f);
-+}
-+
- #define _cleanup_free_ _cleanup_(freep)
- #define _cleanup_fclose_ _cleanup_(fclosep)
- #define _cleanup_pclose_ _cleanup_(pclosep)
-@@ -586,6 +592,7 @@ static inline void umaskp(mode_t *u) {
- #define _cleanup_closedir_ _cleanup_(closedirp)
- #define _cleanup_umask_ _cleanup_(umaskp)
- #define _cleanup_globfree_ _cleanup_(globfree)
-+#define _cleanup_endmntent_ _cleanup_(endmntentp)
- 
- _malloc_  _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) {
-         if (_unlikely_(b == 0 || a > ((size_t) -1) / b))
diff --git a/SOURCES/0242-socket-fix-setsockopt-call.-SOL_SOCKET-changed-to-SO.patch b/SOURCES/0242-socket-fix-setsockopt-call.-SOL_SOCKET-changed-to-SO.patch
new file mode 100644
index 0000000..d3e32fd
--- /dev/null
+++ b/SOURCES/0242-socket-fix-setsockopt-call.-SOL_SOCKET-changed-to-SO.patch
@@ -0,0 +1,24 @@
+From a905a1904792b4d5992add15a5cf396b581c1e36 Mon Sep 17 00:00:00 2001
+From: Robin Hack <rhack@redhat.com>
+Date: Mon, 31 Aug 2015 11:45:09 +0200
+Subject: [PATCH] socket: fix setsockopt call. SOL_SOCKET changed to SOL_TCP.
+
+Cherry-picked from: 172cfe8714754e1f16fc500e3ed02c4de68de92
+Resolves: #1135599
+---
+ src/core/socket.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/core/socket.c b/src/core/socket.c
+index 760de02..7022e77 100644
+--- a/src/core/socket.c
++++ b/src/core/socket.c
+@@ -833,7 +833,7 @@ static void socket_apply_socket_options(Socket *s, int fd) {
+ 
+         if (s->keep_alive_cnt) {
+                 int value = s->keep_alive_cnt;
+-                if (setsockopt(fd, SOL_SOCKET, TCP_KEEPCNT, &value, sizeof(value)) < 0)
++                if (setsockopt(fd, SOL_TCP, TCP_KEEPCNT, &value, sizeof(value)) < 0)
+                         log_unit_warning(UNIT(s)->id, "TCP_KEEPCNT failed: %m");
+         }
+ 
diff --git a/SOURCES/0243-Introduce-_cleanup_fdset_free_.patch b/SOURCES/0243-Introduce-_cleanup_fdset_free_.patch
deleted file mode 100644
index a698bdb..0000000
--- a/SOURCES/0243-Introduce-_cleanup_fdset_free_.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From 735583e63b9c109e3aaa7aecbce8d7a477988ef6 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 11 Oct 2013 19:33:48 -0400
-Subject: [PATCH] Introduce _cleanup_fdset_free_
-
-(cherry picked from commit 51d122af23533b0b8318911c4fc8b128ad8eafb7)
-
-Related: #1098310
----
- src/core/manager.c  | 22 +++++++---------------
- src/nspawn/nspawn.c |  4 +---
- src/shared/fdset.h  |  7 +++++++
- 3 files changed, 15 insertions(+), 18 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index 2829c95..57a88b0 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -236,7 +236,7 @@ static void draw_cylon(char buffer[], size_t buflen, unsigned width, unsigned po
-                 *p++ = '*';
-                 if (pos < width-1)
-                         p = mempset(p, ' ', width-1-pos);
--                p = stpcpy(p, ANSI_HIGHLIGHT_OFF);
-+                strcpy(p, ANSI_HIGHLIGHT_OFF);
-         }
- }
- 
-@@ -257,6 +257,7 @@ static void manager_print_jobs_in_progress(Manager *m) {
-         /* m->n_running_jobs must be consistent with the contents of m->jobs,
-          * so the above loop must have succeeded in finding j. */
-         assert(counter == print_nr + 1);
-+        assert(j);
- 
-         cylon_pos = m->jobs_in_progress_iteration % 14;
-         if (cylon_pos >= 8)
-@@ -2343,8 +2344,8 @@ int manager_distribute_fds(Manager *m, FDSet *fds) {
- 
- int manager_reload(Manager *m) {
-         int r, q;
--        FILE *f;
--        FDSet *fds;
-+        _cleanup_fclose_ FILE *f = NULL;
-+        _cleanup_fdset_free_ FDSet *fds = NULL;
- 
-         assert(m);
- 
-@@ -2358,20 +2359,18 @@ int manager_reload(Manager *m) {
-         fds = fdset_new();
-         if (!fds) {
-                 m->n_reloading --;
--                r = -ENOMEM;
--                goto finish;
-+                return -ENOMEM;
-         }
- 
-         r = manager_serialize(m, f, fds, false);
-         if (r < 0) {
-                 m->n_reloading --;
--                goto finish;
-+                return r;
-         }
- 
-         if (fseeko(f, 0, SEEK_SET) < 0) {
-                 m->n_reloading --;
--                r = -errno;
--                goto finish;
-+                return -errno;
-         }
- 
-         /* From here on there is no way back. */
-@@ -2415,13 +2414,6 @@ int manager_reload(Manager *m) {
- 
-         m->send_reloading_done = true;
- 
--finish:
--        if (f)
--                fclose(f);
--
--        if (fds)
--                fdset_free(fds);
--
-         return r;
- }
- 
-diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
-index f326f99..1cf67d0 100644
---- a/src/nspawn/nspawn.c
-+++ b/src/nspawn/nspawn.c
-@@ -1305,7 +1305,7 @@ int main(int argc, char *argv[]) {
-         bool saved_attr_valid = false;
-         struct winsize ws;
-         int kmsg_socket_pair[2] = { -1, -1 };
--        FDSet *fds = NULL;
-+        _cleanup_fdset_free_ FDSet *fds = NULL;
- 
-         log_parse_environment();
-         log_open();
-@@ -1813,7 +1813,5 @@ finish:
-         free(arg_directory);
-         free(arg_machine);
- 
--        fdset_free(fds);
--
-         return r;
- }
-diff --git a/src/shared/fdset.h b/src/shared/fdset.h
-index a7bd5e2..1a26005 100644
---- a/src/shared/fdset.h
-+++ b/src/shared/fdset.h
-@@ -22,6 +22,7 @@
- ***/
- 
- #include "set.h"
-+#include "util.h"
- 
- typedef struct FDSet FDSet;
- 
-@@ -47,3 +48,9 @@ int fdset_iterate(FDSet *s, Iterator *i);
- 
- #define FDSET_FOREACH(fd, fds, i) \
-         for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i)))
-+
-+static inline void fdset_freep(FDSet **fds) {
-+        if (*fds)
-+                fdset_free(*fds);
-+}
-+#define _cleanup_fdset_free_ _cleanup_(fdset_freep)
diff --git a/SOURCES/0243-selinux-fix-missing-SELinux-unit-access-check.patch b/SOURCES/0243-selinux-fix-missing-SELinux-unit-access-check.patch
new file mode 100644
index 0000000..6537d6c
--- /dev/null
+++ b/SOURCES/0243-selinux-fix-missing-SELinux-unit-access-check.patch
@@ -0,0 +1,40 @@
+From 0b630ecdbfe20ddff9da4f4b6712e80b745b5ab2 Mon Sep 17 00:00:00 2001
+From: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
+Date: Wed, 24 Jun 2015 12:01:26 +0900
+Subject: [PATCH] selinux: fix missing SELinux unit access check
+
+Currently, SELinux unit access check is not performed if a given unit
+file has not been registered in a hash table. This is because function
+manager_get_unit() only tries to pick up a Unit object from a Unit
+hash table. Instead, we use function manager_load_unit() searching
+Unit file pathes for the given Unit file.
+
+Cherry-picked from: 4938696301a914ec26bcfc60bb99a1e9624e378
+Resolves: #1185120
+---
+ src/core/selinux-access.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
+index 91460b8..f11247c 100644
+--- a/src/core/selinux-access.c
++++ b/src/core/selinux-access.c
+@@ -272,12 +272,12 @@ int mac_selinux_unit_access_check_strv(char **units,
+         int r;
+ 
+         STRV_FOREACH(i, units) {
+-                u = manager_get_unit(m, *i);
+-                if (u) {
+-                        r = mac_selinux_unit_access_check(u, message, permission, error);
+-                        if (r < 0)
+-                                return r;
+-                }
++                r = manager_load_unit(m, *i, NULL, error, &u);
++                if (r < 0)
++                        return r;
++                r = mac_selinux_unit_access_check(u, message, permission, error);
++                if (r < 0)
++                        return r;
+         }
+ #endif
+         return 0;
diff --git a/SOURCES/0244-Introduce-udev-object-cleanup-functions.patch b/SOURCES/0244-Introduce-udev-object-cleanup-functions.patch
deleted file mode 100644
index db3bda5..0000000
--- a/SOURCES/0244-Introduce-udev-object-cleanup-functions.patch
+++ /dev/null
@@ -1,1291 +0,0 @@
-From 0aad0e32d93d848e707a3cd0edd78c58a4c21829 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 12 Oct 2013 20:28:21 -0400
-Subject: [PATCH] Introduce udev object cleanup functions
-
-Conflicts:
-	src/backlight/backlight.c
-	src/gpt-auto-generator/gpt-auto-generator.c
-
-(cherry picked from commit 1ca208fb4f93e5869704af1812cbff7130a2fc03)
-
-Related: #1098310
----
- Makefile.am                                 |   1 +
- src/backlight/backlight.c                   |  57 +++++------
- src/core/umount.c                           | 143 ++++++++++------------------
- src/cryptsetup/cryptsetup.c                 |  27 ++----
- src/fsck/fsck.c                             |  13 +--
- src/gpt-auto-generator/gpt-auto-generator.c | 121 +++++++----------------
- src/journal/journal-internal.h              |   7 +-
- src/login/sysfs-show.c                      |  22 ++---
- src/readahead/readahead-common.c            |  66 +++++--------
- src/shared/fdset.h                          |   5 +-
- src/shared/install.c                        |   6 +-
- src/shared/set.h                            |  10 +-
- src/shared/strv.h                           |   7 +-
- src/shared/udev-util.h                      |  37 +++++++
- src/shared/util.h                           |  33 +++----
- src/test/test-libudev.c                     |   8 +-
- src/test/test-udev.c                        |  21 ++--
- src/tmpfiles/tmpfiles.c                     |   5 +-
- 18 files changed, 227 insertions(+), 362 deletions(-)
- create mode 100644 src/shared/udev-util.h
-
-diff --git a/Makefile.am b/Makefile.am
-index fa2fba6..ef73138 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -647,6 +647,7 @@ libsystemd_shared_la_SOURCES = \
- 	src/shared/sparse-endian.h \
- 	src/shared/util.c \
- 	src/shared/util.h \
-+	src/shared/udev-util.h \
- 	src/shared/virt.c \
- 	src/shared/virt.h \
- 	src/shared/efivars.c \
-diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
-index 9b2eada..aa80c29 100644
---- a/src/backlight/backlight.c
-+++ b/src/backlight/backlight.c
-@@ -19,15 +19,15 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
- 
--#include <libudev.h>
--
- #include "util.h"
- #include "mkdir.h"
- #include "fileio.h"
-+#include "libudev.h"
-+#include "udev-util.h"
- 
- int main(int argc, char *argv[]) {
--        struct udev *udev = NULL;
--        struct udev_device *device = NULL;
-+        _cleanup_udev_unref_ struct udev *udev = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *device = NULL;
-         _cleanup_free_ char *saved = NULL;
-         int r;
- 
-@@ -45,37 +45,35 @@ int main(int argc, char *argv[]) {
-         r = mkdir_p("/var/lib/systemd/backlight", 0755);
-         if (r < 0) {
-                 log_error("Failed to create backlight directory: %s", strerror(-r));
--                goto finish;
-+                return EXIT_FAILURE;
-         }
- 
-         udev = udev_new();
-         if (!udev) {
--                r = log_oom();
--                goto finish;
-+                log_oom();
-+                return EXIT_FAILURE;
-         }
- 
-         errno = 0;
-         device = udev_device_new_from_subsystem_sysname(udev, "backlight", argv[2]);
-         if (!device) {
--                if (errno != 0) {
-+                if (errno != 0)
-                         log_error("Failed to get backlight device: %m");
--                        r = -errno;
--                } else
--                        r = log_oom();
-+                else
-+                        log_oom();
- 
--                goto finish;
-+                return EXIT_FAILURE;
-         }
- 
-         if (!streq_ptr(udev_device_get_subsystem(device), "backlight")) {
-                 log_error("Not a backlight device: %s", argv[2]);
--                r = -ENODEV;
--                goto finish;
-+                return EXIT_FAILURE;
-         }
- 
-         saved = strappend("/var/lib/systemd/backlight/", udev_device_get_sysname(device));
-         if (!saved) {
--                r = log_oom();
--                goto finish;
-+                log_oom();
-+                return EXIT_FAILURE;
-         }
- 
-         if (streq(argv[1], "load")) {
-@@ -84,19 +82,17 @@ int main(int argc, char *argv[]) {
-                 r = read_one_line_file(saved, &value);
-                 if (r < 0) {
- 
--                        if (r == -ENOENT) {
--                                r = 0;
--                                goto finish;
--                        }
-+                        if (r == -ENOENT)
-+                                return EXIT_SUCCESS;
- 
-                         log_error("Failed to read %s: %s", saved, strerror(-r));
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
-                 r = udev_device_set_sysattr_value(device, "brightness", value);
-                 if (r < 0) {
-                         log_error("Failed to write system attribute: %s", strerror(-r));
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
-         } else if (streq(argv[1], "save")) {
-@@ -105,28 +101,19 @@ int main(int argc, char *argv[]) {
-                 value = udev_device_get_sysattr_value(device, "brightness");
-                 if (!value) {
-                         log_error("Failed to read system attribute: %s", strerror(-r));
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
-                 r = write_string_file(saved, value);
-                 if (r < 0) {
-                         log_error("Failed to write %s: %s", saved, strerror(-r));
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
-         } else {
-                 log_error("Unknown verb %s.", argv[1]);
--                r = -EINVAL;
--                goto finish;
-+                return EXIT_FAILURE;
-         }
- 
--finish:
--        if (device)
--                udev_device_unref(device);
--
--        if (udev)
--                udev_unref(udev);
--
--        return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
--
-+        return EXIT_SUCCESS;
- }
-diff --git a/src/core/umount.c b/src/core/umount.c
-index 1e95ad7..99dbe27 100644
---- a/src/core/umount.c
-+++ b/src/core/umount.c
-@@ -27,7 +27,6 @@
- #include <unistd.h>
- #include <linux/loop.h>
- #include <linux/dm-ioctl.h>
--#include <libudev.h>
- 
- #include "list.h"
- #include "mount-setup.h"
-@@ -35,6 +34,8 @@
- #include "path-util.h"
- #include "util.h"
- #include "virt.h"
-+#include "libudev.h"
-+#include "udev-util.h"
- 
- typedef struct MountPoint {
-         char *path;
-@@ -201,145 +202,108 @@ finish:
- }
- 
- static int loopback_list_get(MountPoint **head) {
--        int r;
--        struct udev *udev;
--        struct udev_enumerate *e = NULL;
-+        _cleanup_udev_unref_ struct udev *udev;
-+        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
-         struct udev_list_entry *item = NULL, *first = NULL;
- 
-         assert(head);
- 
--        if (!(udev = udev_new())) {
--                r = -ENOMEM;
--                goto finish;
--        }
-+        udev = udev_new();
-+        if (!udev)
-+                return -ENOMEM;
- 
--        if (!(e = udev_enumerate_new(udev))) {
--                r = -ENOMEM;
--                goto finish;
--        }
-+        e = udev_enumerate_new(udev);
-+        if (!e)
-+                return -ENOMEM;
- 
-         if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
-             udev_enumerate_add_match_sysname(e, "loop*") < 0 ||
--            udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0) {
--                r = -EIO;
--                goto finish;
--        }
-+            udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0)
-+                return -EIO;
- 
--        if (udev_enumerate_scan_devices(e) < 0) {
--                r = -EIO;
--                goto finish;
--        }
-+        if (udev_enumerate_scan_devices(e) < 0)
-+                return -EIO;
- 
-         first = udev_enumerate_get_list_entry(e);
-         udev_list_entry_foreach(item, first) {
-                 MountPoint *lb;
--                struct udev_device *d;
-+                _cleanup_udev_device_unref_ struct udev_device *d;
-                 char *loop;
-                 const char *dn;
- 
--                if (!(d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)))) {
--                        r = -ENOMEM;
--                        goto finish;
--                }
-+                d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
-+                if (!d)
-+                        return -ENOMEM;
- 
--                if (!(dn = udev_device_get_devnode(d))) {
--                        udev_device_unref(d);
-+                dn = udev_device_get_devnode(d);
-+                if (!dn)
-                         continue;
--                }
- 
-                 loop = strdup(dn);
--                udev_device_unref(d);
--
--                if (!loop) {
--                        r = -ENOMEM;
--                        goto finish;
--                }
-+                if (!loop)
-+                        return -ENOMEM;
- 
--                if (!(lb = new0(MountPoint, 1))) {
-+                lb = new0(MountPoint, 1);
-+                if (!lb) {
-                         free(loop);
--                        r = -ENOMEM;
--                        goto finish;
-+                        return -ENOMEM;
-                 }
- 
-                 lb->path = loop;
-                 LIST_PREPEND(MountPoint, mount_point, *head, lb);
-         }
- 
--        r = 0;
--
--finish:
--        if (e)
--                udev_enumerate_unref(e);
--
--        if (udev)
--                udev_unref(udev);
--
--        return r;
-+        return 0;
- }
- 
- static int dm_list_get(MountPoint **head) {
--        int r;
--        struct udev *udev;
--        struct udev_enumerate *e = NULL;
-+        _cleanup_udev_unref_ struct udev *udev;
-+        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
-         struct udev_list_entry *item = NULL, *first = NULL;
- 
-         assert(head);
- 
--        if (!(udev = udev_new())) {
--                r = -ENOMEM;
--                goto finish;
--        }
-+        udev = udev_new();
-+        if (!udev)
-+                return -ENOMEM;
- 
--        if (!(e = udev_enumerate_new(udev))) {
--                r = -ENOMEM;
--                goto finish;
--        }
-+        e = udev_enumerate_new(udev);
-+        if (!e)
-+                return -ENOMEM;
- 
-         if (udev_enumerate_add_match_subsystem(e, "block") < 0 ||
--            udev_enumerate_add_match_sysname(e, "dm-*") < 0) {
--                r = -EIO;
--                goto finish;
--        }
-+            udev_enumerate_add_match_sysname(e, "dm-*") < 0)
-+                return -EIO;
- 
--        if (udev_enumerate_scan_devices(e) < 0) {
--                r = -EIO;
--                goto finish;
--        }
-+        if (udev_enumerate_scan_devices(e) < 0)
-+                return -EIO;
- 
-         first = udev_enumerate_get_list_entry(e);
- 
-         udev_list_entry_foreach(item, first) {
-                 MountPoint *m;
--                struct udev_device *d;
-+                _cleanup_udev_device_unref_ struct udev_device *d;
-                 dev_t devnum;
-                 char *node;
-                 const char *dn;
- 
--                if (!(d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item)))) {
--                        r = -ENOMEM;
--                        goto finish;
--                }
-+                d = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
-+                if (!d)
-+                        return -ENOMEM;
- 
-                 devnum = udev_device_get_devnum(d);
-                 dn = udev_device_get_devnode(d);
--
--                if (major(devnum) == 0 || !dn) {
--                        udev_device_unref(d);
-+                if (major(devnum) == 0 || !dn)
-                         continue;
--                }
- 
-                 node = strdup(dn);
--                udev_device_unref(d);
--
--                if (!node) {
--                        r = -ENOMEM;
--                        goto finish;
--                }
-+                if (!node)
-+                        return -ENOMEM;
- 
--                if (!(m = new(MountPoint, 1))) {
-+                m = new(MountPoint, 1);
-+                if (!m) {
-                         free(node);
--                        r = -ENOMEM;
--                        goto finish;
-+                        return -ENOMEM;
-                 }
- 
-                 m->path = node;
-@@ -347,16 +311,7 @@ static int dm_list_get(MountPoint **head) {
-                 LIST_PREPEND(MountPoint, mount_point, *head, m);
-         }
- 
--        r = 0;
--
--finish:
--        if (e)
--                udev_enumerate_unref(e);
--
--        if (udev)
--                udev_unref(udev);
--
--        return r;
-+        return 0;
- }
- 
- static int delete_loopback(const char *device) {
-diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
-index 4f2f52a..0a15b50 100644
---- a/src/cryptsetup/cryptsetup.c
-+++ b/src/cryptsetup/cryptsetup.c
-@@ -25,7 +25,6 @@
- #include <mntent.h>
- 
- #include <libcryptsetup.h>
--#include <libudev.h>
- 
- #include "fileio.h"
- #include "log.h"
-@@ -34,6 +33,8 @@
- #include "strv.h"
- #include "ask-password-api.h"
- #include "def.h"
-+#include "libudev.h"
-+#include "udev-util.h"
- 
- static const char *opt_type = NULL; /* CRYPT_LUKS1, CRYPT_TCRYPT or CRYPT_PLAIN */
- static char *opt_cipher = NULL;
-@@ -184,7 +185,7 @@ static void log_glue(int level, const char *msg, void *usrptr) {
-         log_debug("%s", msg);
- }
- 
--static char *disk_description(const char *path) {
-+static char* disk_description(const char *path) {
- 
-         static const char name_fields[] = {
-                 "ID_PART_ENTRY_NAME\0"
-@@ -193,10 +194,9 @@ static char *disk_description(const char *path) {
-                 "ID_MODEL\0"
-         };
- 
--        struct udev *udev = NULL;
--        struct udev_device *device = NULL;
-+        _cleanup_udev_unref_ struct udev *udev = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *device = NULL;
-         struct stat st;
--        char *description = NULL;
-         const char *i;
- 
-         assert(path);
-@@ -213,26 +213,17 @@ static char *disk_description(const char *path) {
- 
-         device = udev_device_new_from_devnum(udev, 'b', st.st_rdev);
-         if (!device)
--                goto finish;
-+                return NULL;
- 
-         NULSTR_FOREACH(i, name_fields) {
-                 const char *name;
- 
-                 name = udev_device_get_property_value(device, i);
--                if (!isempty(name)) {
--                        description = strdup(name);
--                        break;
--                }
-+                if (!isempty(name))
-+                        return strdup(name);
-         }
- 
--finish:
--        if (device)
--                udev_device_unref(device);
--
--        if (udev)
--                udev_unref(udev);
--
--        return description;
-+        return NULL;
- }
- 
- static char *disk_mount_point(const char *label) {
-diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
-index f298cf7..96a79dd 100644
---- a/src/fsck/fsck.c
-+++ b/src/fsck/fsck.c
-@@ -27,7 +27,6 @@
- #include <fcntl.h>
- #include <sys/file.h>
- 
--#include <libudev.h>
- #include <dbus/dbus.h>
- 
- #include "util.h"
-@@ -36,6 +35,8 @@
- #include "bus-errors.h"
- #include "virt.h"
- #include "fileio.h"
-+#include "libudev.h"
-+#include "udev-util.h"
- 
- static bool arg_skip = false;
- static bool arg_force = false;
-@@ -251,8 +252,8 @@ int main(int argc, char *argv[]) {
-         int i = 0, r = EXIT_FAILURE, q;
-         pid_t pid;
-         siginfo_t status;
--        struct udev *udev = NULL;
--        struct udev_device *udev_device = NULL;
-+        _cleanup_udev_unref_ struct udev *udev = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
-         const char *device;
-         bool root_directory;
-         int progress_pipe[2] = { -1, -1 };
-@@ -400,12 +401,6 @@ int main(int argc, char *argv[]) {
-                 touch("/run/systemd/quotacheck");
- 
- finish:
--        if (udev_device)
--                udev_device_unref(udev_device);
--
--        if (udev)
--                udev_unref(udev);
--
-         close_pipe(progress_pipe);
- 
-         return r;
-diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
-index adbf71d..8436d26 100644
---- a/src/gpt-auto-generator/gpt-auto-generator.c
-+++ b/src/gpt-auto-generator/gpt-auto-generator.c
-@@ -36,6 +36,7 @@
- #include "missing.h"
- #include "sd-id128.h"
- #include "libudev.h"
-+#include "udev-util.h"
- #include "special.h"
- #include "unit-name.h"
- #include "virt.h"
-@@ -50,10 +51,7 @@
- 
- static const char *arg_dest = "/tmp";
- 
--static inline void blkid_free_probep(blkid_probe *b) {
--        if (*b)
--                blkid_free_probe(*b);
--}
-+define_trivial_cleanup_func(blkid_probe, blkid_free_probe)
- #define _cleanup_blkid_freep_probe_ _cleanup_(blkid_free_probep)
- 
- static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr, char **fstype) {
-@@ -236,75 +234,62 @@ static int add_home(const char *path, const char *fstype) {
- }
- 
- static int enumerate_partitions(struct udev *udev, dev_t dev) {
--        struct udev_enumerate *e = NULL;
--        struct udev_device *parent = NULL, *d = NULL;
-+        struct udev_device *parent = NULL;
-+        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *d = NULL;
-         struct udev_list_entry *first, *item;
-         unsigned home_nr = (unsigned) -1;
-         _cleanup_free_ char *home = NULL, *home_fstype = NULL;
-         int r;
- 
-         e = udev_enumerate_new(udev);
--        if (!e) {
--                r = log_oom();
--                goto finish;
--        }
-+        if (!e)
-+                return log_oom();
- 
-         d = udev_device_new_from_devnum(udev, 'b', dev);
--        if (!d) {
--                r = log_oom();
--                goto finish;
--        }
-+        if (!d)
-+                return log_oom();
- 
-         parent = udev_device_get_parent(d);
--        if (!parent) {
--                r = log_oom();
--                goto finish;
--        }
-+        if (!parent)
-+                return log_oom();
- 
-         r = udev_enumerate_add_match_parent(e, parent);
--        if (r < 0) {
--                r = log_oom();
--                goto finish;
--        }
-+        if (r < 0)
-+                return log_oom();
- 
-         r = udev_enumerate_add_match_subsystem(e, "block");
--        if (r < 0) {
--                r = log_oom();
--                goto finish;
--        }
-+        if (r < 0)
-+                return log_oom();
- 
-         r = udev_enumerate_scan_devices(e);
-         if (r < 0) {
-                 log_error("Failed to enumerate partitions on /dev/block/%u:%u: %s",
-                           major(dev), minor(dev), strerror(-r));
--                goto finish;
-+                return r;
-         }
- 
-         first = udev_enumerate_get_list_entry(e);
-         udev_list_entry_foreach(item, first) {
-                 _cleanup_free_ char *fstype = NULL;
-                 const char *node = NULL;
--                struct udev_device *q;
-+                _cleanup_udev_device_unref_ struct udev_device *q;
-                 sd_id128_t type_id;
-                 unsigned nr;
- 
-                 q = udev_device_new_from_syspath(udev, udev_list_entry_get_name(item));
--                if (!q) {
--                        r = log_oom();
--                        goto finish;
--                }
-+                if (!q)
-+                        return log_oom();
- 
-                 if (udev_device_get_devnum(q) == udev_device_get_devnum(d))
--                        goto skip;
-+                        continue;
- 
-                 if (udev_device_get_devnum(q) == udev_device_get_devnum(parent))
--                        goto skip;
-+                        continue;
- 
-                 node = udev_device_get_devnode(q);
--                if (!node) {
--                        r = log_oom();
--                        goto finish;
--                }
-+                if (!node)
-+                        return log_oom();
- 
-                 r = verify_gpt_partition(node, &type_id, &nr, &fstype);
-                 if (r < 0) {
-@@ -313,11 +298,10 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
-                                 continue;
-                         log_error("Failed to verify GPT partition %s: %s",
-                                   node, strerror(-r));
--                        udev_device_unref(q);
--                        goto finish;
-+                        return r;
-                 }
-                 if (r == 0)
--                        goto skip;
-+                        continue;
- 
-                 if (sd_id128_equal(type_id, SD_ID128_MAKE(06,57,fd,6d,a4,ab,43,c4,84,e5,09,33,c8,4b,4f,4f)))
-                         add_swap(node, fstype);
-@@ -326,10 +310,8 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
-                         if (!home || nr < home_nr) {
-                                 free(home);
-                                 home = strdup(node);
--                                if (!home) {
--                                        r = log_oom();
--                                        goto finish;
--                                }
-+                                if (!home)
-+                                        return log_oom();
- 
-                                 home_nr = nr;
- 
-@@ -338,22 +320,11 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
-                                 fstype = NULL;
-                         }
-                 }
--
--        skip:
--                udev_device_unref(q);
-         }
- 
-         if (home && home_fstype)
-                 add_home(home, home_fstype);
- 
--finish:
--        if (d)
--                udev_device_unref(d);
--
--        if (e)
--                udev_enumerate_unref(e);
--
--
-         return r;
- }
- 
-@@ -432,44 +403,31 @@ static int get_block_device(const char *path, dev_t *dev) {
- }
- 
- static int devno_to_devnode(struct udev *udev, dev_t devno, char **ret) {
--        struct udev_device *d = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *d;
-         const char *t;
-         char *n;
--        int r;
- 
-         d = udev_device_new_from_devnum(udev, 'b', devno);
--        if (!d) {
--                r = log_oom();
--                goto finish;
--        }
-+        if (!d)
-+                return log_oom();
- 
-         t = udev_device_get_devnode(d);
--        if (!t) {
--                r = -ENODEV;
--                goto finish;
--        }
-+        if (!t)
-+                return -ENODEV;
- 
-         n = strdup(t);
--        if (!n) {
--                r = -ENOMEM;
--                goto finish;
--        }
-+        if (!n)
-+                return -ENOMEM;
- 
-         *ret = n;
--        r = 0;
--
--finish:
--        if (d)
--                udev_device_unref(d);
--
--        return r;
-+        return 0;
- }
- 
- int main(int argc, char *argv[]) {
-         _cleanup_free_ char *node = NULL;
--        struct udev *udev = NULL;
-+        _cleanup_udev_unref_ struct udev *udev = NULL;
-         dev_t devno;
--        int r;
-+        int r = 0;
- 
-         if (argc > 1 && argc != 4) {
-                 log_error("This program takes three or no arguments.");
-@@ -488,13 +446,11 @@ int main(int argc, char *argv[]) {
- 
-         if (in_initrd()) {
-                 log_debug("In initrd, exiting.");
--                r = 0;
-                 goto finish;
-         }
- 
-         if (detect_container(NULL) > 0) {
-                 log_debug("In a container, exiting.");
--                r = 0;
-                 goto finish;
-         }
- 
-@@ -533,8 +489,5 @@ int main(int argc, char *argv[]) {
-         r = enumerate_partitions(udev, devno);
- 
- finish:
--        if (udev)
--                udev_unref(udev);
--
-         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
- }
-diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
-index 5bc6535..1bc912c 100644
---- a/src/journal/journal-internal.h
-+++ b/src/journal/journal-internal.h
-@@ -135,11 +135,8 @@ struct sd_journal {
- char *journal_make_match_string(sd_journal *j);
- void journal_print_header(sd_journal *j);
- 
--static inline void journal_closep(sd_journal **j) {
--        sd_journal_close(*j);
--}
--
--#define _cleanup_journal_close_ _cleanup_(journal_closep)
-+define_trivial_cleanup_func(sd_journal*, sd_journal_close)
-+#define _cleanup_journal_close_ _cleanup_(sd_journal_closep)
- 
- #define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval)                     \
-         for (sd_journal_restart_data(j); ((retval) = sd_journal_enumerate_data((j), &(data), &(l))) > 0; )
-diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c
-index 14de7d8..9fc3054 100644
---- a/src/login/sysfs-show.c
-+++ b/src/login/sysfs-show.c
-@@ -26,6 +26,7 @@
- #include "util.h"
- #include "sysfs-show.h"
- #include "path-util.h"
-+#include "udev-util.h"
- 
- static int show_sysfs_one(
-                 struct udev *udev,
-@@ -143,9 +144,9 @@ static int show_sysfs_one(
- }
- 
- int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
--        struct udev *udev;
-+        _cleanup_udev_unref_ struct udev *udev;
-+        _cleanup_udev_enumerate_unref_ struct udev_enumerate *e = NULL;
-         struct udev_list_entry *first = NULL;
--        struct udev_enumerate *e;
-         int r;
- 
-         if (n_columns <= 0)
-@@ -162,10 +163,8 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
-                 return -ENOMEM;
- 
-         e = udev_enumerate_new(udev);
--        if (!e) {
--                r = -ENOMEM;
--                goto finish;
--        }
-+        if (!e)
-+                return ENOMEM;
- 
-         if (!streq(seat, "seat0"))
-                 r = udev_enumerate_add_match_tag(e, seat);
-@@ -173,11 +172,11 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
-                 r = udev_enumerate_add_match_tag(e, "seat");
- 
-         if (r < 0)
--                goto finish;
-+                return r;
- 
-         r = udev_enumerate_scan_devices(e);
-         if (r < 0)
--                goto finish;
-+                return r;
- 
-         first = udev_enumerate_get_list_entry(e);
-         if (first)
-@@ -185,12 +184,5 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
-         else
-                 printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_RIGHT), "(none)");
- 
--finish:
--        if (e)
--                udev_enumerate_unref(e);
--
--        if (udev)
--                udev_unref(udev);
--
-         return r;
- }
-diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c
-index a234a89..aea1fbe 100644
---- a/src/readahead/readahead-common.c
-+++ b/src/readahead/readahead-common.c
-@@ -27,13 +27,14 @@
- #include <fcntl.h>
- #include <sys/mman.h>
- #include <unistd.h>
--#include <libudev.h>
- 
- #include "log.h"
- #include "readahead-common.h"
- #include "util.h"
- #include "missing.h"
- #include "fileio.h"
-+#include "libudev.h"
-+#include "udev-util.h"
- 
- int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) {
-         assert(fd >= 0);
-@@ -60,9 +61,9 @@ int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) {
- 
- int fs_on_ssd(const char *p) {
-         struct stat st;
--        struct udev *udev = NULL;
--        struct udev_device *udev_device = NULL, *look_at = NULL;
--        bool b = false;
-+        _cleanup_udev_unref_ struct udev *udev = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
-+        struct udev_device *look_at = NULL;
-         const char *devtype, *rotational, *model, *id;
-         int r;
- 
-@@ -128,7 +129,7 @@ int fs_on_ssd(const char *p) {
- 
-         udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
-         if (!udev_device)
--                goto finish;
-+                return false;
- 
-         devtype = udev_device_get_property_value(udev_device, "DEVTYPE");
-         if (devtype && streq(devtype, "partition"))
-@@ -137,46 +138,34 @@ int fs_on_ssd(const char *p) {
-                 look_at = udev_device;
- 
-         if (!look_at)
--                goto finish;
-+                return false;
- 
-         /* First, try high-level property */
-         id = udev_device_get_property_value(look_at, "ID_SSD");
--        if (id) {
--                b = streq(id, "1");
--                goto finish;
--        }
-+        if (id)
-+                return streq(id, "1");
- 
-         /* Second, try kernel attribute */
-         rotational = udev_device_get_sysattr_value(look_at, "queue/rotational");
--        if (rotational) {
--                b = streq(rotational, "0");
--                goto finish;
--        }
-+        if (rotational)
-+                return streq(rotational, "0");
- 
-         /* Finally, fallback to heuristics */
-         look_at = udev_device_get_parent(look_at);
-         if (!look_at)
--                goto finish;
-+                return false;
- 
-         model = udev_device_get_sysattr_value(look_at, "model");
-         if (model)
--                b = !!strstr(model, "SSD");
--
--finish:
--        if (udev_device)
--                udev_device_unref(udev_device);
--
--        if (udev)
--                udev_unref(udev);
-+                return !!strstr(model, "SSD");
- 
--        return b;
-+        return false;
- }
- 
- int fs_on_read_only(const char *p) {
-         struct stat st;
--        struct udev *udev = NULL;
--        struct udev_device *udev_device = NULL;
--        bool b = false;
-+        _cleanup_udev_unref_ struct udev *udev = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
-         const char *read_only;
- 
-         assert(p);
-@@ -187,24 +176,19 @@ int fs_on_read_only(const char *p) {
-         if (major(st.st_dev) == 0)
-                 return false;
- 
--        if (!(udev = udev_new()))
-+        udev = udev_new();
-+        if (!udev)
-                 return -ENOMEM;
- 
--        if (!(udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev)))
--                goto finish;
--
--        if ((read_only = udev_device_get_sysattr_value(udev_device, "ro")))
--                if ((b = streq(read_only, "1")))
--                        goto finish;
--
--finish:
--        if (udev_device)
--                udev_device_unref(udev_device);
-+        udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
-+        if (!udev_device)
-+                return false;
- 
--        if (udev)
--                udev_unref(udev);
-+        read_only = udev_device_get_sysattr_value(udev_device, "ro");
-+        if (read_only)
-+                return streq(read_only, "1");
- 
--        return b;
-+        return false;
- }
- 
- bool enough_ram(void) {
-diff --git a/src/shared/fdset.h b/src/shared/fdset.h
-index 1a26005..6277e46 100644
---- a/src/shared/fdset.h
-+++ b/src/shared/fdset.h
-@@ -49,8 +49,5 @@ int fdset_iterate(FDSet *s, Iterator *i);
- #define FDSET_FOREACH(fd, fds, i) \
-         for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i)))
- 
--static inline void fdset_freep(FDSet **fds) {
--        if (*fds)
--                fdset_free(*fds);
--}
-+define_trivial_cleanup_func(FDSet*, fdset_free)
- #define _cleanup_fdset_free_ _cleanup_(fdset_freep)
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 9722ed4..b9c85b7 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -44,10 +44,8 @@ typedef struct {
-         Hashmap *have_installed;
- } InstallContext;
- 
--#define _cleanup_lookup_paths_free_ \
--        __attribute__((cleanup(lookup_paths_free)))
--#define _cleanup_install_context_done_ \
--        __attribute__((cleanup(install_context_done)))
-+#define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free)
-+#define _cleanup_install_context_done_ _cleanup_(install_context_done)
- 
- static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope) {
-         assert(paths);
-diff --git a/src/shared/set.h b/src/shared/set.h
-index e5d46e9..a291470 100644
---- a/src/shared/set.h
-+++ b/src/shared/set.h
-@@ -28,19 +28,13 @@
-  * for each set use. */
- 
- #include "hashmap.h"
-+#include "util.h"
- 
- typedef struct Set Set;
- 
- Set *set_new(hash_func_t hash_func, compare_func_t compare_func);
- void set_free(Set* s);
--static inline void set_freep(Set **s) {
--        set_free(*s);
--}
--
- void set_free_free(Set *s);
--static inline void set_free_freep(Set **s) {
--        set_free_free(*s);
--}
- 
- Set* set_copy(Set *s);
- int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func);
-@@ -79,5 +73,7 @@ char **set_get_strv(Set *s);
- #define SET_FOREACH_BACKWARDS(e, s, i) \
-         for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i)))
- 
-+define_trivial_cleanup_func(Set*, set_free)
-+define_trivial_cleanup_func(Set*, set_free_free)
- #define _cleanup_set_free_ _cleanup_(set_freep)
- #define _cleanup_set_free_free_ _cleanup_(set_free_freep)
-diff --git a/src/shared/strv.h b/src/shared/strv.h
-index d1f2a0e..4d117f8 100644
---- a/src/shared/strv.h
-+++ b/src/shared/strv.h
-@@ -24,16 +24,13 @@
- #include <stdarg.h>
- #include <stdbool.h>
- 
--#include "macro.h"
-+#include "util.h"
- 
- char *strv_find(char **l, const char *name) _pure_;
- char *strv_find_prefix(char **l, const char *name) _pure_;
- 
- void strv_free(char **l);
--static inline void strv_freep(char ***l) {
--        strv_free(*l);
--}
--
-+define_trivial_cleanup_func(char**, strv_free)
- #define _cleanup_strv_free_ _cleanup_(strv_freep)
- 
- char **strv_copy(char * const *l);
-diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h
-new file mode 100644
-index 0000000..bff8f5f
---- /dev/null
-+++ b/src/shared/udev-util.h
-@@ -0,0 +1,37 @@
-+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-+
-+#pragma once
-+
-+/***
-+  This file is part of systemd.
-+
-+  Copyright 2013 Zbigniew Jędrzejewski-Szmek
-+
-+  systemd is free software; you can redistribute it and/or modify it
-+  under the terms of the GNU Lesser General Public License as published by
-+  the Free Software Foundation; either version 2.1 of the License, or
-+  (at your option) any later version.
-+
-+  systemd is distributed in the hope that it will be useful, but
-+  WITHOUT ANY WARRANTY; without even the implied warranty of
-+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  Lesser General Public License for more details.
-+
-+  You should have received a copy of the GNU Lesser General Public License
-+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-+***/
-+
-+#include "udev.h"
-+#include "util.h"
-+
-+define_trivial_cleanup_func(struct udev*, udev_unref)
-+define_trivial_cleanup_func(struct udev_device*, udev_device_unref)
-+define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref)
-+define_trivial_cleanup_func(struct udev_event*, udev_event_unref)
-+define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref)
-+
-+#define _cleanup_udev_unref_ _cleanup_(udev_unrefp)
-+#define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp)
-+#define _cleanup_udev_enumerate_unref_ _cleanup_(udev_enumerate_unrefp)
-+#define _cleanup_udev_event_unref_ _cleanup_(udev_event_unrefp)
-+#define _cleanup_udev_rules_unref_ _cleanup_(udev_rules_unrefp)
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 5a1e1bc..e577ef0 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -556,42 +556,33 @@ static inline void freep(void *p) {
-         free(*(void**) p);
- }
- 
--static inline void fclosep(FILE **f) {
--        if (*f)
--                fclose(*f);
--}
--
--static inline void pclosep(FILE **f) {
--        if (*f)
--                pclose(*f);
--}
-+#define define_trivial_cleanup_func(type, func) \
-+        static inline void func##p(type *p) {   \
-+        if (*p)                                 \
-+                func(*p);                       \
-+        }                                       \
- 
- static inline void closep(int *fd) {
-         if (*fd >= 0)
-                 close_nointr_nofail(*fd);
- }
- 
--static inline void closedirp(DIR **d) {
--        if (*d)
--                closedir(*d);
--}
--
- static inline void umaskp(mode_t *u) {
-         umask(*u);
- }
- 
--static inline void endmntentp(FILE **f) {
--        if (*f)
--                endmntent(*f);
--}
-+define_trivial_cleanup_func(FILE*, fclose)
-+define_trivial_cleanup_func(FILE*, pclose)
-+define_trivial_cleanup_func(DIR*, closedir)
-+define_trivial_cleanup_func(FILE*, endmntent)
- 
- #define _cleanup_free_ _cleanup_(freep)
--#define _cleanup_fclose_ _cleanup_(fclosep)
--#define _cleanup_pclose_ _cleanup_(pclosep)
- #define _cleanup_close_ _cleanup_(closep)
--#define _cleanup_closedir_ _cleanup_(closedirp)
- #define _cleanup_umask_ _cleanup_(umaskp)
- #define _cleanup_globfree_ _cleanup_(globfree)
-+#define _cleanup_fclose_ _cleanup_(fclosep)
-+#define _cleanup_pclose_ _cleanup_(pclosep)
-+#define _cleanup_closedir_ _cleanup_(closedirp)
- #define _cleanup_endmntent_ _cleanup_(endmntentp)
- 
- _malloc_  _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) {
-diff --git a/src/test/test-libudev.c b/src/test/test-libudev.c
-index 716767b..ab7d5a9 100644
---- a/src/test/test-libudev.c
-+++ b/src/test/test-libudev.c
-@@ -29,6 +29,7 @@
- #include <sys/epoll.h>
- 
- #include "libudev.h"
-+#include "udev-util.h"
- #include "util.h"
- 
- #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
-@@ -117,7 +118,7 @@ static void print_device(struct udev_device *device)
- 
- static int test_device(struct udev *udev, const char *syspath)
- {
--        struct udev_device *device;
-+        _cleanup_udev_device_unref_ struct udev_device *device;
- 
-         printf("looking at device: %s\n", syspath);
-         device = udev_device_new_from_syspath(udev, syspath);
-@@ -126,13 +127,13 @@ static int test_device(struct udev *udev, const char *syspath)
-                 return -1;
-         }
-         print_device(device);
--        udev_device_unref(device);
-+
-         return 0;
- }
- 
- static int test_device_parents(struct udev *udev, const char *syspath)
- {
--        struct udev_device *device;
-+        _cleanup_udev_device_unref_ struct udev_device *device;
-         struct udev_device *device_parent;
- 
-         printf("looking at device: %s\n", syspath);
-@@ -153,7 +154,6 @@ static int test_device_parents(struct udev *udev, const char *syspath)
-                 print_device(device_parent);
-                 device_parent = udev_device_get_parent(device_parent);
-         } while (device_parent != NULL);
--        udev_device_unref(device);
- 
-         return 0;
- }
-diff --git a/src/test/test-udev.c b/src/test/test-udev.c
-index 52b61b4..17825f1 100644
---- a/src/test/test-udev.c
-+++ b/src/test/test-udev.c
-@@ -34,6 +34,7 @@
- 
- #include "missing.h"
- #include "udev.h"
-+#include "udev-util.h"
- 
- void udev_main_log(struct udev *udev, int priority,
-                    const char *file, int line, const char *fn,
-@@ -82,10 +83,10 @@ out:
- 
- int main(int argc, char *argv[])
- {
--        struct udev *udev;
--        struct udev_event *event = NULL;
--        struct udev_device *dev = NULL;
--        struct udev_rules *rules = NULL;
-+        _cleanup_udev_unref_ struct udev *udev = NULL;
-+        _cleanup_udev_event_unref_ struct udev_event *event = NULL;
-+        _cleanup_udev_device_unref_ struct udev_device *dev = NULL;
-+        _cleanup_udev_rules_unref_ struct udev_rules *rules = NULL;
-         char syspath[UTIL_PATH_SIZE];
-         const char *devpath;
-         const char *action;
-@@ -98,7 +99,8 @@ int main(int argc, char *argv[])
- 
-         udev = udev_new();
-         if (udev == NULL)
--                exit(EXIT_FAILURE);
-+                return EXIT_FAILURE;
-+
-         log_debug("version %s\n", VERSION);
-         label_init("/dev");
- 
-@@ -160,12 +162,7 @@ int main(int argc, char *argv[])
- out:
-         if (event != NULL && event->fd_signal >= 0)
-                 close(event->fd_signal);
--        udev_event_unref(event);
--        udev_device_unref(dev);
--        udev_rules_unref(rules);
-         label_finish();
--        udev_unref(udev);
--        if (err != 0)
--                return EXIT_FAILURE;
--        return EXIT_SUCCESS;
-+
-+        return err ? EXIT_FAILURE : EXIT_SUCCESS;
- }
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 67b13bc..309fa07 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -996,10 +996,7 @@ static void item_free(Item *i) {
-         free(i);
- }
- 
--static inline void item_freep(Item **i) {
--        if (*i)
--                item_free(*i);
--}
-+define_trivial_cleanup_func(Item*, item_free)
- #define _cleanup_item_free_ _cleanup_(item_freep)
- 
- static bool item_equal(Item *a, Item *b) {
diff --git a/SOURCES/0244-selinux-always-use-_raw-API-from-libselinux.patch b/SOURCES/0244-selinux-always-use-_raw-API-from-libselinux.patch
new file mode 100644
index 0000000..2ac6330
--- /dev/null
+++ b/SOURCES/0244-selinux-always-use-_raw-API-from-libselinux.patch
@@ -0,0 +1,89 @@
+From 2d30914ae86e9f40c02d80e0ef5c01e54efbbbc9 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Tue, 1 Sep 2015 16:02:58 +0200
+Subject: [PATCH] selinux: always use *_raw API from libselinux
+
+When mcstransd* is running non-raw functions will return translated SELinux
+context. Problem is that libselinux will cache this information and in the
+future it will return same context even though mcstransd maybe not running at
+that time. If you then check with such context against SELinux policy then
+selinux_check_access may fail depending on whether mcstransd is running or not.
+
+To workaround this problem/bug in libselinux, we should always get raw context
+instead. Most users will not notice because they don't use MCS/MLS policy
+anyway. Others will most likely not notice as well because result of access
+check is logged only in debug mode.
+
+* Service which translates labels to human readable form
+
+Resolves: #1256888
+---
+ src/core/selinux-access.c |  4 ++--
+ src/shared/selinux-util.c | 10 +++++-----
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
+index f11247c..297372d 100644
+--- a/src/core/selinux-access.c
++++ b/src/core/selinux-access.c
+@@ -219,13 +219,13 @@ int mac_selinux_generic_access_check(
+         if (path && !system) {
+                 /* Get the file context of the unit file */
+ 
+-                r = getfilecon(path, &fcon);
++                r = getfilecon_raw(path, &fcon);
+                 if (r < 0) {
+                         r = sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Failed to get file context on %s.", path);
+                         goto finish;
+                 }
+         } else {
+-                r = getcon(&fcon);
++                r = getcon_raw(&fcon);
+                 if (r < 0) {
+                         r = sd_bus_error_setf(error, SD_BUS_ERROR_ACCESS_DENIED, "Failed to get current context.");
+                         goto finish;
+diff --git a/src/shared/selinux-util.c b/src/shared/selinux-util.c
+index a46ddf8..4c2e1b0 100644
+--- a/src/shared/selinux-util.c
++++ b/src/shared/selinux-util.c
+@@ -200,11 +200,11 @@ int mac_selinux_get_create_label_from_exe(const char *exe, char **label) {
+         if (!mac_selinux_use())
+                 return -EOPNOTSUPP;
+ 
+-        r = getcon(&mycon);
++        r = getcon_raw(&mycon);
+         if (r < 0)
+                 return -errno;
+ 
+-        r = getfilecon(exe, &fcon);
++        r = getfilecon_raw(exe, &fcon);
+         if (r < 0)
+                 return -errno;
+ 
+@@ -226,7 +226,7 @@ int mac_selinux_get_our_label(char **label) {
+         if (!mac_selinux_use())
+                 return -EOPNOTSUPP;
+ 
+-        r = getcon(label);
++        r = getcon_raw(label);
+         if (r < 0)
+                 return -errno;
+ #endif
+@@ -250,7 +250,7 @@ int mac_selinux_get_child_mls_label(int socket_fd, const char *exe, const char *
+         if (!mac_selinux_use())
+                 return -EOPNOTSUPP;
+ 
+-        r = getcon(&mycon);
++        r = getcon_raw(&mycon);
+         if (r < 0)
+                 return -errno;
+ 
+@@ -261,7 +261,7 @@ int mac_selinux_get_child_mls_label(int socket_fd, const char *exe, const char *
+         if (!exec_label) {
+                 /* If there is no context set for next exec let's use context
+                    of target executable */
+-                r = getfilecon(exe, &fcon);
++                r = getfilecon_raw(exe, &fcon);
+                 if (r < 0)
+                         return -errno;
+         }
diff --git a/SOURCES/0245-fsck-modernization.patch b/SOURCES/0245-fsck-modernization.patch
deleted file mode 100644
index bcb1278..0000000
--- a/SOURCES/0245-fsck-modernization.patch
+++ /dev/null
@@ -1,140 +0,0 @@
-From 64de3526cce9ef980b37fcb5c412a2734132ad47 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 11 Nov 2013 23:32:31 -0500
-Subject: [PATCH] fsck: modernization
-
-(cherry picked from commit e375825da0cbdbf3be755c277f9c0dec35b41a09)
-
-Related: #1098310
----
- src/fsck/fsck.c | 43 ++++++++++++++++++-------------------------
- 1 file changed, 18 insertions(+), 25 deletions(-)
-
-diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
-index 96a79dd..9b4e555 100644
---- a/src/fsck/fsck.c
-+++ b/src/fsck/fsck.c
-@@ -176,7 +176,7 @@ static double percent(int pass, unsigned long cur, unsigned long max) {
- }
- 
- static int process_progress(int fd) {
--        FILE *f, *console;
-+        _cleanup_fclose_ FILE *console = NULL, *f = NULL;
-         usec_t last = 0;
-         bool locked = false;
-         int clear = 0;
-@@ -188,15 +188,13 @@ static int process_progress(int fd) {
-         }
- 
-         console = fopen("/dev/console", "w");
--        if (!console) {
--                fclose(f);
-+        if (!console)
-                 return -ENOMEM;
--        }
- 
-         while (!feof(f)) {
-                 int pass, m;
-                 unsigned long cur, max;
--                char *device;
-+                _cleanup_free_ char *device = NULL;
-                 double p;
-                 usec_t t;
- 
-@@ -205,20 +203,16 @@ static int process_progress(int fd) {
- 
-                 /* Only show one progress counter at max */
-                 if (!locked) {
--                        if (flock(fileno(console), LOCK_EX|LOCK_NB) < 0) {
--                                free(device);
-+                        if (flock(fileno(console), LOCK_EX|LOCK_NB) < 0)
-                                 continue;
--                        }
- 
-                         locked = true;
-                 }
- 
-                 /* Only update once every 50ms */
-                 t = now(CLOCK_MONOTONIC);
--                if (last + 50 * USEC_PER_MSEC > t)  {
--                        free(device);
-+                if (last + 50 * USEC_PER_MSEC > t)
-                         continue;
--                }
- 
-                 last = t;
- 
-@@ -226,8 +220,6 @@ static int process_progress(int fd) {
-                 fprintf(console, "\r%s: fsck %3.1f%% complete...\r%n", device, p, &m);
-                 fflush(console);
- 
--                free(device);
--
-                 if (m > clear)
-                         clear = m;
-         }
-@@ -242,8 +234,6 @@ static int process_progress(int fd) {
-                 fflush(console);
-         }
- 
--        fclose(f);
--        fclose(console);
-         return 0;
- }
- 
-@@ -287,34 +277,37 @@ int main(int argc, char *argv[]) {
- 
-                 if (stat("/", &st) < 0) {
-                         log_error("Failed to stat() the root directory: %m");
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
-                 /* Virtual root devices don't need an fsck */
-                 if (major(st.st_dev) == 0)
--                        return 0;
-+                        return EXIT_SUCCESS;
- 
-                 /* check if we are already writable */
-                 times[0] = st.st_atim;
-                 times[1] = st.st_mtim;
-                 if (utimensat(AT_FDCWD, "/", times, 0) == 0) {
-                         log_info("Root directory is writable, skipping check.");
--                        return 0;
-+                        return EXIT_SUCCESS;
-                 }
- 
--                if (!(udev = udev_new())) {
-+                udev = udev_new();
-+                if (!udev) {
-                         log_oom();
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
--                if (!(udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev))) {
-+                udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
-+                if (!udev_device) {
-                         log_error("Failed to detect root device.");
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
--                if (!(device = udev_device_get_devnode(udev_device))) {
-+                device = udev_device_get_devnode(udev_device);
-+                if (!device) {
-                         log_error("Failed to detect device node of root directory.");
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
-                 root_directory = true;
-@@ -323,7 +316,7 @@ int main(int argc, char *argv[]) {
-         if (arg_show_progress)
-                 if (pipe(progress_pipe) < 0) {
-                         log_error("pipe(): %m");
--                        goto finish;
-+                        return EXIT_FAILURE;
-                 }
- 
-         cmdline[i++] = "/sbin/fsck";
diff --git a/SOURCES/0245-udev-net_id-support-predictable-ifnames-on-virtio-bu.patch b/SOURCES/0245-udev-net_id-support-predictable-ifnames-on-virtio-bu.patch
new file mode 100644
index 0000000..82e7fe5
--- /dev/null
+++ b/SOURCES/0245-udev-net_id-support-predictable-ifnames-on-virtio-bu.patch
@@ -0,0 +1,37 @@
+From bd1bb4504d1afe264fd3f739614b97aac8d62bf0 Mon Sep 17 00:00:00 2001
+From: Tom Gundersen <teg@jklm.no>
+Date: Tue, 25 Aug 2015 14:12:19 +0200
+Subject: [PATCH] udev: net_id - support predictable ifnames on virtio buses
+
+Virtio buses are undeterministically enumerated, so we cannot use them as a basis
+for deterministic naming (see bf81e792f3c0). However, we are guaranteed that there
+is only ever one virtio bus for every parent device, so we can simply skip over
+the virtio buses when naming the devices.
+
+Cherry-picked from: 54683f0f9b97a8f88aaf4fbb45b4d729057b101c
+Resolves: #1259015
+---
+ src/udev/udev-builtin-net_id.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index dd2886c..ddd83d4 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -283,8 +283,16 @@ static int names_pci(struct udev_device *dev, struct netnames *names) {
+         struct udev_device *parent;
+ 
+         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);
++
+         if (!parent)
+                 return -ENOENT;
++
+         /* check if our direct parent is a PCI device with no other bus in-between */
+         if (streq_ptr("pci", udev_device_get_subsystem(parent))) {
+                 names->type = NET_PCI;
diff --git a/SOURCES/0246-Revert-sysctl.d-default-to-fq_codel-fight-bufferbloa.patch b/SOURCES/0246-Revert-sysctl.d-default-to-fq_codel-fight-bufferbloa.patch
new file mode 100644
index 0000000..50cf72c
--- /dev/null
+++ b/SOURCES/0246-Revert-sysctl.d-default-to-fq_codel-fight-bufferbloa.patch
@@ -0,0 +1,51 @@
+From 7b7707f0892a1d64c310aa86009b42da84d03bf8 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 15 Sep 2015 12:50:08 +0200
+Subject: [PATCH] Revert "sysctl.d: default to fq_codel, fight bufferbloat"
+
+This reverts commit e6c253e363dee77ef7e5c5f44c4ca55cded3fd47.
+
+rhel-only
+Resolves: #1263158
+---
+ NEWS                     | 12 ------------
+ sysctl.d/50-default.conf |  3 ---
+ 2 files changed, 15 deletions(-)
+
+diff --git a/NEWS b/NEWS
+index d788749..ee976d4 100644
+--- a/NEWS
++++ b/NEWS
+@@ -619,18 +619,6 @@ CHANGES WITH 217:
+           systemd-ask-password gained a new --echo option to turn that
+           on.
+ 
+-        * The default sysctl.d/ snippets will now set:
+-
+-                net.core.default_qdisc = fq_codel
+-
+-          This selects Fair Queuing Controlled Delay as the default
+-          queuing discipline for network interfaces. fq_codel helps
+-          fight the network bufferbloat problem. It is believed to be
+-          a good default with no tuning required for most workloads.
+-          Downstream distributions may override this choice. On 10Gbit
+-          servers that do not do forwarding, "fq" may perform better.
+-          Systems without a good clocksource should use "pfifo_fast".
+-
+         * If kdbus is enabled during build a new option BusPolicy= is
+           available for service units, that allows locking all service
+           processes into a stricter bus policy, in order to limit
+diff --git a/sysctl.d/50-default.conf b/sysctl.d/50-default.conf
+index def151b..44c4823 100644
+--- a/sysctl.d/50-default.conf
++++ b/sysctl.d/50-default.conf
+@@ -32,9 +32,6 @@ net.ipv4.conf.all.accept_source_route = 0
+ net.ipv4.conf.default.promote_secondaries = 1
+ net.ipv4.conf.all.promote_secondaries = 1
+ 
+-# Fair Queue CoDel packet scheduler to fight bufferbloat
+-net.core.default_qdisc = fq_codel
+-
+ # Enable hard and soft link protection
+ fs.protected_hardlinks = 1
+ fs.protected_symlinks = 1
diff --git a/SOURCES/0246-fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch b/SOURCES/0246-fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch
deleted file mode 100644
index 75266a0..0000000
--- a/SOURCES/0246-fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch
+++ /dev/null
@@ -1,212 +0,0 @@
-From c9e49e522d609f39ab77cbab18b8f1389692e1b8 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 12 Nov 2013 00:53:59 -0500
-Subject: [PATCH] fsck,fstab-generator: be lenient about missing fsck.<type>
-
-If fstab contains 1 for passno, treat this as an error, but only warn
-briefly. If fstab doesn't contain this information, don't complain at
-all.
-
-Patch is complicated a bit by the fact that we might have the fstype specified
-in fstab or on /proc/cmdline, in which case we can check if we have the appropriate
-fsck tool, or not specified, or specified as auto, in which case we have to look
-and check the type of the filesystem ourselves. It cannot be done before the
-device appears, so it is too early in the generator phase, and it must be done
-directly in fsck service.
-
-(cherry picked from commit 94192cdaf652c9717f15274504ed315126c07a93)
-
-Resolves: #1098310
----
- src/fsck/fsck.c                       | 40 ++++++++++++++----
- src/fstab-generator/fstab-generator.c | 77 +++++++++++++++++++++++------------
- 2 files changed, 82 insertions(+), 35 deletions(-)
-
-diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
-index 9b4e555..1189fe7 100644
---- a/src/fsck/fsck.c
-+++ b/src/fsck/fsck.c
-@@ -244,10 +244,11 @@ int main(int argc, char *argv[]) {
-         siginfo_t status;
-         _cleanup_udev_unref_ struct udev *udev = NULL;
-         _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
--        const char *device;
-+        const char *device, *type;
-         bool root_directory;
-         int progress_pipe[2] = { -1, -1 };
-         char dash_c[2+10+1];
-+        struct stat st;
- 
-         if (argc > 2) {
-                 log_error("This program expects one or no arguments.");
-@@ -266,11 +267,27 @@ int main(int argc, char *argv[]) {
-         if (!arg_force && arg_skip)
-                 return 0;
- 
-+        udev = udev_new();
-+        if (!udev) {
-+                log_oom();
-+                return EXIT_FAILURE;
-+        }
-+
-         if (argc > 1) {
-                 device = argv[1];
-                 root_directory = false;
-+
-+                if (stat(device, &st) < 0) {
-+                        log_error("Failed to stat '%s': %m", device);
-+                        return EXIT_FAILURE;
-+                }
-+
-+                udev_device = udev_device_new_from_devnum(udev, 'b', st.st_rdev);
-+                if (!udev_device) {
-+                        log_error("Failed to detect device %s", device);
-+                        return EXIT_FAILURE;
-+                }
-         } else {
--                struct stat st;
-                 struct timespec times[2];
- 
-                 /* Find root device */
-@@ -292,12 +309,6 @@ int main(int argc, char *argv[]) {
-                         return EXIT_SUCCESS;
-                 }
- 
--                udev = udev_new();
--                if (!udev) {
--                        log_oom();
--                        return EXIT_FAILURE;
--                }
--
-                 udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
-                 if (!udev_device) {
-                         log_error("Failed to detect root device.");
-@@ -313,6 +324,19 @@ int main(int argc, char *argv[]) {
-                 root_directory = true;
-         }
- 
-+        type = udev_device_get_property_value(udev_device, "ID_FS_TYPE");
-+        if (type) {
-+                const char *checker = strappenda("/sbin/fsck.", type);
-+                r = access(checker, X_OK);
-+                if (r < 0) {
-+                        if (errno == ENOENT) {
-+                                log_info("%s doesn't exist, not checking file system.", checker);
-+                                return EXIT_SUCCESS;
-+                        } else
-+                                log_warning("%s cannot be used: %m", checker);
-+                }
-+        }
-+
-         if (arg_show_progress)
-                 if (pipe(progress_pipe) < 0) {
-                         log_error("pipe(): %m");
-diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c
-index 78d7609..fa23ac9 100644
---- a/src/fstab-generator/fstab-generator.c
-+++ b/src/fstab-generator/fstab-generator.c
-@@ -147,6 +147,52 @@ static bool mount_in_initrd(struct mntent *me) {
-                 streq(me->mnt_dir, "/usr");
- }
- 
-+static int add_fsck(FILE *f, const char *what, const char *where, const char *type, int passno) {
-+        assert(f);
-+
-+        if (passno == 0)
-+                return 0;
-+
-+        if (type && !streq(type, "auto")) {
-+                int r;
-+                const char *checker;
-+
-+                checker = strappenda("/sbin/fsck.", type);
-+                r = access(checker, X_OK);
-+                if (r < 0) {
-+                        log_warning("Checking was requested for %s, but %s cannot be used: %m", what, checker);
-+
-+                        /* treat missing check as essentially OK */
-+                        return errno == ENOENT ? 0 : -errno;
-+                }
-+        }
-+
-+        if (streq(where, "/")) {
-+                char *lnk;
-+
-+                lnk = strappenda(arg_dest, "/" SPECIAL_LOCAL_FS_TARGET ".wants/systemd-fsck-root.service");
-+                mkdir_parents_label(lnk, 0755);
-+                if (symlink("systemd-fsck-root.service", lnk) < 0) {
-+                        log_error("Failed to create symlink %s: %m", lnk);
-+                        return -errno;
-+                }
-+        } else {
-+                _cleanup_free_ char *fsck = NULL;
-+
-+                fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
-+                if (!fsck)
-+                        return log_oom();
-+
-+                fprintf(f,
-+                        "Requires=%s\n"
-+                        "After=%s\n",
-+                        fsck,
-+                        fsck);
-+        }
-+
-+        return 0;
-+}
-+
- static int add_mount(
-                 const char *what,
-                 const char *where,
-@@ -162,6 +208,7 @@ static int add_mount(
-                 *name = NULL, *unit = NULL, *lnk = NULL,
-                 *automount_name = NULL, *automount_unit = NULL;
-         _cleanup_fclose_ FILE *f = NULL;
-+        int r;
- 
-         assert(what);
-         assert(where);
-@@ -209,32 +256,9 @@ static int add_mount(
-                         "Before=%s\n",
-                         post);
- 
--        if (passno > 0) {
--                if (streq(where, "/")) {
--                        lnk = strjoin(arg_dest, "/", SPECIAL_LOCAL_FS_TARGET, ".wants/", "systemd-fsck-root.service", NULL);
--                        if (!lnk)
--                                return log_oom();
--
--                        mkdir_parents_label(lnk, 0755);
--                        if (symlink("systemd-fsck-root.service", lnk) < 0) {
--                                log_error("Failed to create symlink %s: %m", lnk);
--                                return -errno;
--                        }
--                } else {
--                        _cleanup_free_ char *fsck = NULL;
--
--                        fsck = unit_name_from_path_instance("systemd-fsck", what, ".service");
--                        if (!fsck)
--                                return log_oom();
--
--                        fprintf(f,
--                                "Requires=%s\n"
--                                "After=%s\n",
--                                fsck,
--                                fsck);
--                }
--        }
--
-+        r = add_fsck(f, what, where, type, passno);
-+        if (r < 0)
-+                return r;
- 
-         fprintf(f,
-                 "\n"
-@@ -260,7 +284,6 @@ static int add_mount(
- 
-         if (!noauto) {
-                 if (post) {
--                        free(lnk);
-                         lnk = strjoin(arg_dest, "/", post, nofail || automount ? ".wants/" : ".requires/", name, NULL);
-                         if (!lnk)
-                                 return log_oom();
diff --git a/SOURCES/0247-loginctl-print-nontrivial-properties-in-logictl-show.patch b/SOURCES/0247-loginctl-print-nontrivial-properties-in-logictl-show.patch
new file mode 100644
index 0000000..a09e4a8
--- /dev/null
+++ b/SOURCES/0247-loginctl-print-nontrivial-properties-in-logictl-show.patch
@@ -0,0 +1,216 @@
+From d3706690bf2953cb8e0362253dc68d77989de3be Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 11 Sep 2015 13:37:59 +0200
+Subject: [PATCH] loginctl: print nontrivial properties in logictl show-*
+
+Cherry-picked from: 2a998c74028a109d6bd8888951abfa8e25a15fb1
+Resolves: #1260465
+---
+ src/login/loginctl.c | 152 ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/shared/macro.h   |  13 +++++
+ 2 files changed, 162 insertions(+), 3 deletions(-)
+
+diff --git a/src/login/loginctl.c b/src/login/loginctl.c
+index b0eede9..6c8a59e 100644
+--- a/src/login/loginctl.c
++++ b/src/login/loginctl.c
+@@ -657,19 +657,165 @@ finish:
+         return r;
+ }
+ 
++static int print_property(const char *name, sd_bus_message *m, const char *contents) {
++        int r;
++
++        assert(name);
++        assert(m);
++        assert(contents);
++
++        if (arg_property && !strv_find(arg_property, name))
++                /* skip what we didn't read */
++                return sd_bus_message_skip(m, contents);
++
++        switch (contents[0]) {
++
++        case SD_BUS_TYPE_STRUCT_BEGIN:
++
++                if (contents[1] == SD_BUS_TYPE_STRING && STR_IN_SET(name, "Display", "Seat", "ActiveSession")) {
++                        const char *s;
++
++                        r = sd_bus_message_read(m, "(so)", &s, NULL);
++                        if (r < 0)
++                                return bus_log_parse_error(r);
++
++                        if (arg_all || !isempty(s))
++                                printf("%s=%s\n", name, s);
++
++                        return 0;
++
++                } else if (contents[1] == SD_BUS_TYPE_UINT32 && streq(name, "User")) {
++                        uint32_t uid;
++
++                        r = sd_bus_message_read(m, "(uo)", &uid, NULL);
++                        if (r < 0)
++                                return bus_log_parse_error(r);
++
++                        if (UID_IS_INVALID(uid)) {
++                                log_error("Invalid user ID: " UID_FMT, uid);
++                                return -EINVAL;
++                        }
++
++                        printf("%s=" UID_FMT "\n", name, uid);
++
++                        return 0;
++                }
++
++                break;
++
++        case SD_BUS_TYPE_ARRAY:
++
++                if (contents[1] == SD_BUS_TYPE_STRUCT_BEGIN && streq(name, "Sessions")) {
++                        const char *s;
++                        bool space = false;
++
++                        r = sd_bus_message_enter_container(m, SD_BUS_TYPE_ARRAY, "(so)");
++                        if (r < 0)
++                                return bus_log_parse_error(r);
++
++                        printf("%s=", name);
++
++                        while ((r = sd_bus_message_read(m, "(so)", &s, NULL)) > 0) {
++                                printf("%s%s", space ? " " : "", s);
++                                space = true;
++                        }
++
++                        printf("\n");
++
++                        if (r < 0)
++                                return bus_log_parse_error(r);
++
++                        r = sd_bus_message_exit_container(m);
++                        if (r < 0)
++                                return bus_log_parse_error(r);
++
++                        return 0;
++                }
++
++                break;
++        }
++
++        r = bus_print_property(name, m, arg_all);
++        if (r < 0)
++                return bus_log_parse_error(r);
++
++        if (r == 0) {
++                r = sd_bus_message_skip(m, contents);
++                if (r < 0)
++                        return bus_log_parse_error(r);
++
++                if (arg_all)
++                        printf("%s=[unprintable]\n", name);
++        }
++
++        return 0;
++}
++
+ static int show_properties(sd_bus *bus, const char *path, bool *new_line) {
++        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
++        _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
+         int r;
+ 
++        assert(bus);
++        assert(path);
++        assert(new_line);
++
++        r = sd_bus_call_method(
++                        bus,
++                        "org.freedesktop.login1",
++                        path,
++                        "org.freedesktop.DBus.Properties",
++                        "GetAll",
++                        &error,
++                        &reply,
++                        "s", "");
++        if (r < 0)
++                return log_error_errno(r, "Failed to get properties: %s", bus_error_message(&error, r));
++
++        r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_ARRAY, "{sv}");
++        if (r < 0)
++                return bus_log_parse_error(r);
++
+         if (*new_line)
+                 printf("\n");
+ 
+         *new_line = true;
+ 
+-        r = bus_print_all_properties(bus, "org.freedesktop.login1", path, arg_property, arg_all);
++        while ((r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_DICT_ENTRY, "sv")) > 0) {
++                const char *name, *contents;
++
++                r = sd_bus_message_read(reply, "s", &name);
++                if (r < 0)
++                        return bus_log_parse_error(r);
++
++                r = sd_bus_message_peek_type(reply, NULL, &contents);
++                if (r < 0)
++                        return bus_log_parse_error(r);
++
++                r = sd_bus_message_enter_container(reply, SD_BUS_TYPE_VARIANT, contents);
++                if (r < 0)
++                        return bus_log_parse_error(r);
++
++                r = print_property(name, reply, contents);
++                if (r < 0)
++                        return r;
++
++                r = sd_bus_message_exit_container(reply);
++                if (r < 0)
++                        return bus_log_parse_error(r);
++
++                r = sd_bus_message_exit_container(reply);
++                if (r < 0)
++                        return bus_log_parse_error(r);
++        }
+         if (r < 0)
+-                log_error_errno(r, "Could not get properties: %m");
++                return bus_log_parse_error(r);
+ 
+-        return r;
++        r = sd_bus_message_exit_container(reply);
++        if (r < 0)
++                return bus_log_parse_error(r);
++
++        return 0;
+ }
+ 
+ static int show_session(int argc, char *argv[], void *userdata) {
+diff --git a/src/shared/macro.h b/src/shared/macro.h
+index 7f89951..9d857dc 100644
+--- a/src/shared/macro.h
++++ b/src/shared/macro.h
+@@ -26,6 +26,7 @@
+ #include <sys/types.h>
+ #include <sys/uio.h>
+ #include <inttypes.h>
++#include <stdbool.h>
+ 
+ #define _printf_(a,b) __attribute__ ((format (printf, a, b)))
+ #define _alloc_(...) __attribute__ ((alloc_size(__VA_ARGS__)))
+@@ -451,6 +452,18 @@ do {                                                                    \
+ #define GID_INVALID ((gid_t) -1)
+ #define MODE_INVALID ((mode_t) -1)
+ 
++static inline bool UID_IS_INVALID(uid_t uid) {
++        /* We consider both the old 16bit -1 user and the newer 32bit
++         * -1 user invalid, since they are or used to be incompatible
++         * with syscalls such as setresuid() or chown(). */
++
++        return uid == (uid_t) ((uint32_t) -1) || uid == (uid_t) ((uint16_t) -1);
++}
++
++static inline bool GID_IS_INVALID(gid_t gid) {
++        return gid == (gid_t) ((uint32_t) -1) || gid == (gid_t) ((uint16_t) -1);
++}
++
+ #define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func)                 \
+         static inline void func##p(type *p) {                   \
+                 if (*p)                                         \
diff --git a/SOURCES/0247-rules-60-persistent-storage-add-nvme-pcie-ssd-scsi_i.patch b/SOURCES/0247-rules-60-persistent-storage-add-nvme-pcie-ssd-scsi_i.patch
deleted file mode 100644
index d883427..0000000
--- a/SOURCES/0247-rules-60-persistent-storage-add-nvme-pcie-ssd-scsi_i.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 5d050e50b2028d3b29f2ecd7a6e5fe0ab543c1df Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Mon, 28 Jul 2014 16:31:32 +0200
-Subject: [PATCH] rules/60-persistent-storage: add nvme pcie ssd scsi_id ENV
-
-Resolves: #1042990
----
- rules/60-persistent-storage.rules | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules
-index a4d009a..c47c130 100644
---- a/rules/60-persistent-storage.rules
-+++ b/rules/60-persistent-storage.rules
-@@ -42,6 +42,9 @@ KERNEL=="cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}!="?*", IMPORT{program}="s
- KERNEL=="sd*|sr*|cciss*", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}"
- KERNEL=="sd*|cciss*", ENV{DEVTYPE}=="partition", ENV{ID_SERIAL}=="?*", SYMLINK+="disk/by-id/$env{ID_BUS}-$env{ID_SERIAL}-part%n"
- 
-+# NVMe
-+KERNEL=="nvme*", ENV{ID_SERIAL}!="?*", IMPORT{program}="scsi_id --export --whitelisted -d $tempnode"
-+
- # firewire
- KERNEL=="sd*[!0-9]|sr*", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}"
- KERNEL=="sd*[0-9]", ATTRS{ieee1394_id}=="?*", SYMLINK+="disk/by-id/ieee1394-$attr{ieee1394_id}-part%n"
diff --git a/SOURCES/0248-cgls-fix-running-with-M-option.patch b/SOURCES/0248-cgls-fix-running-with-M-option.patch
deleted file mode 100644
index f0c728e..0000000
--- a/SOURCES/0248-cgls-fix-running-with-M-option.patch
+++ /dev/null
@@ -1,166 +0,0 @@
-From 2b7fc0e2a0a680fe61041e569eda50f06c3f8768 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Mon, 28 Jul 2014 18:18:58 +0200
-Subject: [PATCH] cgls: fix running with -M option
-
-systemd-machined doesn't store cgroup path in a state file anymore.
-Let's figure it out from the scope.
-
-Resolves: #1085455
----
- Makefile.am     |  8 +++++-
- src/cgls/cgls.c | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 91 insertions(+), 2 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index fa2fba6..a9fb792 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1830,8 +1830,14 @@ systemd_reply_password_LDADD = \
- systemd_cgls_SOURCES = \
- 	src/cgls/cgls.c
- 
-+systemd_cgls_CFLAGS = \
-+	$(AM_CFLAGS) \
-+	$(DBUS_CFLAGS)
-+
- systemd_cgls_LDADD = \
--	libsystemd-shared.la
-+	libsystemd-shared.la \
-+	libsystemd-dbus.la \
-+	libudev.la
- 
- # ------------------------------------------------------------------------------
- systemd_cgtop_SOURCES = \
-diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c
-index c689b5c..f678657 100644
---- a/src/cgls/cgls.c
-+++ b/src/cgls/cgls.c
-@@ -19,6 +19,7 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
- 
-+#include <dbus/dbus.h>
- #include <limits.h>
- #include <stdio.h>
- #include <unistd.h>
-@@ -35,6 +36,8 @@
- #include "build.h"
- #include "output-mode.h"
- #include "fileio.h"
-+#include "dbus-common.h"
-+#include "unit-name.h"
- 
- static bool arg_no_pager = false;
- static bool arg_kernel_threads = false;
-@@ -127,6 +130,10 @@ int main(int argc, char *argv[]) {
-         int r = 0, retval = EXIT_FAILURE;
-         int output_flags;
-         char _cleanup_free_ *root = NULL;
-+        DBusConnection *bus = NULL;
-+        DBusError error;
-+
-+        dbus_error_init(&error);
- 
-         log_parse_environment();
-         log_open();
-@@ -147,6 +154,14 @@ int main(int argc, char *argv[]) {
-                 }
-         }
- 
-+        bus = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error);
-+
-+        if (!bus) {
-+                printf("Failed to get D-Bus connection: %s", error.message);
-+                retval = EXIT_FAILURE;
-+                goto finish;
-+        }
-+
-         output_flags =
-                 arg_all * OUTPUT_SHOW_ALL |
-                 (arg_full > 0) * OUTPUT_FULL_WIDTH;
-@@ -189,8 +204,67 @@ int main(int argc, char *argv[]) {
-                 } else {
-                         if (arg_machine) {
-                                 char *m;
-+                                const char *cgroup;
-+                                const char *property = "ControlGroup";
-+                                const char *interface = "org.freedesktop.systemd1.Scope";
-+                                _cleanup_free_ char *scope = NULL;
-+                                _cleanup_free_ char *path = NULL;
-+                                _cleanup_dbus_message_unref_ DBusMessage *reply = NULL;
-+                                DBusMessageIter iter, sub;
-+
-                                 m = strappenda("/run/systemd/machines/", arg_machine);
--                                r = parse_env_file(m, NEWLINE, "CGROUP", &root, NULL);
-+                                r = parse_env_file(m, NEWLINE, "SCOPE", &scope, NULL);
-+
-+                                if (r < 0) {
-+                                        log_error("Failed to get machine path: %s", strerror(-r));
-+                                        goto finish;
-+                                }
-+
-+                                path = unit_dbus_path_from_name(scope);
-+                                if (!path) {
-+                                        r = log_oom();
-+                                        goto finish;
-+                                }
-+
-+                                r = bus_method_call_with_reply(
-+                                                bus,
-+                                                "org.freedesktop.systemd1",
-+                                                path,
-+                                                "org.freedesktop.DBus.Properties",
-+                                                "Get",
-+                                                &reply,
-+                                                &error,
-+                                                DBUS_TYPE_STRING, &interface,
-+                                                DBUS_TYPE_STRING, &property,
-+                                                DBUS_TYPE_INVALID);
-+                                if (r < 0) {
-+                                        log_error("Failed to query ControlGroup: %s", bus_error(&error, r));
-+                                        dbus_error_free(&error);
-+                                        goto finish;
-+                                }
-+
-+                                if (!dbus_message_iter_init(reply, &iter) ||
-+                                    dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) {
-+                                        log_error("Failed to parse reply.");
-+                                        r = -EINVAL;
-+                                        goto finish;
-+                                }
-+
-+                                dbus_message_iter_recurse(&iter, &sub);
-+                                if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING) {
-+                                        log_error("Failed to parse reply.");
-+                                        r = -EINVAL;
-+                                        goto finish;
-+                                }
-+
-+                                dbus_message_iter_get_basic(&sub, &cgroup);
-+
-+                                root = strdup(cgroup);
-+                                if (!root) {
-+                                        r = log_oom();
-+                                        goto finish;
-+                                }
-+
-                         } else
-                                 r = cg_get_root_path(&root);
-                         if (r < 0) {
-@@ -211,6 +285,15 @@ int main(int argc, char *argv[]) {
-                 retval = EXIT_SUCCESS;
- 
- finish:
-+
-+        if (bus) {
-+                dbus_connection_flush(bus);
-+                dbus_connection_close(bus);
-+                dbus_connection_unref(bus);
-+        }
-+
-+        dbus_error_free(&error);
-+        dbus_shutdown();
-         pager_close();
- 
-         return retval;
diff --git a/SOURCES/0248-login-fix-label-on-run-nologin.patch b/SOURCES/0248-login-fix-label-on-run-nologin.patch
new file mode 100644
index 0000000..696c201
--- /dev/null
+++ b/SOURCES/0248-login-fix-label-on-run-nologin.patch
@@ -0,0 +1,65 @@
+From ca5c3dbfd843b6acd92425a6f56c4b01d1a80dde Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Mon, 21 Sep 2015 14:55:39 +0200
+Subject: [PATCH] login: fix label on /run/nologin
+
+rhel-only for now, not yet posted upstream
+
+Resolves: #1264073
+---
+ Makefile.am               | 3 ++-
+ src/login/user-sessions.c | 7 ++++++-
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 58bcc2c..0fcb737 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -5829,7 +5829,8 @@ systemd_user_sessions_SOURCES = \
+ 	src/login/user-sessions.c
+ 
+ systemd_user_sessions_LDADD = \
+-	libsystemd-shared.la
++	libsystemd-shared.la \
++	libsystemd-label.la
+ 
+ rootlibexec_PROGRAMS += \
+ 	systemd-logind \
+diff --git a/src/login/user-sessions.c b/src/login/user-sessions.c
+index 6edb823..d1d429c 100644
+--- a/src/login/user-sessions.c
++++ b/src/login/user-sessions.c
+@@ -26,6 +26,7 @@
+ #include "log.h"
+ #include "util.h"
+ #include "fileio.h"
++#include "selinux-util.h"
+ 
+ int main(int argc, char*argv[]) {
+ 
+@@ -40,6 +41,8 @@ int main(int argc, char*argv[]) {
+ 
+         umask(0022);
+ 
++        mac_selinux_init(NULL);
++
+         if (streq(argv[1], "start")) {
+                 int r = 0;
+ 
+@@ -66,7 +69,7 @@ int main(int argc, char*argv[]) {
+         } else if (streq(argv[1], "stop")) {
+                 int r;
+ 
+-                r = write_string_file_atomic("/run/nologin", "System is going down.");
++                r = write_string_file_atomic_label("/run/nologin", "System is going down.");
+                 if (r < 0) {
+                         log_error_errno(r, "Failed to create /run/nologin: %m");
+                         return EXIT_FAILURE;
+@@ -77,5 +80,7 @@ int main(int argc, char*argv[]) {
+                 return EXIT_FAILURE;
+         }
+ 
++        mac_selinux_finish();
++
+         return EXIT_SUCCESS;
+ }
diff --git a/SOURCES/0249-udev-rules-prandom-character-device-node-permissions.patch b/SOURCES/0249-udev-rules-prandom-character-device-node-permissions.patch
new file mode 100644
index 0000000..7c015a2
--- /dev/null
+++ b/SOURCES/0249-udev-rules-prandom-character-device-node-permissions.patch
@@ -0,0 +1,22 @@
+From 3b2d089812cb540456f3b93aa5e3a95df6a66778 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 22 Sep 2015 12:28:28 +0200
+Subject: [PATCH] udev-rules: prandom character device node permissions
+
+rhel-only
+Resolves: #1264112
+---
+ rules/40-redhat.rules | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/rules/40-redhat.rules b/rules/40-redhat.rules
+index 305e752..9a48add 100644
+--- a/rules/40-redhat.rules
++++ b/rules/40-redhat.rules
+@@ -11,3 +11,6 @@ ACTION=="add", SUBSYSTEM=="module", KERNEL=="bridge", RUN+="/usr/lib/systemd/sys
+ 
+ # load SCSI generic (sg) driver
+ SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg"
++
++# Rule for prandom character device node permissions
++KERNEL=="prandom", MODE="0644"
diff --git a/SOURCES/0249-units-when-spawning-a-getty-configure-TERM-explicitl.patch b/SOURCES/0249-units-when-spawning-a-getty-configure-TERM-explicitl.patch
deleted file mode 100644
index a220c7b..0000000
--- a/SOURCES/0249-units-when-spawning-a-getty-configure-TERM-explicitl.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From fa600b8b075ad4c717bd5f60fd3c6b5545cc75c5 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 18 Dec 2013 17:48:31 +0100
-Subject: [PATCH] units: when spawning a getty configure TERM explicitly
-
-This way we can make use of our logic to automatically determine an
-appropriate TERM for a specific tty.
-
-Conflicts:
-	units/console-getty.service.m4.in
-	units/container-getty@.service.m4.in
-
-(cherry picked from commit ccf22d4a104e6ed2666d6c5b4031981a84787790)
-
-Related: #1075729
----
- units/console-getty.service.m4.in | 2 +-
- units/getty@.service.m4           | 2 +-
- units/serial-getty@.service.m4    | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/units/console-getty.service.m4.in b/units/console-getty.service.m4.in
-index 2fd9dd8..8ac51a4 100644
---- a/units/console-getty.service.m4.in
-+++ b/units/console-getty.service.m4.in
-@@ -15,7 +15,7 @@ After=rc-local.service
- Before=getty.target
- 
- [Service]
--ExecStart=-/sbin/agetty --noclear -s console 115200,38400,9600
-+ExecStart=-/sbin/agetty --noclear --keep-baud console 115200,38400,9600 $TERM
- Type=idle
- Restart=always
- RestartSec=0
-diff --git a/units/getty@.service.m4 b/units/getty@.service.m4
-index 253da85..aa853b8 100644
---- a/units/getty@.service.m4
-+++ b/units/getty@.service.m4
-@@ -27,7 +27,7 @@ ConditionPathExists=/dev/tty0
- 
- [Service]
- # the VT is cleared by TTYVTDisallocate
--ExecStart=-/sbin/agetty --noclear %I
-+ExecStart=-/sbin/agetty --noclear %I $TERM
- Type=idle
- Restart=always
- RestartSec=0
-diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4
-index aea078f..e94cdb4 100644
---- a/units/serial-getty@.service.m4
-+++ b/units/serial-getty@.service.m4
-@@ -22,7 +22,7 @@ Before=getty.target
- IgnoreOnIsolate=yes
- 
- [Service]
--ExecStart=-/sbin/agetty --keep-baud %I 115200,38400,9600
-+ExecStart=-/sbin/agetty --keep-baud %I 115200,38400,9600 $TERM
- Type=idle
- Restart=always
- RestartSec=0
diff --git a/SOURCES/0250-getty-Start-getty-on-3270-terminals-available-on-Lin.patch b/SOURCES/0250-getty-Start-getty-on-3270-terminals-available-on-Lin.patch
deleted file mode 100644
index 8bc3414..0000000
--- a/SOURCES/0250-getty-Start-getty-on-3270-terminals-available-on-Lin.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-From 39456b9f6e692a2385bf1288a53d02dd9abac8d5 Mon Sep 17 00:00:00 2001
-From: Hendrik Brueckner <brueckner@redhat.com>
-Date: Tue, 11 Mar 2014 18:41:09 +0100
-Subject: [PATCH] getty: Start getty on 3270 terminals available on Linux on
- System z
-
-Add the first 3270 terminal device that is associated with the Linux preferred
-console to the list of virtualization consoles.  This is required to
-automatically start a getty if the conmode=3270 kernel parameter is specified
-for Linux on z/VM instances.  Note that a queued upstream patch also enable
-the 3270 terminal device if it is associated with the Linux preferred console.
-How
-
-To successfully start agetty on a 3270 terminal, a change in the agetty
-parameter order is required.  Previously, agetty would started like this:
-
-    /sbin/agetty --keep-baud 3270/tty1 115200,38400,9600 TERM
-
-The agetty program interprets the "3270/tty1" as baud rate and fails to start
-with the "bad speed: 3270/tty1" error message.  Fixing this in agetty is more
-complex rather than reordering the command line parameters like this:
-
-    /sbin/agetty --keep-baud 115200,38400,9600 3270/tty1 TERM
-
-According to agetty sources and "agetty --help", agetty accepts the "tty",
-"baudrate tty", and "tty baudrate" specifications.
-
-P.S. The "tty: Set correct tty name in 'active' sysfs attribute" introduces
-     a change to display the terminal device which is associated with the
-     Linux preferred console.  This change helps to let systemd handle this
-     particular case only.  Without the changes of this commit, no additional
-     3270 terminal device can be managed by systemd.
-
-     https://git.kernel.org/cgit/linux/kernel/git/gregkh/tty.git/commit/?id=723abd87f6e536f1353c8f64f621520bc29523a3
-
-(cherry picked from commit fc6c7fe9becdd70ae6b671c396f2ad2db0b71cd7)
-
-Resolves: #1075729
----
- rules/99-systemd.rules.in             | 2 +-
- src/getty-generator/getty-generator.c | 3 ++-
- units/serial-getty@.service.m4        | 2 +-
- 3 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/rules/99-systemd.rules.in b/rules/99-systemd.rules.in
-index 0471719..308a074 100644
---- a/rules/99-systemd.rules.in
-+++ b/rules/99-systemd.rules.in
-@@ -7,7 +7,7 @@
- 
- ACTION=="remove", GOTO="systemd_end"
- 
--SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*", TAG+="systemd"
-+SUBSYSTEM=="tty", KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*", TAG+="systemd"
- 
- KERNEL=="vport*", TAG+="systemd"
- 
-diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c
-index 40374b5..5a1997f 100644
---- a/src/getty-generator/getty-generator.c
-+++ b/src/getty-generator/getty-generator.c
-@@ -93,7 +93,8 @@ int main(int argc, char *argv[]) {
-                 "xvc0\0"
-                 "hvsi0\0"
-                 "sclp_line0\0"
--                "ttysclp0\0";
-+                "ttysclp0\0"
-+                "3270!tty1\0";
- 
-         int r = EXIT_SUCCESS;
-         char *active;
-diff --git a/units/serial-getty@.service.m4 b/units/serial-getty@.service.m4
-index e94cdb4..4ac51e7 100644
---- a/units/serial-getty@.service.m4
-+++ b/units/serial-getty@.service.m4
-@@ -22,7 +22,7 @@ Before=getty.target
- IgnoreOnIsolate=yes
- 
- [Service]
--ExecStart=-/sbin/agetty --keep-baud %I 115200,38400,9600 $TERM
-+ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM
- Type=idle
- Restart=always
- RestartSec=0
diff --git a/SOURCES/0250-login-fix-gcc-warning-include-missing-header-file.patch b/SOURCES/0250-login-fix-gcc-warning-include-missing-header-file.patch
new file mode 100644
index 0000000..ccf144c
--- /dev/null
+++ b/SOURCES/0250-login-fix-gcc-warning-include-missing-header-file.patch
@@ -0,0 +1,22 @@
+From 440b7696cac45584d110ed974ad8670624d756ab Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Wed, 23 Sep 2015 11:25:52 +0200
+Subject: [PATCH] login: fix gcc warning, include missing header file
+
+Related: #1264073
+---
+ src/login/user-sessions.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/login/user-sessions.c b/src/login/user-sessions.c
+index d1d429c..9710524 100644
+--- a/src/login/user-sessions.c
++++ b/src/login/user-sessions.c
+@@ -26,6 +26,7 @@
+ #include "log.h"
+ #include "util.h"
+ #include "fileio.h"
++#include "fileio-label.h"
+ #include "selinux-util.h"
+ 
+ int main(int argc, char*argv[]) {
diff --git a/SOURCES/0251-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch b/SOURCES/0251-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch
deleted file mode 100644
index fce708d..0000000
--- a/SOURCES/0251-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From 4323a5406bb40c76076814fd998e09c58b433e7d Mon Sep 17 00:00:00 2001
-From: Miguel Angel Ajo <mangelajo@redhat.com>
-Date: Mon, 7 Jul 2014 14:20:36 +0200
-Subject: [PATCH] core: Added support for ERRNO NOTIFY_SOCKET  message parsing
-
-Added StatusErrno dbus property along StatusText to allow notification of
-numeric status condition while degraded service operation or any other special
-situation.
-
-(cherry picked from commit 4774e357268e4a1e9fa82adb0563a538932a4c8e)
-
-Resolves: #1106457
----
- src/core/dbus-service.c |  3 +++
- src/core/service.c      | 33 +++++++++++++++++++++++++++++----
- src/core/service.h      |  1 +
- 3 files changed, 33 insertions(+), 4 deletions(-)
-
-diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c
-index 696c446..edfc7ff 100644
---- a/src/core/dbus-service.c
-+++ b/src/core/dbus-service.c
-@@ -64,6 +64,7 @@
-         "  <property name=\"ControlPID\" type=\"u\" access=\"read\"/>\n" \
-         "  <property name=\"BusName\" type=\"s\" access=\"read\"/>\n"   \
-         "  <property name=\"StatusText\" type=\"s\" access=\"read\"/>\n" \
-+        "  <property name=\"StatusErrno\" type=\"i\" access=\"read\"/>\n" \
-         "  <property name=\"Result\" type=\"s\" access=\"read\"/>\n"    \
-        " </interface>\n"
- 
-@@ -96,6 +97,7 @@ const char bus_service_invalidating_properties[] =
-         "MainPID\0"
-         "ControlPID\0"
-         "StatusText\0"
-+        "StatusErrno\0"
-         "Result\0";
- 
- static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_service_append_type, service_type, ServiceType);
-@@ -144,6 +146,7 @@ static const BusProperty bus_service_properties[] = {
-         { "ControlPID",             bus_property_append_pid,          "u", offsetof(Service, control_pid)                  },
-         { "BusName",                bus_property_append_string,       "s", offsetof(Service, bus_name),               true },
-         { "StatusText",             bus_property_append_string,       "s", offsetof(Service, status_text),            true },
-+        { "StatusErrno",            bus_property_append_int,          "i", offsetof(Service, status_errno)                 },
-         { "Result",                 bus_service_append_service_result,"s", offsetof(Service, result)                       },
-         {}
- };
-diff --git a/src/core/service.c b/src/core/service.c
-index f6fdbbc..3f6c8ac 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -3443,6 +3443,7 @@ static void service_timer_event(Unit *u, uint64_t elapsed, Watch* w) {
- static void service_notify_message(Unit *u, pid_t pid, char **tags) {
-         Service *s = SERVICE(u);
-         const char *e;
-+        bool notify_dbus = false;
- 
-         assert(u);
- 
-@@ -3478,6 +3479,7 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
-                                        "%s: got %s", u->id, e);
-                         service_set_main_pid(s, pid);
-                         unit_watch_pid(UNIT(s), pid);
-+                        notify_dbus = true;
-                 }
-         }
- 
-@@ -3516,12 +3518,34 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
- 
-                         free(s->status_text);
-                         s->status_text = t;
--                } else {
-+                } else
-+                        t = NULL;
-+
-+                if (!streq_ptr(s->status_text, t)) {
-                         free(s->status_text);
--                        s->status_text = NULL;
--                }
-+                        s->status_text = t;
-+                        notify_dbus = true;
-+                } else
-+                        free(t);
-+        }
-+
-+        /* Interpret ERRNO= */
-+        e = strv_find_prefix(tags, "ERRNO=");
-+        if (e) {
-+                int status_errno;
- 
-+                if (safe_atoi(e + 6, &status_errno) < 0)
-+                        log_warning_unit(u->id, "Failed to parse ERRNO= field in notification message: %s", e);
-+                else {
-+                        log_debug_unit(u->id, "%s: got %s", u->id, e);
-+
-+                        if (s->status_errno != status_errno) {
-+                                s->status_errno = status_errno;
-+                                notify_dbus = true;
-+                        }
-+                }
-         }
-+
-         if (strv_find(tags, "WATCHDOG=1")) {
-                 log_debug_unit(u->id,
-                                "%s: got WATCHDOG=1", u->id);
-@@ -3530,7 +3554,8 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
-         }
- 
-         /* Notify clients about changed status or main pid */
--        unit_add_to_dbus_queue(u);
-+        if (notify_dbus)
-+                unit_add_to_dbus_queue(u);
- }
- 
- #ifdef HAVE_SYSV_COMPAT
-diff --git a/src/core/service.h b/src/core/service.h
-index ce5b5e0..fa4ef2b 100644
---- a/src/core/service.h
-+++ b/src/core/service.h
-@@ -187,6 +187,7 @@ struct Service {
-         char *bus_name;
- 
-         char *status_text;
-+        int status_errno;
- 
-         RateLimit start_limit;
-         StartLimitAction start_limit_action;
diff --git a/SOURCES/0251-shutdown-make-sure-run-nologin-has-correct-label.patch b/SOURCES/0251-shutdown-make-sure-run-nologin-has-correct-label.patch
new file mode 100644
index 0000000..630666d
--- /dev/null
+++ b/SOURCES/0251-shutdown-make-sure-run-nologin-has-correct-label.patch
@@ -0,0 +1,52 @@
+From 4dd0d6644c71149a0a1af89944b95325ac4d2f18 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Wed, 23 Sep 2015 11:26:58 +0200
+Subject: [PATCH] shutdown: make sure /run/nologin has correct label
+
+rhel-only for now, not yet posted upstream
+
+Related: #1264073
+---
+ src/shutdownd/shutdownd.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/shutdownd/shutdownd.c b/src/shutdownd/shutdownd.c
+index 701882b..e1917a6 100644
+--- a/src/shutdownd/shutdownd.c
++++ b/src/shutdownd/shutdownd.c
+@@ -39,6 +39,8 @@
+ #include "utmp-wtmp.h"
+ #include "mkdir.h"
+ #include "fileio.h"
++#include "selinux-util.h"
++#include "fileio-label.h"
+ 
+ union shutdown_buffer {
+         struct sd_shutdown_command command;
+@@ -278,6 +280,8 @@ int main(int argc, char *argv[]) {
+ 
+         umask(0022);
+ 
++        mac_selinux_init(NULL);
++
+         n_fds = sd_listen_fds(true);
+         if (n_fds < 0) {
+                 log_error_errno(r, "Failed to read listening file descriptors from environment: %m");
+@@ -404,7 +408,7 @@ int main(int argc, char *argv[]) {
+ 
+                         log_info("Creating /run/nologin, blocking further logins...");
+ 
+-                        e = write_string_file_atomic("/run/nologin", "System is going down.");
++                        e = write_string_file_atomic_label("/run/nologin", "System is going down.");
+                         if (e < 0)
+                                 log_error_errno(e, "Failed to create /run/nologin: %m");
+                         else
+@@ -433,6 +437,8 @@ finish:
+ 
+         unlink("/run/systemd/shutdown/scheduled");
+ 
++        mac_selinux_finish();
++
+         if (exec_shutdown && !b.command.dry_run) {
+                 char sw[3];
+ 
diff --git a/SOURCES/0252-sd-event-fix-prepare-priority-queue-comparison-funct.patch b/SOURCES/0252-sd-event-fix-prepare-priority-queue-comparison-funct.patch
new file mode 100644
index 0000000..a2cee8d
--- /dev/null
+++ b/SOURCES/0252-sd-event-fix-prepare-priority-queue-comparison-funct.patch
@@ -0,0 +1,46 @@
+From a5626cd14a7f27538033e1e110f9a827c0189526 Mon Sep 17 00:00:00 2001
+From: Krzysztof Kotlenga <k.kotlenga@sims.pl>
+Date: Thu, 24 Sep 2015 00:34:51 +0200
+Subject: [PATCH] sd-event: fix prepare priority queue comparison function
+
+Otherwise a disabled event source can get swapped with an enabled one
+and cause a severe sd-event malfunction.
+
+http://lists.freedesktop.org/archives/systemd-devel/2015-September/034356.html
+
+Cherry-picked from: 8046c4576a68977a1089d2585866bfab8152661b
+Resolves: #1266479
+---
+ src/libsystemd/sd-event/sd-event.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/libsystemd/sd-event/sd-event.c b/src/libsystemd/sd-event/sd-event.c
+index c6350be..1f1e6fe 100644
+--- a/src/libsystemd/sd-event/sd-event.c
++++ b/src/libsystemd/sd-event/sd-event.c
+@@ -231,6 +231,12 @@ static int prepare_prioq_compare(const void *a, const void *b) {
+         assert(x->prepare);
+         assert(y->prepare);
+ 
++        /* Enabled ones first */
++        if (x->enabled != SD_EVENT_OFF && y->enabled == SD_EVENT_OFF)
++                return -1;
++        if (x->enabled == SD_EVENT_OFF && y->enabled != SD_EVENT_OFF)
++                return 1;
++
+         /* Move most recently prepared ones last, so that we can stop
+          * preparing as soon as we hit one that has already been
+          * prepared in the current iteration */
+@@ -239,12 +245,6 @@ static int prepare_prioq_compare(const void *a, const void *b) {
+         if (x->prepare_iteration > y->prepare_iteration)
+                 return 1;
+ 
+-        /* Enabled ones first */
+-        if (x->enabled != SD_EVENT_OFF && y->enabled == SD_EVENT_OFF)
+-                return -1;
+-        if (x->enabled == SD_EVENT_OFF && y->enabled != SD_EVENT_OFF)
+-                return 1;
+-
+         /* Lower priority values first */
+         if (x->priority < y->priority)
+                 return -1;
diff --git a/SOURCES/0252-service-don-t-accept-negative-ERRNO-notification-mes.patch b/SOURCES/0252-service-don-t-accept-negative-ERRNO-notification-mes.patch
deleted file mode 100644
index 2e2d570..0000000
--- a/SOURCES/0252-service-don-t-accept-negative-ERRNO-notification-mes.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 865e6e46f235bc9c58e61024696fff216e7a2182 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 7 Jul 2014 17:32:44 +0200
-Subject: [PATCH] service: don't accept negative ERRNO= notification messages
-
-(cherry picked from commit 2040ccf171404b709acb0ecf1d1f17b87c5d05f0)
-
-Related: #1106457
----
- src/core/service.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 3f6c8ac..814019d 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -3534,7 +3534,7 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
-         if (e) {
-                 int status_errno;
- 
--                if (safe_atoi(e + 6, &status_errno) < 0)
-+                if (safe_atoi(e + 6, &status_errno) < 0 || status_errno < 0)
-                         log_warning_unit(u->id, "Failed to parse ERRNO= field in notification message: %s", e);
-                 else {
-                         log_debug_unit(u->id, "%s: got %s", u->id, e);
diff --git a/SOURCES/0253-socket-add-SocketUser-and-SocketGroup-for-chown-ing-.patch b/SOURCES/0253-socket-add-SocketUser-and-SocketGroup-for-chown-ing-.patch
deleted file mode 100644
index 4670661..0000000
--- a/SOURCES/0253-socket-add-SocketUser-and-SocketGroup-for-chown-ing-.patch
+++ /dev/null
@@ -1,610 +0,0 @@
-From 6744ef720b34a87ff69acb8535cf5e83db6f5e8b Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Tue, 24 Jun 2014 14:50:26 +0200
-Subject: [PATCH] socket: add SocketUser= and SocketGroup= for chown()ing
- sockets in the file system
-
-This is relatively complex, as we cannot invoke NSS from PID 1, and thus
-need to fork a helper process temporarily.
-
-(cherry picked from commit 3900e5fdff688dc3c273f177d9d913b7389d5561)
-
-Resolves: #1111761
----
- man/systemd.socket.xml                |  38 ++++--
- src/core/dbus-socket.c                |   8 +-
- src/core/load-fragment-gperf.gperf.m4 |   4 +-
- src/core/socket.c                     | 220 +++++++++++++++++++++++++++-------
- src/core/socket.h                     |   5 +
- src/shared/exit-status.c              |   4 +
- src/shared/exit-status.h              |   3 +-
- 7 files changed, 224 insertions(+), 58 deletions(-)
-
-diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
-index 570a6fb..d146b3b 100644
---- a/man/systemd.socket.xml
-+++ b/man/systemd.socket.xml
-@@ -372,16 +372,21 @@
-                         </varlistentry>
- 
-                         <varlistentry>
--                                <term><varname>DirectoryMode=</varname></term>
--                                <listitem><para>If listening on a file
--                                system socket or FIFO, the parent
--                                directories are automatically created
--                                if needed. This option specifies the
--                                file system access mode used when
--                                creating these directories. Takes an
--                                access mode in octal
--                                notation. Defaults to
--                                0755.</para></listitem>
-+                                <term><varname>SocketUser=</varname></term>
-+                                <term><varname>SocketGroup=</varname></term>
-+
-+                                <listitem><para>Takes a UNIX
-+                                user/group name. When specified
-+                                all AF_UNIX sockets and FIFO nodes in
-+                                the file system are owned by the
-+                                specified user and group. If unset
-+                                (the default), the nodes are owned by
-+                                the root user/group (if run in system
-+                                context) or the invoking user/group
-+                                (if run in user context). If only a
-+                                user is specified but no group, then
-+                                the group is derived from the user's
-+                                default group.</para></listitem>
-                         </varlistentry>
- 
-                         <varlistentry>
-@@ -396,6 +401,19 @@
-                         </varlistentry>
- 
-                         <varlistentry>
-+                                <term><varname>DirectoryMode=</varname></term>
-+                                <listitem><para>If listening on a file
-+                                system socket or FIFO, the parent
-+                                directories are automatically created
-+                                if needed. This option specifies the
-+                                file system access mode used when
-+                                creating these directories. Takes an
-+                                access mode in octal
-+                                notation. Defaults to
-+                                0755.</para></listitem>
-+                        </varlistentry>
-+
-+                        <varlistentry>
-                                 <term><varname>Accept=</varname></term>
-                                 <listitem><para>Takes a boolean
-                                 argument. If true, a service instance
-diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c
-index 30c4b63..870bcdc 100644
---- a/src/core/dbus-socket.c
-+++ b/src/core/dbus-socket.c
-@@ -44,8 +44,10 @@
-         BUS_CGROUP_CONTEXT_INTERFACE                                    \
-         "  <property name=\"ControlPID\" type=\"u\" access=\"read\"/>\n" \
-         "  <property name=\"BindToDevice\" type=\"s\" access=\"read\"/>\n" \
--        "  <property name=\"DirectoryMode\" type=\"u\" access=\"read\"/>\n" \
-+        "  <property name=\"SocketUser\" type=\"s\" access=\"read\"/>\n" \
-+        "  <property name=\"SocketGroup\" type=\"s\" access=\"read\"/>\n" \
-         "  <property name=\"SocketMode\" type=\"u\" access=\"read\"/>\n" \
-+        "  <property name=\"DirectoryMode\" type=\"u\" access=\"read\"/>\n" \
-         "  <property name=\"Accept\" type=\"b\" access=\"read\"/>\n"    \
-         "  <property name=\"KeepAlive\" type=\"b\" access=\"read\"/>\n" \
-         "  <property name=\"Priority\" type=\"i\" access=\"read\"/>\n"  \
-@@ -172,8 +174,10 @@ static const BusProperty bus_socket_properties[] = {
-         BUS_EXEC_COMMAND_PROPERTY("ExecStopPost",  offsetof(Socket, exec_command[SOCKET_EXEC_STOP_POST]),  true ),
-         { "ControlPID",     bus_property_append_pid,           "u", offsetof(Socket, control_pid)     },
-         { "BindToDevice",   bus_property_append_string,        "s", offsetof(Socket, bind_to_device), true },
--        { "DirectoryMode",  bus_property_append_mode,          "u", offsetof(Socket, directory_mode)  },
-+        { "SocketUser",     bus_property_append_string,        "s", offsetof(Socket, user),           true },
-+        { "SocketGroup",    bus_property_append_string,        "s", offsetof(Socket, group),          true },
-         { "SocketMode",     bus_property_append_mode,          "u", offsetof(Socket, socket_mode)     },
-+        { "DirectoryMode",  bus_property_append_mode,          "u", offsetof(Socket, directory_mode)  },
-         { "Accept",         bus_property_append_bool,          "b", offsetof(Socket, accept)          },
-         { "KeepAlive",      bus_property_append_bool,          "b", offsetof(Socket, keep_alive)      },
-         { "Priority",       bus_property_append_int,           "i", offsetof(Socket, priority)        },
-diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
-index d65bcc1..0991cb9 100644
---- a/src/core/load-fragment-gperf.gperf.m4
-+++ b/src/core/load-fragment-gperf.gperf.m4
-@@ -193,8 +193,10 @@ Socket.ExecStartPost,            config_parse_exec,                  SOCKET_EXEC
- Socket.ExecStopPre,              config_parse_exec,                  SOCKET_EXEC_STOP_PRE,          offsetof(Socket, exec_command)
- Socket.ExecStopPost,             config_parse_exec,                  SOCKET_EXEC_STOP_POST,         offsetof(Socket, exec_command)
- Socket.TimeoutSec,               config_parse_sec,                   0,                             offsetof(Socket, timeout_usec)
--Socket.DirectoryMode,            config_parse_mode,                  0,                             offsetof(Socket, directory_mode)
-+Socket.SocketUser,               config_parse_unit_string_printf,    0,                             offsetof(Socket, user)
-+Socket.SocketGroup,              config_parse_unit_string_printf,    0,                             offsetof(Socket, group)
- Socket.SocketMode,               config_parse_mode,                  0,                             offsetof(Socket, socket_mode)
-+Socket.DirectoryMode,            config_parse_mode,                  0,                             offsetof(Socket, directory_mode)
- Socket.Accept,                   config_parse_bool,                  0,                             offsetof(Socket, accept)
- Socket.MaxConnections,           config_parse_unsigned,              0,                             offsetof(Socket, max_connections)
- Socket.KeepAlive,                config_parse_bool,                  0,                             offsetof(Socket, keep_alive)
-diff --git a/src/core/socket.c b/src/core/socket.c
-index e673f38..32e0d35 100644
---- a/src/core/socket.c
-+++ b/src/core/socket.c
-@@ -54,6 +54,7 @@
- static const UnitActiveState state_translation_table[_SOCKET_STATE_MAX] = {
-         [SOCKET_DEAD] = UNIT_INACTIVE,
-         [SOCKET_START_PRE] = UNIT_ACTIVATING,
-+        [SOCKET_START_CHOWN] = UNIT_ACTIVATING,
-         [SOCKET_START_POST] = UNIT_ACTIVATING,
-         [SOCKET_LISTENING] = UNIT_ACTIVE,
-         [SOCKET_RUNNING] = UNIT_ACTIVE,
-@@ -147,6 +148,8 @@ static void socket_done(Unit *u) {
-         free(s->smack);
-         free(s->smack_ip_in);
-         free(s->smack_ip_out);
-+        free(s->user);
-+        free(s->group);
- 
-         unit_unwatch_timer(u, &s->timer_watch);
- }
-@@ -527,6 +530,16 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) {
-                         "%sSmackLabelIPOut: %s\n",
-                         prefix, s->smack_ip_out);
- 
-+        if (s->user)
-+                fprintf(f,
-+                        "%sOwnerUser: %s\n",
-+                        prefix, s->user);
-+
-+        if (s->group)
-+                fprintf(f,
-+                        "%sOwnerGroup: %s\n",
-+                        prefix, s->user);
-+
-         LIST_FOREACH(port, p, s->ports) {
- 
-                 if (p->type == SOCKET_SOCKET) {
-@@ -1100,6 +1113,7 @@ static void socket_set_state(Socket *s, SocketState state) {
-         s->state = state;
- 
-         if (state != SOCKET_START_PRE &&
-+            state != SOCKET_START_CHOWN &&
-             state != SOCKET_START_POST &&
-             state != SOCKET_STOP_PRE &&
-             state != SOCKET_STOP_PRE_SIGTERM &&
-@@ -1116,7 +1130,8 @@ static void socket_set_state(Socket *s, SocketState state) {
-         if (state != SOCKET_LISTENING)
-                 socket_unwatch_fds(s);
- 
--        if (state != SOCKET_START_POST &&
-+        if (state != SOCKET_START_CHOWN &&
-+            state != SOCKET_START_POST &&
-             state != SOCKET_LISTENING &&
-             state != SOCKET_RUNNING &&
-             state != SOCKET_STOP_PRE &&
-@@ -1143,6 +1158,7 @@ static int socket_coldplug(Unit *u) {
-         if (s->deserialized_state != s->state) {
- 
-                 if (s->deserialized_state == SOCKET_START_PRE ||
-+                    s->deserialized_state == SOCKET_START_CHOWN ||
-                     s->deserialized_state == SOCKET_START_POST ||
-                     s->deserialized_state == SOCKET_STOP_PRE ||
-                     s->deserialized_state == SOCKET_STOP_PRE_SIGTERM ||
-@@ -1163,7 +1179,8 @@ static int socket_coldplug(Unit *u) {
-                                 return r;
-                 }
- 
--                if (s->deserialized_state == SOCKET_START_POST ||
-+                if (s->deserialized_state == SOCKET_START_CHOWN ||
-+                    s->deserialized_state == SOCKET_START_POST ||
-                     s->deserialized_state == SOCKET_LISTENING ||
-                     s->deserialized_state == SOCKET_RUNNING ||
-                     s->deserialized_state == SOCKET_STOP_PRE ||
-@@ -1185,7 +1202,7 @@ static int socket_coldplug(Unit *u) {
- static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
-         pid_t pid;
-         int r;
--        char **argv;
-+        _cleanup_strv_free_ char **argv = NULL;
- 
-         assert(s);
-         assert(c);
-@@ -1216,11 +1233,11 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
-                        NULL,
-                        &pid);
- 
--        strv_free(argv);
-         if (r < 0)
-                 goto fail;
- 
--        if ((r = unit_watch_pid(UNIT(s), pid)) < 0)
-+        r = unit_watch_pid(UNIT(s), pid);
-+        if (r < 0)
-                 /* FIXME: we need to do something here */
-                 goto fail;
- 
-@@ -1234,6 +1251,88 @@ fail:
-         return r;
- }
- 
-+static int socket_chown(Socket *s, pid_t *_pid) {
-+        pid_t pid;
-+        int r;
-+
-+        r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, s->timeout_usec, &s->timer_watch);
-+        if (r < 0)
-+                goto fail;
-+
-+        pid = fork();
-+        if (pid < 0)
-+                return -errno;
-+
-+        if (pid == 0) {
-+                SocketPort *p;
-+                uid_t uid = (uid_t) -1;
-+                gid_t gid = (gid_t) -1;
-+                int ret;
-+
-+                default_signals(SIGNALS_CRASH_HANDLER, SIGNALS_IGNORE, -1);
-+                ignore_signals(SIGPIPE, -1);
-+                log_forget_fds();
-+
-+                if (!isempty(s->user)) {
-+                        const char *user = s->user;
-+
-+                        r = get_user_creds(&user, &uid, &gid, NULL, NULL);
-+                        if (r < 0) {
-+                                ret = EXIT_USER;
-+                                goto fail_child;
-+                        }
-+                }
-+
-+                if (!isempty(s->group)) {
-+                        const char *group = s->group;
-+
-+                        r = get_group_creds(&group, &gid);
-+                        if (r < 0) {
-+                                ret = EXIT_GROUP;
-+                                goto fail_child;
-+                        }
-+                }
-+
-+                LIST_FOREACH(port, p, s->ports) {
-+                        const char *path = NULL;
-+
-+                        if (p->type == SOCKET_SOCKET)
-+                                path = socket_address_get_path(&p->address);
-+                        else if (p->type == SOCKET_FIFO)
-+                                path = p->path;
-+
-+                        if (!path)
-+                                continue;
-+
-+                        if (chown(path, uid, gid) < 0) {
-+                                r = -errno;
-+                                ret = EXIT_CHOWN;
-+                                goto fail_child;
-+                        }
-+                }
-+
-+                _exit(0);
-+
-+        fail_child:
-+                log_open();
-+                log_error("Failed to chown socket at step %s: %s", exit_status_to_string(ret, EXIT_STATUS_SYSTEMD), strerror(-r));
-+
-+                _exit(ret);
-+        }
-+
-+        r = unit_watch_pid(UNIT(s), pid);
-+        if (r < 0)
-+                goto fail;
-+
-+        *_pid = pid;
-+
-+        return 0;
-+
-+fail:
-+        unit_unwatch_timer(UNIT(s), &s->timer_watch);
-+        return r;
-+}
-+
- static void socket_enter_dead(Socket *s, SocketResult f) {
-         assert(s);
- 
-@@ -1256,9 +1355,11 @@ static void socket_enter_stop_post(Socket *s, SocketResult f) {
-         socket_unwatch_control_pid(s);
- 
-         s->control_command_id = SOCKET_EXEC_STOP_POST;
-+        s->control_command = s->exec_command[SOCKET_EXEC_STOP_POST];
- 
--        if ((s->control_command = s->exec_command[SOCKET_EXEC_STOP_POST])) {
--                if ((r = socket_spawn(s, s->control_command, &s->control_pid)) < 0)
-+        if (s->control_command) {
-+                r = socket_spawn(s, s->control_command, &s->control_pid);
-+                if (r < 0)
-                         goto fail;
- 
-                 socket_set_state(s, SOCKET_STOP_POST);
-@@ -1326,9 +1427,11 @@ static void socket_enter_stop_pre(Socket *s, SocketResult f) {
-         socket_unwatch_control_pid(s);
- 
-         s->control_command_id = SOCKET_EXEC_STOP_PRE;
-+        s->control_command = s->exec_command[SOCKET_EXEC_STOP_PRE];
- 
--        if ((s->control_command = s->exec_command[SOCKET_EXEC_STOP_PRE])) {
--                if ((r = socket_spawn(s, s->control_command, &s->control_pid)) < 0)
-+        if (s->control_command) {
-+                r = socket_spawn(s, s->control_command, &s->control_pid);
-+                if (r < 0)
-                         goto fail;
- 
-                 socket_set_state(s, SOCKET_STOP_PRE);
-@@ -1376,15 +1479,13 @@ static void socket_enter_start_post(Socket *s) {
-         }
- 
-         socket_unwatch_control_pid(s);
--
-         s->control_command_id = SOCKET_EXEC_START_POST;
-+        s->control_command = s->exec_command[SOCKET_EXEC_START_POST];
- 
--        if ((s->control_command = s->exec_command[SOCKET_EXEC_START_POST])) {
-+        if (s->control_command) {
-                 r = socket_spawn(s, s->control_command, &s->control_pid);
-                 if (r < 0) {
--                        log_warning_unit(UNIT(s)->id,
--                                         "%s failed to run 'start-post' task: %s",
--                                         UNIT(s)->id, strerror(-r));
-+                        log_warning_unit(UNIT(s)->id, "%s failed to run 'start-post' task: %s", UNIT(s)->id, strerror(-r));
-                         goto fail;
-                 }
- 
-@@ -1398,6 +1499,38 @@ fail:
-         socket_enter_stop_pre(s, SOCKET_FAILURE_RESOURCES);
- }
- 
-+static void socket_enter_start_chown(Socket *s) {
-+        int r;
-+
-+        assert(s);
-+
-+        r = socket_open_fds(s);
-+        if (r < 0) {
-+                log_warning_unit(UNIT(s)->id, "%s failed to listen on sockets: %s", UNIT(s)->id, strerror(-r));
-+                goto fail;
-+        }
-+
-+        if (!isempty(s->user) || !isempty(s->group)) {
-+                socket_unwatch_control_pid(s);
-+                s->control_command_id = SOCKET_EXEC_START_CHOWN;
-+                s->control_command = NULL;
-+
-+                r = socket_chown(s, &s->control_pid);
-+                if (r < 0) {
-+                        log_warning_unit(UNIT(s)->id, "%s failed to fork 'start-chown' task: %s", UNIT(s)->id, strerror(-r));
-+                        goto fail;
-+                }
-+
-+                socket_set_state(s, SOCKET_START_CHOWN);
-+        } else
-+                socket_enter_start_post(s);
-+
-+        return;
-+
-+fail:
-+        socket_enter_stop_pre(s, SOCKET_FAILURE_RESOURCES);
-+}
-+
- static void socket_enter_start_pre(Socket *s) {
-         int r;
-         assert(s);
-@@ -1405,21 +1538,21 @@ static void socket_enter_start_pre(Socket *s) {
-         socket_unwatch_control_pid(s);
- 
-         s->control_command_id = SOCKET_EXEC_START_PRE;
-+        s->control_command = s->exec_command[SOCKET_EXEC_START_PRE];
- 
--        if ((s->control_command = s->exec_command[SOCKET_EXEC_START_PRE])) {
--                if ((r = socket_spawn(s, s->control_command, &s->control_pid)) < 0)
-+        if (s->control_command) {
-+                r = socket_spawn(s, s->control_command, &s->control_pid);
-+                if (r < 0)
-                         goto fail;
- 
-                 socket_set_state(s, SOCKET_START_PRE);
-         } else
--                socket_enter_start_post(s);
-+                socket_enter_start_chown(s);
- 
-         return;
- 
- fail:
--        log_warning_unit(UNIT(s)->id,
--                         "%s failed to run 'start-pre' task: %s",
--                         UNIT(s)->id, strerror(-r));
-+        log_warning_unit(UNIT(s)->id, "%s failed to run 'start-pre' task: %s", UNIT(s)->id, strerror(-r));
-         socket_enter_dead(s, SOCKET_FAILURE_RESOURCES);
- }
- 
-@@ -1609,6 +1742,7 @@ static int socket_start(Unit *u) {
-                 return -EAGAIN;
- 
-         if (s->state == SOCKET_START_PRE ||
-+            s->state == SOCKET_START_CHOWN ||
-             s->state == SOCKET_START_POST)
-                 return 0;
- 
-@@ -1669,6 +1803,7 @@ static int socket_stop(Unit *u) {
-         /* If there's already something running we go directly into
-          * kill mode. */
-         if (s->state == SOCKET_START_PRE ||
-+            s->state == SOCKET_START_CHOWN ||
-             s->state == SOCKET_START_POST) {
-                 socket_enter_signal(s, SOCKET_STOP_PRE_SIGTERM, SOCKET_SUCCESS);
-                 return -EAGAIN;
-@@ -2098,11 +2233,18 @@ static void socket_sigchld_event(Unit *u, pid_t pid, int code, int status) {
- 
-                 case SOCKET_START_PRE:
-                         if (f == SOCKET_SUCCESS)
--                                socket_enter_start_post(s);
-+                                socket_enter_start_chown(s);
-                         else
-                                 socket_enter_signal(s, SOCKET_FINAL_SIGTERM, f);
-                         break;
- 
-+                case SOCKET_START_CHOWN:
-+                        if (f == SOCKET_SUCCESS)
-+                                socket_enter_start_post(s);
-+                        else
-+                                socket_enter_stop_pre(s, f);
-+                        break;
-+
-                 case SOCKET_START_POST:
-                         if (f == SOCKET_SUCCESS)
-                                 socket_enter_listening(s);
-@@ -2141,65 +2283,53 @@ static void socket_timer_event(Unit *u, uint64_t elapsed, Watch *w) {
-         switch (s->state) {
- 
-         case SOCKET_START_PRE:
--                log_warning_unit(u->id,
--                                 "%s starting timed out. Terminating.", u->id);
-+                log_warning_unit(u->id, "%s starting timed out. Terminating.", u->id);
-                 socket_enter_signal(s, SOCKET_FINAL_SIGTERM, SOCKET_FAILURE_TIMEOUT);
-                 break;
- 
-+        case SOCKET_START_CHOWN:
-         case SOCKET_START_POST:
--                log_warning_unit(u->id,
--                                 "%s starting timed out. Stopping.", u->id);
-+                log_warning_unit(u->id, "%s starting timed out. Stopping.", u->id);
-                 socket_enter_stop_pre(s, SOCKET_FAILURE_TIMEOUT);
-                 break;
- 
-         case SOCKET_STOP_PRE:
--                log_warning_unit(u->id,
--                                 "%s stopping timed out. Terminating.", u->id);
-+                log_warning_unit(u->id, "%s stopping timed out. Terminating.", u->id);
-                 socket_enter_signal(s, SOCKET_STOP_PRE_SIGTERM, SOCKET_FAILURE_TIMEOUT);
-                 break;
- 
-         case SOCKET_STOP_PRE_SIGTERM:
-                 if (s->kill_context.send_sigkill) {
--                        log_warning_unit(u->id,
--                                         "%s stopping timed out. Killing.", u->id);
-+                        log_warning_unit(u->id, "%s stopping timed out. Killing.", u->id);
-                         socket_enter_signal(s, SOCKET_STOP_PRE_SIGKILL, SOCKET_FAILURE_TIMEOUT);
-                 } else {
--                        log_warning_unit(u->id,
--                                         "%s stopping timed out. Skipping SIGKILL. Ignoring.",
--                                         u->id);
-+                        log_warning_unit(u->id, "%s stopping timed out. Skipping SIGKILL. Ignoring.", u->id);
-                         socket_enter_stop_post(s, SOCKET_FAILURE_TIMEOUT);
-                 }
-                 break;
- 
-         case SOCKET_STOP_PRE_SIGKILL:
--                log_warning_unit(u->id,
--                                 "%s still around after SIGKILL. Ignoring.", u->id);
-+                log_warning_unit(u->id, "%s still around after SIGKILL. Ignoring.", u->id);
-                 socket_enter_stop_post(s, SOCKET_FAILURE_TIMEOUT);
-                 break;
- 
-         case SOCKET_STOP_POST:
--                log_warning_unit(u->id,
--                                 "%s stopping timed out (2). Terminating.", u->id);
-+                log_warning_unit(u->id, "%s stopping timed out (2). Terminating.", u->id);
-                 socket_enter_signal(s, SOCKET_FINAL_SIGTERM, SOCKET_FAILURE_TIMEOUT);
-                 break;
- 
-         case SOCKET_FINAL_SIGTERM:
-                 if (s->kill_context.send_sigkill) {
--                        log_warning_unit(u->id,
--                                         "%s stopping timed out (2). Killing.", u->id);
-+                        log_warning_unit(u->id, "%s stopping timed out (2). Killing.", u->id);
-                         socket_enter_signal(s, SOCKET_FINAL_SIGKILL, SOCKET_FAILURE_TIMEOUT);
-                 } else {
--                        log_warning_unit(u->id,
--                                         "%s stopping timed out (2). Skipping SIGKILL. Ignoring.",
--                                         u->id);
-+                        log_warning_unit(u->id, "%s stopping timed out (2). Skipping SIGKILL. Ignoring.", u->id);
-                         socket_enter_dead(s, SOCKET_FAILURE_TIMEOUT);
-                 }
-                 break;
- 
-         case SOCKET_FINAL_SIGKILL:
--                log_warning_unit(u->id,
--                                 "%s still around after SIGKILL (2). Entering failed mode.",
--                                 u->id);
-+                log_warning_unit(u->id, "%s still around after SIGKILL (2). Entering failed mode.", u->id);
-                 socket_enter_dead(s, SOCKET_FAILURE_TIMEOUT);
-                 break;
- 
-@@ -2333,6 +2463,7 @@ static int socket_kill(Unit *u, KillWho who, int signo, DBusError *error) {
- static const char* const socket_state_table[_SOCKET_STATE_MAX] = {
-         [SOCKET_DEAD] = "dead",
-         [SOCKET_START_PRE] = "start-pre",
-+        [SOCKET_START_CHOWN] = "start-chown",
-         [SOCKET_START_POST] = "start-post",
-         [SOCKET_LISTENING] = "listening",
-         [SOCKET_RUNNING] = "running",
-@@ -2349,6 +2480,7 @@ DEFINE_STRING_TABLE_LOOKUP(socket_state, SocketState);
- 
- static const char* const socket_exec_command_table[_SOCKET_EXEC_COMMAND_MAX] = {
-         [SOCKET_EXEC_START_PRE] = "StartPre",
-+        [SOCKET_EXEC_START_CHOWN] = "StartChown",
-         [SOCKET_EXEC_START_POST] = "StartPost",
-         [SOCKET_EXEC_STOP_PRE] = "StopPre",
-         [SOCKET_EXEC_STOP_POST] = "StopPost"
-diff --git a/src/core/socket.h b/src/core/socket.h
-index 3d7eadc..6a24883 100644
---- a/src/core/socket.h
-+++ b/src/core/socket.h
-@@ -32,6 +32,7 @@ typedef struct Socket Socket;
- typedef enum SocketState {
-         SOCKET_DEAD,
-         SOCKET_START_PRE,
-+        SOCKET_START_CHOWN,
-         SOCKET_START_POST,
-         SOCKET_LISTENING,
-         SOCKET_RUNNING,
-@@ -48,6 +49,7 @@ typedef enum SocketState {
- 
- typedef enum SocketExecCommand {
-         SOCKET_EXEC_START_PRE,
-+        SOCKET_EXEC_START_CHOWN,
-         SOCKET_EXEC_START_POST,
-         SOCKET_EXEC_STOP_PRE,
-         SOCKET_EXEC_STOP_POST,
-@@ -151,6 +153,9 @@ struct Socket {
-         char *smack;
-         char *smack_ip_in;
-         char *smack_ip_out;
-+
-+        char *user;
-+        char *group;
- };
- 
- /* Called from the service code when collecting fds */
-diff --git a/src/shared/exit-status.c b/src/shared/exit-status.c
-index 45131f2..f15fdba 100644
---- a/src/shared/exit-status.c
-+++ b/src/shared/exit-status.c
-@@ -130,6 +130,10 @@ const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) {
- 
-                 case EXIT_SECCOMP:
-                         return "SECCOMP";
-+
-+                case EXIT_CHOWN:
-+                        return "CHOWN";
-+
-                 }
-         }
- 
-diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h
-index 1f035a3..52dd3d0 100644
---- a/src/shared/exit-status.h
-+++ b/src/shared/exit-status.h
-@@ -67,7 +67,8 @@ typedef enum ExitStatus {
-         EXIT_NETWORK,
-         EXIT_NAMESPACE,
-         EXIT_NO_NEW_PRIVILEGES,
--        EXIT_SECCOMP
-+        EXIT_SECCOMP,
-+        EXIT_CHOWN
- } ExitStatus;
- 
- typedef enum ExitStatusLevel {
diff --git a/SOURCES/0253-units-run-ldconfig-also-when-cache-is-unpopulated.patch b/SOURCES/0253-units-run-ldconfig-also-when-cache-is-unpopulated.patch
new file mode 100644
index 0000000..3ef74cc
--- /dev/null
+++ b/SOURCES/0253-units-run-ldconfig-also-when-cache-is-unpopulated.patch
@@ -0,0 +1,25 @@
+From ec6c44ff15e2b04f5acca7ec467aa0bb1658ba38 Mon Sep 17 00:00:00 2001
+From: Michal Sekletar <msekleta@redhat.com>
+Date: Wed, 23 Sep 2015 19:23:21 +0200
+Subject: [PATCH] units: run ldconfig also when cache is unpopulated
+
+Cherry-picked from: 92eab5dea40f50d0e66b91ba1224e2101bc83494
+Resolves: #1265539
+---
+ units/ldconfig.service | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/units/ldconfig.service b/units/ldconfig.service
+index 43c145b..8600b13 100644
+--- a/units/ldconfig.service
++++ b/units/ldconfig.service
+@@ -12,7 +12,8 @@ DefaultDependencies=no
+ Conflicts=shutdown.target
+ After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-remount-fs.service
+ Before=sysinit.target shutdown.target systemd-update-done.service
+-ConditionNeedsUpdate=/etc
++ConditionNeedsUpdate=|/etc
++ConditionFileNotEmpty=|!/etc/ld.so.cache
+ 
+ [Service]
+ Type=oneshot
diff --git a/SOURCES/0254-selinux-Check-access-vector-for-enable-and-disable-p.patch b/SOURCES/0254-selinux-Check-access-vector-for-enable-and-disable-p.patch
deleted file mode 100644
index 05bd7d7..0000000
--- a/SOURCES/0254-selinux-Check-access-vector-for-enable-and-disable-p.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 1ea0879cf79412e27b8becdb2bbc7e0abd301a66 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Tue, 12 Aug 2014 12:58:47 +0200
-Subject: [PATCH] selinux: Check access vector for enable and disable perm for
- each unit file
-
----
- src/core/dbus-manager.c | 28 ++++++++++++++++++++++++----
- 1 file changed, 24 insertions(+), 4 deletions(-)
-
-diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
-index 6d16c2a..cebc730 100644
---- a/src/core/dbus-manager.c
-+++ b/src/core/dbus-manager.c
-@@ -1581,6 +1581,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                    dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetDefaultTarget")) {
- 
-                 char **l = NULL;
-+                char **i;
-                 DBusMessageIter iter;
-                 UnitFileScope scope = m->running_as == SYSTEMD_SYSTEM ? UNIT_FILE_SYSTEM : UNIT_FILE_USER;
-                 UnitFileChange *changes = NULL;
-@@ -1588,8 +1589,6 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 dbus_bool_t runtime, force;
-                 int carries_install_info = -1;
- 
--                SELINUX_ACCESS_CHECK(connection, message, streq(member, "MaskUnitFiles") ? "disable" : "enable");
--
-                 if (!dbus_message_iter_init(message, &iter))
-                         goto oom;
- 
-@@ -1601,6 +1600,17 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                         return bus_send_error_reply(connection, message, NULL, r);
-                 }
- 
-+                STRV_FOREACH(i, l) {
-+                        Unit *u;
-+
-+                        r = manager_load_unit(m, *i, NULL, NULL, &u);
-+                        if (r < 0) {
-+                                dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s does not exist.", *i);
-+                                return bus_send_error_reply(connection, message, &error, -ENOENT);
-+                        }
-+                        SELINUX_UNIT_ACCESS_CHECK(u, connection, message, streq(member, "MaskUnitFiles") ? "disable" : "enable");
-+                }
-+
-                 if (!dbus_message_iter_next(&iter) ||
-                     bus_iter_get_basic_and_next(&iter, DBUS_TYPE_BOOLEAN, &runtime, true) < 0 ||
-                     bus_iter_get_basic_and_next(&iter, DBUS_TYPE_BOOLEAN, &force, false) < 0) {
-@@ -1644,14 +1654,13 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                    dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnmaskUnitFiles")) {
- 
-                 char **l = NULL;
-+                char **i;
-                 DBusMessageIter iter;
-                 UnitFileScope scope = m->running_as == SYSTEMD_SYSTEM ? UNIT_FILE_SYSTEM : UNIT_FILE_USER;
-                 UnitFileChange *changes = NULL;
-                 unsigned n_changes = 0;
-                 dbus_bool_t runtime;
- 
--                SELINUX_ACCESS_CHECK(connection, message, streq(member, "UnmaskUnitFiles") ? "enable" : "disable");
--
-                 if (!dbus_message_iter_init(message, &iter))
-                         goto oom;
- 
-@@ -1669,6 +1678,17 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                         return bus_send_error_reply(connection, message, NULL, -EIO);
-                 }
- 
-+                STRV_FOREACH(i, l) {
-+                        Unit *u;
-+
-+                        r = manager_load_unit(m, *i, NULL, NULL, &u);
-+                        if (r < 0) {
-+                                dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s does not exist.", *i);
-+                                return bus_send_error_reply(connection, message, &error, -ENOENT);
-+                        }
-+                        SELINUX_UNIT_ACCESS_CHECK(u, connection, message, streq(member, "UnmaskUnitFiles") ? "enable" : "disable");
-+                }
-+
-                 if (streq(member, "DisableUnitFiles"))
-                         r = unit_file_disable(scope, runtime, NULL, l, &changes, &n_changes);
-                 else if (streq(member, "UnmaskUnitFiles"))
diff --git a/SOURCES/0254-selinux-fix-regression-of-systemctl-subcommands-when.patch b/SOURCES/0254-selinux-fix-regression-of-systemctl-subcommands-when.patch
new file mode 100644
index 0000000..77bb7ee
--- /dev/null
+++ b/SOURCES/0254-selinux-fix-regression-of-systemctl-subcommands-when.patch
@@ -0,0 +1,77 @@
+From e1a9c6a30820620c482ed597ff6920a549c49bec Mon Sep 17 00:00:00 2001
+From: HATAYAMA Daisuke <d.hatayama@jp.fujitsu.com>
+Date: Wed, 26 Aug 2015 12:07:31 +0900
+Subject: [PATCH] selinux: fix regression of systemctl subcommands when
+ absolute unit file paths are specified
+
+The commit 4938696301a914ec26bcfc60bb99a1e9624e3789 overlooked the
+fact that unit files can be specified as unit file paths, not unit
+file names, wrongly passing a unit file path to the 1st argument of
+manager_load_unit() that handles it as a unit file name. As a result,
+the following 4 systemctl subcommands:
+
+    enable
+    disable
+    reenable
+    link
+    mask
+    unmask
+
+fail with the following error message:
+
+    # systemctl enable /usr/lib/systemd/system/kdump.service
+    Failed to execute operation: Unit name /usr/lib/systemd/system/kdump.service is not valid.
+    # systemctl disable /usr/lib/systemd/system/kdump.service
+    Failed to execute operation: Unit name /usr/lib/systemd/system/kdump.service is not valid.
+    # systemctl reenable /usr/lib/systemd/system/kdump.service
+    Failed to execute operation: Unit name /usr/lib/systemd/system/kdump.service is not valid.
+    # cp /usr/lib/systemd/system/kdump.service /tmp/
+    # systemctl link /tmp/kdump.service
+    Failed to execute operation: Unit name /tmp/kdump.service is not valid.
+    # systemctl mask /usr/lib/systemd/system/kdump.service
+    Failed to execute operation: Unit name /usr/lib/systemd/system/kdump.service is not valid.
+    # systemctl unmask /usr/lib/systemd/system/kdump.service
+    Failed to execute operation: Unit name /usr/lib/systemd/system/kdump.service is not valid.
+
+To fix the issue, first check whether a unit file is passed as a unit
+file name or a unit file path, and then pass the unit file to the
+appropreate argument of manager_load_unit().
+
+By the way, even with this commit mask and unmask reject unit file
+paths as follows and this is a correct behavior:
+
+    # systemctl mask /usr/lib/systemd/system/kdump.service
+    Failed to execute operation: Invalid argument
+    # systemctl unmask /usr/lib/systemd/system/kdump.service
+    Failed to execute operation: Invalid argument
+
+Cherry-picked from: 9fa7c1aeb9ec7e9d9f35184ce5c9d334f057d9de
+Related: #1185120
+---
+ src/core/selinux-access.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c
+index 297372d..6cc0a49 100644
+--- a/src/core/selinux-access.c
++++ b/src/core/selinux-access.c
+@@ -42,6 +42,7 @@
+ #include "selinux-util.h"
+ #include "audit-fd.h"
+ #include "strv.h"
++#include "path-util.h"
+ 
+ static bool initialized = false;
+ 
+@@ -272,7 +273,10 @@ int mac_selinux_unit_access_check_strv(char **units,
+         int r;
+ 
+         STRV_FOREACH(i, units) {
+-                r = manager_load_unit(m, *i, NULL, error, &u);
++                if (is_path(*i))
++                        r = manager_load_unit(m, NULL, *i, error, &u);
++                else
++                        r = manager_load_unit(m, *i, NULL, error, &u);
+                 if (r < 0)
+                         return r;
+                 r = mac_selinux_unit_access_check(u, message, permission, error);
diff --git a/SOURCES/0255-systemctl-show-StatusErrno-value-in-systemctl-status.patch b/SOURCES/0255-systemctl-show-StatusErrno-value-in-systemctl-status.patch
deleted file mode 100644
index 527e21e..0000000
--- a/SOURCES/0255-systemctl-show-StatusErrno-value-in-systemctl-status.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From eb075b31eb70910508309c6319d0cc37d454ff59 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 7 Jul 2014 17:33:26 +0200
-Subject: [PATCH] systemctl: show StatusErrno value in "systemctl status"
-
-(cherry picked from commit b4af5a803aa71a57733ca46fef29b7afb20a626c)
-
-Conflicts:
-        src/systemctl/systemctl.c
-
-Related: #1106457
----
- src/systemctl/systemctl.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index d29133c..c738daf 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -2480,6 +2480,7 @@ typedef struct UnitStatusInfo {
-         const char *status_text;
-         const char *pid_file;
-         bool running:1;
-+        int status_errno;
- 
-         usec_t start_timestamp;
-         usec_t exit_timestamp;
-@@ -2751,6 +2752,8 @@ static void print_status_info(UnitStatusInfo *i,
- 
-         if (i->status_text)
-                 printf("   Status: \"%s\"\n", i->status_text);
-+        if (i->status_errno > 0)
-+                printf("   Error: %i (%s)\n", i->status_errno, strerror(i->status_errno));
- 
-         if (i->control_group &&
-             (i->main_pid > 0 || i->control_pid > 0 || cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, i->control_group, false) == 0)) {
-@@ -2963,6 +2966,8 @@ static int status_property(const char *name, DBusMessageIter *iter, UnitStatusIn
-                         i->exit_code = (int) j;
-                 else if (streq(name, "ExecMainStatus"))
-                         i->exit_status = (int) j;
-+                else if (streq(name, "StatusErrno"))
-+                        i->status_errno = (int) j;
- 
-                 break;
-         }
diff --git a/SOURCES/0255-tmpfiles.d-don-t-clean-SAP-lockfiles-and-logs.patch b/SOURCES/0255-tmpfiles.d-don-t-clean-SAP-lockfiles-and-logs.patch
new file mode 100644
index 0000000..1f4250c
--- /dev/null
+++ b/SOURCES/0255-tmpfiles.d-don-t-clean-SAP-lockfiles-and-logs.patch
@@ -0,0 +1,37 @@
+From 8d450bb995ed0b24a716a3e43d1301f18a1be800 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Tue, 6 Oct 2015 12:33:15 +0200
+Subject: [PATCH] tmpfiles.d: don't clean SAP lockfiles and logs
+
+rhel-only
+
+Resolves: #1186044
+---
+ Makefile.am         | 3 ++-
+ tmpfiles.d/sap.conf | 3 +++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+ create mode 100644 tmpfiles.d/sap.conf
+
+diff --git a/Makefile.am b/Makefile.am
+index 0fcb737..887e70a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -2220,7 +2220,8 @@ dist_tmpfiles_DATA = \
+ 	tmpfiles.d/systemd-nologin.conf \
+ 	tmpfiles.d/tmp.conf \
+ 	tmpfiles.d/x11.conf \
+-	tmpfiles.d/var.conf
++	tmpfiles.d/var.conf \
++	tmpfiles.d/sap.conf
+ 
+ if HAVE_SYSV_COMPAT
+ dist_tmpfiles_DATA += \
+diff --git a/tmpfiles.d/sap.conf b/tmpfiles.d/sap.conf
+new file mode 100644
+index 0000000..01ace42
+--- /dev/null
++++ b/tmpfiles.d/sap.conf
+@@ -0,0 +1,3 @@
++# Let's not touch SAP files
++x /tmp/.hdb_*_lock
++x /tmp/.sapstartsrv*.log
diff --git a/SOURCES/0256-service-flush-status-text-and-errno-values-each-time.patch b/SOURCES/0256-service-flush-status-text-and-errno-values-each-time.patch
deleted file mode 100644
index 28b558a..0000000
--- a/SOURCES/0256-service-flush-status-text-and-errno-values-each-time.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 5078832417b89cfe92ad87133ecb4179a995db31 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 7 Jul 2014 17:33:46 +0200
-Subject: [PATCH] service: flush status text and errno values each time a
- service is started
-
-We shouldn't show status texts from previous service starts
-
-(cherry picked from commit 8cfdb077b8e3da1c47fc1d735d051f21f33144c1)
-
-Related: #1106457
----
- src/core/service.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 814019d..a6d046c 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -2579,6 +2579,10 @@ static int service_start(Unit *u) {
-         s->main_pid_alien = false;
-         s->forbid_restart = false;
- 
-+        free(s->status_text);
-+        s->status_text = NULL;
-+        s->status_errno = 0;
-+
-         service_enter_start_pre(s);
-         return 0;
- }
diff --git a/SOURCES/0256-udev-make-naming-for-virtio-devices-opt-in.patch b/SOURCES/0256-udev-make-naming-for-virtio-devices-opt-in.patch
new file mode 100644
index 0000000..d8e46f5
--- /dev/null
+++ b/SOURCES/0256-udev-make-naming-for-virtio-devices-opt-in.patch
@@ -0,0 +1,67 @@
+From 913b8bd3eb3d1c4574d97d9e09411b199b2899d2 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Fri, 9 Oct 2015 14:15:40 +0200
+Subject: [PATCH] udev: make naming for virtio devices opt-in
+
+rhel-only
+
+Resolves: #1269216
+---
+ src/udev/udev-builtin-net_id.c | 19 +++++++++++++++++--
+ src/udev/udevd.c               |  6 +++---
+ 2 files changed, 20 insertions(+), 5 deletions(-)
+
+diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
+index ddd83d4..ffd6ea4 100644
+--- a/src/udev/udev-builtin-net_id.c
++++ b/src/udev/udev-builtin-net_id.c
+@@ -281,14 +281,29 @@ out:
+ 
+ static int names_pci(struct udev_device *dev, struct netnames *names) {
+         struct udev_device *parent;
++        static int do_virtio = -1;
++
++        if (do_virtio < 0) {
++                _cleanup_free_ char *value = NULL;
++                int n = 0;
++                do_virtio = 0;
++                if (get_proc_cmdline_key("net.ifnames", NULL) > 0)
++                        do_virtio = 1;
++                else if (get_proc_cmdline_key("net.ifnames=", &value) > 0) {
++                        safe_atoi(value, &n);
++                        if (n > 0)
++                                do_virtio = 1;
++                }
++        }
+ 
+         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);
++        if (do_virtio > 0)
++                while (parent && streq_ptr("virtio", udev_device_get_subsystem(parent)))
++                        parent = udev_device_get_parent(parent);
+ 
+         if (!parent)
+                 return -ENOENT;
+diff --git a/src/udev/udevd.c b/src/udev/udevd.c
+index 87a3f69..21e7e7f 100644
+--- a/src/udev/udevd.c
++++ b/src/udev/udevd.c
+@@ -1003,10 +1003,10 @@ static void kernel_cmdline_options(struct udev *udev) {
+                         r = safe_atou64(value, &arg_event_timeout_usec);
+                         if (r < 0) {
+                                 log_warning("Invalid udev.event-timeout ignored: %s", value);
+-                                break;
++                        } else {
++                                arg_event_timeout_usec *= USEC_PER_SEC;
++                                arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1;
+                         }
+-                        arg_event_timeout_usec *= USEC_PER_SEC;
+-                        arg_event_timeout_warn_usec = (arg_event_timeout_usec / 3) ? : 1;
+                 }
+ 
+                 free(s);
diff --git a/SOURCES/0257-service-don-t-free-status_text-twice.patch b/SOURCES/0257-service-don-t-free-status_text-twice.patch
deleted file mode 100644
index fc2db4d..0000000
--- a/SOURCES/0257-service-don-t-free-status_text-twice.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 3b6a01f5fc0a4770d9c55a1c7fb1addc231f3021 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 18 Aug 2014 16:12:45 +0200
-Subject: [PATCH] service: don't free status_text twice
-
-Related: #1106457
----
- src/core/service.c | 3 ---
- 1 file changed, 3 deletions(-)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index a6d046c..4366e1b 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -3519,9 +3519,6 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) {
- 
-                         log_debug_unit(u->id,
-                                        "%s: got %s", u->id, e);
--
--                        free(s->status_text);
--                        s->status_text = t;
-                 } else
-                         t = NULL;
- 
diff --git a/SOURCES/0257-tmpfiles.d-don-t-clean-SAP-sockets-either.patch b/SOURCES/0257-tmpfiles.d-don-t-clean-SAP-sockets-either.patch
new file mode 100644
index 0000000..52a77a1
--- /dev/null
+++ b/SOURCES/0257-tmpfiles.d-don-t-clean-SAP-sockets-either.patch
@@ -0,0 +1,29 @@
+From 9f9161e827ad6d90f2578eb0483ecafbe5ac59c7 Mon Sep 17 00:00:00 2001
+From: Lukas Nykryn <lnykryn@redhat.com>
+Date: Mon, 12 Oct 2015 14:18:04 +0200
+Subject: [PATCH] tmpfiles.d: don't clean SAP sockets either
+
+rhel-only
+
+Resolves: #1186044
+---
+ tmpfiles.d/sap.conf | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/tmpfiles.d/sap.conf b/tmpfiles.d/sap.conf
+index 01ace42..1cdca52 100644
+--- a/tmpfiles.d/sap.conf
++++ b/tmpfiles.d/sap.conf
+@@ -1,3 +1,9 @@
+-# Let's not touch SAP files
+-x /tmp/.hdb_*_lock
+-x /tmp/.sapstartsrv*.log
++# systemd tmpfiles exclude file for SAP
++# SAP software unfortunately stores some important files
++# in /tmp which should not be deleted
++
++# Exclude SAP socket and lock files
++x /tmp/.sap*
++
++# Exclude HANA lock file
++x /tmp/.hdb*lock
diff --git a/SOURCES/0258-util-add-files_same-helper-function.patch b/SOURCES/0258-util-add-files_same-helper-function.patch
deleted file mode 100644
index 5f34fda..0000000
--- a/SOURCES/0258-util-add-files_same-helper-function.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From b6fbffe3d4a9435cc8560ee0271c7e6e763e89c1 Mon Sep 17 00:00:00 2001
-From: Harald Hoyer <harald@redhat.com>
-Date: Thu, 6 Mar 2014 09:12:57 +0100
-Subject: [PATCH] util: add files_same() helper function
-
-files_same() returns
-     1, if the files are the same
-     0, if the files have different inode/dev numbers
- errno, for any stat error
-
- (cherry picked from commit 9d9951a460a90ef0e1e0384742cefdcf85193f8c)
-
- Related: #1111199
----
- src/shared/util.c | 24 ++++++++++++++++--------
- src/shared/util.h |  2 ++
- 2 files changed, 18 insertions(+), 8 deletions(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 2974c2a..fb1e6d1 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -3311,19 +3311,27 @@ bool on_tty(void) {
-         return cached_on_tty;
- }
- 
--int running_in_chroot(void) {
--        struct stat a = {}, b = {};
-+int files_same(const char *filea, const char *fileb) {
-+        struct stat a, b;
- 
--        /* Only works as root */
--        if (stat("/proc/1/root", &a) < 0)
-+        if (stat(filea, &a) < 0)
-                 return -errno;
- 
--        if (stat("/", &b) < 0)
-+        if (stat(fileb, &b) < 0)
-                 return -errno;
- 
--        return
--                a.st_dev != b.st_dev ||
--                a.st_ino != b.st_ino;
-+        return a.st_dev == b.st_dev &&
-+               a.st_ino == b.st_ino;
-+}
-+
-+int running_in_chroot(void) {
-+        int ret;
-+
-+        ret = files_same("/proc/1/root", "/");
-+        if (ret < 0)
-+                return ret;
-+
-+        return ret == 0;
- }
- 
- char *ellipsize_mem(const char *s, size_t old_length, size_t new_length, unsigned percent) {
-diff --git a/src/shared/util.h b/src/shared/util.h
-index e577ef0..631a385 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -403,6 +403,8 @@ static inline const char *ansi_highlight_off(void) {
-         return on_tty() ? ANSI_HIGHLIGHT_OFF : "";
- }
- 
-+int files_same(const char *filea, const char *fileb);
-+
- int running_in_chroot(void);
- 
- char *ellipsize(const char *s, size_t length, unsigned percent);
diff --git a/SOURCES/0259-systemctl-for-switch-root-check-if-we-switch-to-a-sy.patch b/SOURCES/0259-systemctl-for-switch-root-check-if-we-switch-to-a-sy.patch
deleted file mode 100644
index e465adb..0000000
--- a/SOURCES/0259-systemctl-for-switch-root-check-if-we-switch-to-a-sy.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From cad8ec5980d63253586d9f884649c45eed0667a1 Mon Sep 17 00:00:00 2001
-From: Harald Hoyer <harald@redhat.com>
-Date: Thu, 6 Mar 2014 16:35:02 +0100
-Subject: [PATCH] systemctl: for switch-root check, if we switch to a systemd
- init
-
-If "systemctl switch-root" is called with a specific "INIT" or
-/proc/cmdline contains "init=", then systemd would not serialize
-itsself.
-
-Let systemctl check, if the new init is in the standard systemd
-installation path and if so, clear the INIT parameter,
-to let systemd serialize itsself.
-
-Conflicts:
-	src/systemctl/systemctl.c
-
-(cherry picked from commit f39d4a08e746e703d562076a0f622eb91dbdcd3e)
-
-Related: #1111199
----
- src/shared/util.h         | 13 +++++++++++++
- src/systemctl/systemctl.c | 35 ++++++++++++++++++++++++++---------
- 2 files changed, 39 insertions(+), 9 deletions(-)
-
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 631a385..d11fa07 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -726,6 +726,19 @@ int unlink_noerrno(const char *path);
-                 _c_;                                    \
-         })
- 
-+#define strappenda3(a, b, c)                                    \
-+        ({                                                      \
-+                const char *_a_ = (a), *_b_ = (b), *_c_ = (c);  \
-+                char *_d_;                                      \
-+                size_t _x_, _y_, _z_;                           \
-+                _x_ = strlen(_a_);                              \
-+                _y_ = strlen(_b_);                              \
-+                _z_ = strlen(_c_);                              \
-+                _d_ = alloca(_x_ + _y_ + _z_ + 1);              \
-+                strcpy(stpcpy(stpcpy(_d_, _a_), _b_), _c_);     \
-+                _d_;                                            \
-+        })
-+
- #define procfs_file_alloca(pid, field)                                  \
-         ({                                                              \
-                 pid_t _pid_ = (pid);                                    \
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index c738daf..1ca4fd3 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -4143,9 +4143,10 @@ static int show_enviroment(DBusConnection *bus, char **args) {
- }
- 
- static int switch_root(DBusConnection *bus, char **args) {
-+        _cleanup_free_ char *cmdline_init = NULL;
-+        const char *root, *init;
-         unsigned l;
--        const char *root;
--        _cleanup_free_ char *init = NULL;
-+        int r;
- 
-         l = strv_length(args);
-         if (l < 2 || l > 3) {
-@@ -4156,19 +4157,35 @@ static int switch_root(DBusConnection *bus, char **args) {
-         root = args[1];
- 
-         if (l >= 3)
--                init = strdup(args[2]);
-+                init = args[2];
-         else {
--                parse_env_file("/proc/cmdline", WHITESPACE,
--                               "init", &init,
--                               NULL);
-+                r = parse_env_file("/proc/cmdline", WHITESPACE,
-+                                   "init", &cmdline_init,
-+                                   NULL);
-+                if (r < 0)
-+                        log_debug("Failed to parse /proc/cmdline: %s", strerror(-r));
- 
--                if (!init)
--                        init = strdup("");
-+                init = cmdline_init;
-         }
-         if (!init)
-                 return log_oom();
- 
--        log_debug("switching root - root: %s; init: %s", root, init);
-+        if (isempty(init))
-+                init = NULL;
-+
-+        if (init) {
-+                const char *root_systemd_path = NULL, *root_init_path = NULL;
-+
-+                root_systemd_path = strappenda(root, "/" SYSTEMD_BINARY_PATH);
-+                root_init_path = strappenda3(root, "/", init);
-+
-+                /* If the passed init is actually the same as the
-+                 * systemd binary, then let's suppress it. */
-+                if (files_same(root_init_path, root_systemd_path) > 0)
-+                        init = NULL;
-+        }
-+
-+        log_debug("Switching root - root: %s; init: %s", root, strna(init));
- 
-         return bus_method_call_with_reply(
-                         bus,
diff --git a/SOURCES/0260-shared-include-root-when-canonicalizing-conf-paths.patch b/SOURCES/0260-shared-include-root-when-canonicalizing-conf-paths.patch
deleted file mode 100644
index 0f85289..0000000
--- a/SOURCES/0260-shared-include-root-when-canonicalizing-conf-paths.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From b7f7813318b370d9ecf3833f92c5258d362d9441 Mon Sep 17 00:00:00 2001
-From: Michael Marineau <michael.marineau@coreos.com>
-Date: Fri, 31 Jan 2014 15:35:04 -0800
-Subject: [PATCH] shared: include root when canonicalizing conf paths
-
-The conf_files_list family accepts an alternate root path to prefix all
-directories in the list but path_strv_canonicalize_uniq doesn't use it.
-This results in the suspicious behavior of resolving directory symlinks
-based on the contents of / instead of the alternate root.
-
-This adds a prefix argument to path_strv_canonicalize which will now
-prepend the prefix, if given, to every path in the list. To avoid
-answering what a relative path means when called with a root prefix
-path_strv_canonicalize is now path_strv_canonicalize_absolute and only
-considers absolute paths. Fortunately all users of already call
-path_strv_canonicalize with a list of absolute paths.
-
-(cherry picked from commit 112cfb181453e38d3ef4a74fba23abbb53392002)
-
-Related: #1111199
----
- src/shared/conf-files.c  | 10 +++-------
- src/shared/path-lookup.c |  6 +++---
- src/shared/path-util.c   | 29 +++++++++++++++++++----------
- src/shared/path-util.h   |  4 ++--
- src/shared/util.c        |  2 +-
- src/udev/udev-rules.c    |  2 +-
- 6 files changed, 29 insertions(+), 24 deletions(-)
-
-diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
-index ed4070c..3d5b1df 100644
---- a/src/shared/conf-files.c
-+++ b/src/shared/conf-files.c
-@@ -37,12 +37,8 @@
- #include "hashmap.h"
- #include "conf-files.h"
- 
--static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) {
-+static int files_add(Hashmap *h, const char *dirpath, const char *suffix) {
-         _cleanup_closedir_ DIR *dir = NULL;
--        _cleanup_free_ char *dirpath = NULL;
--
--        if (asprintf(&dirpath, "%s%s", root ? root : "", path) < 0)
--                return -ENOMEM;
- 
-         dir = opendir(dirpath);
-         if (!dir) {
-@@ -104,7 +100,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
-         assert(suffix);
- 
-         /* This alters the dirs string array */
--        if (!path_strv_canonicalize_uniq(dirs))
-+        if (!path_strv_canonicalize_absolute_uniq(dirs, root))
-                 return -ENOMEM;
- 
-         fh = hashmap_new(string_hash_func, string_compare_func);
-@@ -112,7 +108,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
-                 return -ENOMEM;
- 
-         STRV_FOREACH(p, dirs) {
--                r = files_add(fh, root, *p, suffix);
-+                r = files_add(fh, *p, suffix);
-                 if (r == -ENOMEM) {
-                         hashmap_free_free(fh);
-                         return r;
-diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
-index 1a47ea9..03c1380 100644
---- a/src/shared/path-lookup.c
-+++ b/src/shared/path-lookup.c
-@@ -316,7 +316,7 @@ int lookup_paths_init(
-                 }
-         }
- 
--        if (!path_strv_canonicalize(p->unit_path))
-+        if (!path_strv_canonicalize_absolute(p->unit_path, NULL))
-                 return -ENOMEM;
- 
-         strv_uniq(p->unit_path);
-@@ -372,10 +372,10 @@ int lookup_paths_init(
-                                 return -ENOMEM;
-                 }
- 
--                if (!path_strv_canonicalize(p->sysvinit_path))
-+                if (!path_strv_canonicalize_absolute(p->sysvinit_path, NULL))
-                         return -ENOMEM;
- 
--                if (!path_strv_canonicalize(p->sysvrcnd_path))
-+                if (!path_strv_canonicalize_absolute(p->sysvrcnd_path, NULL))
-                         return -ENOMEM;
- 
-                 strv_uniq(p->sysvinit_path);
-diff --git a/src/shared/path-util.c b/src/shared/path-util.c
-index 45099ee..de291a5 100644
---- a/src/shared/path-util.c
-+++ b/src/shared/path-util.c
-@@ -165,7 +165,7 @@ char **path_strv_make_absolute_cwd(char **l) {
-         return l;
- }
- 
--char **path_strv_canonicalize(char **l) {
-+char **path_strv_canonicalize_absolute(char **l, const char *prefix) {
-         char **s;
-         unsigned k = 0;
-         bool enomem = false;
-@@ -180,13 +180,21 @@ char **path_strv_canonicalize(char **l) {
-         STRV_FOREACH(s, l) {
-                 char *t, *u;
- 
--                t = path_make_absolute_cwd(*s);
--                free(*s);
--                *s = NULL;
--
--                if (!t) {
--                        enomem = true;
-+                if (!path_is_absolute(*s))
-                         continue;
-+
-+                if (prefix) {
-+                        t = strappend(prefix, *s);
-+                        free(*s);
-+                        *s = NULL;
-+
-+                        if (!t) {
-+                                enomem = true;
-+                                continue;
-+                        }
-+                } else {
-+                        t = *s;
-+                        *s = NULL;
-                 }
- 
-                 errno = 0;
-@@ -196,7 +204,7 @@ char **path_strv_canonicalize(char **l) {
-                                 u = t;
-                         else {
-                                 free(t);
--                                if (errno == ENOMEM || !errno)
-+                                if (errno == ENOMEM || errno == 0)
-                                         enomem = true;
- 
-                                 continue;
-@@ -215,11 +223,12 @@ char **path_strv_canonicalize(char **l) {
-         return l;
- }
- 
--char **path_strv_canonicalize_uniq(char **l) {
-+char **path_strv_canonicalize_absolute_uniq(char **l, const char *prefix) {
-+
-         if (strv_isempty(l))
-                 return l;
- 
--        if (!path_strv_canonicalize(l))
-+        if (!path_strv_canonicalize_absolute(l, prefix))
-                 return NULL;
- 
-         return strv_uniq(l);
-diff --git a/src/shared/path-util.h b/src/shared/path-util.h
-index 0a42de7..c69cd1f 100644
---- a/src/shared/path-util.h
-+++ b/src/shared/path-util.h
-@@ -43,8 +43,8 @@ char* path_startswith(const char *path, const char *prefix) _pure_;
- bool path_equal(const char *a, const char *b) _pure_;
- 
- char** path_strv_make_absolute_cwd(char **l);
--char** path_strv_canonicalize(char **l);
--char** path_strv_canonicalize_uniq(char **l);
-+char** path_strv_canonicalize_absolute(char **l, const char *prefix);
-+char** path_strv_canonicalize_absolute_uniq(char **l, const char *prefix);
- 
- int path_is_mount_point(const char *path, bool allow_symlink);
- int path_is_read_only_fs(const char *path);
-diff --git a/src/shared/util.c b/src/shared/util.c
-index fb1e6d1..a5163fb 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -5681,7 +5681,7 @@ static int search_and_fopen_internal(const char *path, const char *mode, char **
-         assert(mode);
-         assert(_f);
- 
--        if (!path_strv_canonicalize_uniq(search))
-+        if (!path_strv_canonicalize_absolute_uniq(search, NULL))
-                 return -ENOMEM;
- 
-         STRV_FOREACH(i, search) {
-diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
-index 6f8b127..9092b08 100644
---- a/src/udev/udev-rules.c
-+++ b/src/udev/udev-rules.c
-@@ -1630,7 +1630,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names)
-                 log_error("failed to build config directory array");
-                 return udev_rules_unref(rules);
-         }
--        if (!path_strv_canonicalize(rules->dirs)) {
-+        if (!path_strv_canonicalize_absolute(rules->dirs, NULL)) {
-                 log_error("failed to canonicalize config directories\n");
-                 return udev_rules_unref(rules);
-         }
diff --git a/SOURCES/0261-shared-add-root-argument-to-search_and_fopen.patch b/SOURCES/0261-shared-add-root-argument-to-search_and_fopen.patch
deleted file mode 100644
index a9c965e..0000000
--- a/SOURCES/0261-shared-add-root-argument-to-search_and_fopen.patch
+++ /dev/null
@@ -1,144 +0,0 @@
-From 123a76e6190cb2a4669d39e12983f46e27b11163 Mon Sep 17 00:00:00 2001
-From: Michael Marineau <michael.marineau@coreos.com>
-Date: Thu, 13 Mar 2014 21:32:12 -0700
-Subject: [PATCH] shared: add root argument to search_and_fopen
-
-This adds the same root argument to search_and_fopen that
-conf_files_list already has. Tools that use those two functions as a
-pair can now be easily modified to load configuration files from an
-alternate root filesystem tree.
-
-Conflicts:
-	src/shared/util.h
-
-(cherry picked from commit 4cf7ea556aa1e74f9b34d4467f36d46a1bb25da3)
-
-Related: #1111199
----
- src/binfmt/binfmt.c             |  2 +-
- src/modules-load/modules-load.c |  2 +-
- src/shared/util.c               | 12 ++++++------
- src/shared/util.h               |  4 ++--
- src/sysctl/sysctl.c             |  2 +-
- src/tmpfiles/tmpfiles.c         |  2 +-
- 6 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c
-index 5a42b3d..3fff89a 100644
---- a/src/binfmt/binfmt.c
-+++ b/src/binfmt/binfmt.c
-@@ -85,7 +85,7 @@ static int apply_file(const char *path, bool ignore_enoent) {
- 
-         assert(path);
- 
--        r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
-+        r = search_and_fopen_nulstr(path, "re", NULL, conf_file_dirs, &f);
-         if (r < 0) {
-                 if (ignore_enoent && r == -ENOENT)
-                         return 0;
-diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
-index 49ee420..cba7c55 100644
---- a/src/modules-load/modules-load.c
-+++ b/src/modules-load/modules-load.c
-@@ -181,7 +181,7 @@ static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent
-         assert(ctx);
-         assert(path);
- 
--        r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
-+        r = search_and_fopen_nulstr(path, "re", NULL, conf_file_dirs, &f);
-         if (r < 0) {
-                 if (ignore_enoent && r == -ENOENT)
-                         return 0;
-diff --git a/src/shared/util.c b/src/shared/util.c
-index a5163fb..e313ea9 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -5674,14 +5674,14 @@ int on_ac_power(void) {
-         return found_online || !found_offline;
- }
- 
--static int search_and_fopen_internal(const char *path, const char *mode, char **search, FILE **_f) {
-+static int search_and_fopen_internal(const char *path, const char *mode, const char *root, char **search, FILE **_f) {
-         char **i;
- 
-         assert(path);
-         assert(mode);
-         assert(_f);
- 
--        if (!path_strv_canonicalize_absolute_uniq(search, NULL))
-+        if (!path_strv_canonicalize_absolute_uniq(search, root))
-                 return -ENOMEM;
- 
-         STRV_FOREACH(i, search) {
-@@ -5705,7 +5705,7 @@ static int search_and_fopen_internal(const char *path, const char *mode, char **
-         return -ENOENT;
- }
- 
--int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f) {
-+int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f) {
-         _cleanup_strv_free_ char **copy = NULL;
- 
-         assert(path);
-@@ -5728,10 +5728,10 @@ int search_and_fopen(const char *path, const char *mode, const char **search, FI
-         if (!copy)
-                 return -ENOMEM;
- 
--        return search_and_fopen_internal(path, mode, copy, _f);
-+        return search_and_fopen_internal(path, mode, root, copy, _f);
- }
- 
--int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f) {
-+int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f) {
-         _cleanup_strv_free_ char **s = NULL;
- 
-         if (path_is_absolute(path)) {
-@@ -5750,7 +5750,7 @@ int search_and_fopen_nulstr(const char *path, const char *mode, const char *sear
-         if (!s)
-                 return -ENOMEM;
- 
--        return search_and_fopen_internal(path, mode, s, _f);
-+        return search_and_fopen_internal(path, mode, root, s, _f);
- }
- 
- int create_tmp_dir(char template[], char** dir_name) {
-diff --git a/src/shared/util.h b/src/shared/util.h
-index d11fa07..3f30917 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -628,8 +628,8 @@ char *strip_tab_ansi(char **p, size_t *l);
- 
- int on_ac_power(void);
- 
--int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f);
--int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f);
-+int search_and_fopen(const char *path, const char *mode, const char *root, const char **search, FILE **_f);
-+int search_and_fopen_nulstr(const char *path, const char *mode, const char *root, const char *search, FILE **_f);
- int create_tmp_dir(char template[], char** dir_name);
- 
- #define FOREACH_LINE(line, f, on_error)                         \
-diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
-index 878c923..a9d4d53 100644
---- a/src/sysctl/sysctl.c
-+++ b/src/sysctl/sysctl.c
-@@ -123,7 +123,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno
- 
-         assert(path);
- 
--        r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f);
-+        r = search_and_fopen_nulstr(path, "re", NULL, conf_file_dirs, &f);
-         if (r < 0) {
-                 if (ignore_enoent && r == -ENOENT)
-                         return 0;
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 309fa07..32f9088 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -1368,7 +1368,7 @@ static int read_config_file(const char *fn, bool ignore_enoent) {
- 
-         assert(fn);
- 
--        r = search_and_fopen_nulstr(fn, "re", conf_file_dirs, &f);
-+        r = search_and_fopen_nulstr(fn, "re", NULL, conf_file_dirs, &f);
-         if (r < 0) {
-                 if (ignore_enoent && r == -ENOENT)
-                         return 0;
diff --git a/SOURCES/0262-machine-id-add-root-option-to-operate-on-an-alternat.patch b/SOURCES/0262-machine-id-add-root-option-to-operate-on-an-alternat.patch
deleted file mode 100644
index 08ff1fd..0000000
--- a/SOURCES/0262-machine-id-add-root-option-to-operate-on-an-alternat.patch
+++ /dev/null
@@ -1,264 +0,0 @@
-From 99c06d718c91c91d0992869777c15b457f95443a Mon Sep 17 00:00:00 2001
-From: Greg KH <gregkh@linuxfoundation.org>
-Date: Fri, 14 Mar 2014 04:43:04 +0000
-Subject: [PATCH] machine-id: add --root option to operate on an alternate fs
- tree
-
-This makes it possible to initialize the /etc/machine-id file on an
-arbitrary filesystem hierarchy.  This helps systems that wish to run
-this at image creation time in a subdirectory, or from initramfs before
-pivot-root is called.
-
-[tomegun: converted to using _cleanup_free_ macros]
-
-Conflicts:
-	man/systemd-machine-id-setup.xml
-	src/machine-id-setup/machine-id-setup-main.c
-
-(cherry picked from commit 92f2f92edcad46ce4098ee26504edca0a1dad68e)
-
-Related: #1111199
----
- man/systemd-machine-id-setup.xml             | 23 +++++++--------
- src/core/machine-id-setup.c                  | 44 ++++++++++++++++++----------
- src/core/machine-id-setup.h                  |  2 +-
- src/core/main.c                              |  2 +-
- src/machine-id-setup/machine-id-setup-main.c | 17 ++++++++---
- 5 files changed, 53 insertions(+), 35 deletions(-)
-
-diff --git a/man/systemd-machine-id-setup.xml b/man/systemd-machine-id-setup.xml
-index 7b3aa7e..b879b40 100644
---- a/man/systemd-machine-id-setup.xml
-+++ b/man/systemd-machine-id-setup.xml
-@@ -21,7 +21,8 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- -->
- 
--<refentry id="systemd-machine-id-setup">
-+<refentry id="systemd-machine-id-setup"
-+          xmlns:xi="http://www.w3.org/2001/XInclude">
- 
-         <refentryinfo>
-                 <title>systemd-machine-id-setup</title>
-@@ -96,19 +97,15 @@
- 
-                 <variablelist>
-                         <varlistentry>
--                                <term><option>-h</option></term>
--                                <term><option>--help</option></term>
--
--                                <listitem><para>Prints a short help
--                                text and exits.</para></listitem>
--                        </varlistentry>
--
--                        <varlistentry>
--                                <term><option>--version</option></term>
--
--                                <listitem><para>Prints a short version
--                                string and exits.</para></listitem>
-+                                <term><option>--root=ROOT</option></term>
-+                                <listitem><para>Takes a directory path
-+                                as an argument. All paths will be
-+                                prefixed with the given alternate ROOT
-+                                path, including config search paths.
-+                                </para></listitem>
-                         </varlistentry>
-+                        <xi:include href="standard-options.xml" xpointer="help" />
-+                        <xi:include href="standard-options.xml" xpointer="version" />
-                 </variablelist>
- 
-         </refsect1>
-diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
-index 18e015f..291930e 100644
---- a/src/core/machine-id-setup.c
-+++ b/src/core/machine-id-setup.c
-@@ -59,18 +59,22 @@ static int shorten_uuid(char destination[36], const char *source) {
-         return -EINVAL;
- }
- 
--static int generate(char id[34]) {
-+static int generate(char id[34], const char *root) {
-         int fd, r;
-         unsigned char *p;
-         sd_id128_t buf;
-         char *q;
-         ssize_t k;
-         const char *vm_id;
-+        _cleanup_free_ char *dbus_machine_id = NULL;
- 
-         assert(id);
- 
-+        if (asprintf(&dbus_machine_id, "%s/var/lib/dbus/machine-id", root) < 0)
-+                return log_oom();
-+
-         /* First, try reading the D-Bus machine id, unless it is a symlink */
--        fd = open("/var/lib/dbus/machine-id", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
-+        fd = open(dbus_machine_id, O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
-         if (fd >= 0) {
-                 k = loop_read(fd, id, 33, false);
-                 close_nointr_nofail(fd);
-@@ -150,12 +154,20 @@ static int generate(char id[34]) {
-         return 0;
- }
- 
--int machine_id_setup(void) {
-+int machine_id_setup(const char *root) {
-         _cleanup_close_ int fd = -1;
-         int r;
-         bool writable;
-         struct stat st;
-         char id[34]; /* 32 + \n + \0 */
-+        _cleanup_free_ char *etc_machine_id = NULL;
-+        _cleanup_free_ char *run_machine_id = NULL;
-+
-+        if (asprintf(&etc_machine_id, "%s/etc/machine-id", root) < 0)
-+                return log_oom();
-+
-+        if (asprintf(&run_machine_id, "%s/run/machine-id", root) < 0)
-+                return log_oom();
- 
-         RUN_WITH_UMASK(0000) {
-                 /* We create this 0444, to indicate that this isn't really
-@@ -163,13 +175,13 @@ int machine_id_setup(void) {
-                  * will be owned by root it doesn't matter much, but maybe
-                  * people look. */
- 
--                fd = open("/etc/machine-id", O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 0444);
-+                fd = open(etc_machine_id, O_RDWR|O_CREAT|O_CLOEXEC|O_NOCTTY, 0444);
-                 if (fd >= 0)
-                         writable = true;
-                 else {
--                        fd = open("/etc/machine-id", O_RDONLY|O_CLOEXEC|O_NOCTTY);
-+                        fd = open(etc_machine_id, O_RDONLY|O_CLOEXEC|O_NOCTTY);
-                         if (fd < 0) {
--                                log_error("Cannot open /etc/machine-id: %m");
-+                                log_error("Cannot open %s: %m", etc_machine_id);
-                                 return -errno;
-                         }
- 
-@@ -193,7 +205,7 @@ int machine_id_setup(void) {
-         /* Hmm, so, the id currently stored is not useful, then let's
-          * generate one */
- 
--        r = generate(id);
-+        r = generate(id, root);
-         if (r < 0)
-                 return r;
- 
-@@ -211,27 +223,27 @@ int machine_id_setup(void) {
-          * /run/machine-id as a replacement */
- 
-         RUN_WITH_UMASK(0022) {
--                r = write_string_file("/run/machine-id", id);
-+                r = write_string_file(run_machine_id, id);
-         }
-         if (r < 0) {
--                log_error("Cannot write /run/machine-id: %s", strerror(-r));
--                unlink("/run/machine-id");
-+                log_error("Cannot write %s: %s", run_machine_id, strerror(-r));
-+                unlink(run_machine_id);
-                 return r;
-         }
- 
-         /* And now, let's mount it over */
--        r = mount("/run/machine-id", "/etc/machine-id", NULL, MS_BIND, NULL);
-+        r = mount(run_machine_id, etc_machine_id, NULL, MS_BIND, NULL);
-         if (r < 0) {
--                log_error("Failed to mount /etc/machine-id: %m");
--                unlink_noerrno("/run/machine-id");
-+                log_error("Failed to mount %s: %m", etc_machine_id);
-+                unlink_noerrno(run_machine_id);
-                 return -errno;
-         }
- 
--        log_info("Installed transient /etc/machine-id file.");
-+        log_info("Installed transient %s file.", etc_machine_id);
- 
-         /* Mark the mount read-only */
--        if (mount(NULL, "/etc/machine-id", NULL, MS_BIND|MS_RDONLY|MS_REMOUNT, NULL) < 0)
--                log_warning("Failed to make transient /etc/machine-id read-only: %m");
-+        if (mount(NULL, etc_machine_id, NULL, MS_BIND|MS_RDONLY|MS_REMOUNT, NULL) < 0)
-+                log_warning("Failed to make transient %s read-only: %m", etc_machine_id);
- 
-         return 0;
- }
-diff --git a/src/core/machine-id-setup.h b/src/core/machine-id-setup.h
-index b9e6b4d..b0583ee 100644
---- a/src/core/machine-id-setup.h
-+++ b/src/core/machine-id-setup.h
-@@ -21,4 +21,4 @@
-   along with systemd; If not, see <http://www.gnu.org/licenses/>.
- ***/
- 
--int machine_id_setup(void);
-+int machine_id_setup(const char *root);
-diff --git a/src/core/main.c b/src/core/main.c
-index 00fd394..afd5f6f 100644
---- a/src/core/main.c
-+++ b/src/core/main.c
-@@ -1503,7 +1503,7 @@ int main(int argc, char *argv[]) {
-                 kmod_setup();
- #endif
-                 hostname_setup();
--                machine_id_setup();
-+                machine_id_setup("");
-                 loopback_setup();
- 
-                 test_mtab();
-diff --git a/src/machine-id-setup/machine-id-setup-main.c b/src/machine-id-setup/machine-id-setup-main.c
-index eb2d514..f4dc705 100644
---- a/src/machine-id-setup/machine-id-setup-main.c
-+++ b/src/machine-id-setup/machine-id-setup-main.c
-@@ -29,12 +29,15 @@
- #include "log.h"
- #include "build.h"
- 
-+static const char *arg_root = "";
-+
- static int help(void) {
- 
-         printf("%s [OPTIONS...]\n\n"
-                "Initialize /etc/machine-id from a random source.\n\n"
-                "  -h --help             Show this help\n"
--               "     --version          Show package version\n",
-+               "     --version          Show package version\n"
-+               "     --root             Filesystem root\n",
-                program_invocation_short_name);
- 
-         return 0;
-@@ -43,13 +46,15 @@ static int help(void) {
- static int parse_argv(int argc, char *argv[]) {
- 
-         enum {
--                ARG_VERSION = 0x100
-+                ARG_VERSION = 0x100,
-+                ARG_ROOT,
-         };
- 
-         static const struct option options[] = {
-                 { "help",      no_argument,       NULL, 'h'           },
-                 { "version",   no_argument,       NULL, ARG_VERSION   },
--                { NULL,        0,                 NULL, 0             }
-+                { "root",      required_argument, NULL, ARG_ROOT      },
-+                {}
-         };
- 
-         int c;
-@@ -70,6 +75,10 @@ static int parse_argv(int argc, char *argv[]) {
-                         puts(SYSTEMD_FEATURES);
-                         return 0;
- 
-+                case ARG_ROOT:
-+                        arg_root = optarg;
-+                        break;
-+
-                 case '?':
-                         return -EINVAL;
- 
-@@ -97,5 +106,5 @@ int main(int argc, char *argv[]) {
-         if (r <= 0)
-                 return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
- 
--        return machine_id_setup() < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
-+        return machine_id_setup(arg_root) < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
- }
diff --git a/SOURCES/0263-conf-files-fix-when-for-root-logic.patch b/SOURCES/0263-conf-files-fix-when-for-root-logic.patch
deleted file mode 100644
index ac43e75..0000000
--- a/SOURCES/0263-conf-files-fix-when-for-root-logic.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From b5f15b581d886a332de50512c0fe75d1acc0c1ee Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 17 Jun 2014 01:56:44 +0200
-Subject: [PATCH] conf-files: fix when for --root= logic
-
-This is based on parts of similar patches from Michael Marineau and
-Lukas Nykryn, but simply uses strappenda3().
-
-(cherry picked from commit cebed5005b5ede17fc52ab50c054fca73bc938b8)
-
-Related: #1111199
----
- src/shared/conf-files.c | 16 +++++++++++++---
- 1 file changed, 13 insertions(+), 3 deletions(-)
-
-diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
-index 3d5b1df..4ec8bed 100644
---- a/src/shared/conf-files.c
-+++ b/src/shared/conf-files.c
-@@ -37,10 +37,20 @@
- #include "hashmap.h"
- #include "conf-files.h"
- 
--static int files_add(Hashmap *h, const char *dirpath, const char *suffix) {
-+static int files_add(Hashmap *h, const char *dirpath, const char *suffix, const char *root) {
-         _cleanup_closedir_ DIR *dir = NULL;
- 
--        dir = opendir(dirpath);
-+        assert(dirpath);
-+        assert(suffix);
-+
-+        if (isempty(root))
-+                dir = opendir(dirpath);
-+        else {
-+                const char *p;
-+
-+                p = strappenda3(root, "/", dirpath);
-+                dir = opendir(p);
-+        }
-         if (!dir) {
-                 if (errno == ENOENT)
-                         return 0;
-@@ -108,7 +118,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
-                 return -ENOMEM;
- 
-         STRV_FOREACH(p, dirs) {
--                r = files_add(fh, *p, suffix);
-+                r = files_add(fh, *p, suffix, root);
-                 if (r == -ENOMEM) {
-                         hashmap_free_free(fh);
-                         return r;
diff --git a/SOURCES/0264-Make-systemctl-root-look-for-files-in-the-proper-pla.patch b/SOURCES/0264-Make-systemctl-root-look-for-files-in-the-proper-pla.patch
deleted file mode 100644
index 1922225..0000000
--- a/SOURCES/0264-Make-systemctl-root-look-for-files-in-the-proper-pla.patch
+++ /dev/null
@@ -1,341 +0,0 @@
-From 022406c6dcaa5e9201a30b95f3e86328739e3892 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 24 Apr 2014 01:44:10 -0400
-Subject: [PATCH] Make systemctl --root look for files in the proper places
-
-Running systemctl enable/disable/set-default/... with the --root
-option under strace reveals that it accessed various files and
-directories in the main fs, and not underneath the specified root.
-This can lead to correct results only when the layout and
-configuration in the container are identical, which often is not the
-case. Fix this by adding the specified root to all file access
-operations.
-
-This patch does not handle some corner cases: symlinks which point
-outside of the specified root might be interpreted differently than
-they would be by the kernel if the specified root was the real root.
-But systemctl does not create such symlinks by itself, and I think
-this is enough of a corner case not to be worth the additional
-complexity of reimplementing link chasing in systemd.
-
-Also, simplify the code in a few places and remove an hypothetical
-memory leak on error.
-
-Conflicts:
-	TODO
-	src/shared/install.c
-
-(cherry picked from commit 12ed81d9c88406234c20e9261ae8c8b992d8bc4d)
-
-Related: #1111199
----
- src/core/manager.c        |  2 ++
- src/shared/install.c      | 34 +++++++++++++++++++++-----------
- src/shared/path-lookup.c  | 12 ++++--------
- src/shared/path-lookup.h  |  8 +++++++-
- src/shared/path-util.c    | 49 ++++++++++++++++++++++++++++++++++++-----------
- src/systemctl/systemctl.c |  2 +-
- 6 files changed, 75 insertions(+), 32 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index 57a88b0..a2810b4 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -891,6 +891,7 @@ int manager_startup(Manager *m, FILE *serialization, FDSet *fds) {
- 
-         r = lookup_paths_init(
-                         &m->lookup_paths, m->running_as, true,
-+                        NULL,
-                         m->generator_unit_path,
-                         m->generator_unit_path_early,
-                         m->generator_unit_path_late);
-@@ -2383,6 +2384,7 @@ int manager_reload(Manager *m) {
- 
-         q = lookup_paths_init(
-                         &m->lookup_paths, m->running_as, true,
-+                        NULL,
-                         m->generator_unit_path,
-                         m->generator_unit_path_early,
-                         m->generator_unit_path_late);
-diff --git a/src/shared/install.c b/src/shared/install.c
-index b9c85b7..672dcc2 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -47,7 +47,9 @@ typedef struct {
- #define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free)
- #define _cleanup_install_context_done_ _cleanup_(install_context_done)
- 
--static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope) {
-+static int lookup_paths_init_from_scope(LookupPaths *paths,
-+                                        UnitFileScope scope,
-+                                        const char *root_dir) {
-         assert(paths);
-         assert(scope >= 0);
-         assert(scope < _UNIT_FILE_SCOPE_MAX);
-@@ -57,6 +59,7 @@ static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope)
-         return lookup_paths_init(paths,
-                                  scope == UNIT_FILE_SYSTEM ? SYSTEMD_SYSTEM : SYSTEMD_USER,
-                                  scope == UNIT_FILE_USER,
-+                                 root_dir,
-                                  NULL, NULL, NULL);
- }
- 
-@@ -705,7 +708,7 @@ int unit_file_link(
-         assert(scope >= 0);
-         assert(scope < _UNIT_FILE_SCOPE_MAX);
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-@@ -1476,7 +1479,7 @@ int unit_file_enable(
-         assert(scope >= 0);
-         assert(scope < _UNIT_FILE_SCOPE_MAX);
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-@@ -1516,7 +1519,7 @@ int unit_file_disable(
-         assert(scope >= 0);
-         assert(scope < _UNIT_FILE_SCOPE_MAX);
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-@@ -1578,7 +1581,7 @@ int unit_file_set_default(
-         if (unit_name_to_type(file) != UNIT_TARGET)
-                 return -EINVAL;
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-@@ -1613,7 +1616,11 @@ int unit_file_get_default(
-         char **p;
-         int r;
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        assert(scope >= 0);
-+        assert(scope < _UNIT_FILE_SCOPE_MAX);
-+        assert(name);
-+
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-@@ -1665,12 +1672,13 @@ UnitFileState unit_file_get_state(
-         if (!unit_name_is_valid(name, true))
-                 return -EINVAL;
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-         STRV_FOREACH(i, paths.unit_path) {
-                 struct stat st;
-+                char *partial;
- 
-                 free(path);
-                 path = NULL;
-@@ -1679,10 +1687,14 @@ UnitFileState unit_file_get_state(
-                         asprintf(&path, "%s/%s/%s", root_dir, *i, name);
-                 else
-                         asprintf(&path, "%s/%s", *i, name);
--
-                 if (!path)
-                         return -ENOMEM;
- 
-+                if (root_dir)
-+                        partial = path + strlen(root_dir) + 1;
-+                else
-+                        partial = path;
-+
-                 /*
-                  * Search for a unit file in our default paths, to
-                  * be sure, that there are no broken symlinks.
-@@ -1714,7 +1726,7 @@ UnitFileState unit_file_get_state(
-                 else if (r > 0)
-                         return state;
- 
--                r = unit_file_can_install(&paths, root_dir, path, true);
-+                r = unit_file_can_install(&paths, root_dir, partial, true);
-                 if (r < 0 && errno != ENOENT)
-                         return r;
-                 else if (r > 0)
-@@ -1822,7 +1834,7 @@ int unit_file_preset(
-         assert(scope >= 0);
-         assert(scope < _UNIT_FILE_SCOPE_MAX);
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-@@ -1891,7 +1903,7 @@ int unit_file_get_list(
-         if (root_dir && scope != UNIT_FILE_SYSTEM)
-                 return -EINVAL;
- 
--        r = lookup_paths_init_from_scope(&paths, scope);
-+        r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
- 
-diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c
-index 03c1380..b62f302 100644
---- a/src/shared/path-lookup.c
-+++ b/src/shared/path-lookup.c
-@@ -239,6 +239,7 @@ int lookup_paths_init(
-                 LookupPaths *p,
-                 SystemdRunningAs running_as,
-                 bool personal,
-+                const char *root_dir,
-                 const char *generator,
-                 const char *generator_early,
-                 const char *generator_late) {
-@@ -316,11 +317,9 @@ int lookup_paths_init(
-                 }
-         }
- 
--        if (!path_strv_canonicalize_absolute(p->unit_path, NULL))
-+        if (!path_strv_canonicalize_absolute_uniq(p->unit_path, root_dir))
-                 return -ENOMEM;
- 
--        strv_uniq(p->unit_path);
--
-         if (!strv_isempty(p->unit_path)) {
-                 _cleanup_free_ char *t = strv_join(p->unit_path, "\n\t");
-                 if (!t)
-@@ -372,15 +371,12 @@ int lookup_paths_init(
-                                 return -ENOMEM;
-                 }
- 
--                if (!path_strv_canonicalize_absolute(p->sysvinit_path, NULL))
-+                if (!path_strv_canonicalize_absolute_uniq(p->sysvinit_path, root_dir))
-                         return -ENOMEM;
- 
--                if (!path_strv_canonicalize_absolute(p->sysvrcnd_path, NULL))
-+                if (!path_strv_canonicalize_absolute_uniq(p->sysvrcnd_path, root_dir))
-                         return -ENOMEM;
- 
--                strv_uniq(p->sysvinit_path);
--                strv_uniq(p->sysvrcnd_path);
--
-                 if (!strv_isempty(p->sysvinit_path)) {
-                         _cleanup_free_ char *t = strv_join(p->sysvinit_path, "\n\t");
-                         if (!t)
-diff --git a/src/shared/path-lookup.h b/src/shared/path-lookup.h
-index 9dee85f..0db9bfb 100644
---- a/src/shared/path-lookup.h
-+++ b/src/shared/path-lookup.h
-@@ -41,5 +41,11 @@ SystemdRunningAs systemd_running_as_from_string(const char *s) _pure_;
- 
- int user_config_home(char **config_home);
- 
--int lookup_paths_init(LookupPaths *p, SystemdRunningAs running_as, bool personal, const char *generator, const char *generator_early, const char *generator_late);
-+int lookup_paths_init(LookupPaths *p,
-+                      SystemdRunningAs running_as,
-+                      bool personal,
-+                      const char *root_dir,
-+                      const char *generator,
-+                      const char *generator_early,
-+                      const char *generator_late);
- void lookup_paths_free(LookupPaths *p);
-diff --git a/src/shared/path-util.c b/src/shared/path-util.c
-index de291a5..0aa5d61 100644
---- a/src/shared/path-util.c
-+++ b/src/shared/path-util.c
-@@ -179,36 +179,63 @@ char **path_strv_canonicalize_absolute(char **l, const char *prefix) {
- 
-         STRV_FOREACH(s, l) {
-                 char *t, *u;
-+                _cleanup_free_ char *orig = NULL;
- 
--                if (!path_is_absolute(*s))
-+                if (!path_is_absolute(*s)) {
-+                        free(*s);
-                         continue;
-+                }
- 
-                 if (prefix) {
--                        t = strappend(prefix, *s);
--                        free(*s);
--                        *s = NULL;
--
-+                        orig = *s;
-+                        t = strappend(prefix, orig);
-                         if (!t) {
-                                 enomem = true;
-                                 continue;
-                         }
--                } else {
-+                } else
-                         t = *s;
--                        *s = NULL;
--                }
- 
-                 errno = 0;
-                 u = canonicalize_file_name(t);
-                 if (!u) {
--                        if (errno == ENOENT)
--                                u = t;
--                        else {
-+                        if (errno == ENOENT) {
-+                                if (prefix) {
-+                                        u = orig;
-+                                        orig = NULL;
-+                                        free(t);
-+                                } else
-+                                        u = t;
-+                        } else {
-                                 free(t);
-                                 if (errno == ENOMEM || errno == 0)
-                                         enomem = true;
- 
-                                 continue;
-                         }
-+                } else if (prefix) {
-+                        char *x;
-+
-+                        free(t);
-+                        x = path_startswith(u, prefix);
-+                        if (x) {
-+                                /* restore the slash if it was lost */
-+                                if (!startswith(x, "/"))
-+                                        *(--x) = '/';
-+
-+                                t = strdup(x);
-+                                free(u);
-+                                if (!t) {
-+                                        enomem = true;
-+                                        continue;
-+                                }
-+                                u = t;
-+                        } else {
-+                                /* canonicalized path goes outside of
-+                                 * prefix, keep the original path instead */
-+                                u = orig;
-+                                orig = NULL;
-+                        }
-                 } else
-                         free(t);
- 
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index 1ca4fd3..1cbcd20 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -4258,7 +4258,7 @@ static int enable_sysv_units(const char *verb, char **args) {
-         /* Processes all SysV units, and reshuffles the array so that
-          * afterwards only the native units remain */
- 
--        r = lookup_paths_init(&paths, SYSTEMD_SYSTEM, false, NULL, NULL, NULL);
-+        r = lookup_paths_init(&paths, SYSTEMD_SYSTEM, false, arg_root, NULL, NULL, NULL);
-         if (r < 0)
-                 return r;
- 
diff --git a/SOURCES/0265-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch b/SOURCES/0265-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch
deleted file mode 100644
index edeb5cf..0000000
--- a/SOURCES/0265-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 0ec33b41e2fddd714851b444d85c4bd8a4fae879 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 30 Jan 2014 21:40:27 -0500
-Subject: [PATCH] tmpfiles: fix memory leak of exclude_prefixes
-
-Missed in 5c795114.
-
-(cherry picked from commit 498f8a39e66a62d015ac78e67e2504658bbba5f2)
-
-Related: #1111199
----
- src/tmpfiles/tmpfiles.c | 7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 32f9088..1337d02 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -1332,12 +1332,12 @@ static int parse_argv(int argc, char *argv[]) {
-                         break;
- 
-                 case ARG_PREFIX:
--                        if (strv_extend(&include_prefixes, optarg) < 0)
-+                        if (strv_push(&include_prefixes, optarg) < 0)
-                                 return log_oom();
-                         break;
- 
-                 case ARG_EXCLUDE_PREFIX:
--                        if (strv_extend(&exclude_prefixes, optarg) < 0)
-+                        if (strv_push(&exclude_prefixes, optarg) < 0)
-                                 return log_oom();
-                         break;
- 
-@@ -1498,7 +1498,8 @@ finish:
-         hashmap_free(items);
-         hashmap_free(globs);
- 
--        strv_free(include_prefixes);
-+        free(include_prefixes);
-+        free(exclude_prefixes);
- 
-         set_free_free(unix_sockets);
- 
diff --git a/SOURCES/0266-tmpfiles-add-root-option-to-operate-on-an-alternate-.patch b/SOURCES/0266-tmpfiles-add-root-option-to-operate-on-an-alternate-.patch
deleted file mode 100644
index 7210d8b..0000000
--- a/SOURCES/0266-tmpfiles-add-root-option-to-operate-on-an-alternate-.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From 14f32b5e62d7f0973302080488a0f0fce897b2d0 Mon Sep 17 00:00:00 2001
-From: Michael Marineau <michael.marineau@coreos.com>
-Date: Thu, 13 Mar 2014 21:32:13 -0700
-Subject: [PATCH] tmpfiles: add --root option to operate on an alternate fs
- tree
-
-This makes it possible to initialize or cleanup an arbitrary filesystem
-hierarchy in the same way that it would be during system boot.
-
-Conflicts:
-	src/tmpfiles/tmpfiles.c
-
-(cherry picked from commit cf9a4abdc24c43565d0890fcb88c00169057c0c4)
-
-Resolves: #1111199
----
- man/systemd-tmpfiles.xml | 12 ++++++++++--
- src/tmpfiles/tmpfiles.c  | 29 +++++++++++++++++++++++++----
- 2 files changed, 35 insertions(+), 6 deletions(-)
-
-diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml
-index 64f9cf9..8d1db16 100644
---- a/man/systemd-tmpfiles.xml
-+++ b/man/systemd-tmpfiles.xml
-@@ -139,19 +139,27 @@
-                                 </para></listitem>
-                         </varlistentry>
-                         <varlistentry>
--                                <term><option>--prefix=PATH</option></term>
-+                                <term><option>--prefix=<replaceable>path</replaceable></option></term>
-                                 <listitem><para>Only apply rules that
-                                 apply to paths with the specified
-                                 prefix. This option can be specified
-                                 multiple times.</para></listitem>
-                         </varlistentry>
-                         <varlistentry>
--                                <term><option>--exclude-prefix=PATH</option></term>
-+                                <term><option>--exclude-prefix=<replaceable>path</replaceable></option></term>
-                                 <listitem><para>Ignore rules that
-                                 apply to paths with the specified
-                                 prefix. This option can be specified
-                                 multiple times.</para></listitem>
-                         </varlistentry>
-+                        <varlistentry>
-+                                <term><option>--root=<replaceable>root</replaceable></option></term>
-+                                <listitem><para>Takes a directory path
-+                                as an argument. All paths will be
-+                                prefixed with the given alternate <replaceable>root</replaceable>
-+                                path, including config search paths.
-+                                </para></listitem>
-+                        </varlistentry>
- 
- 
-                         <varlistentry>
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index 1337d02..ff51062 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -110,6 +110,7 @@ static bool arg_boot = false;
- 
- static char **include_prefixes = NULL;
- static char **exclude_prefixes = NULL;
-+static char *arg_root = NULL;
- 
- static const char conf_file_dirs[] =
-         "/etc/tmpfiles.d\0"
-@@ -1186,6 +1187,15 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
-         if (!should_include_path(i->path))
-                 return 0;
- 
-+        if (arg_root) {
-+                char *p = strappend(arg_root, i->path);
-+                if (!p)
-+                        return log_oom();
-+
-+                free(i->path);
-+                i->path = p;
-+        }
-+
-         if (user && !streq(user, "-")) {
-                 const char *u = user;
- 
-@@ -1274,7 +1284,8 @@ static int help(void) {
-                "     --remove               Remove marked files/directories\n"
-                "     --boot                 Execute actions only safe at boot\n"
-                "     --prefix=PATH          Only apply rules that apply to paths with the specified prefix\n"
--               "     --exclude-prefix=PATH  Ignore rules that apply to paths with the specified prefix\n",
-+               "     --exclude-prefix=PATH  Ignore rules that apply to paths with the specified prefix\n"
-+               "     --root=PATH            Operate on an alternate filesystem root\n",
-                program_invocation_short_name);
- 
-         return 0;
-@@ -1289,6 +1300,7 @@ static int parse_argv(int argc, char *argv[]) {
-                 ARG_BOOT,
-                 ARG_PREFIX,
-                 ARG_EXCLUDE_PREFIX,
-+                ARG_ROOT,
-         };
- 
-         static const struct option options[] = {
-@@ -1299,7 +1311,8 @@ static int parse_argv(int argc, char *argv[]) {
-                 { "boot",           no_argument,         NULL, ARG_BOOT           },
-                 { "prefix",         required_argument,   NULL, ARG_PREFIX         },
-                 { "exclude-prefix", required_argument,   NULL, ARG_EXCLUDE_PREFIX },
--                { NULL,             0,                   NULL, 0                  }
-+                { "root",           required_argument,   NULL, ARG_ROOT           },
-+                {}
-         };
- 
-         int c;
-@@ -1341,6 +1354,13 @@ static int parse_argv(int argc, char *argv[]) {
-                                 return log_oom();
-                         break;
- 
-+                case ARG_ROOT:
-+                        arg_root = path_make_absolute_cwd(optarg);
-+                        if (!arg_root)
-+                                return log_oom();
-+                        path_kill_slashes(arg_root);
-+                        break;
-+
-                 case '?':
-                         return -EINVAL;
- 
-@@ -1368,7 +1388,7 @@ static int read_config_file(const char *fn, bool ignore_enoent) {
- 
-         assert(fn);
- 
--        r = search_and_fopen_nulstr(fn, "re", NULL, conf_file_dirs, &f);
-+        r = search_and_fopen_nulstr(fn, "re", arg_root, conf_file_dirs, &f);
-         if (r < 0) {
-                 if (ignore_enoent && r == -ENOENT)
-                         return 0;
-@@ -1469,7 +1489,7 @@ int main(int argc, char *argv[]) {
-                 _cleanup_strv_free_ char **files = NULL;
-                 char **f;
- 
--                r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
-+                r = conf_files_list_nulstr(&files, ".conf", arg_root, conf_file_dirs);
-                 if (r < 0) {
-                         log_error("Failed to enumerate tmpfiles.d files: %s", strerror(-r));
-                         goto finish;
-@@ -1500,6 +1520,7 @@ finish:
- 
-         free(include_prefixes);
-         free(exclude_prefixes);
-+        free(arg_root);
- 
-         set_free_free(unix_sockets);
- 
diff --git a/SOURCES/0267-conf-files-include-root-in-returned-file-paths.patch b/SOURCES/0267-conf-files-include-root-in-returned-file-paths.patch
deleted file mode 100644
index 21f7c01..0000000
--- a/SOURCES/0267-conf-files-include-root-in-returned-file-paths.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From c73f2c0db1e35c80ea3cff7b1eb2bece09be4793 Mon Sep 17 00:00:00 2001
-From: Michael Marineau <michael.marineau@coreos.com>
-Date: Thu, 19 Jun 2014 19:07:04 -0700
-Subject: [PATCH] conf-files: include root in returned file paths
-
-This restores the original root handling logic that was present prior to
-112cfb18 when path expansion moved to path_strv_canonicalize_absolute.
-That behavior partially went away in 12ed81d9.
-
-Alternatively all users of conf_files_list* could be updated to
-concatenate the paths themselves as unit_file_query_preset did but since
-no user needs the un-concatenated form that is pointless duplication.
-
-Conflicts:
-	src/shared/install.c
-
-(cherry picked from commit cba2ef02722114da2b730d57f1e3bb43013d8921)
-
-Related: #1111199
----
- src/shared/conf-files.c | 16 ++++++----------
- src/shared/install.c    |  6 +++---
- 2 files changed, 9 insertions(+), 13 deletions(-)
-
-diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c
-index 4ec8bed..fc5f1fe 100644
---- a/src/shared/conf-files.c
-+++ b/src/shared/conf-files.c
-@@ -37,20 +37,16 @@
- #include "hashmap.h"
- #include "conf-files.h"
- 
--static int files_add(Hashmap *h, const char *dirpath, const char *suffix, const char *root) {
-+static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) {
-         _cleanup_closedir_ DIR *dir = NULL;
-+        char *dirpath;
- 
--        assert(dirpath);
-+        assert(path);
-         assert(suffix);
- 
--        if (isempty(root))
--                dir = opendir(dirpath);
--        else {
--                const char *p;
-+        dirpath = strappenda(root ? root : "", path);
- 
--                p = strappenda3(root, "/", dirpath);
--                dir = opendir(p);
--        }
-+        dir = opendir(dirpath);
-         if (!dir) {
-                 if (errno == ENOENT)
-                         return 0;
-@@ -118,7 +114,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const
-                 return -ENOMEM;
- 
-         STRV_FOREACH(p, dirs) {
--                r = files_add(fh, *p, suffix, root);
-+                r = files_add(fh, root, *p, suffix);
-                 if (r == -ENOMEM) {
-                         hashmap_free_free(fh);
-                         return r;
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 672dcc2..871de78 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1740,7 +1740,7 @@ UnitFileState unit_file_get_state(
- 
- int unit_file_query_preset(UnitFileScope scope, const char *name) {
-         _cleanup_strv_free_ char **files = NULL;
--        char **i;
-+        char **p;
-         int r;
- 
-         assert(scope >= 0);
-@@ -1768,10 +1768,10 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) {
-         if (r < 0)
-                 return r;
- 
--        STRV_FOREACH(i, files) {
-+        STRV_FOREACH(p, files) {
-                 _cleanup_fclose_ FILE *f;
- 
--                f = fopen(*i, "re");
-+                f = fopen(*p, "re");
-                 if (!f) {
-                         if (errno == ENOENT)
-                                 continue;
diff --git a/SOURCES/0268-install-make-sure-that-root-mode-doesn-t-make-us-con.patch b/SOURCES/0268-install-make-sure-that-root-mode-doesn-t-make-us-con.patch
deleted file mode 100644
index 82a76c2..0000000
--- a/SOURCES/0268-install-make-sure-that-root-mode-doesn-t-make-us-con.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-From 8d32393e5a3fbc12371edf69830d0258a097211f Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 17 Jun 2014 00:53:49 +0200
-Subject: [PATCH] install: make sure that --root= mode doesn't make us consider
- all units outside of search path
-
-(cherry picked from commit 8f294b45cbb627d31342f6a79444be59ce7e2274)
-
-Related: #1111199
----
- src/shared/install.c | 41 +++++++++++++++++++++++++++++++++++++----
- src/shared/util.c    | 16 ----------------
- src/shared/util.h    |  1 -
- 3 files changed, 37 insertions(+), 21 deletions(-)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 871de78..7dad66d 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -47,6 +47,37 @@ typedef struct {
- #define _cleanup_lookup_paths_free_ _cleanup_(lookup_paths_free)
- #define _cleanup_install_context_done_ _cleanup_(install_context_done)
- 
-+static int in_search_path(const char *path, char **search, const char *root_dir) {
-+        _cleanup_free_ char *parent = NULL;
-+        char **i;
-+        int r;
-+
-+        assert(path);
-+
-+        r = path_get_parent(path, &parent);
-+        if (r < 0)
-+                return r;
-+
-+        STRV_FOREACH(i, search) {
-+                _cleanup_free_ char *buf = NULL;
-+                const char *p;
-+
-+                if (root_dir) {
-+                        buf = strjoin(root_dir, "/", *i, NULL);
-+                        if (!buf)
-+                                return -ENOMEM;
-+
-+                        p = buf;
-+                } else
-+                        p = *i;
-+
-+                if (path_equal(parent, p))
-+                        return 1;
-+        }
-+
-+        return 0;
-+}
-+
- static int lookup_paths_init_from_scope(LookupPaths *paths,
-                                         UnitFileScope scope,
-                                         const char *root_dir) {
-@@ -741,7 +772,7 @@ int unit_file_link(
-                         continue;
-                 }
- 
--                q = in_search_path(*i, paths.unit_path);
-+                q = in_search_path(*i, paths.unit_path, root_dir);
-                 if (q < 0)
-                         return q;
- 
-@@ -1296,6 +1327,7 @@ static int install_info_symlink_link(
-                 InstallInfo *i,
-                 LookupPaths *paths,
-                 const char *config_path,
-+                const char *root_dir,
-                 bool force,
-                 UnitFileChange **changes,
-                 unsigned *n_changes) {
-@@ -1308,7 +1340,7 @@ static int install_info_symlink_link(
-         assert(config_path);
-         assert(i->path);
- 
--        r = in_search_path(i->path, paths->unit_path);
-+        r = in_search_path(i->path, paths->unit_path, root_dir);
-         if (r != 0)
-                 return r;
- 
-@@ -1323,6 +1355,7 @@ static int install_info_apply(
-                 InstallInfo *i,
-                 LookupPaths *paths,
-                 const char *config_path,
-+                const char *root_dir,
-                 bool force,
-                 UnitFileChange **changes,
-                 unsigned *n_changes) {
-@@ -1343,7 +1376,7 @@ static int install_info_apply(
-         if (r == 0)
-                 r = q;
- 
--        q = install_info_symlink_link(i, paths, config_path, force, changes, n_changes);
-+        q = install_info_symlink_link(i, paths, config_path, root_dir, force, changes, n_changes);
-         if (r == 0)
-                 r = q;
- 
-@@ -1383,7 +1416,7 @@ static int install_context_apply(
-                 } else if (r >= 0)
-                         r += q;
- 
--                q = install_info_apply(i, paths, config_path, force, changes, n_changes);
-+                q = install_info_apply(i, paths, config_path, root_dir, force, changes, n_changes);
-                 if (r >= 0 && q < 0)
-                         r = q;
-         }
-diff --git a/src/shared/util.c b/src/shared/util.c
-index e313ea9..fc1f765 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -4490,22 +4490,6 @@ int dirent_ensure_type(DIR *d, struct dirent *de) {
-         return 0;
- }
- 
--int in_search_path(const char *path, char **search) {
--        char **i;
--        _cleanup_free_ char *parent = NULL;
--        int r;
--
--        r = path_get_parent(path, &parent);
--        if (r < 0)
--                return r;
--
--        STRV_FOREACH(i, search)
--                if (path_equal(parent, *i))
--                        return 1;
--
--        return 0;
--}
--
- int get_files_in_directory(const char *path, char ***list) {
-         _cleanup_closedir_ DIR *d = NULL;
-         size_t bufsize = 0, n = 0;
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 3f30917..ec18d2c 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -475,7 +475,6 @@ int glob_extend(char ***strv, const char *path);
- 
- int dirent_ensure_type(DIR *d, struct dirent *de);
- 
--int in_search_path(const char *path, char **search);
- int get_files_in_directory(const char *path, char ***list);
- 
- char *strjoin(const char *x, ...) _sentinel_;
diff --git a/SOURCES/0269-shared-install-do-not-prefix-created-symlink-with-ro.patch b/SOURCES/0269-shared-install-do-not-prefix-created-symlink-with-ro.patch
deleted file mode 100644
index 8060501..0000000
--- a/SOURCES/0269-shared-install-do-not-prefix-created-symlink-with-ro.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 6dadf44d7062c38c3f4f782da3cd88114dceb959 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 21 Apr 2014 19:17:40 -0400
-Subject: [PATCH] shared/install: do not prefix created symlink with root path
-
-Before: /var/tmp/inst1//etc/systemd/system/default.target -> /var/tmp/inst1//usr/lib/systemd/system/graphical.target
-After: /var/tmp/inst1/etc/systemd/system/default.target -> /usr/lib/systemd/system/graphical.target
-
-(cherry picked from commit 62b002337727093c21d020c730bd65971f7783a7)
-
-Related: #1111199
----
- src/shared/install.c | 89 +++++++++++++++++++++++++---------------------------
- 1 file changed, 43 insertions(+), 46 deletions(-)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 7dad66d..955a9bc 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1073,67 +1073,64 @@ static int unit_file_search(
-         assert(info);
-         assert(paths);
- 
--        if (info->path)
--                return unit_file_load(c, info, info->path, allow_symlink);
-+        if (info->path) {
-+                char *full_path = NULL;
-+
-+                if (!isempty(root_dir))
-+                        full_path = strappenda(root_dir, info->path);
-+
-+                return unit_file_load(c, info, full_path ?: info->path, allow_symlink);
-+        }
- 
-         assert(info->name);
- 
-         STRV_FOREACH(p, paths->unit_path) {
--                char *path = NULL;
--
--                if (isempty(root_dir))
--                        asprintf(&path, "%s/%s", *p, info->name);
--                else
--                        asprintf(&path, "%s/%s/%s", root_dir, *p, info->name);
-+                _cleanup_free_ char *path = NULL, *full_path = NULL;
- 
-+                path = strjoin(*p, "/", info->name, NULL);
-                 if (!path)
-                         return -ENOMEM;
- 
--                r = unit_file_load(c, info, path, allow_symlink);
-+                if (!isempty(root_dir)) {
-+                        full_path = strappend(root_dir, path);
-+                        if (!full_path)
-+                                return -ENOMEM;
-+                }
- 
--                if (r >= 0)
-+                r = unit_file_load(c, info, full_path ?: path, allow_symlink);
-+                if (r >= 0) {
-                         info->path = path;
--                else {
--                        if (r == -ENOENT && unit_name_is_instance(info->name)) {
--                                /* Unit file doesn't exist, however instance enablement was requested.
--                                 * We will check if it is possible to load template unit file. */
--                                char *template = NULL,
--                                     *template_path = NULL,
--                                     *template_dir = NULL;
--
--                                template = unit_name_template(info->name);
--                                if (!template) {
--                                        free(path);
--                                        return -ENOMEM;
--                                }
-+                        path = NULL;
-+                } else if (r == -ENOENT && unit_name_is_instance(info->name)) {
-+                        /* Unit file doesn't exist, however instance enablement was requested.
-+                         * We will check if it is possible to load template unit file. */
-+                        _cleanup_free_ char *template = NULL, *template_dir = NULL;
-+
-+                        template = unit_name_template(info->name);
-+                        if (!template)
-+                                return -ENOMEM;
- 
--                                /* We will reuse path variable since we don't need it anymore. */
--                                template_dir = path;
--                                *(strrchr(path, '/') + 1) = '\0';
-+                        /* We will reuse path variable since we don't need it anymore. */
-+                        template_dir = path;
-+                        *(strrchr(template_dir, '/') + 1) = '\0';
- 
--                                template_path = strjoin(template_dir, template, NULL);
--                                if (!template_path) {
--                                        free(path);
--                                        free(template);
--                                        return -ENOMEM;
--                                }
-+                        path = strappend(template_dir, template);
-+                        if (!path)
-+                                return -ENOMEM;
- 
--                                /* Let's try to load template unit. */
--                                r = unit_file_load(c, info, template_path, allow_symlink);
--                                if (r >= 0) {
--                                        info->path = strdup(template_path);
--                                        if (!info->path) {
--                                                free(path);
--                                                free(template);
--                                                free(template_path);
--                                                return -ENOMEM;
--                                        }
--                                }
-+                        if (!isempty(root_dir)) {
-+                                free(full_path);
-+                                full_path = strappend(root_dir, path);
-+                                if (!full_path)
-+                                        return -ENOMEM;
-+                        }
- 
--                                free(template);
--                                free(template_path);
-+                        /* Let's try to load template unit. */
-+                        r = unit_file_load(c, info, full_path ?: path, allow_symlink);
-+                        if (r >= 0) {
-+                                info->path = path;
-+                                path = NULL;
-                         }
--                        free(path);
-                 }
- 
-                 if (r != -ENOENT && r != -ELOOP)
diff --git a/SOURCES/0270-systemctl-fail-in-the-case-that-no-unit-files-were-f.patch b/SOURCES/0270-systemctl-fail-in-the-case-that-no-unit-files-were-f.patch
deleted file mode 100644
index 392e694..0000000
--- a/SOURCES/0270-systemctl-fail-in-the-case-that-no-unit-files-were-f.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 9e42758bf5dcaff2120856556ef1c3cafff7d581 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Tue, 19 Aug 2014 20:53:29 +0200
-Subject: [PATCH] systemctl: fail in the case that no unit files were found
-
-Previously systemctl died with message
-
--bash-4.2# systemctl --root /rawhi list-unit-files
-(src/systemctl/systemctl.c:868) Out of memory.
-
-in the case that no unit files were found in the --root
-or the directory did not exist.
-
-So lets return ENOENT in the case that --root does not exist
-and empty list in the case that there are no unit files.
-
-(cherry picked from commit fdbdf6ec29bda40763d7d3e7bb2a63e2f5d60c4c)
-
-Related: #1111199
----
- src/shared/install.c      | 6 ++++++
- src/systemctl/systemctl.c | 4 ++++
- 2 files changed, 10 insertions(+)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 955a9bc..598323a 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1933,6 +1933,12 @@ int unit_file_get_list(
-         if (root_dir && scope != UNIT_FILE_SYSTEM)
-                 return -EINVAL;
- 
-+        if (root_dir) {
-+                r = access(root_dir, F_OK);
-+                if (r < 0)
-+                        return -errno;
-+        }
-+
-         r = lookup_paths_init_from_scope(&paths, scope, root_dir);
-         if (r < 0)
-                 return r;
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index 1cbcd20..90a80bd 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -862,6 +862,10 @@ static int list_unit_files(DBusConnection *bus, char **args) {
-                 }
- 
-                 n_units = hashmap_size(h);
-+
-+                if (n_units == 0)
-+                        return 0;
-+
-                 units = new(UnitFileList, n_units);
-                 if (!units) {
-                         unit_file_list_free(h);
diff --git a/SOURCES/0271-units-make-ExecStopPost-action-part-of-ExecStart.patch b/SOURCES/0271-units-make-ExecStopPost-action-part-of-ExecStart.patch
deleted file mode 100644
index f2dd649..0000000
--- a/SOURCES/0271-units-make-ExecStopPost-action-part-of-ExecStart.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 9af28110933ae9cdd96477dd2911c19295bc74ce Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Tue, 8 Jul 2014 17:42:23 +0200
-Subject: [PATCH] units: make ExecStopPost action part of ExecStart
-
-Currently after exiting rescue shell we isolate default target. User
-might want to isolate to some other target than default one. However
-issuing systemctl isolate command to desired target would bring system
-to default target as a consequence of running ExecStopPost action.
-
-Having common ancestor for rescue shell and possible followup systemctl
-default command should fix this. If user exits rescue shell we will
-proceed with isolating default target, otherwise, on manual isolate,
-parent shell process is terminated and we don't isolate default target,
-but target chosen by user.
-
-Suggested-by: Michal Schmidt <mschmidt@redhat.com>
-
-(cherry picked from commit d3381512282f2ca1c7669f77fb736a90fdce6982)
-
-Resolves: #1036276
----
- units/emergency.service.in | 3 +--
- units/rescue.service.m4.in | 3 +--
- 2 files changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/units/emergency.service.in b/units/emergency.service.in
-index 94c090f..91fc1bb 100644
---- a/units/emergency.service.in
-+++ b/units/emergency.service.in
-@@ -17,8 +17,7 @@ Environment=HOME=/root
- WorkingDirectory=/root
- ExecStartPre=-/bin/plymouth quit
- ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again\\nto boot into default mode.'
--ExecStart=-/sbin/sulogin
--ExecStopPost=@SYSTEMCTL@ --fail --no-block default
-+ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
- Type=idle
- StandardInput=tty-force
- StandardOutput=inherit
-diff --git a/units/rescue.service.m4.in b/units/rescue.service.m4.in
-index 552ef89..ef54369 100644
---- a/units/rescue.service.m4.in
-+++ b/units/rescue.service.m4.in
-@@ -18,8 +18,7 @@ Environment=HOME=/root
- WorkingDirectory=/root
- ExecStartPre=-/bin/plymouth quit
- ExecStartPre=-/bin/echo -e 'Welcome to rescue mode! Type "systemctl default" or ^D to enter default mode.\\nType "journalctl -xb" to view system logs. Type "systemctl reboot" to reboot.'
--ExecStart=-/sbin/sulogin
--ExecStopPost=-@SYSTEMCTL@ --fail --no-block default
-+ExecStart=-/bin/sh -c "/sbin/sulogin; @SYSTEMCTL@ --fail --no-block default"
- Type=idle
- StandardInput=tty-force
- StandardOutput=inherit
diff --git a/SOURCES/0272-systemctl-fix-broken-list-unit-files-with-root.patch b/SOURCES/0272-systemctl-fix-broken-list-unit-files-with-root.patch
deleted file mode 100644
index 6c211b2..0000000
--- a/SOURCES/0272-systemctl-fix-broken-list-unit-files-with-root.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 736a7f8c5d6c711ece23b0f347d3b89ac7464b08 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Tue, 26 Aug 2014 13:33:08 +0200
-Subject: [PATCH] systemctl: fix broken list-unit-files with --root
-
-(cherry picked from commit 81fc054dc7c365545bca86d78bf36a12658cedb3)
-
-Related: #1111199
-
-Conflicts:
-	src/shared/install.c
----
- src/shared/install.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 598323a..2c8f907 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1973,6 +1973,7 @@ int unit_file_get_list(
-                         union dirent_storage buffer;
-                         UnitFileList __attribute__((cleanup(unitfilelist_free)))
-                                 *f = NULL;
-+                        _cleanup_free_ char *path = NULL;
- 
-                         r = readdir_r(d, &buffer.de, &de);
-                         if (r != 0)
-@@ -2027,7 +2028,11 @@ int unit_file_get_list(
-                                 goto found;
-                         }
- 
--                        r = unit_file_can_install(&paths, root_dir, f->path, true);
-+                        path = path_make_absolute(de->d_name, *i);
-+                        if (!path)
-+                                return -ENOMEM;
-+
-+                        r = unit_file_can_install(&paths, root_dir, path, true);
-                         if (r == -EINVAL ||  /* Invalid setting? */
-                             r == -EBADMSG || /* Invalid format? */
-                             r == -ENOENT     /* Included file not found? */)
diff --git a/SOURCES/0273-machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch b/SOURCES/0273-machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch
deleted file mode 100644
index f84f577..0000000
--- a/SOURCES/0273-machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From a777218d241e52279039da5a2ba9b5a69576583c Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 28 Apr 2014 18:11:40 +0200
-Subject: [PATCH] machine-id: only look into KVM uuid when we are not running
- in a container
-
-Resolves: #1123452
-
-(cherry picked from commit 0b36bbc42d3a408531517a02acaf56105b863d55)
-
-Conflicts:
-	src/core/machine-id-setup.c
----
- src/core/machine-id-setup.c | 53 +++++++++++++++++++++++----------------------
- 1 file changed, 27 insertions(+), 26 deletions(-)
-
-diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c
-index 291930e..8cfcf51 100644
---- a/src/core/machine-id-setup.c
-+++ b/src/core/machine-id-setup.c
-@@ -92,32 +92,9 @@ static int generate(char id[34], const char *root) {
-                 }
-         }
- 
--        /* If that didn't work, see if we are running in qemu/kvm and a
--         * machine ID was passed in via -uuid on the qemu/kvm command
--         * line */
--
--        r = detect_vm(&vm_id);
--        if (r > 0 && streq(vm_id, "kvm")) {
--                char uuid[37];
--
--                fd = open("/sys/class/dmi/id/product_uuid", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
--                if (fd >= 0) {
--                        k = loop_read(fd, uuid, 36, false);
--                        close_nointr_nofail(fd);
--
--                        if (k >= 36) {
--                                r = shorten_uuid(id, uuid);
--                                if (r >= 0) {
--                                        log_info("Initializing machine ID from KVM UUID.");
--                                        return 0;
--                                }
--                        }
--                }
--        }
--
--        /* If that didn't work either, see if we are running in a
--         * container, and a machine ID was passed in via
--         * $container_uuid the way libvirt/LXC does it */
-+        /* If that didn't work, see if we are running in a container,
-+         * and a machine ID was passed in via $container_uuid the way
-+         * libvirt/LXC does it */
-         r = detect_container(NULL);
-         if (r > 0) {
-                 _cleanup_free_ char *e = NULL;
-@@ -132,6 +109,30 @@ static int generate(char id[34], const char *root) {
-                                 }
-                         }
-                 }
-+
-+        } else {
-+                /* If we are not running in a container, see if we are
-+                 * running in qemu/kvm and a machine ID was passed in
-+                 * via -uuid on the qemu/kvm command line */
-+
-+                r = detect_vm(&vm_id);
-+                if (r > 0 && streq(vm_id, "kvm")) {
-+                        char uuid[37];
-+
-+                        fd = open("/sys/class/dmi/id/product_uuid", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW);
-+                        if (fd >= 0) {
-+                                k = loop_read(fd, uuid, 36, false);
-+                                close_nointr_nofail(fd);
-+
-+                                if (k >= 36) {
-+                                        r = shorten_uuid(id, uuid);
-+                                        if (r >= 0) {
-+                                                log_info("Initializing machine ID from KVM UUID.");
-+                                                return 0;
-+                                        }
-+                                }
-+                        }
-+                }
-         }
- 
-         /* If that didn't work, generate a random machine id */
diff --git a/SOURCES/0274-util-reset-signals-when-we-fork-off-agents.patch b/SOURCES/0274-util-reset-signals-when-we-fork-off-agents.patch
deleted file mode 100644
index a55fd51..0000000
--- a/SOURCES/0274-util-reset-signals-when-we-fork-off-agents.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 72be8870f1ab5d8753d966ee6c81f88734053a95 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 26 Aug 2014 21:04:21 +0200
-Subject: [PATCH] util: reset signals when we fork off agents
-
-If we invoke agents, we should make sure we actually can kill them
-again. I mean, it's probably not our job to cleanup the signals if our
-tools are invoked in weird contexts, but at least we should make sure,
-that the subprocesses we invoke and intend to control work as intended.
-
-Also see:
-
-http://lists.freedesktop.org/archives/systemd-devel/2014-August/022460.html
-
-(cherry picked from commit 8a7c93d858c342744adf481565d8bb03b9713dcf)
-
-Resolves: #1134818
----
- src/shared/util.c | 18 ++++++++++++++++++
- src/shared/util.h |  1 +
- 2 files changed, 19 insertions(+)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index fc1f765..e4448ff 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -935,6 +935,18 @@ int reset_all_signal_handlers(void) {
-         return 0;
- }
- 
-+int reset_signal_mask(void) {
-+        sigset_t ss;
-+
-+        if (sigemptyset(&ss) < 0)
-+                return -errno;
-+
-+        if (sigprocmask(SIG_SETMASK, &ss, NULL) < 0)
-+                return -errno;
-+
-+        return 0;
-+}
-+
- char *strstrip(char *s) {
-         char *e;
- 
-@@ -5028,6 +5040,12 @@ int fork_agent(pid_t *pid, const int except[], unsigned n_except, const char *pa
-         /* Don't leak fds to the agent */
-         close_all_fds(except, n_except);
- 
-+        /* Make sure we actually can kill the agent, if we need to, in
-+         * case somebody invoked us from a shell script that trapped
-+         * SIGTERM or so... */
-+        reset_all_signal_handlers();
-+        reset_signal_mask();
-+
-         stdout_is_tty = isatty(STDOUT_FILENO);
-         stderr_is_tty = isatty(STDERR_FILENO);
- 
-diff --git a/src/shared/util.h b/src/shared/util.h
-index ec18d2c..5a9bc99 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -207,6 +207,7 @@ int readlink_and_make_absolute(const char *p, char **r);
- int readlink_and_canonicalize(const char *p, char **r);
- 
- int reset_all_signal_handlers(void);
-+int reset_signal_mask(void);
- 
- char *strstrip(char *s);
- char *delete_chars(char *s, const char *bad);
diff --git a/SOURCES/0275-util-fix-minimal-race-where-we-might-miss-SIGTERMs-w.patch b/SOURCES/0275-util-fix-minimal-race-where-we-might-miss-SIGTERMs-w.patch
deleted file mode 100644
index 5cdd581..0000000
--- a/SOURCES/0275-util-fix-minimal-race-where-we-might-miss-SIGTERMs-w.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From f0fdbdb003cb3e8d8188c1c01701b510505b5b8b Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 27 Aug 2014 21:42:20 +0200
-Subject: [PATCH] util: fix minimal race where we might miss SIGTERMs when
- forking off an agent
-
-Before forking, block all signals, and unblock them afterwards. This way
-the child will have them blocked, and we won't lose them.
-
-(cherry picked from commit 8a7c93d858c342744adf481565d8bb03b9713dcf)
-
-Related: #1134818
----
- src/shared/util.c | 35 +++++++++++++++++++++++------------
- 1 file changed, 23 insertions(+), 12 deletions(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index e4448ff..9f25b15 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -5002,9 +5002,9 @@ int fd_inc_rcvbuf(int fd, size_t n) {
- }
- 
- int fork_agent(pid_t *pid, const int except[], unsigned n_except, const char *path, ...) {
--        pid_t parent_pid, agent_pid;
--        int fd;
-         bool stdout_is_tty, stderr_is_tty;
-+        pid_t parent_pid, agent_pid;
-+        sigset_t ss, saved_ss;
-         unsigned n, i;
-         va_list ap;
-         char **l;
-@@ -5012,16 +5012,25 @@ int fork_agent(pid_t *pid, const int except[], unsigned n_except, const char *pa
-         assert(pid);
-         assert(path);
- 
--        parent_pid = getpid();
--
-         /* Spawns a temporary TTY agent, making sure it goes away when
-          * we go away */
- 
-+        parent_pid = getpid();
-+
-+        /* First we temporarily block all signals, so that the new
-+         * child has them blocked initially. This way, we can be sure
-+         * that SIGTERMs are not lost we might send to the agent. */
-+        assert_se(sigfillset(&ss) >= 0);
-+        assert_se(sigprocmask(SIG_SETMASK, &ss, &saved_ss) >= 0);
-+
-         agent_pid = fork();
--        if (agent_pid < 0)
-+        if (agent_pid < 0) {
-+                assert_se(sigprocmask(SIG_SETMASK, &saved_ss, NULL) >= 0);
-                 return -errno;
-+        }
- 
-         if (agent_pid != 0) {
-+                assert_se(sigprocmask(SIG_SETMASK, &saved_ss, NULL) >= 0);
-                 *pid = agent_pid;
-                 return 0;
-         }
-@@ -5032,24 +5041,26 @@ int fork_agent(pid_t *pid, const int except[], unsigned n_except, const char *pa
-         if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0)
-                 _exit(EXIT_FAILURE);
- 
-+        /* Make sure we actually can kill the agent, if we need to, in
-+         * case somebody invoked us from a shell script that trapped
-+         * SIGTERM or so... */
-+        reset_all_signal_handlers();
-+        reset_signal_mask();
-+
-         /* Check whether our parent died before we were able
--         * to set the death signal */
-+         * to set the death signal and unblock the signals */
-         if (getppid() != parent_pid)
-                 _exit(EXIT_SUCCESS);
- 
-         /* Don't leak fds to the agent */
-         close_all_fds(except, n_except);
- 
--        /* Make sure we actually can kill the agent, if we need to, in
--         * case somebody invoked us from a shell script that trapped
--         * SIGTERM or so... */
--        reset_all_signal_handlers();
--        reset_signal_mask();
--
-         stdout_is_tty = isatty(STDOUT_FILENO);
-         stderr_is_tty = isatty(STDERR_FILENO);
- 
-         if (!stdout_is_tty || !stderr_is_tty) {
-+                int fd;
-+
-                 /* Detach from stdout/stderr. and reopen
-                  * /dev/tty for them. This is important to
-                  * ensure that when systemctl is started via
diff --git a/SOURCES/0276-udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch b/SOURCES/0276-udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch
deleted file mode 100644
index 89c26df..0000000
--- a/SOURCES/0276-udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 426a65ac5d56264b1890539eff96a1fa1d460217 Mon Sep 17 00:00:00 2001
-From: Kay Sievers <kay@vrfy.org>
-Date: Wed, 14 May 2014 00:34:49 +0200
-Subject: [PATCH] udev: do not skip the execution of RUN when renaming a
- network device fails
-
-(cherry picked from commit 1ea972174baba40dbc80c51cbfc4edc49764b59b)
-
-Resolves: #1102135
----
- src/test/test-udev.c    |  5 ++---
- src/udev/udev-event.c   |  9 ++++-----
- src/udev/udev.h         |  2 +-
- src/udev/udevadm-test.c | 13 +++++--------
- src/udev/udevd.c        | 13 ++++++-------
- 5 files changed, 18 insertions(+), 24 deletions(-)
-
-diff --git a/src/test/test-udev.c b/src/test/test-udev.c
-index 17825f1..3fcf728 100644
---- a/src/test/test-udev.c
-+++ b/src/test/test-udev.c
-@@ -156,9 +156,8 @@ int main(int argc, char *argv[])
-                 }
-         }
- 
--        err = udev_event_execute_rules(event, rules, &sigmask_orig);
--        if (err == 0)
--                udev_event_execute_run(event, NULL);
-+        udev_event_execute_rules(event, rules, &sigmask_orig);
-+        udev_event_execute_run(event, NULL);
- out:
-         if (event != NULL && event->fd_signal >= 0)
-                 close(event->fd_signal);
-diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
-index 3db2cb7..d69d7ba 100644
---- a/src/udev/udev-event.c
-+++ b/src/udev/udev-event.c
-@@ -776,13 +776,12 @@ static int rename_netif(struct udev_event *event)
-         return err;
- }
- 
--int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, const sigset_t *sigmask)
-+void udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, const sigset_t *sigmask)
- {
-         struct udev_device *dev = event->dev;
--        int err = 0;
- 
-         if (udev_device_get_subsystem(dev) == NULL)
--                return -1;
-+                return;
- 
-         if (streq(udev_device_get_action(dev), "remove")) {
-                 udev_device_read_db(dev, NULL);
-@@ -816,9 +815,10 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules,
-                     event->name != NULL && !streq(event->name, udev_device_get_sysname(dev))) {
-                         char syspath[UTIL_PATH_SIZE];
-                         char *pos;
-+                        int err;
- 
-                         err = rename_netif(event);
--                        if (err == 0) {
-+                        if (err >= 0) {
-                                 log_debug("renamed netif to '%s'\n", event->name);
- 
-                                 /* remember old name */
-@@ -881,7 +881,6 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules,
-                 udev_device_unref(event->dev_db);
-                 event->dev_db = NULL;
-         }
--        return err;
- }
- 
- void udev_event_execute_run(struct udev_event *event, const sigset_t *sigmask)
-diff --git a/src/udev/udev.h b/src/udev/udev.h
-index 8395926..900b1d6 100644
---- a/src/udev/udev.h
-+++ b/src/udev/udev.h
-@@ -83,7 +83,7 @@ int udev_event_apply_subsys_kernel(struct udev_event *event, const char *string,
- int udev_event_spawn(struct udev_event *event,
-                      const char *cmd, char **envp, const sigset_t *sigmask,
-                      char *result, size_t ressize);
--int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, const sigset_t *sigset);
-+void udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, const sigset_t *sigset);
- void udev_event_execute_run(struct udev_event *event, const sigset_t *sigset);
- int udev_build_argv(struct udev *udev, char *cmd, int *argc, char *argv[]);
- 
-diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c
-index df1409b..dc292c2 100644
---- a/src/udev/udevadm-test.c
-+++ b/src/udev/udevadm-test.c
-@@ -42,7 +42,6 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
-         struct udev_rules *rules = NULL;
-         struct udev_list_entry *entry;
-         sigset_t mask, sigmask_orig;
--        int err;
-         int rc = 0;
- 
-         static const struct option options[] = {
-@@ -141,18 +140,16 @@ static int adm_test(struct udev *udev, int argc, char *argv[])
-                 goto out;
-         }
- 
--        err = udev_event_execute_rules(event, rules, &sigmask_orig);
-+        udev_event_execute_rules(event, rules, &sigmask_orig);
- 
-         udev_list_entry_foreach(entry, udev_device_get_properties_list_entry(dev))
-                 printf("%s=%s\n", udev_list_entry_get_name(entry), udev_list_entry_get_value(entry));
- 
--        if (err == 0) {
--                udev_list_entry_foreach(entry, udev_list_get_entry(&event->run_list)) {
--                        char program[UTIL_PATH_SIZE];
-+        udev_list_entry_foreach(entry, udev_list_get_entry(&event->run_list)) {
-+                char program[UTIL_PATH_SIZE];
- 
--                        udev_event_apply_format(event, udev_list_entry_get_name(entry), program, sizeof(program));
--                        printf("run: '%s'\n", program);
--                }
-+                udev_event_apply_format(event, udev_list_entry_get_name(entry), program, sizeof(program));
-+                printf("run: '%s'\n", program);
-         }
- out:
-         if (event != NULL && event->fd_signal >= 0)
-diff --git a/src/udev/udevd.c b/src/udev/udevd.c
-index 7c6c5d6..3d5feb4 100644
---- a/src/udev/udevd.c
-+++ b/src/udev/udevd.c
-@@ -272,7 +272,7 @@ static void worker_new(struct event *event)
-                 for (;;) {
-                         struct udev_event *udev_event;
-                         struct worker_message msg;
--                        int err;
-+                        int err = 0;
- 
-                         log_debug("seq %llu running\n", udev_device_get_seqnum(dev));
-                         udev_event = udev_event_new(dev);
-@@ -288,13 +288,12 @@ static void worker_new(struct event *event)
-                                 udev_event->exec_delay = exec_delay;
- 
-                         /* apply rules, create node, symlinks */
--                        err = udev_event_execute_rules(udev_event, rules, &sigmask_orig);
-+                        udev_event_execute_rules(udev_event, rules, &sigmask_orig);
- 
--                        if (err == 0)
--                                udev_event_execute_run(udev_event, &sigmask_orig);
-+                        udev_event_execute_run(udev_event, &sigmask_orig);
- 
-                         /* apply/restore inotify watch */
--                        if (err == 0 && udev_event->inotify_watch) {
-+                        if (udev_event->inotify_watch) {
-                                 udev_watch_begin(udev, dev);
-                                 udev_device_update_db(dev);
-                         }
-@@ -304,8 +303,8 @@ static void worker_new(struct event *event)
- 
-                         /* send udevd the result of the event execution */
-                         memset(&msg, 0, sizeof(struct worker_message));
--                        if (err != 0)
--                                msg.exitcode = err;
-+
-+                        msg.exitcode = err;
-                         msg.pid = getpid();
-                         send(worker_watch[WRITE_END], &msg, sizeof(struct worker_message), 0);
- 
diff --git a/SOURCES/0277-man-mention-System-Administrator-s-Guide-in-systemct.patch b/SOURCES/0277-man-mention-System-Administrator-s-Guide-in-systemct.patch
deleted file mode 100644
index 7e82917..0000000
--- a/SOURCES/0277-man-mention-System-Administrator-s-Guide-in-systemct.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 28d352847cea4cacab45fe56e9f452eb45bc0708 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 28 Aug 2014 15:12:10 +0200
-Subject: [PATCH] man: mention System Administrator's Guide in systemctl
- manpage
-
-Resolves: #978948
----
- man/systemctl.xml | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index 25b03d8..d1fda61 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -1350,6 +1350,17 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
-   </refsect1>
- 
-   <refsect1>
-+    <title>Examples</title>
-+    <para>
-+            For examples how to use systemctl in comparsion
-+            with old service and chkconfig command please see:
-+            <ulink url="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Services.html">
-+                    Managing System Services
-+            </ulink>
-+    </para>
-+  </refsect1>
-+
-+  <refsect1>
-     <title>See Also</title>
-     <para>
-       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
diff --git a/SOURCES/0278-vconsole-also-copy-character-maps-not-just-fonts-fro.patch b/SOURCES/0278-vconsole-also-copy-character-maps-not-just-fonts-fro.patch
deleted file mode 100644
index 2bd6874..0000000
--- a/SOURCES/0278-vconsole-also-copy-character-maps-not-just-fonts-fro.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From e39ab9b0f4d2cbc9fab10c64c2527908526ea86e Mon Sep 17 00:00:00 2001
-From: Carl Schaefer <schaefer@trilug.org>
-Date: Mon, 23 Jun 2014 18:23:48 +0200
-Subject: [PATCH] vconsole: also copy character maps (not just fonts) from vt1
- to vt2, vt3, ...
-
-https://bugs.freedesktop.org/show_bug.cgi?id=78796
-
-(cherry picked from commit ff452e76e2c0f89a32542b7179bb2fd538335933)
-
-Resolves: #1002450
----
- src/vconsole/vconsole-setup.c | 24 ++++++++++++++++++++++++
- 1 file changed, 24 insertions(+)
-
-diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
-index 1bbf737..7196ddf 100644
---- a/src/vconsole/vconsole-setup.c
-+++ b/src/vconsole/vconsole-setup.c
-@@ -180,6 +180,10 @@ static int font_load(const char *vc, const char *font, const char *map, const ch
-  */
- static void font_copy_to_all_vcs(int fd) {
-         struct vt_stat vcs = {};
-+        unsigned char map8[E_TABSZ];
-+        unsigned short map16[E_TABSZ];
-+        struct unimapdesc unimapd;
-+        struct unipair unipairs[USHRT_MAX];
-         int i, r;
- 
-         /* get active, and 16 bit mask of used VT numbers */
-@@ -209,6 +213,26 @@ static void font_copy_to_all_vcs(int fd) {
-                 cfo.op = KD_FONT_OP_COPY;
-                 cfo.height = vcs.v_active-1; /* tty1 == index 0 */
-                 ioctl(vcfd, KDFONTOP, &cfo);
-+
-+                /* copy map of 8bit chars */
-+                if (ioctl(fd, GIO_SCRNMAP, map8) >= 0)
-+                    ioctl(vcfd, PIO_SCRNMAP, map8);
-+
-+                /* copy map of 8bit chars -> 16bit Unicode values */
-+                if (ioctl(fd, GIO_UNISCRNMAP, map16) >= 0)
-+                    ioctl(vcfd, PIO_UNISCRNMAP, map16);
-+
-+                /* copy unicode translation table */
-+                /* unimapd is a ushort count and a pointer to an
-+                   array of struct unipair { ushort, ushort } */
-+                unimapd.entries  = unipairs;
-+                unimapd.entry_ct = USHRT_MAX;
-+                if (ioctl(fd, GIO_UNIMAP, &unimapd) >= 0) {
-+                        struct unimapinit adv = { 0, 0, 0 };
-+
-+                        ioctl(vcfd, PIO_UNIMAPCLR, &adv);
-+                        ioctl(vcfd, PIO_UNIMAP, &unimapd);
-+                }
-         }
- }
- 
diff --git a/SOURCES/0279-vconsole-setup-run-setfont-before-loadkeys.patch b/SOURCES/0279-vconsole-setup-run-setfont-before-loadkeys.patch
deleted file mode 100644
index 2a543f3..0000000
--- a/SOURCES/0279-vconsole-setup-run-setfont-before-loadkeys.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From a5236c816e1b8f7a56b2b4b0fa5ac2d5998e5b84 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Tue, 1 Jul 2014 22:20:11 -0400
-Subject: [PATCH] vconsole-setup: run setfont before loadkeys
-
-https://bugs.freedesktop.org/show_bug.cgi?id=80685
-
-(cherry picked from commit abee28c56d523e55751b0c007d0bf812cc285c00)
-
-Conflicts:
-        src/vconsole/vconsole-setup.c
-
-Related: #1002450
----
- src/vconsole/vconsole-setup.c | 49 ++++++++++++++++++++-----------------------
- 1 file changed, 23 insertions(+), 26 deletions(-)
-
-diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
-index 7196ddf..25d15af 100644
---- a/src/vconsole/vconsole-setup.c
-+++ b/src/vconsole/vconsole-setup.c
-@@ -238,12 +238,10 @@ static void font_copy_to_all_vcs(int fd) {
- 
- int main(int argc, char **argv) {
-         const char *vc;
--        char *vc_keymap = NULL;
--        char *vc_keymap_toggle = NULL;
--        char *vc_font = NULL;
--        char *vc_font_map = NULL;
--        char *vc_font_unimap = NULL;
--        int fd = -1;
-+        _cleanup_free_ char
-+                *vc_keymap = NULL, *vc_keymap_toggle = NULL,
-+                *vc_font = NULL, *vc_font_map = NULL, *vc_font_unimap = NULL;
-+        _cleanup_close_ int fd = -1;
-         bool utf8;
-         pid_t font_pid = 0, keymap_pid = 0;
-         bool font_copy = false;
-@@ -265,12 +263,12 @@ int main(int argc, char **argv) {
-         fd = open_terminal(vc, O_RDWR|O_CLOEXEC);
-         if (fd < 0) {
-                 log_error("Failed to open %s: %m", vc);
--                goto finish;
-+                return EXIT_FAILURE;
-         }
- 
-         if (!is_vconsole(fd)) {
-                 log_error("Device %s is not a virtual console.", vc);
--                goto finish;
-+                return EXIT_FAILURE;
-         }
- 
-         utf8 = is_locale_utf8();
-@@ -305,28 +303,27 @@ int main(int argc, char **argv) {
-         else
-                 disable_utf8(fd);
- 
--        r = EXIT_FAILURE;
--        if (keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid) >= 0 &&
--            font_load(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0)
--                r = EXIT_SUCCESS;
--
--finish:
--        if (keymap_pid > 0)
--                wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid);
-+        r = font_load(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid);
-+        if (r < 0) {
-+                log_error("Failed to start " KBD_LOADKEYS ": %s", strerror(-r));
-+                return EXIT_FAILURE;
-+        }
- 
--        if (font_pid > 0) {
-+        if (font_pid > 0)
-                 wait_for_terminate_and_warn(KBD_SETFONT, font_pid);
--                if (font_copy)
--                        font_copy_to_all_vcs(fd);
-+
-+        r = keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid);
-+        if (r < 0) {
-+                log_error("Failed to start " KBD_SETFONT ": %s", strerror(-r));
-+                return EXIT_FAILURE;
-         }
- 
--        free(vc_keymap);
--        free(vc_font);
--        free(vc_font_map);
--        free(vc_font_unimap);
-+        if (keymap_pid > 0)
-+                wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid);
- 
--        if (fd >= 0)
--                close_nointr_nofail(fd);
-+        /* Only copy the font when we started setfont successfully */
-+        if (font_copy && font_pid > 0)
-+                font_copy_to_all_vcs(fd);
- 
--        return r;
-+        return EXIT_SUCCESS;
- }
diff --git a/SOURCES/0280-vconsole-setup-fix-inverted-error-messages.patch b/SOURCES/0280-vconsole-setup-fix-inverted-error-messages.patch
deleted file mode 100644
index b48682d..0000000
--- a/SOURCES/0280-vconsole-setup-fix-inverted-error-messages.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From ef543bf1d0011c0c7bfe38e097c1ef53e7027591 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 7 Jul 2014 08:55:30 -0400
-Subject: [PATCH] vconsole-setup: fix inverted error messages
-
-Introduced in abee28c56d.
-
-Pointed-out-by: Werner Fink <werner@suse.de>
-
-(cherry picked from commit 3dde3f819732aaa66ab8e881305488adaea17641)
-
-Related: #1002450
----
- src/vconsole/vconsole-setup.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c
-index 25d15af..645b1e6 100644
---- a/src/vconsole/vconsole-setup.c
-+++ b/src/vconsole/vconsole-setup.c
-@@ -305,7 +305,7 @@ int main(int argc, char **argv) {
- 
-         r = font_load(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid);
-         if (r < 0) {
--                log_error("Failed to start " KBD_LOADKEYS ": %s", strerror(-r));
-+                log_error("Failed to start " KBD_SETFONT ": %s", strerror(-r));
-                 return EXIT_FAILURE;
-         }
- 
-@@ -314,7 +314,7 @@ int main(int argc, char **argv) {
- 
-         r = keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid);
-         if (r < 0) {
--                log_error("Failed to start " KBD_SETFONT ": %s", strerror(-r));
-+                log_error("Failed to start " KBD_LOADKEYS ": %s", strerror(-r));
-                 return EXIT_FAILURE;
-         }
- 
diff --git a/SOURCES/0281-localed-consider-an-unset-model-as-a-wildcard.patch b/SOURCES/0281-localed-consider-an-unset-model-as-a-wildcard.patch
deleted file mode 100644
index 1ebefe1..0000000
--- a/SOURCES/0281-localed-consider-an-unset-model-as-a-wildcard.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From a27bc4778ef4579a954846cb75435226655ad31a Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Fri, 30 May 2014 18:20:16 +0200
-Subject: [PATCH] localed: consider an unset model as a wildcard
-
-(cherry picked from commit 387066c2e5bda159201896b194711965b52f34a9)
-
-Conflicts:
-        src/locale/localed.c
-
-Resolves: #903776
----
- src/locale/localed.c | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/src/locale/localed.c b/src/locale/localed.c
-index b9b98f4..a93b309 100644
---- a/src/locale/localed.c
-+++ b/src/locale/localed.c
-@@ -871,15 +871,16 @@ static int find_legacy_keymap(char **new_keymap) {
-                         }
-                 }
- 
--                if (matching > 0 &&
--                    streq_ptr(state.x11_model, a[2])) {
--                        matching++;
--
--                        if (streq_ptr(state.x11_variant, a[3])) {
-+                if (matching > 0) {
-+                        if (isempty(state.x11_model) || streq_ptr(state.x11_model, a[2])) {
-                                 matching++;
- 
--                                if (streq_ptr(state.x11_options, a[4]))
-+                                if (streq_ptr(state.x11_variant, a[3])) {
-                                         matching++;
-+
-+                                        if (streq_ptr(state.x11_options, a[4]))
-+                                                matching++;
-+                                }
-                         }
-                 }
- 
diff --git a/SOURCES/0282-systemd-detect-virt-detect-s390-virtualization.patch b/SOURCES/0282-systemd-detect-virt-detect-s390-virtualization.patch
deleted file mode 100644
index 33c6bfa..0000000
--- a/SOURCES/0282-systemd-detect-virt-detect-s390-virtualization.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 50bb38a3dc24eb252097e958387d5a7075717a5a Mon Sep 17 00:00:00 2001
-From: Thomas Blume <Thomas.Blume@suse.com>
-Date: Fri, 18 Jul 2014 09:13:36 -0400
-Subject: [PATCH] systemd-detect-virt: detect s390 virtualization
-
-A system that is running on a logical partition (LPAR) provided by
-PR/SM has access to physical hardware (except CPU). It is true that
-PR/SM abstracts the hardware, but only for sharing purposes.
-
-Details are statet at:
-
-http://publib.boulder.ibm.com/infocenter/eserver/v1r2/topic/eicaz/eicazzlpar.htm
-
--->--
-In other words, PR/SM transforms physical resources into virtual resources so
-that many logical partitions can share the same physical resources.
---<--
-
-Still, from the OS point of view, the shared virtual resource is real
-hardware. ConditionVirtualization must be set to false if the OS runs
-directly on PR/SM (e.g. in an LPAR).
-
-[zj: reorder code so that variables are not allocated when #if-def is
-false. Add commit message.]
-
-Conflicts:
-	src/shared/virt.c
-
-(cherry picked from commit f41925b4e442a34c93ad120ef1426c974a047ed1)
-
-Resolves: #1139149
----
- man/systemd.unit.xml |  1 +
- src/shared/virt.c    | 16 ++++++++++++++++
- 2 files changed, 17 insertions(+)
-
-diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
-index 4704352..c500953 100644
---- a/man/systemd.unit.xml
-+++ b/man/systemd.unit.xml
-@@ -969,6 +969,7 @@
-                                 virtualization solution, or one of
-                                 <varname>qemu</varname>,
-                                 <varname>kvm</varname>,
-+                                <varname>zvm</varname>,
-                                 <varname>vmware</varname>,
-                                 <varname>microsoft</varname>,
-                                 <varname>oracle</varname>,
-diff --git a/src/shared/virt.c b/src/shared/virt.c
-index 4f8134a..5466d97 100644
---- a/src/shared/virt.c
-+++ b/src/shared/virt.c
-@@ -175,6 +175,22 @@ int detect_vm(const char **id) {
-                 return 1;
-         }
- 
-+#if defined(__s390__)
-+        {
-+                _cleanup_free_ char *t = NULL;
-+
-+                r = get_status_field("/proc/sysinfo", "VM00 Control Program:", &t);
-+                if (r >= 0) {
-+                        if (streq(t, "z/VM"))
-+                                _id = "zvm";
-+                        else
-+                                _id = "kvm";
-+
-+                        return 1;
-+                }
-+        }
-+#endif
-+
-         return 0;
- }
- 
diff --git a/SOURCES/0283-systemctl-unbreak-switchroot.patch b/SOURCES/0283-systemctl-unbreak-switchroot.patch
deleted file mode 100644
index 8183aa5..0000000
--- a/SOURCES/0283-systemctl-unbreak-switchroot.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From e1036b1b5133141949bea166fb2cb6cdbfec3be0 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Fri, 12 Sep 2014 13:27:36 +0200
-Subject: [PATCH] systemctl: unbreak switchroot
-
-rhel-only patch
-cad8ec5980d63253586d9f884649c45eed0667a1 backport broke it
-
-Related: #1138546
----
- src/systemctl/systemctl.c | 26 ++++++++++++++------------
- 1 file changed, 14 insertions(+), 12 deletions(-)
-
-diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
-index 90a80bd..ebc8caa 100644
---- a/src/systemctl/systemctl.c
-+++ b/src/systemctl/systemctl.c
-@@ -4147,8 +4147,8 @@ static int show_enviroment(DBusConnection *bus, char **args) {
- }
- 
- static int switch_root(DBusConnection *bus, char **args) {
--        _cleanup_free_ char *cmdline_init = NULL;
--        const char *root, *init;
-+        _cleanup_free_ char *init = NULL;
-+        const char *root;
-         unsigned l;
-         int r;
- 
-@@ -4161,23 +4161,20 @@ static int switch_root(DBusConnection *bus, char **args) {
-         root = args[1];
- 
-         if (l >= 3)
--                init = args[2];
-+                init = strdup(args[2]);
-         else {
-                 r = parse_env_file("/proc/cmdline", WHITESPACE,
--                                   "init", &cmdline_init,
-+                                   "init", &init,
-                                    NULL);
-                 if (r < 0)
-                         log_debug("Failed to parse /proc/cmdline: %s", strerror(-r));
- 
--                init = cmdline_init;
-+                if (!init)
-+                        init = strdup("");
-         }
--        if (!init)
--                return log_oom();
- 
--        if (isempty(init))
--                init = NULL;
- 
--        if (init) {
-+        if (!isempty(init)) {
-                 const char *root_systemd_path = NULL, *root_init_path = NULL;
- 
-                 root_systemd_path = strappenda(root, "/" SYSTEMD_BINARY_PATH);
-@@ -4185,10 +4182,15 @@ static int switch_root(DBusConnection *bus, char **args) {
- 
-                 /* If the passed init is actually the same as the
-                  * systemd binary, then let's suppress it. */
--                if (files_same(root_init_path, root_systemd_path) > 0)
--                        init = NULL;
-+                if (files_same(root_init_path, root_systemd_path) > 0) {
-+                        free(init);
-+                        init = strdup("");
-+                }
-         }
- 
-+        if (!init)
-+                return log_oom();
-+
-         log_debug("Switching root - root: %s; init: %s", root, strna(init));
- 
-         return bus_method_call_with_reply(
diff --git a/SOURCES/0284-systemd-detect-virt-fix-detect-s390-virtualization.patch b/SOURCES/0284-systemd-detect-virt-fix-detect-s390-virtualization.patch
deleted file mode 100644
index 4b96c27..0000000
--- a/SOURCES/0284-systemd-detect-virt-fix-detect-s390-virtualization.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 4c05a1381fbedaebe3832da433e4e10c682d6384 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Fri, 12 Sep 2014 15:23:50 +0200
-Subject: [PATCH] systemd-detect-virt: fix detect s390 virtualization
-
-rhel-only patch
-
-Related: #1139149
----
- src/shared/virt.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/shared/virt.c b/src/shared/virt.c
-index 5466d97..fca8515 100644
---- a/src/shared/virt.c
-+++ b/src/shared/virt.c
-@@ -182,9 +182,9 @@ int detect_vm(const char **id) {
-                 r = get_status_field("/proc/sysinfo", "VM00 Control Program:", &t);
-                 if (r >= 0) {
-                         if (streq(t, "z/VM"))
--                                _id = "zvm";
-+                                *id = "zvm";
-                         else
--                                _id = "kvm";
-+                                *id = "kvm";
- 
-                         return 1;
-                 }
diff --git a/SOURCES/0285-exec-Add-SELinuxContext-configuration-item.patch b/SOURCES/0285-exec-Add-SELinuxContext-configuration-item.patch
deleted file mode 100644
index d98ae1d..0000000
--- a/SOURCES/0285-exec-Add-SELinuxContext-configuration-item.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-From d0a2b8832732d297321fddcad56872511ff212f2 Mon Sep 17 00:00:00 2001
-From: Michael Scherer <misc@zarb.org>
-Date: Thu, 6 Feb 2014 10:05:16 +0100
-Subject: [PATCH] exec: Add SELinuxContext configuration item
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This permit to let system administrators decide of the domain of a service.
-This can be used with templated units to have each service in a différent
-domain ( for example, a per customer database, using MLS or anything ),
-or can be used to force a non selinux enabled system (jvm, erlang, etc)
-to start in a different domain for each service.
-
-Conflicts:
-        src/core/dbus-execute.c
-        src/core/execute.c
-        src/core/execute.h
-        src/shared/exit-status.c
-        src/shared/exit-status.h
-
-(cherry picked from commit 7b52a628f8b43ba521c302a7f32bccf9d0dc8bfd)
-
-Related: #1113790
----
- man/systemd.exec.xml                  | 11 +++++++++++
- src/core/dbus-execute.c               |  1 +
- src/core/execute.c                    | 27 +++++++++++++++++++++++++++
- src/core/execute.h                    |  2 ++
- src/core/load-fragment-gperf.gperf.m4 |  3 ++-
- src/shared/exit-status.c              |  3 +++
- src/shared/exit-status.h              |  1 +
- 7 files changed, 47 insertions(+), 1 deletion(-)
-
-diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
-index 612b4d2..a68cfa7 100644
---- a/man/systemd.exec.xml
-+++ b/man/systemd.exec.xml
-@@ -919,6 +919,17 @@
-                         </varlistentry>
- 
-                         <varlistentry>
-+                                <term><varname>SELinuxContext=</varname></term>
-+
-+                                <listitem><para>Set the SELinux context of the
-+                                executed process. If set, this will override the
-+                                automated domain transition. However, the policy
-+                                still need to autorize the transition. See
-+                                <citerefentry><refentrytitle>setexeccon</refentrytitle><manvolnum>3</manvolnum></citerefentry>
-+                                for details.</para></listitem>
-+                        </varlistentry>
-+
-+                        <varlistentry>
-                                 <term><varname>IgnoreSIGPIPE=</varname></term>
- 
-                                 <listitem><para>Takes a boolean
-diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
-index 2402e8c..97d75fa 100644
---- a/src/core/dbus-execute.c
-+++ b/src/core/dbus-execute.c
-@@ -429,6 +429,7 @@ const BusProperty bus_exec_context_properties[] = {
-         { "PrivateNetwork",           bus_property_append_bool,              "b", offsetof(ExecContext, private_network)              },
-         { "SameProcessGroup",         bus_property_append_bool,              "b", offsetof(ExecContext, same_pgrp)                    },
-         { "UtmpIdentifier",           bus_property_append_string,            "s", offsetof(ExecContext, utmp_id),                true },
-+        { "SELinuxContext",           bus_property_append_string,            "s", offsetof(ExecContext, selinux_context),        true },
-         { "IgnoreSIGPIPE",            bus_property_append_bool,              "b", offsetof(ExecContext, ignore_sigpipe)               },
-         { "NoNewPrivileges",          bus_property_append_bool,              "b", offsetof(ExecContext, no_new_privileges)            },
-         { "SystemCallFilter",         bus_execute_append_syscall_filter,    "au", 0                                                   },
-diff --git a/src/core/execute.c b/src/core/execute.c
-index 981b9e4..cf9d24e 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -46,6 +46,10 @@
- #include <security/pam_appl.h>
- #endif
- 
-+#ifdef HAVE_SELINUX
-+#include <selinux/selinux.h>
-+#endif
-+
- #include "execute.h"
- #include "strv.h"
- #include "macro.h"
-@@ -1467,6 +1471,20 @@ int exec_spawn(ExecCommand *command,
-                                         goto fail_child;
-                                 }
-                         }
-+#ifdef HAVE_SELINUX
-+                        if (context->selinux_context) {
-+                                err = security_check_context(context->selinux_context);
-+                                if (err < 0) {
-+                                        r = EXIT_SELINUX_CONTEXT;
-+                                        goto fail_child;
-+                                }
-+                                err = setexeccon(context->selinux_context);
-+                                if (err < 0) {
-+                                        r = EXIT_SELINUX_CONTEXT;
-+                                        goto fail_child;
-+                                }
-+                        }
-+#endif
-                 }
- 
-                 our_env = new0(char*, 7);
-@@ -1696,6 +1714,9 @@ void exec_context_done(ExecContext *c, bool reloading_or_reexecuting) {
-         free(c->utmp_id);
-         c->utmp_id = NULL;
- 
-+        free(c->selinux_context);
-+        c->selinux_context = NULL;
-+
-         free(c->syscall_filter);
-         c->syscall_filter = NULL;
- 
-@@ -2067,6 +2088,12 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) {
-                 fprintf(f,
-                         "%sUtmpIdentifier: %s\n",
-                         prefix, c->utmp_id);
-+
-+        if (c->selinux_context)
-+                fprintf(f,
-+                        "%sSELinuxContext: %s\n",
-+                        prefix, c->selinux_context);
-+
- }
- 
- void exec_status_start(ExecStatus *s, pid_t pid) {
-diff --git a/src/core/execute.h b/src/core/execute.h
-index c1e9717..92ac8dd 100644
---- a/src/core/execute.h
-+++ b/src/core/execute.h
-@@ -124,6 +124,8 @@ struct ExecContext {
- 
-         char *utmp_id;
- 
-+        char *selinux_context;
-+
-         char **read_write_dirs, **read_only_dirs, **inaccessible_dirs;
-         unsigned long mount_flags;
- 
-diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
-index 0991cb9..935f04e 100644
---- a/src/core/load-fragment-gperf.gperf.m4
-+++ b/src/core/load-fragment-gperf.gperf.m4
-@@ -75,7 +75,8 @@ $1.MountFlags,                   config_parse_exec_mount_flags,      0,
- $1.TCPWrapName,                  config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.tcpwrap_name)
- $1.PAMName,                      config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.pam_name)
- $1.IgnoreSIGPIPE,                config_parse_bool,                  0,                             offsetof($1, exec_context.ignore_sigpipe)
--$1.UtmpIdentifier,               config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.utmp_id)'
-+$1.UtmpIdentifier,               config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.utmp_id)
-+$1.SELinuxContext,               config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.selinux_context)'
- )m4_dnl
- m4_define(`KILL_CONTEXT_CONFIG_ITEMS',
- `$1.SendSIGKILL,                 config_parse_bool,                  0,                             offsetof($1, kill_context.send_sigkill)
-diff --git a/src/shared/exit-status.c b/src/shared/exit-status.c
-index f15fdba..676291b 100644
---- a/src/shared/exit-status.c
-+++ b/src/shared/exit-status.c
-@@ -131,6 +131,9 @@ const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) {
-                 case EXIT_SECCOMP:
-                         return "SECCOMP";
- 
-+                case EXIT_SELINUX_CONTEXT:
-+                        return "SELINUX_CONTEXT";
-+
-                 case EXIT_CHOWN:
-                         return "CHOWN";
- 
-diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h
-index 52dd3d0..798f1e1 100644
---- a/src/shared/exit-status.h
-+++ b/src/shared/exit-status.h
-@@ -68,6 +68,7 @@ typedef enum ExitStatus {
-         EXIT_NAMESPACE,
-         EXIT_NO_NEW_PRIVILEGES,
-         EXIT_SECCOMP,
-+        EXIT_SELINUX_CONTEXT,
-         EXIT_CHOWN
- } ExitStatus;
- 
diff --git a/SOURCES/0286-exec-Ignore-the-setting-SELinuxContext-if-selinux-is.patch b/SOURCES/0286-exec-Ignore-the-setting-SELinuxContext-if-selinux-is.patch
deleted file mode 100644
index 53183d4..0000000
--- a/SOURCES/0286-exec-Ignore-the-setting-SELinuxContext-if-selinux-is.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 602f5a2c2a7ed23ebd61a728f6e16f63024e3c1f Mon Sep 17 00:00:00 2001
-From: Michael Scherer <misc@zarb.org>
-Date: Thu, 6 Feb 2014 10:05:17 +0100
-Subject: [PATCH] exec: Ignore the setting SELinuxContext if selinux is not
- enabled
-
-(cherry picked from commit 5c56a259e07661a66e806cc2fbc71de96a75f78e)
-
-Related: #1113790
----
- src/core/execute.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/execute.c b/src/core/execute.c
-index cf9d24e..cb6f146 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -1472,7 +1472,7 @@ int exec_spawn(ExecCommand *command,
-                                 }
-                         }
- #ifdef HAVE_SELINUX
--                        if (context->selinux_context) {
-+                        if (context->selinux_context && use_selinux()) {
-                                 err = security_check_context(context->selinux_context);
-                                 if (err < 0) {
-                                         r = EXIT_SELINUX_CONTEXT;
diff --git a/SOURCES/0287-exec-Add-support-for-ignoring-errors-on-SELinuxConte.patch b/SOURCES/0287-exec-Add-support-for-ignoring-errors-on-SELinuxConte.patch
deleted file mode 100644
index 24e2e9a..0000000
--- a/SOURCES/0287-exec-Add-support-for-ignoring-errors-on-SELinuxConte.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 5c2592bf519dc7b2b28cde77f5f35422ec7a9320 Mon Sep 17 00:00:00 2001
-From: Michael Scherer <misc@zarb.org>
-Date: Thu, 6 Feb 2014 10:05:18 +0100
-Subject: [PATCH] exec: Add support for ignoring errors on SELinuxContext by
- prefixing it with -, like for others settings.
-
-Also remove call to security_check_context, as this doesn't serve anything, since
-setexeccon will fail anyway.
-
-(cherry picked from commit 0d3f7bb3a5bc6d5c0712f88a080fed388981bca3)
-
-Related: #1113790
----
- man/systemd.exec.xml |  4 +++-
- src/core/execute.c   | 20 +++++++++++++-------
- 2 files changed, 16 insertions(+), 8 deletions(-)
-
-diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml
-index a68cfa7..7608489 100644
---- a/man/systemd.exec.xml
-+++ b/man/systemd.exec.xml
-@@ -924,7 +924,9 @@
-                                 <listitem><para>Set the SELinux context of the
-                                 executed process. If set, this will override the
-                                 automated domain transition. However, the policy
--                                still need to autorize the transition. See
-+                                still need to autorize the transition. This directive
-+                                is ignored if SELinux is disabled. If prefixed by <literal>-</literal>,
-+                                all errors will be ignored. See
-                                 <citerefentry><refentrytitle>setexeccon</refentrytitle><manvolnum>3</manvolnum></citerefentry>
-                                 for details.</para></listitem>
-                         </varlistentry>
-diff --git a/src/core/execute.c b/src/core/execute.c
-index cb6f146..9fc5090 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -72,6 +72,7 @@
- #include "fileio.h"
- #include "unit.h"
- #include "async.h"
-+#include "selinux-util.h"
- 
- #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC)
- #define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC)
-@@ -1473,13 +1474,18 @@ int exec_spawn(ExecCommand *command,
-                         }
- #ifdef HAVE_SELINUX
-                         if (context->selinux_context && use_selinux()) {
--                                err = security_check_context(context->selinux_context);
--                                if (err < 0) {
--                                        r = EXIT_SELINUX_CONTEXT;
--                                        goto fail_child;
--                                }
--                                err = setexeccon(context->selinux_context);
--                                if (err < 0) {
-+                                bool ignore;
-+                                char* c;
-+
-+                                c = context->selinux_context;
-+                                if (c[0] == '-') {
-+                                        c++;
-+                                        ignore = true;
-+                                } else
-+                                        ignore = false;
-+
-+                                err = setexeccon(c);
-+                                if (err < 0 && !ignore) {
-                                         r = EXIT_SELINUX_CONTEXT;
-                                         goto fail_child;
-                                 }
diff --git a/SOURCES/0288-core-store-and-expose-SELinuxContext-field-normalize.patch b/SOURCES/0288-core-store-and-expose-SELinuxContext-field-normalize.patch
deleted file mode 100644
index 3bf7ac7..0000000
--- a/SOURCES/0288-core-store-and-expose-SELinuxContext-field-normalize.patch
+++ /dev/null
@@ -1,199 +0,0 @@
-From f71db1f834f639a16a38e7314ba7ca0dd0d060d8 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 17 Feb 2014 16:52:52 +0100
-Subject: [PATCH] core: store and expose SELinuxContext field normalized as
- bool + string
-
-Conflicts:
-        src/core/dbus-execute.c
-        src/core/execute.c
-        src/core/load-fragment.h
-
-(cherry picked from commit 5f8640fb628cb034981e02d741fd9ddf26fdf38d)
-
-Related: #1113790
----
- src/core/dbus-execute.c               | 26 ++++++++++++++++++-
- src/core/execute.c                    | 18 +++----------
- src/core/execute.h                    |  1 +
- src/core/load-fragment-gperf.gperf.m4 |  2 +-
- src/core/load-fragment.c              | 48 +++++++++++++++++++++++++++++++++++
- src/core/load-fragment.h              |  1 +
- 6 files changed, 80 insertions(+), 16 deletions(-)
-
-diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
-index 97d75fa..8162f1c 100644
---- a/src/core/dbus-execute.c
-+++ b/src/core/dbus-execute.c
-@@ -372,6 +372,30 @@ static int bus_execute_append_syscall_filter(DBusMessageIter *i, const char *pro
-         return 0;
- }
- 
-+static int bus_execute_append_selinux_context(DBusMessageIter *i, const char *property, void *data) {
-+        ExecContext *c = data;
-+        dbus_bool_t selinux_context_ignore;
-+        const char *selinux_context = NULL;
-+
-+        assert(i);
-+        assert(property);
-+        assert(c);
-+
-+        selinux_context = c->selinux_context;
-+        if (!selinux_context)
-+                selinux_context = "";
-+
-+        selinux_context_ignore = c->selinux_context_ignore;
-+
-+        if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &selinux_context_ignore))
-+                return -ENOMEM;
-+
-+        if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &selinux_context))
-+                return -ENOMEM;
-+
-+        return 0;
-+}
-+
- const BusProperty bus_exec_context_properties[] = {
-         { "Environment",              bus_property_append_strv,             "as", offsetof(ExecContext, environment),            true },
-         { "EnvironmentFiles",         bus_execute_append_env_files,      "a(sb)", offsetof(ExecContext, environment_files),      true },
-@@ -429,7 +453,7 @@ const BusProperty bus_exec_context_properties[] = {
-         { "PrivateNetwork",           bus_property_append_bool,              "b", offsetof(ExecContext, private_network)              },
-         { "SameProcessGroup",         bus_property_append_bool,              "b", offsetof(ExecContext, same_pgrp)                    },
-         { "UtmpIdentifier",           bus_property_append_string,            "s", offsetof(ExecContext, utmp_id),                true },
--        { "SELinuxContext",           bus_property_append_string,            "s", offsetof(ExecContext, selinux_context),        true },
-+        { "SELinuxContext",           bus_execute_append_selinux_context, "(bs)", 0                                                   },
-         { "IgnoreSIGPIPE",            bus_property_append_bool,              "b", offsetof(ExecContext, ignore_sigpipe)               },
-         { "NoNewPrivileges",          bus_property_append_bool,              "b", offsetof(ExecContext, no_new_privileges)            },
-         { "SystemCallFilter",         bus_execute_append_syscall_filter,    "au", 0                                                   },
-diff --git a/src/core/execute.c b/src/core/execute.c
-index 9fc5090..a20301d 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -1474,18 +1474,8 @@ int exec_spawn(ExecCommand *command,
-                         }
- #ifdef HAVE_SELINUX
-                         if (context->selinux_context && use_selinux()) {
--                                bool ignore;
--                                char* c;
--
--                                c = context->selinux_context;
--                                if (c[0] == '-') {
--                                        c++;
--                                        ignore = true;
--                                } else
--                                        ignore = false;
--
--                                err = setexeccon(c);
--                                if (err < 0 && !ignore) {
-+                                err = setexeccon(context->selinux_context);
-+                                if (err < 0 && !context->selinux_context_ignore) {
-                                         r = EXIT_SELINUX_CONTEXT;
-                                         goto fail_child;
-                                 }
-@@ -2097,8 +2087,8 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) {
- 
-         if (c->selinux_context)
-                 fprintf(f,
--                        "%sSELinuxContext: %s\n",
--                        prefix, c->selinux_context);
-+                        "%sSELinuxContext: %s%s\n",
-+                        prefix, c->selinux_context_ignore ? "-" : "", c->selinux_context);
- 
- }
- 
-diff --git a/src/core/execute.h b/src/core/execute.h
-index 92ac8dd..2452126 100644
---- a/src/core/execute.h
-+++ b/src/core/execute.h
-@@ -124,6 +124,7 @@ struct ExecContext {
- 
-         char *utmp_id;
- 
-+        bool selinux_context_ignore;
-         char *selinux_context;
- 
-         char **read_write_dirs, **read_only_dirs, **inaccessible_dirs;
-diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
-index 935f04e..759fbd8 100644
---- a/src/core/load-fragment-gperf.gperf.m4
-+++ b/src/core/load-fragment-gperf.gperf.m4
-@@ -76,7 +76,7 @@ $1.TCPWrapName,                  config_parse_unit_string_printf,    0,
- $1.PAMName,                      config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.pam_name)
- $1.IgnoreSIGPIPE,                config_parse_bool,                  0,                             offsetof($1, exec_context.ignore_sigpipe)
- $1.UtmpIdentifier,               config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.utmp_id)
--$1.SELinuxContext,               config_parse_unit_string_printf,    0,                             offsetof($1, exec_context.selinux_context)'
-+$1.SELinuxContext,               config_parse_exec_selinux_context,  0,                             offsetof($1, exec_context)'
- )m4_dnl
- m4_define(`KILL_CONTEXT_CONFIG_ITEMS',
- `$1.SendSIGKILL,                 config_parse_bool,                  0,                             offsetof($1, kill_context.send_sigkill)
-diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c
-index f01843d..8e6e428 100644
---- a/src/core/load-fragment.c
-+++ b/src/core/load-fragment.c
-@@ -1139,6 +1139,54 @@ int config_parse_exec_mount_flags(const char *unit,
-         return 0;
- }
- 
-+int config_parse_exec_selinux_context(
-+                const char *unit,
-+                const char *filename,
-+                unsigned line,
-+                const char *section,
-+                const char *lvalue,
-+                int ltype,
-+                const char *rvalue,
-+                void *data,
-+                void *userdata) {
-+
-+        ExecContext *c = data;
-+        Unit *u = userdata;
-+        bool ignore;
-+        char *k;
-+        int r;
-+
-+        assert(filename);
-+        assert(lvalue);
-+        assert(rvalue);
-+        assert(data);
-+
-+        if (isempty(rvalue)) {
-+                free(c->selinux_context);
-+                c->selinux_context = NULL;
-+                c->selinux_context_ignore = false;
-+                return 0;
-+        }
-+
-+        if (rvalue[0] == '-') {
-+                ignore = true;
-+                rvalue++;
-+        } else
-+                ignore = false;
-+
-+        r = unit_name_printf(u, rvalue, &k);
-+        if (r < 0) {
-+                log_syntax(unit, LOG_ERR, filename, line, -r, "Failed to resolve specifiers, ignoring: %s", strerror(-r));
-+                return 0;
-+        }
-+
-+        free(c->selinux_context);
-+        c->selinux_context = k;
-+        c->selinux_context_ignore = ignore;
-+
-+        return 0;
-+}
-+
- int config_parse_timer(const char *unit,
-                        const char *filename,
-                        unsigned line,
-diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h
-index 90e5e3a..de48436 100644
---- a/src/core/load-fragment.h
-+++ b/src/core/load-fragment.h
-@@ -83,6 +83,7 @@ int config_parse_device_allow(const char *unit, const char *filename, unsigned l
- int config_parse_blockio_weight(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
- int config_parse_blockio_device_weight(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
- int config_parse_blockio_bandwidth(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
-+int config_parse_exec_selinux_context(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata);
- 
- /* gperf prototypes */
- const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, unsigned length);
diff --git a/SOURCES/0289-socket-introduce-SELinuxContextFromNet-option.patch b/SOURCES/0289-socket-introduce-SELinuxContextFromNet-option.patch
deleted file mode 100644
index d1a60da..0000000
--- a/SOURCES/0289-socket-introduce-SELinuxContextFromNet-option.patch
+++ /dev/null
@@ -1,431 +0,0 @@
-From 98bb285648a68c89820fe7415737ee97da74ec69 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Thu, 24 Jul 2014 10:40:28 +0200
-Subject: [PATCH] socket: introduce SELinuxContextFromNet option
-
-This makes possible to spawn service instances triggered by socket with
-MLS/MCS SELinux labels which are created based on information provided by
-connected peer.
-
-Implementation of label_get_child_mls_label derived from xinetd.
-
-Reviewed-by: Paul Moore <pmoore@redhat.com>
-
-Resolves: #1113790
----
- man/systemd.socket.xml                |  26 ++++++++
- src/core/execute.c                    |  30 +++++++--
- src/core/execute.h                    |   1 +
- src/core/load-fragment-gperf.gperf.m4 |   1 +
- src/core/mount.c                      |   1 +
- src/core/service.c                    |   4 +-
- src/core/service.h                    |   3 +-
- src/core/socket.c                     |  16 +++--
- src/core/socket.h                     |   2 +
- src/core/swap.c                       |   1 +
- src/shared/label.c                    | 113 ++++++++++++++++++++++++++++++++++
- src/shared/label.h                    |   2 +
- 12 files changed, 189 insertions(+), 11 deletions(-)
-
-diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml
-index d146b3b..75ba15f 100644
---- a/man/systemd.socket.xml
-+++ b/man/systemd.socket.xml
-@@ -585,6 +585,32 @@
-                         </varlistentry>
- 
-                         <varlistentry>
-+                          <term><varname>SELinuxContextFromNet=</varname></term>
-+                                 <listitem><para>Takes a boolean
-+                                 argument. When true systemd will attempt
-+                                 to figure out the SELinux label used
-+                                 for the instantiated service from the
-+                                 information handed by the peer over the
-+                                 network. Note that only the security
-+                                 level is used from the information
-+                                 provided by the peer. Other parts of
-+                                 the resulting SELinux context originate
-+                                 from either the target binary that is
-+                                 effectively triggered by socket unit
-+                                 are taken from the value of the
-+                                 <varname>SELinuxContext=</varname>
-+                                 option.This configuration option only
-+                                 affects sockets with
-+                                 <varname>Accept=</varname> mode set to
-+                                 <literal>true</literal>. Also note that
-+                                 this option is useful only when
-+                                 MLS/MCS SELinux policy is
-+                                 deployed. Defaults to
-+                                 <literal>false</literal>.
-+                                 </para></listitem>
-+                        </varlistentry>
-+
-+                        <varlistentry>
-                                 <term><varname>PipeSize=</varname></term>
-                                 <listitem><para>Takes an integer
-                                 value. Controls the pipe buffer size
-diff --git a/src/core/execute.c b/src/core/execute.c
-index a20301d..0894156 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -73,6 +73,7 @@
- #include "unit.h"
- #include "async.h"
- #include "selinux-util.h"
-+#include "label.h"
- 
- #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC)
- #define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC)
-@@ -1038,6 +1039,7 @@ int exec_spawn(ExecCommand *command,
-                bool apply_chroot,
-                bool apply_tty_stdin,
-                bool confirm_spawn,
-+               bool selinux_context_net,
-                CGroupControllerMask cgroup_supported,
-                const char *cgroup_path,
-                const char *unit_id,
-@@ -1473,11 +1475,29 @@ int exec_spawn(ExecCommand *command,
-                                 }
-                         }
- #ifdef HAVE_SELINUX
--                        if (context->selinux_context && use_selinux()) {
--                                err = setexeccon(context->selinux_context);
--                                if (err < 0 && !context->selinux_context_ignore) {
--                                        r = EXIT_SELINUX_CONTEXT;
--                                        goto fail_child;
-+                        if (use_selinux()) {
-+                                if (context->selinux_context) {
-+                                        err = setexeccon(context->selinux_context);
-+                                        if (err < 0 && !context->selinux_context_ignore) {
-+                                                r = EXIT_SELINUX_CONTEXT;
-+                                                goto fail_child;
-+                                        }
-+                                }
-+
-+                                if (selinux_context_net && socket_fd >= 0) {
-+                                        _cleanup_free_ char *label = NULL;
-+
-+                                        err = label_get_child_mls_label(socket_fd, command->path, &label);
-+                                        if (err < 0) {
-+                                                r = EXIT_SELINUX_CONTEXT;
-+                                                goto fail_child;
-+                                        }
-+
-+                                        err = setexeccon(label);
-+                                        if (err < 0) {
-+                                                r = EXIT_SELINUX_CONTEXT;
-+                                                goto fail_child;
-+                                        }
-                                 }
-                         }
- #endif
-diff --git a/src/core/execute.h b/src/core/execute.h
-index 2452126..5055890 100644
---- a/src/core/execute.h
-+++ b/src/core/execute.h
-@@ -174,6 +174,7 @@ int exec_spawn(ExecCommand *command,
-                bool apply_chroot,
-                bool apply_tty_stdin,
-                bool confirm_spawn,
-+               bool selinux_context_net,
-                CGroupControllerMask cgroup_mask,
-                const char *cgroup_path,
-                const char *unit_id,
-diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
-index 759fbd8..ee7cd5d 100644
---- a/src/core/load-fragment-gperf.gperf.m4
-+++ b/src/core/load-fragment-gperf.gperf.m4
-@@ -221,6 +221,7 @@ Socket.Service,                  config_parse_socket_service,        0,
- Socket.SmackLabel,               config_parse_string,                0,                             offsetof(Socket, smack)
- Socket.SmackLabelIPIn,           config_parse_string,                0,                             offsetof(Socket, smack_ip_in)
- Socket.SmackLabelIPOut,          config_parse_string,                0,                             offsetof(Socket, smack_ip_out)
-+Socket.SELinuxContextFromNet,    config_parse_bool,                  0,                             offsetof(Socket, selinux_context_from_net),
- EXEC_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
- CGROUP_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
- KILL_CONTEXT_CONFIG_ITEMS(Socket)m4_dnl
-diff --git a/src/core/mount.c b/src/core/mount.c
-index 3672338..bbceb92 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -791,6 +791,7 @@ static int mount_spawn(Mount *m, ExecCommand *c, pid_t *_pid) {
-                        true,
-                        true,
-                        UNIT(m)->manager->confirm_spawn,
-+                       false,
-                        UNIT(m)->manager->cgroup_supported,
-                        UNIT(m)->cgroup_path,
-                        UNIT(m)->id,
-diff --git a/src/core/service.c b/src/core/service.c
-index 4366e1b..7ef2b3a 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -1867,6 +1867,7 @@ static int service_spawn(
-                        apply_chroot,
-                        apply_tty_stdin,
-                        UNIT(s)->manager->confirm_spawn,
-+                       false,
-                        UNIT(s)->manager->cgroup_supported,
-                        path,
-                        UNIT(s)->id,
-@@ -3806,7 +3807,7 @@ static void service_bus_query_pid_done(
-         }
- }
- 
--int service_set_socket_fd(Service *s, int fd, Socket *sock) {
-+int service_set_socket_fd(Service *s, int fd, Socket *sock, bool selinux_context_net) {
- 
-         assert(s);
-         assert(fd >= 0);
-@@ -3825,6 +3826,7 @@ int service_set_socket_fd(Service *s, int fd, Socket *sock) {
-                 return -EAGAIN;
- 
-         s->socket_fd = fd;
-+        s->socket_fd_selinux_context_net = selinux_context_net;
-         s->got_socket_fd = true;
- 
-         unit_ref_set(&s->accept_socket, UNIT(sock));
-diff --git a/src/core/service.h b/src/core/service.h
-index fa4ef2b..24e6b4e 100644
---- a/src/core/service.h
-+++ b/src/core/service.h
-@@ -156,6 +156,7 @@ struct Service {
- 
-         pid_t main_pid, control_pid;
-         int socket_fd;
-+        bool socket_fd_selinux_context_net;
- 
-         int fsck_passno;
- 
-@@ -204,7 +205,7 @@ extern const UnitVTable service_vtable;
- 
- struct Socket;
- 
--int service_set_socket_fd(Service *s, int fd, struct Socket *socket);
-+int service_set_socket_fd(Service *s, int fd, struct Socket *socket, bool selinux_context_net);
- 
- const char* service_state_to_string(ServiceState i) _const_;
- ServiceState service_state_from_string(const char *s) _pure_;
-diff --git a/src/core/socket.c b/src/core/socket.c
-index 32e0d35..35fc204 100644
---- a/src/core/socket.c
-+++ b/src/core/socket.c
-@@ -431,7 +431,8 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) {
-                 "%sBroadcast: %s\n"
-                 "%sPassCredentials: %s\n"
-                 "%sPassSecurity: %s\n"
--                "%sTCPCongestion: %s\n",
-+                "%sTCPCongestion: %s\n"
-+                "%sSELinuxContextFromNet: %s\n",
-                 prefix, socket_state_to_string(s->state),
-                 prefix, socket_result_to_string(s->result),
-                 prefix, socket_address_bind_ipv6_only_to_string(s->bind_ipv6_only),
-@@ -444,7 +445,8 @@ static void socket_dump(Unit *u, FILE *f, const char *prefix) {
-                 prefix, yes_no(s->broadcast),
-                 prefix, yes_no(s->pass_cred),
-                 prefix, yes_no(s->pass_sec),
--                prefix, strna(s->tcp_congestion));
-+                prefix, strna(s->tcp_congestion),
-+                prefix, yes_no(s->selinux_context_from_net));
- 
-         if (s->control_pid > 0)
-                 fprintf(f,
-@@ -994,7 +996,12 @@ static int socket_open_fds(Socket *s) {
- 
-                 if (p->type == SOCKET_SOCKET) {
- 
--                        if (!know_label) {
-+                        if (!know_label && s->selinux_context_from_net) {
-+                                r = label_get_our_label(&label);
-+                                if (r < 0)
-+                                        return r;
-+                                know_label = true;
-+                        } else if (!know_label) {
- 
-                                 if ((r = socket_instantiate_service(s)) < 0)
-                                         return r;
-@@ -1227,6 +1234,7 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
-                        true,
-                        true,
-                        UNIT(s)->manager->confirm_spawn,
-+                       s->selinux_context_from_net,
-                        UNIT(s)->manager->cgroup_supported,
-                        UNIT(s)->cgroup_path,
-                        UNIT(s)->id,
-@@ -1666,7 +1674,7 @@ static void socket_enter_running(Socket *s, int cfd) {
-                 unit_choose_id(UNIT(service), name);
-                 free(name);
- 
--                r = service_set_socket_fd(service, cfd, s);
-+                r = service_set_socket_fd(service, cfd, s, s->selinux_context_from_net);
-                 if (r < 0)
-                         goto fail;
- 
-diff --git a/src/core/socket.h b/src/core/socket.h
-index 6a24883..ddddf4c 100644
---- a/src/core/socket.h
-+++ b/src/core/socket.h
-@@ -154,6 +154,8 @@ struct Socket {
-         char *smack_ip_in;
-         char *smack_ip_out;
- 
-+        bool selinux_context_from_net;
-+
-         char *user;
-         char *group;
- };
-diff --git a/src/core/swap.c b/src/core/swap.c
-index 727bb95..b72034f 100644
---- a/src/core/swap.c
-+++ b/src/core/swap.c
-@@ -589,6 +589,7 @@ static int swap_spawn(Swap *s, ExecCommand *c, pid_t *_pid) {
-                        true,
-                        true,
-                        UNIT(s)->manager->confirm_spawn,
-+                       false,
-                        UNIT(s)->manager->cgroup_supported,
-                        UNIT(s)->cgroup_path,
-                        UNIT(s)->id,
-diff --git a/src/shared/label.c b/src/shared/label.c
-index fde39f2..4dab93e 100644
---- a/src/shared/label.c
-+++ b/src/shared/label.c
-@@ -38,6 +38,13 @@
- #include "selinux-util.h"
- #include <selinux/selinux.h>
- #include <selinux/label.h>
-+#include <selinux/context.h>
-+
-+define_trivial_cleanup_func(security_context_t, freecon);
-+define_trivial_cleanup_func(context_t, context_free);
-+
-+#define _cleanup_security_context_free_ _cleanup_(freeconp)
-+#define _cleanup_context_free_ _cleanup_(context_freep)
- 
- static struct selabel_handle *label_hnd = NULL;
- 
-@@ -180,6 +187,112 @@ fail:
-         return r;
- }
- 
-+int label_get_our_label(char **label) {
-+        int r = -EOPNOTSUPP;
-+        char *l = NULL;
-+
-+#ifdef HAVE_SELINUX
-+        r = getcon(&l);
-+        if (r < 0)
-+                return r;
-+
-+        *label = l;
-+#endif
-+
-+        return r;
-+}
-+
-+int label_get_child_mls_label(int socket_fd, const char *exe, char **label) {
-+        int r = -EOPNOTSUPP;
-+
-+#ifdef HAVE_SELINUX
-+
-+        _cleanup_security_context_free_ security_context_t mycon = NULL, peercon = NULL, fcon = NULL, ret = NULL;
-+        _cleanup_context_free_ context_t pcon = NULL, bcon = NULL;
-+        security_class_t sclass;
-+
-+        const char *range = NULL;
-+
-+        assert(socket_fd >= 0);
-+        assert(exe);
-+        assert(label);
-+
-+        r = getcon(&mycon);
-+        if (r < 0) {
-+                r = -EINVAL;
-+                goto out;
-+        }
-+
-+        r = getpeercon(socket_fd, &peercon);
-+        if (r < 0) {
-+                r = -EINVAL;
-+                goto out;
-+        }
-+
-+        r = getexeccon(&fcon);
-+        if (r < 0) {
-+                r = -EINVAL;
-+                goto out;
-+        }
-+
-+        if (!fcon) {
-+                /* If there is no context set for next exec let's use context
-+                   of target executable */
-+                r = getfilecon(exe, &fcon);
-+                if (r < 0) {
-+                        r = -errno;
-+                        goto out;
-+                }
-+        }
-+
-+        bcon = context_new(mycon);
-+        if (!bcon) {
-+                r = -ENOMEM;
-+                goto out;
-+        }
-+
-+        pcon = context_new(peercon);
-+        if (!pcon) {
-+                r = -ENOMEM;
-+                goto out;
-+        }
-+
-+        range = context_range_get(pcon);
-+        if (!range) {
-+                r = -errno;
-+                goto out;
-+        }
-+
-+        r = context_range_set(bcon, range);
-+        if (r) {
-+                r = -errno;
-+                goto out;
-+        }
-+
-+        freecon(mycon);
-+        mycon = context_str(bcon);
-+        if (!mycon) {
-+                r = -errno;
-+                goto out;
-+        }
-+
-+        sclass = string_to_security_class("process");
-+        r = security_compute_create(mycon, fcon, sclass, &ret);
-+        if (r < 0) {
-+                r = -EINVAL;
-+                goto out;
-+        }
-+
-+        *label = ret;
-+        r = 0;
-+
-+out:
-+        if (r < 0 && security_getenforce() == 1)
-+                return r;
-+#endif
-+        return r;
-+}
-+
- int label_context_set(const char *path, mode_t mode) {
-         int r = 0;
- 
-diff --git a/src/shared/label.h b/src/shared/label.h
-index 09e15e3..d8a281c 100644
---- a/src/shared/label.h
-+++ b/src/shared/label.h
-@@ -39,6 +39,8 @@ void label_context_clear(void);
- void label_free(const char *label);
- 
- int label_get_create_label_from_exe(const char *exe, char **label);
-+int label_get_our_label(char **label);
-+int label_get_child_mls_label(int socket_fd, const char *exec, char **label);
- 
- int label_mkdir(const char *path, mode_t mode);
- 
diff --git a/SOURCES/0290-sysctl-make-prefix-allow-all-kinds-of-sysctl-paths.patch b/SOURCES/0290-sysctl-make-prefix-allow-all-kinds-of-sysctl-paths.patch
deleted file mode 100644
index 943dccf..0000000
--- a/SOURCES/0290-sysctl-make-prefix-allow-all-kinds-of-sysctl-paths.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From 5024f01fec5e6c8fd05ca5451176878084e3f18f Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann@gmail.com>
-Date: Wed, 17 Sep 2014 09:06:49 +0200
-Subject: [PATCH] sysctl: make --prefix allow all kinds of sysctl paths
-
-Currently, we save arguments passed as --prefix directly and compare them
-later to absolute sysctl file-system paths. That is, you are required to
-specify arguments to --prefix with leading /proc/sys/. This is kinda
-uselesss. Furthermore, we replace dots by slashes in the name, which makes
-it impossible to match on specific sysfs paths that have dots in their
-name (like netdev names). The intention of this argument is clear, but it
-never worked as expected.
-
-This patch modifies --prefix to accept any kind of sysctl paths. It
-supports paths prefixed with /proc/sys for compatibility (but drops the
-erroneous dot->slash conversion), but instead applies normalize_sysctl()
-which turns any name or path into a proper path. It then appends
-/proc/sys/ so we can properly use it in matches.
-
-Thanks to Jan Synacek <jsynacek@redhat.com> for catching this!
-
-Conflicts:
-	src/sysctl/sysctl.c
-
-(cherry picked from commit 0e1f579227b08832437a7ac2227c7e4007a89d23)
-
-Resolves: #1138591
----
- src/sysctl/sysctl.c | 40 +++++++++++++++++++++++++++++-----------
- 1 file changed, 29 insertions(+), 11 deletions(-)
-
-diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c
-index a9d4d53..d6f48dd 100644
---- a/src/sysctl/sysctl.c
-+++ b/src/sysctl/sysctl.c
-@@ -51,9 +51,23 @@ static const char conf_file_dirs[] =
- static char *normalize_sysctl(char *s) {
-         char *n;
- 
--        for (n = s; *n; n++)
-+        n = strpbrk(s, "/.");
-+        /* If the first separator is a slash, the path is
-+         * assumed to be normalized and slashes remain slashes
-+         * and dots remains dots. */
-+        if (!n || *n == '/')
-+                return s;
-+
-+        /* Otherwise, dots become slashes and slashes become
-+         * dots. Fun. */
-+        while (n) {
-                 if (*n == '.')
-                         *n = '/';
-+                else
-+                        *n = '.';
-+
-+                n = strpbrk(n + 1, "/.");
-+        }
- 
-         return s;
- }
-@@ -205,7 +219,7 @@ static int help(void) {
-         printf("%s [OPTIONS...] [CONFIGURATION FILE...]\n\n"
-                "Applies kernel sysctl settings.\n\n"
-                "  -h --help             Show this help\n"
--               "     --prefix=PATH      Only apply rules that apply to paths with the specified prefix\n",
-+               "     --prefix=PATH      Only apply rules with the specified prefix\n",
-                program_invocation_short_name);
- 
-         return 0;
-@@ -238,18 +252,22 @@ static int parse_argv(int argc, char *argv[]) {
- 
-                 case ARG_PREFIX: {
-                         char *p;
--                        char **l;
- 
--                        for (p = optarg; *p; p++)
--                                if (*p == '.')
--                                        *p = '/';
--
--                        l = strv_append(arg_prefixes, optarg);
--                        if (!l)
-+                        /* We used to require people to specify absolute paths
-+                         * in /proc/sys in the past. This is kinda useless, but
-+                         * we need to keep compatibility. We now support any
-+                         * sysctl name available. */
-+                        normalize_sysctl(optarg);
-+                        if (startswith(optarg, "/proc/sys"))
-+                                p = strdup(optarg);
-+                        else
-+                                p = strappend("/proc/sys/", optarg);
-+
-+                        if (!p)
-                                 return log_oom();
- 
--                        strv_free(arg_prefixes);
--                        arg_prefixes = l;
-+                        if (strv_push(&arg_prefixes, p) < 0)
-+                                return log_oom();
- 
-                         break;
-                 }
diff --git a/SOURCES/0291-core-make-sure-to-serialize-jobs-for-all-units.patch b/SOURCES/0291-core-make-sure-to-serialize-jobs-for-all-units.patch
deleted file mode 100644
index b3b713e..0000000
--- a/SOURCES/0291-core-make-sure-to-serialize-jobs-for-all-units.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From bbfce083901a7c7b0ca93297453796c2183a237d Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 16 May 2014 01:15:03 +0200
-Subject: [PATCH] core: make sure to serialize jobs for all units
-
-Previously we wouldn't serialize jobs for units that themselves have
-nothing to serialize.
-
-http://lists.freedesktop.org/archives/systemd-devel/2014-May/019051.html
-
-Conflicts:
-	src/core/unit.c
-
-(cherry-picked from 9bdb98c59451ed090f8d35d470a54710f389ce71)
-
-Related: #1138546
----
- src/core/manager.c |  3 ---
- src/core/unit.c    | 45 +++++++++++++++++++++------------------------
- 2 files changed, 21 insertions(+), 27 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index a2810b4..4ad26e1 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -2169,9 +2169,6 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root) {
-                 if (u->id != t)
-                         continue;
- 
--                if (!unit_can_serialize(u))
--                        continue;
--
-                 /* Start marker */
-                 fputs(u->id, f);
-                 fputc('\n', f);
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 17792d1..855e135 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -2296,24 +2296,10 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
-         assert(f);
-         assert(fds);
- 
--        if (!unit_can_serialize(u))
--                return 0;
--
--        r = UNIT_VTABLE(u)->serialize(u, f, fds);
--        if (r < 0)
--                return r;
--
--
--        if (serialize_jobs) {
--                if (u->job) {
--                        fprintf(f, "job\n");
--                        job_serialize(u->job, f, fds);
--                }
--
--                if (u->nop_job) {
--                        fprintf(f, "job\n");
--                        job_serialize(u->nop_job, f, fds);
--                }
-+        if (unit_can_serialize(u)) {
-+                r = UNIT_VTABLE(u)->serialize(u, f, fds);
-+                if (r < 0)
-+                        return r;
-         }
- 
-         dual_timestamp_serialize(f, "inactive-exit-timestamp", &u->inactive_exit_timestamp);
-@@ -2330,6 +2316,18 @@ int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs) {
-         if (u->cgroup_path)
-                 unit_serialize_item(u, f, "cgroup", u->cgroup_path);
- 
-+        if (serialize_jobs) {
-+                if (u->job) {
-+                        fprintf(f, "job\n");
-+                        job_serialize(u->job, f, fds);
-+                }
-+
-+                if (u->nop_job) {
-+                        fprintf(f, "job\n");
-+                        job_serialize(u->nop_job, f, fds);
-+                }
-+        }
-+
-         /* End marker */
-         fputc('\n', f);
-         return 0;
-@@ -2369,9 +2367,6 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
-         assert(f);
-         assert(fds);
- 
--        if (!unit_can_serialize(u))
--                return 0;
--
-         for (;;) {
-                 char line[LINE_MAX], *l, *v;
-                 size_t k;
-@@ -2484,9 +2479,11 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) {
-                         continue;
-                 }
- 
--                r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds);
--                if (r < 0)
--                        return r;
-+                if (unit_can_serialize(u)) {
-+                        r = UNIT_VTABLE(u)->deserialize_item(u, l, v, fds);
-+                        if (r < 0)
-+                                return r;
-+                }
-         }
- }
- 
diff --git a/SOURCES/0292-man-mention-localectl-in-locale.conf.patch b/SOURCES/0292-man-mention-localectl-in-locale.conf.patch
deleted file mode 100644
index 7ae99b0..0000000
--- a/SOURCES/0292-man-mention-localectl-in-locale.conf.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 6c3574cb20ee440a2293a64ef140dc0d073a93a5 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 18 Sep 2014 14:13:31 +0200
-Subject: [PATCH] man: mention localectl in locale.conf
-
-rhel-only (in other patch in upstream)
-
-Resolves: #1049286
----
- man/locale.conf.xml | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/man/locale.conf.xml b/man/locale.conf.xml
-index e970921..408f18f 100644
---- a/man/locale.conf.xml
-+++ b/man/locale.conf.xml
-@@ -96,6 +96,10 @@
-                 configuration files might be checked for locale
-                 configuration as well, however only as
-                 fallback.</para>
-+
-+                <para><citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-+                may be used to alter the settings in this file during
-+                runtime from the command line.</para>
-         </refsect1>
- 
-         <refsect1>
-@@ -142,6 +146,7 @@ LC_MESSAGES=en_US.UTF-8</programlisting>
-                   <para>
-                           <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                           <citerefentry><refentrytitle>locale</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
-+                          <citerefentry><refentrytitle>localectl</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-                           <citerefentry><refentrytitle>systemd-localed.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-                   </para>
-         </refsect1>
diff --git a/SOURCES/0293-rules-automatically-online-hot-added-CPUs.patch b/SOURCES/0293-rules-automatically-online-hot-added-CPUs.patch
deleted file mode 100644
index 29beacc..0000000
--- a/SOURCES/0293-rules-automatically-online-hot-added-CPUs.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From fa5a7d49ecbe40e2e33f1d165a4522d9b4315531 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 22 Sep 2014 07:41:06 +0200
-Subject: [PATCH] rules: automatically online hot-added CPUs
-
-RHEL-only patch
-
-Resolves: #968811
----
- Makefile.am           | 3 ++-
- rules/40-redhat.rules | 3 +++
- 2 files changed, 5 insertions(+), 1 deletion(-)
- create mode 100644 rules/40-redhat.rules
-
-diff --git a/Makefile.am b/Makefile.am
-index 30ab13c..54941c0 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2220,7 +2220,8 @@ dist_udevrules_DATA += \
- 	rules/75-tty-description.rules \
- 	rules/78-sound-card.rules \
- 	rules/80-net-name-slot.rules \
--	rules/95-udev-late.rules
-+	rules/95-udev-late.rules \
-+	rules/40-redhat.rules
- 
- dist_udevhwdb_DATA = \
- 	hwdb/20-pci-vendor-model.hwdb \
-diff --git a/rules/40-redhat.rules b/rules/40-redhat.rules
-new file mode 100644
-index 0000000..2b494e5
---- /dev/null
-+++ b/rules/40-redhat.rules
-@@ -0,0 +1,3 @@
-+# do not edit this file, it will be overwritten on update
-+
-+SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1"
diff --git a/SOURCES/0294-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch b/SOURCES/0294-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch
deleted file mode 100644
index 5168276..0000000
--- a/SOURCES/0294-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From eb8c33c65906ba721c6becb4053b8e0b56447aec Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 22 Sep 2014 07:53:52 +0200
-Subject: [PATCH] rules: add rule for naming Dell iDRAC USB Virtual NIC as
- 'idrac'
-
-RHEL-only patch
-
-Resolves: #1054477
----
- Makefile.am          | 3 ++-
- rules/73-idrac.rules | 6 ++++++
- 2 files changed, 8 insertions(+), 1 deletion(-)
- create mode 100644 rules/73-idrac.rules
-
-diff --git a/Makefile.am b/Makefile.am
-index 54941c0..d54a556 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -2221,7 +2221,8 @@ dist_udevrules_DATA += \
- 	rules/78-sound-card.rules \
- 	rules/80-net-name-slot.rules \
- 	rules/95-udev-late.rules \
--	rules/40-redhat.rules
-+	rules/40-redhat.rules \
-+	rules/73-idrac.rules
- 
- dist_udevhwdb_DATA = \
- 	hwdb/20-pci-vendor-model.hwdb \
-diff --git a/rules/73-idrac.rules b/rules/73-idrac.rules
-new file mode 100644
-index 0000000..d67fc42
---- /dev/null
-+++ b/rules/73-idrac.rules
-@@ -0,0 +1,6 @@
-+# do not edit this file, it will be overwritten on update
-+
-+# On Dell PowerEdge systems, the iDRAC7 and later support a USB Virtual NIC
-+# with terminates in the iDRAC. Help identify this with 'idrac'
-+
-+ACTION=="add", SUBSYSTEM=="net", SUBSYSTEMS=="usb", ATTRS{idVendor}=="413c", ATTRS{idProduct}=="a102", NAME="idrac"
diff --git a/SOURCES/0295-bash-completion-add-verb-set-property.patch b/SOURCES/0295-bash-completion-add-verb-set-property.patch
deleted file mode 100644
index 1fbd4e9..0000000
--- a/SOURCES/0295-bash-completion-add-verb-set-property.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 233b0373a3d75e277ad5a232a65567395da57f0e Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Tue, 23 Sep 2014 14:59:11 +0200
-Subject: [PATCH] bash-completion: add verb set-property
-
-Resolves: #1064487
----
- shell-completion/bash/systemctl | 12 +++++++++++-
- 1 file changed, 11 insertions(+), 1 deletion(-)
-
-diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
-index 84149e3..efe8485 100644
---- a/shell-completion/bash/systemctl
-+++ b/shell-completion/bash/systemctl
-@@ -25,7 +25,7 @@ __systemctl() {
- __systemd_properties() {
-         local mode=$1
-         { __systemctl -a $mode show;
--         systemd --dump-configuration-items; } |
-+         /usr/lib/systemd/systemd --dump-configuration-items; } |
-         while IFS='=' read -r key value; do
-             [[ $value ]] && echo "$key"
-         done
-@@ -77,6 +77,8 @@ _systemctl () {
-                       [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --state --root'
-         )
- 
-+        local -A PROPS='CPUAccounting= MemoryAccounting= BlockIOAccounting= MemoryLimit= CPUShares= BlockIOWeight= DevicePolicy= DeviceAllow= BlockIOReadBandwidth= BlockIOWriteBandwidth= BlockIODeviceWeight='
-+
-         if __contains_word "--user" ${COMP_WORDS[*]}; then
-             mode=--user
-         else
-@@ -136,6 +138,7 @@ _systemctl () {
-              [MASKED_UNITS]='unmask'
-                      [JOBS]='cancel'
-                 [SNAPSHOTS]='delete'
-+               [PROPERTIES]='set-property'
-                      [ENVS]='set-environment unset-environment'
-                [STANDALONE]='daemon-reexec daemon-reload default
-                              emergency exit halt hibernate hybrid-sleep kexec list-jobs
-@@ -220,6 +223,13 @@ _systemctl () {
-         elif __contains_word "$verb" ${VERBS[TARGETS]}; then
-                 comps=$( __systemctl $mode list-unit-files --type target --full --all \
-                         | { while read -r a b; do echo " $a"; done; } )
-+        elif __contains_word "$verb" ${VERBS[PROPERTIES]}; then
-+                if __contains_word "$prev" ${VERBS[PROPERTIES]}; then
-+                        comps=$( __get_active_units $mode )
-+                else
-+                        comps=$PROPS
-+                        compopt -o nospace
-+                fi
-         fi
- 
-         COMPREPLY=( $(compgen -W '$comps' -- "$cur") )
diff --git a/SOURCES/0296-man-update-journald-rate-limit-defaults.patch b/SOURCES/0296-man-update-journald-rate-limit-defaults.patch
deleted file mode 100644
index 40d490d..0000000
--- a/SOURCES/0296-man-update-journald-rate-limit-defaults.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From e11d039c50d13ac638c2ef77285af3543805a2f2 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= <grawity@gmail.com>
-Date: Wed, 30 Apr 2014 19:53:13 +0300
-Subject: [PATCH] man: update journald rate limit defaults
-
-This brings the man page back into sync with the actual code.
-
-(cherry picked from commit 8f18f550e7023948f199616fdfbb0f09711fd615)
-
-Resolves: #1145352
----
- man/journald.conf.xml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/man/journald.conf.xml b/man/journald.conf.xml
-index b362c5d..87e13b2 100644
---- a/man/journald.conf.xml
-+++ b/man/journald.conf.xml
-@@ -190,8 +190,8 @@
-                                 limiting is applied per-service, so
-                                 that two services which log do not
-                                 interfere with each other's
--                                limits. Defaults to 200 messages in
--                                10s. The time specification for
-+                                limits. Defaults to 1000 messages in
-+                                30s. The time specification for
-                                 <varname>RateLimitInterval=</varname>
-                                 may be specified in the following
-                                 units: <literal>s</literal>,
diff --git a/SOURCES/0297-core-don-t-try-to-connect-to-d-bus-after-switchroot.patch b/SOURCES/0297-core-don-t-try-to-connect-to-d-bus-after-switchroot.patch
deleted file mode 100644
index d585e6b..0000000
--- a/SOURCES/0297-core-don-t-try-to-connect-to-d-bus-after-switchroot.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 376c59b17a8d90b623533f639c2045276d1009d7 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Wed, 24 Sep 2014 13:20:29 +0200
-Subject: [PATCH] core: don't try to connect to d-bus after switchroot
-
-rhel-only
-
-Resolves: #1083300
----
- src/core/main.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/main.c b/src/core/main.c
-index afd5f6f..d4bf8ba 100644
---- a/src/core/main.c
-+++ b/src/core/main.c
-@@ -1543,7 +1543,7 @@ int main(int argc, char *argv[]) {
-         if (arg_running_as == SYSTEMD_SYSTEM)
-                 bump_rlimit_nofile(&saved_rlimit_nofile);
- 
--        r = manager_new(arg_running_as, !!serialization, &m);
-+        r = manager_new(arg_running_as, !!serialization && !arg_switched_root, &m);
-         if (r < 0) {
-                 log_error("Failed to allocate manager object: %s", strerror(-r));
-                 goto finish;
diff --git a/SOURCES/0298-localed-log-locale-keymap-changes-in-detail.patch b/SOURCES/0298-localed-log-locale-keymap-changes-in-detail.patch
deleted file mode 100644
index d5ed8ac..0000000
--- a/SOURCES/0298-localed-log-locale-keymap-changes-in-detail.patch
+++ /dev/null
@@ -1,244 +0,0 @@
-From d522b56345f2fe53a5ccac396c669d8f74088a6b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 3 Sep 2014 22:55:16 -0400
-Subject: [PATCH] localed: log locale/keymap changes in detail
-
-Converting X11 to legacy keymaps and back is a fucking mess. Let's
-make it at least possible to request detailed logs of what is being
-changed and why (LOG_DEBUG level).
-
-At LOG_INFO level, we would log the requested change of X11 or console
-keymap, but not the resulting change after conversion to console or X11.
-Make sure that every change of configuration on disk has a matching
-line in the logs.
-
-Conflicts:
-        src/locale/localed.c
-
-(cherry picked from commit 502f961425f9dea1a85239766a3189695194da63)
-
-Related: #1109145
----
- src/locale/localed.c | 84 ++++++++++++++++++++++++++++++++++++++--------------
- 1 file changed, 61 insertions(+), 23 deletions(-)
-
-diff --git a/src/locale/localed.c b/src/locale/localed.c
-index a93b309..c22e12d 100644
---- a/src/locale/localed.c
-+++ b/src/locale/localed.c
-@@ -337,9 +337,11 @@ static int read_data(void) {
-         return r < 0 ? r : q < 0 ? q : p;
- }
- 
--static int write_data_locale(void) {
-+static int write_data_locale(char ***settings) {
-         int r, p;
--        char **l = NULL;
-+        _cleanup_strv_free_ char **l = NULL;
-+
-+        /* Set values will be returned as strv in *settings on success. */
- 
-         r = load_env_file("/etc/locale.conf", NULL, &l);
-         if (r < 0 && r != -ENOENT)
-@@ -355,14 +357,12 @@ static int write_data_locale(void) {
-                         continue;
-                 }
- 
--                if (asprintf(&t, "%s=%s", names[p], data[p]) < 0) {
--                        strv_free(l);
-+                if (asprintf(&t, "%s=%s", names[p], data[p]) < 0)
-                         return -ENOMEM;
--                }
-+
- 
-                 u = strv_env_set(l, t);
-                 free(t);
--                strv_free(l);
- 
-                 if (!u)
-                         return -ENOMEM;
-@@ -371,8 +371,6 @@ static int write_data_locale(void) {
-         }
- 
-         if (strv_isempty(l)) {
--                strv_free(l);
--
-                 if (unlink("/etc/locale.conf") < 0)
-                         return errno == ENOENT ? 0 : -errno;
- 
-@@ -380,7 +378,11 @@ static int write_data_locale(void) {
-         }
- 
-         r = write_env_file_label("/etc/locale.conf", l);
--        strv_free(l);
-+        if (r < 0)
-+                return r;
-+
-+        *settings = l;
-+        l = NULL;
- 
-         return r;
- }
-@@ -771,6 +773,12 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
-                 if (r < 0)
-                         log_error("Failed to set X11 keyboard layout: %s", strerror(-r));
- 
-+                log_info("Changed X11 keyboard layout to '%s' model '%s' variant '%s' options '%s'",
-+                         strempty(state.x11_layout),
-+                         strempty(state.x11_model),
-+                         strempty(state.x11_variant),
-+                         strempty(state.x11_options));
-+
-                 changed = bus_properties_changed_new(
-                                 "/org/freedesktop/locale1",
-                                 "org.freedesktop.locale1",
-@@ -787,7 +795,8 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
- 
-                 if (!b)
-                         return -ENOMEM;
--        }
-+        } else
-+                log_debug("X11 keyboard layout was not modified.");
- 
-         return 0;
- }
-@@ -805,13 +814,18 @@ static int find_converted_keymap(char **new_keymap) {
- 
-         NULSTR_FOREACH(dir, KBD_KEYMAP_DIRS) {
-                 _cleanup_free_ char *p = NULL, *pz = NULL;
-+                bool uncompressed;
- 
-                 p = strjoin(dir, "xkb/", n, ".map", NULL);
-                 pz = strjoin(dir, "xkb/", n, ".map.gz", NULL);
-                 if (!p || !pz)
-                         return -ENOMEM;
- 
--                if (access(p, F_OK) == 0 || access(pz, F_OK) == 0) {
-+                uncompressed = access(p, F_OK) == 0;
-+                if (uncompressed || access(pz, F_OK) == 0) {
-+                        log_debug("Found converted keymap %s at %s",
-+                                  n, uncompressed ? p : pz);
-+
-                         *new_keymap = n;
-                         n = NULL;
-                         return 1;
-@@ -885,13 +899,19 @@ static int find_legacy_keymap(char **new_keymap) {
-                 }
- 
-                 /* The best matching entry so far, then let's save that */
--                if (matching > best_matching) {
--                        best_matching = matching;
-+                if (matching >= MAX(best_matching, 1u)) {
-+                        log_debug("Found legacy keymap %s with score %u",
-+                                  a[0], matching);
- 
--                        free(*new_keymap);
--                        *new_keymap = strdup(a[0]);
--                        if (!*new_keymap)
--                                return -ENOMEM;
-+                        if (matching > best_matching) {
-+                                best_matching = matching;
-+
-+                                free(*new_keymap);
-+                                *new_keymap = strdup(a[0]);
-+
-+                                if (!*new_keymap)
-+                                        return -ENOMEM;
-+                        }
-                 }
-         }
- 
-@@ -943,6 +963,9 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
-                 if (r < 0)
-                         log_error("Failed to set virtual console keymap: %s", strerror(-r));
- 
-+                log_info("Changed virtual console keymap to '%s' toggle '%s'",
-+                         strempty(state.vc_keymap), strempty(state.vc_keymap_toggle));
-+
-                 changed = bus_properties_changed_new(
-                                 "/org/freedesktop/locale1",
-                                 "org.freedesktop.locale1",
-@@ -959,7 +982,8 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
-                         return -ENOMEM;
- 
-                 return load_vconsole_keymap(connection, NULL);
--        }
-+        } else
-+                log_debug("Virtual console keymap was not modified.");
- 
-         return 0;
- }
-@@ -968,6 +992,7 @@ static int append_locale(DBusMessageIter *i, const char *property, void *userdat
-         int r, c = 0, p;
-         char **l;
- 
-+        /* Check whether a variable changed and if it is valid */
-         l = new0(char*, _PROP_MAX+1);
-         if (!l)
-                 return -ENOMEM;
-@@ -1086,6 +1111,7 @@ static DBusHandlerResult locale_message_handler(
-                 }
- 
-                 if (modified) {
-+                        _cleanup_strv_free_ char **settings = NULL;
- 
-                         r = verify_polkit(connection, message, "org.freedesktop.locale1.set-locale", interactive, NULL, &error);
-                         if (r < 0) {
-@@ -1127,7 +1153,7 @@ static DBusHandlerResult locale_message_handler(
- 
-                         simplify();
- 
--                        r = write_data_locale();
-+                        r = write_data_locale(&settings);
-                         if (r < 0) {
-                                 log_error("Failed to set locale: %s", strerror(-r));
-                                 return bus_send_error_reply(connection, message, NULL, r);
-@@ -1135,7 +1161,13 @@ static DBusHandlerResult locale_message_handler(
- 
-                         push_data(connection);
- 
--                        log_info("Changed locale information.");
-+                        if (settings) {
-+                                _cleanup_free_ char *line;
-+
-+                                line = strv_join(settings, ", ");
-+                                log_info("Changed locale to %s.", strnull(line));
-+                        } else
-+                                log_info("Changed locale to unset.");
- 
-                         changed = bus_properties_changed_new(
-                                         "/org/freedesktop/locale1",
-@@ -1143,8 +1175,10 @@ static DBusHandlerResult locale_message_handler(
-                                         "Locale\0");
-                         if (!changed)
-                                 goto oom;
--                } else
-+                } else {
-+                        log_debug("Locale settings were not modified.");
-                         strv_free(l);
-+                }
- 
-         } else if (dbus_message_is_method_call(message, "org.freedesktop.locale1", "SetVConsoleKeyboard")) {
- 
-@@ -1188,7 +1222,8 @@ static DBusHandlerResult locale_message_handler(
-                                 return bus_send_error_reply(connection, message, NULL, r);
-                         }
- 
--                        log_info("Changed virtual console keymap to '%s'", strempty(state.vc_keymap));
-+                        log_info("Changed virtual console keymap to '%s' toggle '%s'",
-+                                 strempty(state.vc_keymap), strempty(state.vc_keymap_toggle));
- 
-                         r = load_vconsole_keymap(connection, NULL);
-                         if (r < 0)
-@@ -1266,7 +1301,10 @@ static DBusHandlerResult locale_message_handler(
-                                 return bus_send_error_reply(connection, message, NULL, r);
-                         }
- 
--                        log_info("Changed X11 keyboard layout to '%s'", strempty(state.x11_layout));
-+                        log_info("Changed X11 keyboard layout to '%s' model '%s' variant '%s' options '%s'", strempty(state.x11_layout),
-+                                 strempty(state.x11_model),
-+                                 strempty(state.x11_variant),
-+                                 strempty(state.x11_options));
- 
-                         changed = bus_properties_changed_new(
-                                         "/org/freedesktop/locale1",
diff --git a/SOURCES/0299-localed-introduce-helper-function-to-simplify-matchi.patch b/SOURCES/0299-localed-introduce-helper-function-to-simplify-matchi.patch
deleted file mode 100644
index 2440a08..0000000
--- a/SOURCES/0299-localed-introduce-helper-function-to-simplify-matchi.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From 31ad188e3cec2909ce0041aa43ca816d0eee6ed1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 3 Sep 2014 22:55:52 -0400
-Subject: [PATCH] localed: introduce helper function to simplify matching
-
-Conflicts:
-        src/locale/localed.c
-
-(cherry picked from commit 81fd105a5f9762fa2f2e42bc949876e32b3a126f)
-
-Related: #1109145
----
- src/locale/localed.c | 22 ++++++++++------------
- 1 file changed, 10 insertions(+), 12 deletions(-)
-
-diff --git a/src/locale/localed.c b/src/locale/localed.c
-index c22e12d..56900a6 100644
---- a/src/locale/localed.c
-+++ b/src/locale/localed.c
-@@ -145,6 +145,12 @@ static int free_and_set(char **s, const char *v) {
-         return 0;
- }
- 
-+static bool startswith_comma(const char *s, const char *prefix) {
-+        const char *t;
-+
-+        return s && (t = startswith(s, prefix)) && (*t == ',');
-+}
-+
- static void free_data_locale(void) {
-         int p;
- 
-@@ -861,26 +867,18 @@ static int find_legacy_keymap(char **new_keymap) {
-                         /* If we got an exact match, this is best */
-                         matching = 10;
-                 else {
--                        size_t x;
--
--                        x = strcspn(state.x11_layout, ",");
--
-                         /* We have multiple X layouts, look for an
-                          * entry that matches our key with everything
-                          * but the first layout stripped off. */
--                        if (x > 0 &&
--                            strlen(a[1]) == x &&
--                            strneq(state.x11_layout, a[1], x))
-+                        if (startswith_comma(state.x11_layout, a[1]))
-                                 matching = 5;
-                         else  {
--                                size_t w;
-+                                char *x;
- 
-                                 /* If that didn't work, strip off the
-                                  * other layouts from the entry, too */
--                                w = strcspn(a[1], ",");
--
--                                if (x > 0 && x == w &&
--                                    memcmp(state.x11_layout, a[1], x) == 0)
-+                                x = strndupa(a[1], strcspn(a[1], ","));
-+                                if (startswith_comma(state.x11_layout, x))
-                                         matching = 1;
-                         }
-                 }
diff --git a/SOURCES/0300-localed-check-for-partially-matching-converted-keyma.patch b/SOURCES/0300-localed-check-for-partially-matching-converted-keyma.patch
deleted file mode 100644
index 64bddd1..0000000
--- a/SOURCES/0300-localed-check-for-partially-matching-converted-keyma.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 6dd719fad5521a24f6278cf005c250c99292a762 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 3 Sep 2014 22:55:54 -0400
-Subject: [PATCH] localed: check for partially matching converted keymaps
-
-If a user specifies multiple X11 keymaps, with a (at least the first
-one) nonempty variant, and we don't match the whole combo, use
-a converted keymap which includes the variant in preference to
-the default, variantless, keymap.
-
-E.g.: We would convert X11 config "layout=fr variant=mac" to "fr-mac",
-but "layout=fr,us variant=mac," to "fr", because we don't have a
-converted keymap which would match "fr,us", and we don't have a legacy
-mapping for "fr,us". This is unexpected, and if we cannot match both,
-it is still better to match the primary mapping and use "fr-mac".
-
-Conflicts:
-        src/locale/localed.c
-
-(cherry picked from commit 78bd12a05a9252cf573da28394b23e2b891cbba8)
-
-Resolves: #1109145
----
- src/locale/localed.c | 36 ++++++++++++++++++++++++++++--------
- 1 file changed, 28 insertions(+), 8 deletions(-)
-
-diff --git a/src/locale/localed.c b/src/locale/localed.c
-index 56900a6..592fab9 100644
---- a/src/locale/localed.c
-+++ b/src/locale/localed.c
-@@ -776,8 +776,10 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
-                 int r;
- 
-                 r = write_data_x11();
--                if (r < 0)
-+                if (r < 0) {
-                         log_error("Failed to set X11 keyboard layout: %s", strerror(-r));
-+                        return r;
-+                }
- 
-                 log_info("Changed X11 keyboard layout to '%s' model '%s' variant '%s' options '%s'",
-                          strempty(state.x11_layout),
-@@ -807,14 +809,14 @@ static int convert_vconsole_to_x11(DBusConnection *connection) {
-         return 0;
- }
- 
--static int find_converted_keymap(char **new_keymap) {
-+static int find_converted_keymap(const char *x11_layout, const char *x11_variant, char **new_keymap) {
-         const char *dir;
-         _cleanup_free_ char *n;
- 
--        if (state.x11_variant)
--                n = strjoin(state.x11_layout, "-", state.x11_variant, NULL);
-+        if (x11_variant)
-+                n = strjoin(x11_layout, "-", x11_variant, NULL);
-         else
--                n = strdup(state.x11_layout);
-+                n = strdup(x11_layout);
-         if (!n)
-                 return -ENOMEM;
- 
-@@ -845,7 +847,7 @@ static int find_legacy_keymap(char **new_keymap) {
-         _cleanup_fclose_ FILE *f;
-         unsigned n = 0;
-         unsigned best_matching = 0;
--
-+        int r;
- 
-         f = fopen(SYSTEMD_KBD_MODEL_MAP, "re");
-         if (!f)
-@@ -854,7 +856,6 @@ static int find_legacy_keymap(char **new_keymap) {
-         for (;;) {
-                 _cleanup_strv_free_ char **a = NULL;
-                 unsigned matching = 0;
--                int r;
- 
-                 r = read_next_mapping(f, &n, &a);
-                 if (r < 0)
-@@ -913,6 +914,25 @@ static int find_legacy_keymap(char **new_keymap) {
-                 }
-         }
- 
-+        if (best_matching < 10 && state.x11_layout) {
-+                /* The best match is only the first part of the X11
-+                 * keymap. Check if we have a converted map which
-+                 * matches just the first layout.
-+                 */
-+                char *l, *v = NULL, *converted;
-+
-+                l = strndupa(state.x11_layout, strcspn(state.x11_layout, ","));
-+                if (state.x11_variant)
-+                        v = strndupa(state.x11_variant, strcspn(state.x11_variant, ","));
-+                r = find_converted_keymap(l, v, &converted);
-+                if (r < 0)
-+                        return r;
-+                if (r > 0) {
-+                        free(*new_keymap);
-+                        *new_keymap = converted;
-+                }
-+        }
-+
-         return 0;
- }
- 
-@@ -932,7 +952,7 @@ static int convert_x11_to_vconsole(DBusConnection *connection) {
-         } else {
-                 char *new_keymap = NULL;
- 
--                r = find_converted_keymap(&new_keymap);
-+                r = find_converted_keymap(state.x11_layout, state.x11_variant, &new_keymap);
-                 if (r < 0)
-                         return r;
-                 else if (r == 0) {
diff --git a/SOURCES/0301-fileio-make-parse_env_file-return-number-of-parsed-i.patch b/SOURCES/0301-fileio-make-parse_env_file-return-number-of-parsed-i.patch
deleted file mode 100644
index 97a7897..0000000
--- a/SOURCES/0301-fileio-make-parse_env_file-return-number-of-parsed-i.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-From 3a68febdb636924b941a84e123b6e51e042e1273 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 22 Sep 2014 09:38:38 +0200
-Subject: [PATCH] fileio: make parse_env_file() return number of parsed items
-
-This commit introduces possibility to call parse_env_file_internal() and hand
-over extra argument where we will accumulate how many items were successfully
-parsed and pushed by callback. We make use of this in parse_env_file() and
-return number of parsed items on success instead of always returning zero.
-
-As a side-effect this commit should fix bug that locale settings in
-/etc/locale.conf are not overriden by options passed via kernel command line.
-
-Conflicts:
-        src/shared/fileio.c
-
-(cherry picked from commit a5f6c30da3ac58081108221bf8a0f6f1d84b33a9)
-
-Resolves: #1069420
----
- src/shared/fileio.c | 30 +++++++++++++++++++-----------
- 1 file changed, 19 insertions(+), 11 deletions(-)
-
-diff --git a/src/shared/fileio.c b/src/shared/fileio.c
-index 733b320..fbc28bd 100644
---- a/src/shared/fileio.c
-+++ b/src/shared/fileio.c
-@@ -180,8 +180,9 @@ static int parse_env_file_internal(
-                 const char *fname,
-                 const char *newline,
-                 int (*push) (const char *filename, unsigned line,
--                             const char *key, char *value, void *userdata),
--                void *userdata) {
-+                             const char *key, char *value, void *userdata, int *n_pushed),
-+                void *userdata,
-+                int *n_pushed) {
- 
-         _cleanup_free_ char *contents = NULL, *key = NULL;
-         size_t key_alloc = 0, n_key = 0, value_alloc = 0, n_value = 0, last_value_whitespace = (size_t) -1, last_key_whitespace = (size_t) -1;
-@@ -268,7 +269,7 @@ static int parse_env_file_internal(
-                                 if (last_key_whitespace != (size_t) -1)
-                                         key[last_key_whitespace] = 0;
- 
--                                r = push(fname, line, key, value, userdata);
-+                                r = push(fname, line, key, value, userdata, n_pushed);
-                                 if (r < 0)
-                                         goto fail;
- 
-@@ -313,7 +314,7 @@ static int parse_env_file_internal(
-                                 if (last_key_whitespace != (size_t) -1)
-                                         key[last_key_whitespace] = 0;
- 
--                                r = push(fname, line, key, value, userdata);
-+                                r = push(fname, line, key, value, userdata, n_pushed);
-                                 if (r < 0)
-                                         goto fail;
- 
-@@ -448,7 +449,7 @@ static int parse_env_file_internal(
-                 if (last_key_whitespace != (size_t) -1)
-                         key[last_key_whitespace] = 0;
- 
--                r = push(fname, line, key, value, userdata);
-+                r = push(fname, line, key, value, userdata, n_pushed);
-                 if (r < 0)
-                         goto fail;
-         }
-@@ -461,7 +462,7 @@ fail:
- }
- 
- static int parse_env_file_push(const char *filename, unsigned line,
--                               const char *key, char *value, void *userdata) {
-+                               const char *key, char *value, void *userdata, int *n_pushed) {
-         assert(utf8_is_valid(key));
- 
-         if (value && !utf8_is_valid(value))
-@@ -484,6 +485,10 @@ static int parse_env_file_push(const char *filename, unsigned line,
-                                 va_end(aq);
-                                 free(*v);
-                                 *v = value;
-+
-+                                if (n_pushed)
-+                                        (*n_pushed)++;
-+
-                                 return 1;
-                         }
-                 }
-@@ -500,20 +505,20 @@ int parse_env_file(
-                 const char *newline, ...) {
- 
-         va_list ap;
--        int r;
-+        int r, n_pushed = 0;
- 
-         if (!newline)
-                 newline = NEWLINE;
- 
-         va_start(ap, newline);
--        r = parse_env_file_internal(fname, newline, parse_env_file_push, &ap);
-+        r = parse_env_file_internal(fname, newline, parse_env_file_push, &ap, &n_pushed);
-         va_end(ap);
- 
--        return r;
-+        return r < 0 ? r : n_pushed;
- }
- 
- static int load_env_file_push(const char *filename, unsigned line,
--                              const char *key, char *value, void *userdata) {
-+                              const char *key, char *value, void *userdata, int *n_pushed) {
-         assert(utf8_is_valid(key));
- 
-         if (value && !utf8_is_valid(value))
-@@ -534,6 +539,9 @@ static int load_env_file_push(const char *filename, unsigned line,
-                         free(p);
-                         return r;
-                 }
-+
-+                if (n_pushed)
-+                        (*n_pushed)++;
-         }
- 
-         free(value);
-@@ -547,7 +555,7 @@ int load_env_file(const char *fname, const char *newline, char ***rl) {
-         if (!newline)
-                 newline = NEWLINE;
- 
--        r = parse_env_file_internal(fname, newline, load_env_file_push, &m);
-+        r = parse_env_file_internal(fname, newline, load_env_file_push, &m, NULL);
-         if (r < 0) {
-                 strv_free(m);
-                 return r;
diff --git a/SOURCES/0302-localectl-print-warning-when-there-are-options-given.patch b/SOURCES/0302-localectl-print-warning-when-there-are-options-given.patch
deleted file mode 100644
index 78d86bc..0000000
--- a/SOURCES/0302-localectl-print-warning-when-there-are-options-given.patch
+++ /dev/null
@@ -1,292 +0,0 @@
-From 7664fb3e7ebba889d52c4e7ba653dbbba9035969 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Wed, 24 Sep 2014 13:17:43 +0200
-Subject: [PATCH] localectl: print warning when there are options given on
- kernel cmdline
-
-Conflicts:
-        src/locale/localectl.c
-
-(cherry picked from commit a34286684ebb78dd3db0d7f34feb2c121c9d00cc)
-
-Related: #1069420
----
- Makefile.am              |  2 ++
- src/core/locale-setup.c  | 47 +++++---------------------------------------
- src/locale/localectl.c   | 51 ++++++++++++++++++++++++++++++++++++++++++++++++
- src/shared/locale-util.c | 42 +++++++++++++++++++++++++++++++++++++++
- src/shared/locale-util.h | 47 ++++++++++++++++++++++++++++++++++++++++++++
- 5 files changed, 147 insertions(+), 42 deletions(-)
- create mode 100644 src/shared/locale-util.c
- create mode 100644 src/shared/locale-util.h
-
-diff --git a/Makefile.am b/Makefile.am
-index d54a556..dab55ba 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -656,6 +656,8 @@ libsystemd_shared_la_SOURCES = \
- 	src/shared/path-util.h \
- 	src/shared/time-util.c \
- 	src/shared/time-util.h \
-+	src/shared/locale-util.c \
-+	src/shared/locale-util.h \
- 	src/shared/hashmap.c \
- 	src/shared/hashmap.h \
- 	src/shared/set.c \
-diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c
-index 276deb9..69e9bca 100644
---- a/src/core/locale-setup.c
-+++ b/src/core/locale-setup.c
-@@ -30,48 +30,11 @@
- #include "fileio.h"
- #include "strv.h"
- #include "env-util.h"
--
--enum {
--        /* We don't list LC_ALL here on purpose. People should be
--         * using LANG instead. */
--
--        VARIABLE_LANG,
--        VARIABLE_LANGUAGE,
--        VARIABLE_LC_CTYPE,
--        VARIABLE_LC_NUMERIC,
--        VARIABLE_LC_TIME,
--        VARIABLE_LC_COLLATE,
--        VARIABLE_LC_MONETARY,
--        VARIABLE_LC_MESSAGES,
--        VARIABLE_LC_PAPER,
--        VARIABLE_LC_NAME,
--        VARIABLE_LC_ADDRESS,
--        VARIABLE_LC_TELEPHONE,
--        VARIABLE_LC_MEASUREMENT,
--        VARIABLE_LC_IDENTIFICATION,
--        _VARIABLE_MAX
--};
--
--static const char * const variable_names[_VARIABLE_MAX] = {
--        [VARIABLE_LANG] = "LANG",
--        [VARIABLE_LANGUAGE] = "LANGUAGE",
--        [VARIABLE_LC_CTYPE] = "LC_CTYPE",
--        [VARIABLE_LC_NUMERIC] = "LC_NUMERIC",
--        [VARIABLE_LC_TIME] = "LC_TIME",
--        [VARIABLE_LC_COLLATE] = "LC_COLLATE",
--        [VARIABLE_LC_MONETARY] = "LC_MONETARY",
--        [VARIABLE_LC_MESSAGES] = "LC_MESSAGES",
--        [VARIABLE_LC_PAPER] = "LC_PAPER",
--        [VARIABLE_LC_NAME] = "LC_NAME",
--        [VARIABLE_LC_ADDRESS] = "LC_ADDRESS",
--        [VARIABLE_LC_TELEPHONE] = "LC_TELEPHONE",
--        [VARIABLE_LC_MEASUREMENT] = "LC_MEASUREMENT",
--        [VARIABLE_LC_IDENTIFICATION] = "LC_IDENTIFICATION"
--};
-+#include "locale-util.h"
- 
- int locale_setup(char ***environment) {
-         char **add;
--        char *variables[_VARIABLE_MAX] = {};
-+        char *variables[_VARIABLE_LC_MAX] = {};
-         int r = 0, i;
- 
-         if (detect_container(NULL) <= 0) {
-@@ -121,13 +84,13 @@ int locale_setup(char ***environment) {
-         }
- 
-         add = NULL;
--        for (i = 0; i < _VARIABLE_MAX; i++) {
-+        for (i = 0; i < _VARIABLE_LC_MAX; i++) {
-                 char *s;
- 
-                 if (!variables[i])
-                         continue;
- 
--                s = strjoin(variable_names[i], "=", variables[i], NULL);
-+                s = strjoin(locale_variable_to_string(i), "=", variables[i], NULL);
-                 if (!s) {
-                         r = -ENOMEM;
-                         goto finish;
-@@ -158,7 +121,7 @@ int locale_setup(char ***environment) {
- finish:
-         strv_free(add);
- 
--        for (i = 0; i < _VARIABLE_MAX; i++)
-+        for (i = 0; i < _VARIABLE_LC_MAX; i++)
-                 free(variables[i]);
- 
-         return r;
-diff --git a/src/locale/localectl.c b/src/locale/localectl.c
-index d3c6152..fdef3a0 100644
---- a/src/locale/localectl.c
-+++ b/src/locale/localectl.c
-@@ -39,6 +39,9 @@
- #include "path-util.h"
- #include "utf8.h"
- #include "def.h"
-+#include "virt.h"
-+#include "fileio.h"
-+#include "locale-util.h"
- 
- static bool arg_no_pager = false;
- static enum transport {
-@@ -79,6 +82,53 @@ typedef struct StatusInfo {
-         const char *x11_options;
- } StatusInfo;
- 
-+static void print_overriden_variables(void) {
-+        int r;
-+        char *variables[_VARIABLE_LC_MAX] = {};
-+        LocaleVariable j;
-+        bool print_warning = true;
-+
-+        if (detect_container(NULL) > 0 || arg_host)
-+                return;
-+
-+        r = parse_env_file("/proc/cmdline", WHITESPACE,
-+                           "locale.LANG",              &variables[VARIABLE_LANG],
-+                           "locale.LANGUAGE",          &variables[VARIABLE_LANGUAGE],
-+                           "locale.LC_CTYPE",          &variables[VARIABLE_LC_CTYPE],
-+                           "locale.LC_NUMERIC",        &variables[VARIABLE_LC_NUMERIC],
-+                           "locale.LC_TIME",           &variables[VARIABLE_LC_TIME],
-+                           "locale.LC_COLLATE",        &variables[VARIABLE_LC_COLLATE],
-+                           "locale.LC_MONETARY",       &variables[VARIABLE_LC_MONETARY],
-+                           "locale.LC_MESSAGES",       &variables[VARIABLE_LC_MESSAGES],
-+                           "locale.LC_PAPER",          &variables[VARIABLE_LC_PAPER],
-+                           "locale.LC_NAME",           &variables[VARIABLE_LC_NAME],
-+                           "locale.LC_ADDRESS",        &variables[VARIABLE_LC_ADDRESS],
-+                           "locale.LC_TELEPHONE",      &variables[VARIABLE_LC_TELEPHONE],
-+                           "locale.LC_MEASUREMENT",    &variables[VARIABLE_LC_MEASUREMENT],
-+                           "locale.LC_IDENTIFICATION", &variables[VARIABLE_LC_IDENTIFICATION],
-+                           NULL);
-+
-+        if (r < 0 && r != -ENOENT) {
-+                log_warning("Failed to read /proc/cmdline: %s", strerror(-r));
-+                goto finish;
-+        }
-+
-+        for (j = VARIABLE_LANG; j < _VARIABLE_LC_MAX; j++)
-+                if (variables[j]) {
-+                        if (print_warning) {
-+                                printf("Warning: Settings on Kernel Command Line override system locale settings in /etc/locale.conf\n");
-+                                printf("    Command Line: %s=%s\n", locale_variable_to_string(j), variables[j]);
-+
-+                                print_warning = false;
-+                                continue;
-+                        }
-+                        printf("                  %s=%s\n", locale_variable_to_string(j), variables[j]);
-+                }
-+ finish:
-+        for (j = VARIABLE_LANG; j < _VARIABLE_LC_MAX; j++)
-+                free(variables[j]);
-+}
-+
- static void print_status_info(StatusInfo *i) {
-         assert(i);
- 
-@@ -218,6 +268,7 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) {
-                 dbus_message_iter_next(&sub);
-         }
- 
-+        print_overriden_variables();
-         print_status_info(&info);
-         strv_free(info.locale);
-         return 0;
-diff --git a/src/shared/locale-util.c b/src/shared/locale-util.c
-new file mode 100644
-index 0000000..d53b16c
---- /dev/null
-+++ b/src/shared/locale-util.c
-@@ -0,0 +1,42 @@
-+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-+
-+/***
-+  This file is part of systemd.
-+
-+  Copyright 2014 Lennart Poettering
-+
-+  systemd is free software; you can redistribute it and/or modify it
-+  under the terms of the GNU Lesser General Public License as published by
-+  the Free Software Foundation; either version 2.1 of the License, or
-+  (at your option) any later version.
-+
-+  systemd is distributed in the hope that it will be useful, but
-+  WITHOUT ANY WARRANTY; without even the implied warranty of
-+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  Lesser General Public License for more details.
-+
-+  You should have received a copy of the GNU Lesser General Public License
-+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-+***/
-+
-+#include "util.h"
-+#include "locale-util.h"
-+
-+static const char * const locale_variable_table[_VARIABLE_LC_MAX] = {
-+        [VARIABLE_LANG] = "LANG",
-+        [VARIABLE_LANGUAGE] = "LANGUAGE",
-+        [VARIABLE_LC_CTYPE] = "LC_CTYPE",
-+        [VARIABLE_LC_NUMERIC] = "LC_NUMERIC",
-+        [VARIABLE_LC_TIME] = "LC_TIME",
-+        [VARIABLE_LC_COLLATE] = "LC_COLLATE",
-+        [VARIABLE_LC_MONETARY] = "LC_MONETARY",
-+        [VARIABLE_LC_MESSAGES] = "LC_MESSAGES",
-+        [VARIABLE_LC_PAPER] = "LC_PAPER",
-+        [VARIABLE_LC_NAME] = "LC_NAME",
-+        [VARIABLE_LC_ADDRESS] = "LC_ADDRESS",
-+        [VARIABLE_LC_TELEPHONE] = "LC_TELEPHONE",
-+        [VARIABLE_LC_MEASUREMENT] = "LC_MEASUREMENT",
-+        [VARIABLE_LC_IDENTIFICATION] = "LC_IDENTIFICATION"
-+};
-+
-+DEFINE_STRING_TABLE_LOOKUP(locale_variable, LocaleVariable);
-diff --git a/src/shared/locale-util.h b/src/shared/locale-util.h
-new file mode 100644
-index 0000000..420a89d
---- /dev/null
-+++ b/src/shared/locale-util.h
-@@ -0,0 +1,47 @@
-+/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-+
-+/***
-+  This file is part of systemd.
-+
-+  Copyright 2014 Lennart Poettering
-+
-+  systemd is free software; you can redistribute it and/or modify it
-+  under the terms of the GNU Lesser General Public License as published by
-+  the Free Software Foundation; either version 2.1 of the License, or
-+  (at your option) any later version.
-+
-+  systemd is distributed in the hope that it will be useful, but
-+  WITHOUT ANY WARRANTY; without even the implied warranty of
-+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+  Lesser General Public License for more details.
-+
-+  You should have received a copy of the GNU Lesser General Public License
-+  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-+***/
-+
-+#include "util.h"
-+
-+typedef enum LocaleVariable {
-+        /* We don't list LC_ALL here on purpose. People should be
-+         * using LANG instead. */
-+
-+        VARIABLE_LANG,
-+        VARIABLE_LANGUAGE,
-+        VARIABLE_LC_CTYPE,
-+        VARIABLE_LC_NUMERIC,
-+        VARIABLE_LC_TIME,
-+        VARIABLE_LC_COLLATE,
-+        VARIABLE_LC_MONETARY,
-+        VARIABLE_LC_MESSAGES,
-+        VARIABLE_LC_PAPER,
-+        VARIABLE_LC_NAME,
-+        VARIABLE_LC_ADDRESS,
-+        VARIABLE_LC_TELEPHONE,
-+        VARIABLE_LC_MEASUREMENT,
-+        VARIABLE_LC_IDENTIFICATION,
-+        _VARIABLE_LC_MAX,
-+        _VARIABLE_LC_INVALID = -1
-+} LocaleVariable;
-+
-+const char* locale_variable_to_string(LocaleVariable i) _const_;
-+LocaleVariable locale_variable_from_string(const char *s) _pure_;
diff --git a/SOURCES/0303-dbus-fix-crash-when-appending-selinux-context.patch b/SOURCES/0303-dbus-fix-crash-when-appending-selinux-context.patch
deleted file mode 100644
index 9aff9d2..0000000
--- a/SOURCES/0303-dbus-fix-crash-when-appending-selinux-context.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 48a85bb45ff9d3ee302594ac41d102fa16b31350 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Sat, 27 Sep 2014 20:40:11 +0200
-Subject: [PATCH] dbus: fix crash when appending selinux context
-
-RHEL-only
-
-Related: #1113790
----
- src/core/dbus-execute.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
-index 8162f1c..ae65be1 100644
---- a/src/core/dbus-execute.c
-+++ b/src/core/dbus-execute.c
-@@ -376,6 +376,7 @@ static int bus_execute_append_selinux_context(DBusMessageIter *i, const char *pr
-         ExecContext *c = data;
-         dbus_bool_t selinux_context_ignore;
-         const char *selinux_context = NULL;
-+        DBusMessageIter sub;
- 
-         assert(i);
-         assert(property);
-@@ -387,10 +388,16 @@ static int bus_execute_append_selinux_context(DBusMessageIter *i, const char *pr
- 
-         selinux_context_ignore = c->selinux_context_ignore;
- 
--        if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &selinux_context_ignore))
-+        if (!dbus_message_iter_open_container(i, DBUS_TYPE_STRUCT, NULL, &sub))
-+                return -ENOMEM;
-+
-+        if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_BOOLEAN, &selinux_context_ignore))
-                 return -ENOMEM;
- 
--        if (!dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &selinux_context))
-+        if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &selinux_context))
-+                return -ENOMEM;
-+
-+        if (!dbus_message_iter_close_container(i, &sub))
-                 return -ENOMEM;
- 
-         return 0;
diff --git a/SOURCES/0304-tmpfiles-minor-modernizations.patch b/SOURCES/0304-tmpfiles-minor-modernizations.patch
deleted file mode 100644
index 29e507e..0000000
--- a/SOURCES/0304-tmpfiles-minor-modernizations.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 50720580bc5333e594032b124a9a1114e66dc7ae Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 12 Jun 2014 23:07:17 +0200
-Subject: [PATCH] tmpfiles: minor modernizations
-
-(cherry-picked from 753615e85d990077c303ae4a42a53e792ffb12ca)
-
-Resolves: #1147524
----
- src/tmpfiles/tmpfiles.c | 12 ++++++++----
- 1 file changed, 8 insertions(+), 4 deletions(-)
-
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index ff51062..df6c99a 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -990,7 +990,9 @@ static int process_item(Item *i) {
- }
- 
- static void item_free(Item *i) {
--        assert(i);
-+
-+        if (!i)
-+                return;
- 
-         free(i->path);
-         free(i->argument);
-@@ -1122,7 +1124,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
-                 }
-         }
- 
--        switch(type) {
-+        switch (type) {
- 
-         case CREATE_FILE:
-         case TRUNCATE_FILE:
-@@ -1171,7 +1173,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) {
-         }
- 
-         default:
--                log_error("[%s:%u] Unknown file type '%c'.", fname, line, type);
-+                log_error("[%s:%u] Unknown command type '%c'.", fname, line, type);
-                 return -EBADMSG;
-         }
- 
-@@ -1355,9 +1357,11 @@ static int parse_argv(int argc, char *argv[]) {
-                         break;
- 
-                 case ARG_ROOT:
-+                        free(arg_root);
-                         arg_root = path_make_absolute_cwd(optarg);
-                         if (!arg_root)
-                                 return log_oom();
-+
-                         path_kill_slashes(arg_root);
-                         break;
- 
-@@ -1456,7 +1460,7 @@ int main(int argc, char *argv[]) {
- 
-         r = parse_argv(argc, argv);
-         if (r <= 0)
--                return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
-+                goto finish;
- 
-         log_set_target(LOG_TARGET_AUTO);
-         log_parse_environment();
diff --git a/SOURCES/0305-install-when-looking-for-a-unit-file-for-enabling-se.patch b/SOURCES/0305-install-when-looking-for-a-unit-file-for-enabling-se.patch
deleted file mode 100644
index c00ae0c..0000000
--- a/SOURCES/0305-install-when-looking-for-a-unit-file-for-enabling-se.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From f73a446c8a1db5c255e6cf1bf6c5d68fe6448f10 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 17 Jun 2014 00:13:48 +0200
-Subject: [PATCH] install: when looking for a unit file for enabling, search
- for templates only after traversing all search directories
-
-Let's always make sure to look in all search directories for the full
-unit names first, before looking for templates for them.
-
-(cherry-picked from e50bd775163cd96be1888943a8785a436be710e8)
-
-Resolves: #1147524
----
- src/shared/install.c | 74 +++++++++++++++++++++++++++-------------------------
- 1 file changed, 38 insertions(+), 36 deletions(-)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 2c8f907..dc8842b 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1074,67 +1074,69 @@ static int unit_file_search(
-         assert(paths);
- 
-         if (info->path) {
--                char *full_path = NULL;
-+                const char *path;
- 
--                if (!isempty(root_dir))
--                        full_path = strappenda(root_dir, info->path);
-+                if (isempty(root_dir))
-+                        path = info->path;
-+                else
-+                        path = strappenda(root_dir, info->path);
- 
--                return unit_file_load(c, info, full_path ?: info->path, allow_symlink);
-+                return unit_file_load(c, info, path, allow_symlink);
-         }
- 
-         assert(info->name);
- 
-         STRV_FOREACH(p, paths->unit_path) {
--                _cleanup_free_ char *path = NULL, *full_path = NULL;
-+                _cleanup_free_ char *path = NULL;
- 
--                path = strjoin(*p, "/", info->name, NULL);
-+                if (isempty(root_dir))
-+                        path = strjoin(*p, "/", info->name, NULL);
-+                else
-+                        path = strjoin(root_dir, "/", *p, "/", info->name, NULL);
-                 if (!path)
-                         return -ENOMEM;
- 
--                if (!isempty(root_dir)) {
--                        full_path = strappend(root_dir, path);
--                        if (!full_path)
--                                return -ENOMEM;
--                }
--
--                r = unit_file_load(c, info, full_path ?: path, allow_symlink);
-+                r = unit_file_load(c, info, path, allow_symlink);
-                 if (r >= 0) {
-                         info->path = path;
-                         path = NULL;
--                } else if (r == -ENOENT && unit_name_is_instance(info->name)) {
--                        /* Unit file doesn't exist, however instance enablement was requested.
--                         * We will check if it is possible to load template unit file. */
--                        _cleanup_free_ char *template = NULL, *template_dir = NULL;
-+                        return r;
-+                }
-+                if (r != -ENOENT && r != -ELOOP)
-+                        return r;
-+        }
- 
--                        template = unit_name_template(info->name);
--                        if (!template)
--                                return -ENOMEM;
-+        if (unit_name_is_instance(info->name)) {
- 
--                        /* We will reuse path variable since we don't need it anymore. */
--                        template_dir = path;
--                        *(strrchr(template_dir, '/') + 1) = '\0';
-+                /* Unit file doesn't exist, however instance
-+                 * enablement was requested.  We will check if it is
-+                 * possible to load template unit file. */
- 
--                        path = strappend(template_dir, template);
-+                _cleanup_free_ char *template = NULL, *template_dir = NULL;
-+
-+                template = unit_name_template(info->name);
-+                if (!template)
-+                        return -ENOMEM;
-+
-+                STRV_FOREACH(p, paths->unit_path) {
-+                        _cleanup_free_ char *path = NULL;
-+
-+                        if (isempty(root_dir))
-+                                path = strjoin(*p, "/", template, NULL);
-+                        else
-+                                path = strjoin(root_dir, "/", *p, "/", template, NULL);
-                         if (!path)
-                                 return -ENOMEM;
- 
--                        if (!isempty(root_dir)) {
--                                free(full_path);
--                                full_path = strappend(root_dir, path);
--                                if (!full_path)
--                                        return -ENOMEM;
--                        }
--
--                        /* Let's try to load template unit. */
--                        r = unit_file_load(c, info, full_path ?: path, allow_symlink);
-+                        r = unit_file_load(c, info, path, allow_symlink);
-                         if (r >= 0) {
-                                 info->path = path;
-                                 path = NULL;
-+                                return r;
-                         }
-+                        if (r != -ENOENT && r != -ELOOP)
-+                                return r;
-                 }
--
--                if (r != -ENOENT && r != -ELOOP)
--                        return r;
-         }
- 
-         return -ENOENT;
diff --git a/SOURCES/0306-install-remove-unused-variable.patch b/SOURCES/0306-install-remove-unused-variable.patch
deleted file mode 100644
index cfde10e..0000000
--- a/SOURCES/0306-install-remove-unused-variable.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 9d05d80b64a04e2bf9a61d992b7bd22b23949d1e Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Tue, 17 Jun 2014 21:22:01 +0200
-Subject: [PATCH] install: remove unused variable
-
-(cherry-picked from de228aabc833901e7c75aab8d62e58229e2a8bfc)
-
-Resolves: #1147524
----
- src/shared/install.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index dc8842b..dd5e22b 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1112,7 +1112,7 @@ static int unit_file_search(
-                  * enablement was requested.  We will check if it is
-                  * possible to load template unit file. */
- 
--                _cleanup_free_ char *template = NULL, *template_dir = NULL;
-+                _cleanup_free_ char *template = NULL;
- 
-                 template = unit_name_template(info->name);
-                 if (!template)
diff --git a/SOURCES/0307-bootctl-typo-fix-in-help-message.patch b/SOURCES/0307-bootctl-typo-fix-in-help-message.patch
deleted file mode 100644
index 909d4aa..0000000
--- a/SOURCES/0307-bootctl-typo-fix-in-help-message.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 5f9893fe56014642bbdb2d15eb829e3447dac265 Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Wed, 6 Nov 2013 00:29:49 +0100
-Subject: [PATCH] bootctl: typo fix in help message
-
-(cherry-picked from 82de16f92ca5259e9ddb4f328f086cb6a9f043b0)
-
-Resolves: #1147524
----
- src/boot/bootctl.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c
-index af694fd..d25ddef 100644
---- a/src/boot/bootctl.c
-+++ b/src/boot/bootctl.c
-@@ -34,7 +34,7 @@
- 
- static int help(void) {
-         printf("%s [OPTIONS...] COMMAND ...\n\n"
--               "Query or change firmware and boot mananger settings.\n\n"
-+               "Query or change firmware and boot manager settings.\n\n"
-                "  -h --help              Show this help\n"
-                "     --version           Show package version\n"
-                "Commands:\n"
diff --git a/SOURCES/0308-logind-ignore-failing-close-on-session-devices.patch b/SOURCES/0308-logind-ignore-failing-close-on-session-devices.patch
deleted file mode 100644
index 683440f..0000000
--- a/SOURCES/0308-logind-ignore-failing-close-on-session-devices.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From b1c42aa11792c00cf359bec452022b73cbe2c79d Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann@gmail.com>
-Date: Thu, 28 Nov 2013 14:51:40 +0100
-Subject: [PATCH] logind: ignore failing close() on session-devices
-
-Unfortunately, close() on a revoked/removed character-device fails with
-ENODEV. I tried tracking this down in the kernel, but couldn't figure out
-were exactly it comes from. However, can be easily reproduced with:
-  fd = open("/dev/input/event0", O_RDWR);
-  ioctl(fd, EVIOCREVOKE, 0);
-  r = close(fd);
-A second close on @fd would return EBADF so the close is actually valid.
-
-We simply ignore close() errors for all session-devices as their access
-may be revoked asynchronously, or the device might get unplugged.
-We use close_nointr() in case anyone ever looks at the return value (or
-anyone runs "grep 'close(' -r src/" to find broken close() calls).
-
-Fixes:
-  systemd-logind[31992]: Assertion 'close_nointr(fd) == 0' failed at src/shared/util.c:185, function close_nointr_nofail(). Aborting.
-
-(cherry-picked from d1107170f9e0fa2cb6e8d18586a003f0d96abfc3)
-
-Resolves: #1147524
----
- src/login/logind-session-device.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/login/logind-session-device.c b/src/login/logind-session-device.c
-index 6605935..fd02b43 100644
---- a/src/login/logind-session-device.c
-+++ b/src/login/logind-session-device.c
-@@ -162,7 +162,7 @@ static int session_device_open(SessionDevice *sd, bool active) {
-                          * state. */
-                         r = sd_drmsetmaster(fd);
-                         if (r < 0) {
--                                close(fd);
-+                                close_nointr(fd);
-                                 return r;
-                         }
-                 } else {
-@@ -209,7 +209,7 @@ static int session_device_start(SessionDevice *sd) {
-                 r = session_device_open(sd, true);
-                 if (r < 0)
-                         return r;
--                close_nointr_nofail(sd->fd);
-+                close_nointr(sd->fd);
-                 sd->fd = r;
-                 break;
-         case DEVICE_TYPE_UNKNOWN:
-@@ -407,7 +407,7 @@ void session_device_free(SessionDevice *sd) {
- 
-         session_device_stop(sd);
-         session_device_notify(sd, SESSION_DEVICE_RELEASE);
--        close_nointr_nofail(sd->fd);
-+        close_nointr(sd->fd);
- 
-         LIST_REMOVE(SessionDevice, sd_by_device, sd->device->session_devices, sd);
- 
diff --git a/SOURCES/0309-sysfs-show.c-return-negative-error.patch b/SOURCES/0309-sysfs-show.c-return-negative-error.patch
deleted file mode 100644
index eeafc02..0000000
--- a/SOURCES/0309-sysfs-show.c-return-negative-error.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 8d5952a7659d735958119b64d05ceab34be9e454 Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Sat, 30 Nov 2013 21:59:40 +0100
-Subject: [PATCH] sysfs-show.c: return negative error
-
-introduced in 1ca208fb4f93e5869704af1812cbff7130a2fc03
-
-(cherry-picked from a051da35ce96923e31a532c86a530bfd40d5dc76)
-
-Resolves: #1147524
----
- src/login/sysfs-show.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c
-index 9fc3054..cb12ebf 100644
---- a/src/login/sysfs-show.c
-+++ b/src/login/sysfs-show.c
-@@ -164,7 +164,7 @@ int show_sysfs(const char *seat, const char *prefix, unsigned n_columns) {
- 
-         e = udev_enumerate_new(udev);
-         if (!e)
--                return ENOMEM;
-+                return -ENOMEM;
- 
-         if (!streq(seat, "seat0"))
-                 r = udev_enumerate_add_match_tag(e, seat);
diff --git a/SOURCES/0310-core-only-send-SIGHUP-when-doing-first-kill-not-when.patch b/SOURCES/0310-core-only-send-SIGHUP-when-doing-first-kill-not-when.patch
deleted file mode 100644
index b5cdad2..0000000
--- a/SOURCES/0310-core-only-send-SIGHUP-when-doing-first-kill-not-when.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 2f960b84dad97c50c819f2c11812fe6f302ec2ca Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 6 Feb 2014 01:50:41 +0100
-Subject: [PATCH] core: only send SIGHUP when doing first kill, not when doing
- final sigkill
-
-Conflicts:
-	src/core/unit.c
-
-(cherry-picked from 97e0691f85da6e7ea131ce80bd61e2d47a737a61)
-
-Resolves: #1147524
----
- src/core/unit.c | 20 ++++++++++++++++----
- 1 file changed, 16 insertions(+), 4 deletions(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 855e135..fe1864a 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -3113,7 +3113,7 @@ int unit_kill_context(
-                 } else {
-                         wait_for_exit = !main_pid_alien;
- 
--                        if (c->send_sighup)
-+                        if (c->send_sighup && !sigkill)
-                                 kill(main_pid, SIGHUP);
-                 }
-         }
-@@ -3131,7 +3131,7 @@ int unit_kill_context(
-                 } else {
-                         wait_for_exit = true;
- 
--                        if (c->send_sighup)
-+                        if (c->send_sighup && !sigkill)
-                                 kill(control_pid, SIGHUP);
-                 }
-         }
-@@ -3149,8 +3149,20 @@ int unit_kill_context(
-                         if (r != -EAGAIN && r != -ESRCH && r != -ENOENT)
-                                 log_warning_unit(u->id, "Failed to kill control group: %s", strerror(-r));
-                 } else if (r > 0) {
--                        wait_for_exit = true;
--                        if (c->send_sighup) {
-+
-+                        /* FIXME: Now, we don't actually wait for any
-+                         * of the processes that are neither control
-+                         * nor main process. We should wait for them
-+                         * of course, but that's hard since the cgroup
-+                         * notification logic is so unreliable. It is
-+                         * not available at all in containers, and on
-+                         * the host it gets confused by
-+                         * subgroups. Hence, for now, let's not wait
-+                         * for these processes -- but when the kernel
-+                         * gets fixed we really should correct
-+                         * that. */
-+
-+                        if (c->send_sighup && !sigkill) {
-                                 set_free(pid_set);
- 
-                                 pid_set = unit_pid_set(main_pid, control_pid);
diff --git a/SOURCES/0311-cgroup-make-sure-to-properly-send-SIGCONT-to-all-pro.patch b/SOURCES/0311-cgroup-make-sure-to-properly-send-SIGCONT-to-all-pro.patch
deleted file mode 100644
index f07310d..0000000
--- a/SOURCES/0311-cgroup-make-sure-to-properly-send-SIGCONT-to-all-pro.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 0c5ef7a5535c4b3aebfc61793c28919f696d5e99 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 6 Feb 2014 19:27:59 +0100
-Subject: [PATCH] cgroup: make sure to properly send SIGCONT to all processes
- of a cgroup if that's requested
-
-(cherry-picked from 6e8314c420eb375847c9e526745c2caec802399d)
-
-Resolves: #1147524
----
- src/shared/cgroup-util.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c
-index 8a4edda..b58d8b8 100644
---- a/src/shared/cgroup-util.c
-+++ b/src/shared/cgroup-util.c
-@@ -194,12 +194,12 @@ int cg_kill(const char *controller, const char *path, int sig, bool sigcont, boo
-                         if (kill(pid, sig) < 0) {
-                                 if (ret >= 0 && errno != ESRCH)
-                                         ret = -errno;
--                        } else if (ret == 0) {
--
-+                        } else {
-                                 if (sigcont)
-                                         kill(pid, SIGCONT);
- 
--                                ret = 1;
-+                                if (ret == 0)
-+                                        ret = 1;
-                         }
- 
-                         done = false;
diff --git a/SOURCES/0312-core-don-t-send-duplicate-SIGCONT-when-killing-units.patch b/SOURCES/0312-core-don-t-send-duplicate-SIGCONT-when-killing-units.patch
deleted file mode 100644
index a0134d0..0000000
--- a/SOURCES/0312-core-don-t-send-duplicate-SIGCONT-when-killing-units.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1368259de25f91b0130fcf9a8dd1623b3354ba10 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 6 Feb 2014 19:46:46 +0100
-Subject: [PATCH] core: don't send duplicate SIGCONT when killing units
-
-(cherry-picked from 8190da36f71a887945297cd65d6426c78b466a50)
-
-Resolves: #1147524
----
- src/core/unit.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index fe1864a..87a6385 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -3169,7 +3169,7 @@ int unit_kill_context(
-                                 if (!pid_set)
-                                         return -ENOMEM;
- 
--                                cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, SIGHUP, true, true, false, pid_set);
-+                                cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, u->cgroup_path, SIGHUP, false, true, false, pid_set);
-                         }
-                 }
-         }
diff --git a/SOURCES/0313-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch b/SOURCES/0313-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch
deleted file mode 100644
index ea63c99..0000000
--- a/SOURCES/0313-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From d19e3171725a0afd00c094e8d2b9012309b91f21 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <crrodriguez@opensuse.org>
-Date: Tue, 11 Feb 2014 09:54:49 -0300
-Subject: [PATCH] efi: fix Undefined reference efi_loader_get_boot_usec when
- EFI support is disabled
-
-(cherry-picked from 70d9b9fc0a4fa1698ff00e364c61bb875244efa1)
-
-Resolves: #1147524
----
- src/shared/boot-timestamps.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/shared/boot-timestamps.c b/src/shared/boot-timestamps.c
-index 9449965..d656685 100644
---- a/src/shared/boot-timestamps.c
-+++ b/src/shared/boot-timestamps.c
-@@ -40,8 +40,10 @@ int boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_time
- 
-         r = acpi_get_boot_usec(&x, &y);
-         if (r < 0) {
-+#ifdef ENABLE_EFI
-                 r = efi_loader_get_boot_usec(&x, &y);
-                 if (r < 0)
-+#endif
-                         return r;
-         }
- 
diff --git a/SOURCES/0314-macro-better-make-IN_SET-macro-use-const-arrays.patch b/SOURCES/0314-macro-better-make-IN_SET-macro-use-const-arrays.patch
deleted file mode 100644
index ef19db1..0000000
--- a/SOURCES/0314-macro-better-make-IN_SET-macro-use-const-arrays.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 87eaadf84215ef31e453d26c4935f82ec7ab1ef0 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 3 Dec 2013 16:41:06 +0100
-Subject: [PATCH] macro: better make IN_SET() macro use const arrays
-
-Conflicts:
-	src/shared/macro.h
-
-(cherry-picked from 059d9fbb)
-
-Resolves: #1147524
----
- src/shared/macro.h | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/src/shared/macro.h b/src/shared/macro.h
-index d4f92b6..27a02d4 100644
---- a/src/shared/macro.h
-+++ b/src/shared/macro.h
-@@ -287,4 +287,18 @@ do {                                                                    \
- #define SET_FLAG(v, flag, b) \
-         (v) = (b) ? ((v) | (flag)) : ((v) & ~(flag))
- 
-+#define IN_SET(x, ...)                                                  \
-+        ({                                                              \
-+                const typeof(x) _x = (x);                               \
-+                unsigned _i;                                            \
-+                bool _found = false;                                    \
-+                for (_i = 0; _i < sizeof((const typeof(_x)[]) { __VA_ARGS__ })/sizeof(const typeof(_x)); _i++) \
-+                        if (((const typeof(_x)[]) { __VA_ARGS__ })[_i] == _x) { \
-+                                _found = true;                          \
-+                                break;                                  \
-+                        }                                               \
-+                _found;                                                 \
-+        })
-+
-+
- #include "log.h"
diff --git a/SOURCES/0315-macro-make-sure-we-can-use-IN_SET-also-with-complex-.patch b/SOURCES/0315-macro-make-sure-we-can-use-IN_SET-also-with-complex-.patch
deleted file mode 100644
index 9cd02cc..0000000
--- a/SOURCES/0315-macro-make-sure-we-can-use-IN_SET-also-with-complex-.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 28a4b5dd0895ba41d1327dcaf824f8adffea73f7 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 12 Mar 2014 22:26:22 +0100
-Subject: [PATCH] macro: make sure we can use IN_SET() also with complex
- function calls as first argument
-
-(cherry-picked from dc36d78e)
-
-Resolves: #1147524
----
- src/shared/macro.h   | 9 +++++----
- src/test/test-util.c | 1 -
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/shared/macro.h b/src/shared/macro.h
-index 27a02d4..21039eb 100644
---- a/src/shared/macro.h
-+++ b/src/shared/macro.h
-@@ -287,13 +287,14 @@ do {                                                                    \
- #define SET_FLAG(v, flag, b) \
-         (v) = (b) ? ((v) | (flag)) : ((v) & ~(flag))
- 
--#define IN_SET(x, ...)                                                  \
-+#define IN_SET(x, y, ...)                                               \
-         ({                                                              \
--                const typeof(x) _x = (x);                               \
-+                const typeof(y) _y = (y);                               \
-+                const typeof(_y) _x = (x);                              \
-                 unsigned _i;                                            \
-                 bool _found = false;                                    \
--                for (_i = 0; _i < sizeof((const typeof(_x)[]) { __VA_ARGS__ })/sizeof(const typeof(_x)); _i++) \
--                        if (((const typeof(_x)[]) { __VA_ARGS__ })[_i] == _x) { \
-+                for (_i = 0; _i < 1 + sizeof((const typeof(_x)[]) { __VA_ARGS__ })/sizeof(const typeof(_x)); _i++) \
-+                        if (((const typeof(_x)[]) { _y, __VA_ARGS__ })[_i] == _x) { \
-                                 _found = true;                          \
-                                 break;                                  \
-                         }                                               \
-diff --git a/src/test/test-util.c b/src/test/test-util.c
-index c5762ed..8527f13 100644
---- a/src/test/test-util.c
-+++ b/src/test/test-util.c
-@@ -571,7 +571,6 @@ static void test_fstab_node_to_udev_node(void) {
-         assert_se(streq(n, "/dev/disk/by-partuuid/037b9d94-148e-4ee4-8d38-67bfe15bb535"));
-         free(n);
- 
--
-         n = fstab_node_to_udev_node("PONIES=awesome");
-         puts(n);
-         assert_se(streq(n, "PONIES=awesome"));
diff --git a/SOURCES/0316-core-fix-property-changes-in-transient-units.patch b/SOURCES/0316-core-fix-property-changes-in-transient-units.patch
deleted file mode 100644
index e1a7765..0000000
--- a/SOURCES/0316-core-fix-property-changes-in-transient-units.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From e091fcc1cc628b9e2192104c47e2be103bc8577a Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 17 Feb 2014 01:58:33 +0100
-Subject: [PATCH] core: fix property changes in transient units
-
-(cherry-picked from 6d2357247b198314d972932415d65a42f83a9b6e)
-
-Resolves: #1147524
----
- src/core/dbus-unit.c |  3 ---
- src/core/unit.c      | 13 ++++++-------
- 2 files changed, 6 insertions(+), 10 deletions(-)
-
-diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c
-index 2ea59b2..a185f5c 100644
---- a/src/core/dbus-unit.c
-+++ b/src/core/dbus-unit.c
-@@ -962,9 +962,6 @@ int bus_unit_set_properties(
-         assert(u);
-         assert(iter);
- 
--        if (u->transient)
--                mode &= UNIT_RUNTIME;
--
-         /* We iterate through the array twice. First run we just check
-          * if all passed data is valid, second run actually applies
-          * it. This is to implement transaction-like behaviour without
-diff --git a/src/core/unit.c b/src/core/unit.c
-index 87a6385..e56971b 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -2904,7 +2904,6 @@ static int drop_in_file(Unit *u, UnitSetPropertiesMode mode, const char *name, c
-         assert(name);
-         assert(_p);
-         assert(_q);
--        assert(mode & (UNIT_PERSISTENT|UNIT_RUNTIME));
- 
-         b = xescape(name, "/.");
-         if (!b)
-@@ -2923,7 +2922,7 @@ static int drop_in_file(Unit *u, UnitSetPropertiesMode mode, const char *name, c
-                         return -ENOENT;
- 
-                 p = strjoin(c, "/", u->id, ".d", NULL);
--        } else if (mode & UNIT_PERSISTENT)
-+        } else if (mode == UNIT_PERSISTENT && !u->transient)
-                 p = strjoin("/etc/systemd/system/", u->id, ".d", NULL);
-         else
-                 p = strjoin("/run/systemd/system/", u->id, ".d", NULL);
-@@ -2949,7 +2948,7 @@ int unit_write_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name, co
-         assert(name);
-         assert(data);
- 
--        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
-+        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
-                 return 0;
- 
-         r = drop_in_file(u, mode, name, &p, &q);
-@@ -2969,7 +2968,7 @@ int unit_write_drop_in_format(Unit *u, UnitSetPropertiesMode mode, const char *n
-         assert(name);
-         assert(format);
- 
--        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
-+        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
-                 return 0;
- 
-         va_start(ap, format);
-@@ -2992,7 +2991,7 @@ int unit_write_drop_in_private(Unit *u, UnitSetPropertiesMode mode, const char *
-         if (!UNIT_VTABLE(u)->private_section)
-                 return -EINVAL;
- 
--        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
-+        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
-                 return 0;
- 
-         ndata = strjoin("[", UNIT_VTABLE(u)->private_section, "]\n", data, NULL);
-@@ -3011,7 +3010,7 @@ int unit_write_drop_in_private_format(Unit *u, UnitSetPropertiesMode mode, const
-         assert(name);
-         assert(format);
- 
--        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
-+        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
-                 return 0;
- 
-         va_start(ap, format);
-@@ -3030,7 +3029,7 @@ int unit_remove_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name) {
- 
-         assert(u);
- 
--        if (!(mode & (UNIT_PERSISTENT|UNIT_RUNTIME)))
-+        if (!IN_SET(mode, UNIT_PERSISTENT, UNIT_RUNTIME))
-                 return 0;
- 
-         r = drop_in_file(u, mode, name, &p, &q);
diff --git a/SOURCES/0317-load-modules-properly-return-a-failing-error-code-if.patch b/SOURCES/0317-load-modules-properly-return-a-failing-error-code-if.patch
deleted file mode 100644
index 1f5b8b5..0000000
--- a/SOURCES/0317-load-modules-properly-return-a-failing-error-code-if.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 85658c05781da6137bf8c93d1454aa588ab98696 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 18 Feb 2014 21:23:16 +0100
-Subject: [PATCH] load-modules: properly return a failing error code if some
- module fails to load
-
-This is the missing part of b857193b1def5172e3641ca1d5bc9e08ae81aac4.
-
-(cherry-picked from 4b462d1a28461b302586b117736ef288fba1012f)
-
-Resolves: #1147524
----
- src/modules-load/modules-load.c | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c
-index cba7c55..5d2ca4d 100644
---- a/src/modules-load/modules-load.c
-+++ b/src/modules-load/modules-load.c
-@@ -306,9 +306,11 @@ int main(int argc, char *argv[]) {
-                                 r = k;
-                 }
- 
--                r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
--                if (r < 0) {
--                        log_error("Failed to enumerate modules-load.d files: %s", strerror(-r));
-+                k = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs);
-+                if (k < 0) {
-+                        log_error("Failed to enumerate modules-load.d files: %s", strerror(-k));
-+                        if (r == 0)
-+                                r = k;
-                         goto finish;
-                 }
- 
diff --git a/SOURCES/0318-core-unit-fix-unit_add_target_dependencies-for-units.patch b/SOURCES/0318-core-unit-fix-unit_add_target_dependencies-for-units.patch
deleted file mode 100644
index 26b22bd..0000000
--- a/SOURCES/0318-core-unit-fix-unit_add_target_dependencies-for-units.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 22eebbf0b5ab380173b3d8bab558719b1f408a2e Mon Sep 17 00:00:00 2001
-From: Daniel Mack <zonque@gmail.com>
-Date: Thu, 20 Feb 2014 13:29:54 +0100
-Subject: [PATCH] core/unit: fix unit_add_target_dependencies() for units with
- no dependencies
-
-For units without any dependencies, r needs to be initialized to 0.
-Otherwise, the return value of unit_add_target_dependencies() is
-unspecified.
-
-Conflicts:
-	src/core/unit.c
-
-(cherry-picked from db57f3c6d11864f4227bb6734a0d509695a32a7d)
-
-Resolves: #1147524
----
- src/core/unit.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index e56971b..b51e351 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -923,8 +923,8 @@ static int unit_add_default_dependencies(Unit *u) {
- 
-         Unit *target;
-         Iterator i;
--        int r;
-         unsigned k;
-+        int r = 0;
- 
-         assert(u);
- 
diff --git a/SOURCES/0319-man-there-is-no-ExecStopPre-for-service-units.patch b/SOURCES/0319-man-there-is-no-ExecStopPre-for-service-units.patch
deleted file mode 100644
index 1bce347..0000000
--- a/SOURCES/0319-man-there-is-no-ExecStopPre-for-service-units.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 7d34b04e8dc4e1253d6360eeefbfaf686f58991b Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 21 Feb 2014 15:06:44 +0100
-Subject: [PATCH] man: there is no ExecStopPre= for service units
-
-https://bugs.freedesktop.org/show_bug.cgi?id=73177
-
-(cherry-picked from c32acc96ef74d13d0059a680cdede5f05db1981a)
-
-Resolves: #1147524
----
- man/systemd.service.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 4fb21ba..80d6951 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -678,7 +678,7 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}
-                                 specified with
-                                 <varname>ExecStartPre=</varname>,
-                                 <varname>ExecStartPost=</varname>,
--                                <varname>ExecStopPre=</varname>,
-+                                <varname>ExecStop=</varname>,
-                                 <varname>ExecStopPost=</varname>, or
-                                 <varname>ExecReload=</varname>.
-                                 When the death of the process is a
diff --git a/SOURCES/0320-man-document-that-per-interface-sysctl-variables-are.patch b/SOURCES/0320-man-document-that-per-interface-sysctl-variables-are.patch
deleted file mode 100644
index 9a6d9a6..0000000
--- a/SOURCES/0320-man-document-that-per-interface-sysctl-variables-are.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 1c06bbbcbc55b2404cdece020411f06b28b4b2b3 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Sun, 23 Feb 2014 16:43:19 +0100
-Subject: [PATCH] man: document that per-interface sysctl variables are applied
- as network interfaces show up
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1062955
-
-(cherry-picked from 8f03fd08911016d8bbcad5892b2c07b30a4c2306)
-
-Resolves: #1147524
----
- man/sysctl.d.xml | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml
-index 5544283..00a857b 100644
---- a/man/sysctl.d.xml
-+++ b/man/sysctl.d.xml
-@@ -103,6 +103,16 @@
-                 <filename>/dev/null</filename> in
-                 <filename>/etc/sysctl.d/</filename> bearing the
-                 same filename.</para>
-+
-+                <para>The settings configured with
-+                <filename>sysctl.d</filename> files will be applied
-+                early on boot. The network interface-specific options
-+                will also be applied individually for each network
-+                interface as it shows up in the system. (More
-+                specifically, that is
-+                <filename>net.ipv4.conf.*</filename>,
-+                <filename>net.ipv6.conf.*</filename>,
-+                <filename>net.ipv4.neigh.*</filename> and <filename>net.ipv6.neigh.*</filename>)</para>
-         </refsect1>
- 
-         <refsect1>
diff --git a/SOURCES/0321-journal-downgrade-vaccuum-message-to-debug-level.patch b/SOURCES/0321-journal-downgrade-vaccuum-message-to-debug-level.patch
deleted file mode 100644
index f136f6a..0000000
--- a/SOURCES/0321-journal-downgrade-vaccuum-message-to-debug-level.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 68272275166ad738ccf7c70ac0a6b8c72470c95f Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Sun, 23 Feb 2014 17:05:37 +0100
-Subject: [PATCH] journal: downgrade vaccuum message to debug level
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1047148
-
-(cherry-picked from 3bb621e1e66b704c0c2dcef31c66f7c646dd47f6)
-
-Resolves: #1147524
----
- src/journal/journal-vacuum.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c
-index d4a1c6c..88c67a1 100644
---- a/src/journal/journal-vacuum.c
-+++ b/src/journal/journal-vacuum.c
-@@ -336,7 +336,7 @@ finish:
-                 free(list[i].filename);
-         free(list);
- 
--        log_info("Vacuuming done, freed %"PRIu64" bytes", freed);
-+        log_debug("Vacuuming done, freed %"PRIu64" bytes", freed);
- 
-         return r;
- }
diff --git a/SOURCES/0322-logs-show-fix-corrupt-output-with-empty-messages.patch b/SOURCES/0322-logs-show-fix-corrupt-output-with-empty-messages.patch
deleted file mode 100644
index bc7025c..0000000
--- a/SOURCES/0322-logs-show-fix-corrupt-output-with-empty-messages.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From b5915d4a5870668442d3ef08a3b1f6b0028ea97f Mon Sep 17 00:00:00 2001
-From: Uoti Urpala <uoti.urpala@pp1.inet.fi>
-Date: Thu, 20 Feb 2014 03:00:09 +0200
-Subject: [PATCH] logs-show: fix corrupt output with empty messages
-
-If a message had zero length, journalctl would print no newline, and
-two output lines would be concatenated. Fix. The problem was
-introduced in commit 31f7bf199452 ("logs-show: print multiline
-messages"). Affected short and verbose output modes.
-
-Before fix:
-
-Feb 09 21:16:17 glyph dhclient[1323]: Feb 09 21:16:17 glyph NetworkManager[788]: <info> (enp4s2): DHCPv4 state changed nbi -> preinit
-
-after:
-
-Feb 09 21:16:17 glyph dhclient[1323]:
-Feb 09 21:16:17 glyph NetworkManager[788]: <info> (enp4s2): DHCPv4 state changed nbi -> preinit
-
-(cherry-picked from 47d80904a1f72d559962cc5ad32fffd46672a34a)
-
-Resolves: #1147524
----
- src/shared/logs-show.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
-index 7bb19b4..91eefb3 100644
---- a/src/shared/logs-show.c
-+++ b/src/shared/logs-show.c
-@@ -121,6 +121,11 @@ static bool print_multiline(FILE *f, unsigned prefix, unsigned n_columns, Output
-                 }
-         }
- 
-+        /* A special case: make sure that we print a newline when
-+           the message is empty. */
-+        if (message_len == 0)
-+                fputs("\n", f);
-+
-         for (pos = message;
-              pos < message + message_len;
-              pos = end + 1, line++) {
diff --git a/SOURCES/0323-journalctl-refuse-extra-arguments-with-verify-and-si.patch b/SOURCES/0323-journalctl-refuse-extra-arguments-with-verify-and-si.patch
deleted file mode 100644
index 289f375..0000000
--- a/SOURCES/0323-journalctl-refuse-extra-arguments-with-verify-and-si.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From f951a4b2dbbfdb8c387a802d0ae56ce47470f679 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Wed, 26 Feb 2014 23:01:43 -0500
-Subject: [PATCH] journalctl: refuse extra arguments with --verify and similar
-
-Positional arguments only make sense with the default action.
-For other actions, complain instead of ignoring them silently.
-
-(cherry-picked from 0b6b7c2004317da48e5bbd3078c5662d8f0061b6)
-
-Resolves: #1147524
----
- src/journal/journalctl.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
-index 54e3ddd..3113e65 100644
---- a/src/journal/journalctl.c
-+++ b/src/journal/journalctl.c
-@@ -584,6 +584,11 @@ static int parse_argv(int argc, char *argv[]) {
-                 return -EINVAL;
-         }
- 
-+        if (arg_action != ACTION_SHOW && optind < argc) {
-+                log_error("Extraneous arguments starting with '%s'", argv[optind]);
-+                return -EINVAL;
-+        }
-+
-         return 1;
- }
- 
diff --git a/SOURCES/0324-journal-assume-that-next-entry-is-after-previous-ent.patch b/SOURCES/0324-journal-assume-that-next-entry-is-after-previous-ent.patch
deleted file mode 100644
index 6186ad2..0000000
--- a/SOURCES/0324-journal-assume-that-next-entry-is-after-previous-ent.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From 559cbd8367f3eb2c7ce49f923a688e7f83c5b439 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 27 Feb 2014 00:07:29 -0500
-Subject: [PATCH] journal: assume that next entry is after previous entry
-
-With a corrupted file, we can get in a situation where two entries
-in the entry array point to the same object. Then journal_file_next_entry
-will find the first one using generic_arrray_bisect, and try to move to
-the second one, but since the address is the same, generic_array_get will
-return the first one. journal_file_next_entry ends up in an infinite loop.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1047039
-
-(cherry-picked from fb099c8d2af6620db2709e826a258089d10cdfe8)
-
-Resolves: #1147524
----
- src/journal/journal-file.c | 26 ++++++++++++++++++++------
- 1 file changed, 20 insertions(+), 6 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 9dbd674..f101a1f 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -1359,7 +1359,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
- }
- 
- typedef struct ChainCacheItem {
--        uint64_t first; /* the array at the begin of the chain */
-+        uint64_t first; /* the array at the beginning of the chain */
-         uint64_t array; /* the cached array */
-         uint64_t begin; /* the first item in the cached array */
-         uint64_t total; /* the total number of items in all arrays before this one in the chain */
-@@ -1945,7 +1945,7 @@ int journal_file_next_entry(
-                 direction_t direction,
-                 Object **ret, uint64_t *offset) {
- 
--        uint64_t i, n;
-+        uint64_t i, n, ofs;
-         int r;
- 
-         assert(f);
-@@ -1986,10 +1986,24 @@ int journal_file_next_entry(
-         }
- 
-         /* And jump to it */
--        return generic_array_get(f,
--                                 le64toh(f->header->entry_array_offset),
--                                 i,
--                                 ret, offset);
-+        r = generic_array_get(f,
-+                              le64toh(f->header->entry_array_offset),
-+                              i,
-+                              ret, &ofs);
-+        if (r <= 0)
-+                return r;
-+
-+        if (p > 0 &&
-+            (direction == DIRECTION_DOWN ? ofs <= p : ofs >= p)) {
-+                log_debug("%s: entry array corrupted at entry %"PRIu64,
-+                          f->path, i);
-+                return -EBADMSG;
-+        }
-+
-+        if (offset)
-+                *offset = ofs;
-+
-+        return 1;
- }
- 
- int journal_file_skip_entry(
diff --git a/SOURCES/0325-journal-forget-file-after-encountering-an-error.patch b/SOURCES/0325-journal-forget-file-after-encountering-an-error.patch
deleted file mode 100644
index bce17cd..0000000
--- a/SOURCES/0325-journal-forget-file-after-encountering-an-error.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 1ff08dbb562d007bbca2323ab219324058fe8adb Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 27 Feb 2014 00:11:54 -0500
-Subject: [PATCH] journal: forget file after encountering an error
-
-If we encounter an inconsistency in a file, let's just
-ignore it. Otherwise, after previous patch, we would try,
-and fail, to use this file in every invocation of sd_journal_next
-or sd_journal_previous that happens afterwards.
-
-(cherry-picked from a9a245c128af6c0418085062c60251bc51fa4a94)
-
-Resolves: #1147524
----
- src/journal/sd-journal.c | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c
-index 67a77e6..8e3bb0c 100644
---- a/src/journal/sd-journal.c
-+++ b/src/journal/sd-journal.c
-@@ -50,6 +50,8 @@
- 
- #define DEFAULT_DATA_THRESHOLD (64*1024)
- 
-+static void remove_file_real(sd_journal *j, JournalFile *f);
-+
- static bool journal_pid_changed(sd_journal *j) {
-         assert(j);
- 
-@@ -895,6 +897,7 @@ static int real_journal_next(sd_journal *j, direction_t direction) {
-                 r = next_beyond_location(j, f, direction, &o, &p);
-                 if (r < 0) {
-                         log_debug("Can't iterate through %s, ignoring: %s", f->path, strerror(-r));
-+                        remove_file_real(j, f);
-                         continue;
-                 } else if (r == 0)
-                         continue;
-@@ -1368,7 +1371,7 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) {
- }
- 
- static int remove_file(sd_journal *j, const char *prefix, const char *filename) {
--        char *path;
-+        _cleanup_free_ char *path;
-         JournalFile *f;
- 
-         assert(j);
-@@ -1380,10 +1383,17 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename)
-                 return -ENOMEM;
- 
-         f = hashmap_get(j->files, path);
--        free(path);
-         if (!f)
-                 return 0;
- 
-+        remove_file_real(j, f);
-+        return 0;
-+}
-+
-+static void remove_file_real(sd_journal *j, JournalFile *f) {
-+        assert(j);
-+        assert(f);
-+
-         hashmap_remove(j->files, f->path);
- 
-         log_debug("File %s removed.", f->path);
-@@ -1401,8 +1411,6 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename)
-         journal_file_close(f);
- 
-         j->current_invalidate_counter ++;
--
--        return 0;
- }
- 
- static int add_directory(sd_journal *j, const char *prefix, const char *dirname) {
diff --git a/SOURCES/0326-man-update-link-to-LSB.patch b/SOURCES/0326-man-update-link-to-LSB.patch
deleted file mode 100644
index 64a213c..0000000
--- a/SOURCES/0326-man-update-link-to-LSB.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From da1a97ff0f6637cb2e1d68ab0289b0f1125dc4df Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 6 Mar 2014 08:10:19 -0500
-Subject: [PATCH] man: update link to LSB
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1073402
-
-(cherry-picked from 27d14fb331ba8144f99f4da2d13f15cf5c8b8a9f)
-
-Resolves: #1147524
----
- man/daemon.xml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/man/daemon.xml b/man/daemon.xml
-index 105826a..418a7e9 100644
---- a/man/daemon.xml
-+++ b/man/daemon.xml
-@@ -251,7 +251,7 @@
-                                 detect service errors and problems. It
-                                 is recommended to follow the exit code
-                                 scheme as defined in the <ulink
--                                url="http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
-+                                url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
-                                 recommendations for SysV init
-                                 scripts</ulink>.</para></listitem>
- 
-@@ -394,7 +394,7 @@
-                         exclusively on boot (and manually by the
-                         administrator) via SysV init scripts, as
-                         detailed in the <ulink
--                        url="http://refspecs.freestandards.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
-+                        url="http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic/LSB-Core-generic/iniscrptact.html">LSB
-                         Linux Standard Base Core
-                         Specification</ulink>. This method of
-                         activation is supported ubiquitously on Linux
diff --git a/SOURCES/0327-man-systemd-bootchart-fix-spacing-in-command.patch b/SOURCES/0327-man-systemd-bootchart-fix-spacing-in-command.patch
deleted file mode 100644
index d3a958b..0000000
--- a/SOURCES/0327-man-systemd-bootchart-fix-spacing-in-command.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From a7711e81f0192e06fbc97705bf757410fc33724c Mon Sep 17 00:00:00 2001
-From: Zachary Cook <zachcook1991@gmail.com>
-Date: Thu, 6 Mar 2014 03:49:49 -0500
-Subject: [PATCH] man: systemd-bootchart - fix spacing in command
-
-Use the same formatting as the systemd-analyze man page, so that man shows a space.
-
-(cherry-picked from 82ed60080d327d7301fcd55f5a1f8511f894b9d5)
-
-Resolves: #1147524
----
- man/systemd-bootchart.xml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml
-index ae432b5..818afa1 100644
---- a/man/systemd-bootchart.xml
-+++ b/man/systemd-bootchart.xml
-@@ -76,8 +76,8 @@
-                         in which order, and where possible problems
-                         exist in the startup sequence of the system.
-                         It is essentially a more detailed version of
--                        the <command>systemd-analyze</command>
--                        <command>plot</command> function.
-+                        the <command>systemd-analyze plot</command>
-+                        function.
-                 </para>
-                 <para>
-                         Of course, bootchart can also be used at any
diff --git a/SOURCES/0328-man-add-missing-comma.patch b/SOURCES/0328-man-add-missing-comma.patch
deleted file mode 100644
index 91e4440..0000000
--- a/SOURCES/0328-man-add-missing-comma.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 958e9706f20d69608c703808731bb9ff523d8462 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Thu, 6 Mar 2014 23:54:13 -0500
-Subject: [PATCH] man: add missing comma
-
-marcosf0> missing comma in udevadm "see also" section
-
-(cherry-picked from 7d06ef0a5cd2f0a4e021d3d12f3841cce529e0f2)
-
-Resolves: #1147524
----
- man/udevadm.xml | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/man/udevadm.xml b/man/udevadm.xml
-index ca3713f..6fc6783 100644
---- a/man/udevadm.xml
-+++ b/man/udevadm.xml
-@@ -514,7 +514,7 @@
-     <title>See Also</title>
-     <para><citerefentry>
-         <refentrytitle>udev</refentrytitle><manvolnum>7</manvolnum>
--    </citerefentry>
-+    </citerefentry>,
-     <citerefentry>
-         <refentrytitle>systemd-udevd.service</refentrytitle><manvolnum>8</manvolnum>
-     </citerefentry></para>
diff --git a/SOURCES/0329-units-Do-not-unescape-instance-name-in-systemd-backl.patch b/SOURCES/0329-units-Do-not-unescape-instance-name-in-systemd-backl.patch
deleted file mode 100644
index 3f9d6c3..0000000
--- a/SOURCES/0329-units-Do-not-unescape-instance-name-in-systemd-backl.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 51aa47339565893e48a3533250d392fcdb80a675 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org>
-Date: Fri, 7 Mar 2014 01:50:34 +0100
-Subject: [PATCH] units: Do not unescape instance name in
- systemd-backlight@.service
-
-The instance name is never escaped in the udev rule, but unescaped in the unit.
-This results in the following error message on Asus boards:
-
-  Failed to get backlight or LED device 'backlight:eeepc/wmi': No such file or directory
-
-(cherry-picked from 6c49212741253dae05b89d22374186f092ef1e5a)
-
-Resolves: #1147524
----
- units/systemd-backlight@.service.in | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/units/systemd-backlight@.service.in b/units/systemd-backlight@.service.in
-index 5caa5d5..e945d87 100644
---- a/units/systemd-backlight@.service.in
-+++ b/units/systemd-backlight@.service.in
-@@ -6,7 +6,7 @@
- #  (at your option) any later version.
- 
- [Unit]
--Description=Load/Save Screen Backlight Brightness of %I
-+Description=Load/Save Screen Backlight Brightness of %i
- Documentation=man:systemd-backlight@.service(8)
- DefaultDependencies=no
- RequiresMountsFor=/var/lib/systemd/backlight
-@@ -17,5 +17,5 @@ Before=sysinit.target shutdown.target
- [Service]
- Type=oneshot
- RemainAfterExit=yes
--ExecStart=@rootlibexecdir@/systemd-backlight load %I
--ExecStop=@rootlibexecdir@/systemd-backlight save %I
-+ExecStart=@rootlibexecdir@/systemd-backlight load %i
-+ExecStop=@rootlibexecdir@/systemd-backlight save %i
diff --git a/SOURCES/0330-manager-flush-memory-stream-before-using-the-buffer.patch b/SOURCES/0330-manager-flush-memory-stream-before-using-the-buffer.patch
deleted file mode 100644
index c3ad052..0000000
--- a/SOURCES/0330-manager-flush-memory-stream-before-using-the-buffer.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From 0fca5aae90d5a4e292db8db7b9c31c8390799368 Mon Sep 17 00:00:00 2001
-From: Daniel Mack <zonque@gmail.com>
-Date: Fri, 7 Mar 2014 14:43:59 +0100
-Subject: [PATCH] manager: flush memory stream before using the buffer
-
-When the manager receives a SIGUSR2 signal, it opens a memory stream
-with open_memstream(), uses the returned file handle for logging, and
-dumps the logged content with log_dump().
-
-However, the char* buffer is only safe to use after the file handle has
-been flushed with fflush, as the man pages states:
-
-  When the stream is closed (fclose(3)) or flushed (fflush(3)), the
-  locations pointed to by ptr and sizeloc are updated to contain,
-  respectively, a pointer to the buffer and the current size of  the
-  buffer.
-  These values remain valid only as long as the caller performs no
-  further output on the stream.  If further output is performed, then the
-  stream must again be flushed before trying to access these variables.
-
-Without that call, dump remains NULL and the daemon crashes in
-log_dump().
-
-Conflicts:
-	src/core/manager.c
-
-(cherry-picked from b2cdc6664ef6b56e47d38649d69b9943d9f9f5d0)
-
-Resolves: #1147524
----
- src/core/manager.c | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index 4ad26e1..e48ea36 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -1536,11 +1536,12 @@ static int manager_process_signal_fd(Manager *m) {
-                 }
- 
-                 case SIGUSR2: {
--                        FILE *f;
--                        char *dump = NULL;
-+                        _cleanup_free_ char *dump = NULL;
-+                        _cleanup_fclose_ FILE *f = NULL;
-                         size_t size;
- 
--                        if (!(f = open_memstream(&dump, &size))) {
-+                        f = open_memstream(&dump, &size);
-+                        if (!f) {
-                                 log_warning("Failed to allocate memory stream.");
-                                 break;
-                         }
-@@ -1549,16 +1550,16 @@ static int manager_process_signal_fd(Manager *m) {
-                         manager_dump_jobs(m, f, "\t");
- 
-                         if (ferror(f)) {
--                                fclose(f);
--                                free(dump);
-                                 log_warning("Failed to write status stream");
-                                 break;
-                         }
- 
--                        fclose(f);
--                        log_dump(LOG_INFO, dump);
--                        free(dump);
-+                        if (fflush(f)) {
-+                                log_warning("Failed to flush status stream");
-+                                break;
-+                        }
- 
-+                        log_dump(LOG_INFO, dump);
-                         break;
-                 }
- 
diff --git a/SOURCES/0331-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch b/SOURCES/0331-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch
deleted file mode 100644
index d52f697..0000000
--- a/SOURCES/0331-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ccbe3369a69af38dbf8fdf3a0a1b27ba534506ea Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 11 Mar 2014 05:23:39 +0100
-Subject: [PATCH] man: multiple sleep modes are to be separated by whitespace,
- not commas
-
-As pointed out by Jason A. Donenfeld.
-
-Conflicts:
-	man/systemd-sleep.conf.xml
-
-(cherry-picked from 252094eb05c58270a0bc35b14ad30a126ddbb3bb)
-
-Resolves: #1147524
----
- man/systemd-sleep.conf.xml | 18 ++++++++----------
- 1 file changed, 8 insertions(+), 10 deletions(-)
-
-diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml
-index dc4b0da..d0ea6d8 100644
---- a/man/systemd-sleep.conf.xml
-+++ b/man/systemd-sleep.conf.xml
-@@ -127,10 +127,10 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
-         <citerefentry><refentrytitle>systemd-suspend.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-         <citerefentry><refentrytitle>systemd-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, or
-         <citerefentry><refentrytitle>systemd-hybrid-sleep.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
--        More than one value can be specified by seperating
--        multiple values with commas. They will be tried
-+        More than one value can be specified by separating
-+        multiple values with whitespace. They will be tried
-         in turn, until one is written without error. If
--        neither suceeds, the operation will be aborted.
-+        neither succeeds, the operation will be aborted.
-         </para></listitem>
-       </varlistentry>
- 
-@@ -145,10 +145,10 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
-         <citerefentry><refentrytitle>systemd-suspend.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-         <citerefentry><refentrytitle>systemd-hibernate.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>, or
-         <citerefentry><refentrytitle>systemd-hybrid-sleep.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>.
--        More than one value can be specified by seperating
--        multiple values with commas. They will be tried
-+        More than one value can be specified by separating
-+        multiple values with whitespace. They will be tried
-         in turn, until one is written without error. If
--        neither suceeds, the operation will be aborted.
-+        neither succeeds, the operation will be aborted.
-         </para></listitem>
-       </varlistentry>
-     </variablelist>
-@@ -160,10 +160,8 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
-     <para>Example: to exploit the <quote>freeze</quote> mode added
-     in Linux 3.9, one can use <command>systemctl suspend</command>
-     with
--    <programlisting>
--[Sleep]
--SuspendState=freeze
--    </programlisting></para>
-+    <programlisting>[Sleep]
-+SuspendState=freeze</programlisting></para>
-   </refsect1>
- 
-   <refsect1>
diff --git a/SOURCES/0332-man-fix-description-of-systemctl-after-before.patch b/SOURCES/0332-man-fix-description-of-systemctl-after-before.patch
deleted file mode 100644
index beb81e2..0000000
--- a/SOURCES/0332-man-fix-description-of-systemctl-after-before.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 603f2c62ba1a64aa22223b66dfdd455ca6589b91 Mon Sep 17 00:00:00 2001
-From: Andrey Borzenkov <arvidjaar@gmail.com>
-Date: Fri, 21 Feb 2014 20:44:06 +0400
-Subject: [PATCH] man: fix description of systemctl --after/--before
-
-It was backward - --after fetches After property, so units shown really
-come *before* unit given as argument. Same for --before.
-
-(cherry-picked from 4a77ca700d1841c2b8a86ed5b7f3495db61c236d)
-
-Resolves: #1147524
----
- man/systemctl.xml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index d1fda61..045d520 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -176,8 +176,8 @@ systemctl start foo
-         <term><option>--before</option></term>
- 
-         <listitem>
--          <para>Show which units are started after or before
--          with <command>list-dependencies</command>, respectively.
-+          <para>Show after (before) which units the specified unit is started
-+          with <command>list-dependencies</command>.
-           </para>
-         </listitem>
-       </varlistentry>
diff --git a/SOURCES/0333-udev-properly-detect-reference-to-unexisting-part-of.patch b/SOURCES/0333-udev-properly-detect-reference-to-unexisting-part-of.patch
deleted file mode 100644
index 8969cb5..0000000
--- a/SOURCES/0333-udev-properly-detect-reference-to-unexisting-part-of.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 2e13dee991178518480d68e89d323666b047d182 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Mon, 24 Feb 2014 17:06:21 +0100
-Subject: [PATCH] udev: properly detect reference to unexisting part of
- PROGRAM's result
-
-(cherry-picked from 66390abefae6530981446970ffd7ff4d1085e254)
-
-Resolves: #1147524
----
- src/udev/udev-event.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
-index d69d7ba..aa7c793 100644
---- a/src/udev/udev-event.c
-+++ b/src/udev/udev-event.c
-@@ -254,6 +254,8 @@ subst:
-                                                 cpos++;
-                                         while (isspace(cpos[0]))
-                                                 cpos++;
-+                                        if (cpos[0] == '\0')
-+                                                break;
-                                 }
-                                 if (i > 0) {
-                                         log_error("requested part of result string not found\n");
diff --git a/SOURCES/0334-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch b/SOURCES/0334-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch
deleted file mode 100644
index ac3d6d0..0000000
--- a/SOURCES/0334-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From c8135d12561727f7ed8513cb5f113866ee963194 Mon Sep 17 00:00:00 2001
-From: Tomasz Torcz <tomek@pipebreaker.pl>
-Date: Wed, 12 Mar 2014 19:25:11 +0100
-Subject: [PATCH] gpt-auto-generator: don't return OOM on parentless devices
-
-(cherry-picked from 9c4495ca561624c2f0085507dd1288ed5f1247c5)
-
-Resolves: #1147524
----
- src/gpt-auto-generator/gpt-auto-generator.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
-index 8436d26..6a4c9d8 100644
---- a/src/gpt-auto-generator/gpt-auto-generator.c
-+++ b/src/gpt-auto-generator/gpt-auto-generator.c
-@@ -252,7 +252,7 @@ static int enumerate_partitions(struct udev *udev, dev_t dev) {
- 
-         parent = udev_device_get_parent(d);
-         if (!parent)
--                return log_oom();
-+                return 0;
- 
-         r = udev_enumerate_add_match_parent(e, parent);
-         if (r < 0)
diff --git a/SOURCES/0335-man-improve-wording-of-systemctl-s-after-before.patch b/SOURCES/0335-man-improve-wording-of-systemctl-s-after-before.patch
deleted file mode 100644
index eaaf62b..0000000
--- a/SOURCES/0335-man-improve-wording-of-systemctl-s-after-before.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 8c346633426ec3476f87e7558407b75d9da1d5a4 Mon Sep 17 00:00:00 2001
-From: "Jason St. John" <jstjohn@purdue.edu>
-Date: Mon, 17 Mar 2014 00:03:46 -0400
-Subject: [PATCH] man: improve wording of systemctl's --after/--before
-
-Commit 4a77ca7 was an attempt at fixing the wording of --after and --before,
-but the new wording was unclear.
-
-Split the combined --after/--before section into a separate section for
-each, explicitly state what each option does, and add information about
-how these lists are generated.
-
-Reported-by: Andrey Borzenkov <arvidjaar@gmail.com>
-Reported-by: Lennart Poettering <lennart@poettering.net>
-
-(cherry-picked from 9029f64298cb70c12ecf638fddee7f41b056fcf1)
-
-Resolves: #1147524
----
- man/systemctl.xml | 21 ++++++++++++++++++---
- 1 file changed, 18 insertions(+), 3 deletions(-)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index 045d520..cb63bb0 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -173,12 +173,27 @@ systemctl start foo
- 
-       <varlistentry>
-         <term><option>--after</option></term>
-+
-+        <listitem>
-+          <para>With <command>list-dependencies</command>, show the
-+          units that are ordered before the specified unit. In other
-+          words, list the units that are in the <varname>After=</varname>
-+          directive of the specified unit, have the specified unit in
-+          their <varname>Before=</varname> directive, or are otherwise
-+          implicit dependencies of the specified unit.</para>
-+        </listitem>
-+      </varlistentry>
-+
-+      <varlistentry>
-         <term><option>--before</option></term>
- 
-         <listitem>
--          <para>Show after (before) which units the specified unit is started
--          with <command>list-dependencies</command>.
--          </para>
-+          <para>With <command>list-dependencies</command>, show the
-+          units that are ordered after the specified unit. In other
-+          words, list the units that are in the <varname>Before=</varname>
-+          directive of the specified unit, have the specified unit in
-+          their <varname>After=</varname> directive, or otherwise depend
-+          on the specified unit.</para>
-         </listitem>
-       </varlistentry>
- 
diff --git a/SOURCES/0336-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch b/SOURCES/0336-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch
deleted file mode 100644
index 25952cb..0000000
--- a/SOURCES/0336-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From aab1a9e316bfa55ab41ecad102c90c6b7eeac52e Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 18 Mar 2014 04:06:36 +0100
-Subject: [PATCH] cgroup: it's not OK to invoke alloca() in loops
-
-(cherry-picked from a641dcd9bf05418d6a6c165e1c0cff615b4a0f47)
-
-Resolves: #1147524
----
- src/core/mount-setup.c | 20 ++++++++++++++------
- 1 file changed, 14 insertions(+), 6 deletions(-)
-
-diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
-index 4359f59..679f289 100644
---- a/src/core/mount-setup.c
-+++ b/src/core/mount-setup.c
-@@ -210,10 +210,10 @@ int mount_setup_early(void) {
- }
- 
- int mount_cgroup_controllers(char ***join_controllers) {
--        int r;
--        char buf[LINE_MAX];
-         _cleanup_set_free_free_ Set *controllers = NULL;
-         _cleanup_fclose_ FILE *f;
-+        char buf[LINE_MAX];
-+        int r;
- 
-         /* Mount all available cgroup controllers that are built into the kernel. */
- 
-@@ -256,6 +256,7 @@ int mount_cgroup_controllers(char ***join_controllers) {
-         }
- 
-         for (;;) {
-+                _cleanup_free_ char *options = NULL, *controller = NULL, *where = NULL;
-                 MountPoint p = {
-                         .what = "cgroup",
-                         .type = "cgroup",
-@@ -263,7 +264,6 @@ int mount_cgroup_controllers(char ***join_controllers) {
-                         .mode = MNT_IN_CONTAINER,
-                 };
-                 char ***k = NULL;
--                _cleanup_free_ char *options = NULL, *controller;
- 
-                 controller = set_steal_first(controllers);
-                 if (!controller)
-@@ -280,7 +280,7 @@ int mount_cgroup_controllers(char ***join_controllers) {
-                         for (i = *k, j = *k; *i; i++) {
- 
-                                 if (!streq(*i, controller)) {
--                                        char _cleanup_free_ *t;
-+                                        _cleanup_free_ char *t;
- 
-                                         t = set_remove(controllers, *i);
-                                         if (!t) {
-@@ -302,7 +302,11 @@ int mount_cgroup_controllers(char ***join_controllers) {
-                         controller = NULL;
-                 }
- 
--                p.where = strappenda("/sys/fs/cgroup/", options);
-+                where = strappend("/sys/fs/cgroup/", options);
-+                if (!where)
-+                        return log_oom();
-+
-+                p.where = where;
-                 p.options = options;
- 
-                 r = mount_one(&p, true);
-@@ -313,7 +317,11 @@ int mount_cgroup_controllers(char ***join_controllers) {
-                         char **i;
- 
-                         for (i = *k; *i; i++) {
--                                char *t = strappenda("/sys/fs/cgroup/", *i);
-+                                _cleanup_free_ char *t = NULL;
-+
-+                                t = strappend("/sys/fs/cgroup/", *i);
-+                                if (!t)
-+                                        return log_oom();
- 
-                                 r = symlink(options, t);
-                                 if (r < 0 && errno != EEXIST) {
diff --git a/SOURCES/0337-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch b/SOURCES/0337-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch
deleted file mode 100644
index bcb14c8..0000000
--- a/SOURCES/0337-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 5e102f2c8212a94b3a5221b5cf79eaafef693cc7 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 24 Mar 2014 21:04:02 +0100
-Subject: [PATCH] core: don't try to relabel mounts before we loaded the policy
-
-(cherry-picked from c4bfd1691f4d3e26d6d7f34dbca941e119956e8a)
-
-Resolves: #1147524
----
- src/core/mount-setup.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c
-index 679f289..cff83d3 100644
---- a/src/core/mount-setup.c
-+++ b/src/core/mount-setup.c
-@@ -166,7 +166,10 @@ static int mount_one(const MountPoint *p, bool relabel) {
- 
-         /* The access mode here doesn't really matter too much, since
-          * the mounted file system will take precedence anyway. */
--        mkdir_p_label(p->where, 0755);
-+        if (relabel)
-+                mkdir_p_label(p->where, 0755);
-+        else
-+                mkdir_p(p->where, 0755);
- 
-         log_debug("Mounting %s to %s of type %s with options %s.",
-                   p->what,
diff --git a/SOURCES/0338-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch b/SOURCES/0338-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch
deleted file mode 100644
index aa89da3..0000000
--- a/SOURCES/0338-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 597dd2168bb3e7f62842b07c9df1bb7c7c47b793 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 25 Mar 2014 00:31:48 +0100
-Subject: [PATCH] systemctl: --kill-mode is long long gone, don't mention it in
- the man page
-
-(cherry-picked from 0088d63151e088d62104d88f866e9eb049091c22)
-
-Resolves: #1147524
----
- man/systemctl.xml               | 5 ++---
- shell-completion/bash/systemctl | 5 +----
- 2 files changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index cb63bb0..f68b606 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -672,9 +672,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
-           <listitem>
-             <para>Send a signal to one or more processes of the
-             unit. Use <option>--kill-who=</option> to select which
--            process to kill. Use <option>--kill-mode=</option> to select
--            the kill mode and <option>--signal=</option> to select the
--            signal to send.</para>
-+            process to kill. Use <option>--signal=</option> to select
-+            the signal to send.</para>
-           </listitem>
-         </varlistentry>
-         <varlistentry>
-diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
-index efe8485..cbf0eb7 100644
---- a/shell-completion/bash/systemctl
-+++ b/shell-completion/bash/systemctl
-@@ -74,7 +74,7 @@ _systemctl () {
-                [STANDALONE]='--all -a --reverse --after --before --defaults --fail --ignore-dependencies --failed --force -f --full -l --global
-                              --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall
-                              --quiet -q --privileged -P --system --user --version --runtime'
--                      [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --state --root'
-+                      [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --root'
-         )
- 
-         local -A PROPS='CPUAccounting= MemoryAccounting= BlockIOAccounting= MemoryLimit= CPUShares= BlockIOWeight= DevicePolicy= DeviceAllow= BlockIOReadBandwidth= BlockIOWriteBandwidth= BlockIODeviceWeight='
-@@ -101,9 +101,6 @@ _systemctl () {
-                         --kill-who)
-                                 comps='all control main'
-                         ;;
--                        --kill-mode)
--                                comps='control-group process'
--                        ;;
-                         --root)
-                                 comps=$(compgen -A directory -- "$cur" )
-                                 compopt -o filenames
diff --git a/SOURCES/0339-ask-password-when-the-user-types-a-overly-long-passw.patch b/SOURCES/0339-ask-password-when-the-user-types-a-overly-long-passw.patch
deleted file mode 100644
index ba22ef7..0000000
--- a/SOURCES/0339-ask-password-when-the-user-types-a-overly-long-passw.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From e02c7fe6cff60803c19dcfe3c21c69bc9c8bdef8 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Tue, 25 Mar 2014 01:27:05 +0100
-Subject: [PATCH] ask-password: when the user types a overly long password,
- beep and refuse
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Based on a similar patch from David Härdeman.
-
-(cherry-picked from 036eeac5a1799fa2c0ae11a14d8c667b5d303189)
-
-Resolves: #1147524
----
- src/shared/ask-password-api.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c
-index 4557155..25367d0 100644
---- a/src/shared/ask-password-api.c
-+++ b/src/shared/ask-password-api.c
-@@ -207,6 +207,11 @@ int ask_password_tty(
-                         if (ttyfd >= 0)
-                                 loop_write(ttyfd, "(no echo) ", 10, false);
-                 } else {
-+                        if (p >= sizeof(passphrase)-1) {
-+                                loop_write(ttyfd, "\a", 1, false);
-+                                continue;
-+                        }
-+
-                         passphrase[p++] = c;
- 
-                         if (!silent_mode && ttyfd >= 0)
diff --git a/SOURCES/0340-logind-don-t-print-error-if-devices-vanish-during-AC.patch b/SOURCES/0340-logind-don-t-print-error-if-devices-vanish-during-AC.patch
deleted file mode 100644
index 3a196d3..0000000
--- a/SOURCES/0340-logind-don-t-print-error-if-devices-vanish-during-AC.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 02d57e30f6e8f0a1f0828d4ee0e1d3b87b54d8f6 Mon Sep 17 00:00:00 2001
-From: David Herrmann <dh.herrmann@gmail.com>
-Date: Wed, 2 Apr 2014 16:20:13 +0200
-Subject: [PATCH] logind: don't print error if devices vanish during ACL-init
-
-If a device is unplugged while we initialize it, we will get ENOENT for
-ACL-init (and related stuff). We currently print errors then, which is
-misleading. Print a debug-message early and continue.
-
-Conflicts:
-	src/login/logind-acl.c
-
-(cherry-picked from 8016b904849a2d2bd8b0171ed8493db5524b5ff7)
-
-Resolves: #1147524
----
- src/login/logind-acl.c | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git a/src/login/logind-acl.c b/src/login/logind-acl.c
-index 25abcbc..6582b8c 100644
---- a/src/login/logind-acl.c
-+++ b/src/login/logind-acl.c
-@@ -283,8 +283,14 @@ int devnode_acl_all(struct udev *udev,
-         }
- 
-         SET_FOREACH(n, nodes, i) {
-+                int k;
-+
-                 log_debug("Fixing up ACLs at %s for seat %s", n, seat);
--                r = devnode_acl(n, flush, del, old_uid, add, new_uid);
-+                k = devnode_acl(n, flush, del, old_uid, add, new_uid);
-+                if (k == -ENOENT)
-+                        log_debug("Device %s disappeared while setting ACLs", n);
-+                else if (k < 0)
-+                        r = k;
-         }
- 
- finish:
diff --git a/SOURCES/0341-tty-ask-password-agent-return-negative-errno.patch b/SOURCES/0341-tty-ask-password-agent-return-negative-errno.patch
deleted file mode 100644
index 8c2555c..0000000
--- a/SOURCES/0341-tty-ask-password-agent-return-negative-errno.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 2ae90f52f6ce48f24dcb585b8c0b02dc461cfc4e Mon Sep 17 00:00:00 2001
-From: Florian Albrechtskirchinger <falbrechtskirchinger@gmail.com>
-Date: Thu, 3 Apr 2014 21:17:20 +0200
-Subject: [PATCH] tty-ask-password-agent: return negative errno
-
-Return negative errno in wall_tty_block(). get_ctty_devnr() already
-returns a negative errno in case of failure, no need to negate it again.
-
-Reported-by: Simon <hwold@odai.homelinux.net>
-
-(cherry-picked from ee0e4cca5ac37a094dfe1074907dae70c7b7701c)
-
-Resolves: #1147524
----
- src/tty-ask-password-agent/tty-ask-password-agent.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c
-index f463662..256c21d 100644
---- a/src/tty-ask-password-agent/tty-ask-password-agent.c
-+++ b/src/tty-ask-password-agent/tty-ask-password-agent.c
-@@ -438,7 +438,7 @@ static int wall_tty_block(void) {
- 
-         r = get_ctty_devnr(0, &devnr);
-         if (r < 0)
--                return -r;
-+                return r;
- 
-         if (asprintf(&p, "/run/systemd/ask-password-block/%u:%u", major(devnr), minor(devnr)) < 0)
-                 return -ENOMEM;
diff --git a/SOURCES/0342-journal-cleanup-up-error-handling-in-update_catalog.patch b/SOURCES/0342-journal-cleanup-up-error-handling-in-update_catalog.patch
deleted file mode 100644
index 103582f..0000000
--- a/SOURCES/0342-journal-cleanup-up-error-handling-in-update_catalog.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 4896a8507ea140f8f38bc88dc044b2e516a54cbf Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 11 Apr 2014 08:44:55 -0400
-Subject: [PATCH] journal: cleanup up error handling in update_catalog()
-
-- Negative/positive errno mixup caused duplicates not to be detected properly.
-  Now we get a warning about some duplicate entries in our own catalogs...
-- Errors in update_catalog would be ignored, but they should not be.
-
-(cherry-picked from e3b9d9c8027a7c4c55cf1614e0fe9423fad69e8f)
-
-Resolves: #1147524
----
- src/journal/catalog.c      | 25 +++++++++++++------------
- src/journal/test-catalog.c |  3 ++-
- 2 files changed, 15 insertions(+), 13 deletions(-)
-
-diff --git a/src/journal/catalog.c b/src/journal/catalog.c
-index 90ca008..e5342be 100644
---- a/src/journal/catalog.c
-+++ b/src/journal/catalog.c
-@@ -109,7 +109,7 @@ static int finish_item(
-                 const char *payload) {
- 
-         ssize_t offset;
--        CatalogItem *i;
-+        _cleanup_free_ CatalogItem *i = NULL;
-         int r;
- 
-         assert(h);
-@@ -129,13 +129,14 @@ static int finish_item(
-         i->offset = htole64((uint64_t) offset);
- 
-         r = hashmap_put(h, i, i);
--        if (r == EEXIST) {
-+        if (r == -EEXIST) {
-                 log_warning("Duplicate entry for " SD_ID128_FORMAT_STR ".%s, ignoring.",
-                             SD_ID128_FORMAT_VAL(id), language ? language : "C");
--                free(i);
-                 return 0;
--        }
-+        } else if (r < 0)
-+                return r;
- 
-+        i = NULL;
-         return 0;
- }
- 
-@@ -348,8 +349,8 @@ error:
- int catalog_update(const char* database, const char* root, const char* const* dirs) {
-         _cleanup_strv_free_ char **files = NULL;
-         char **f;
--        Hashmap *h;
-         struct strbuf *sb = NULL;
-+        _cleanup_hashmap_free_free_ Hashmap *h = NULL;
-         _cleanup_free_ CatalogItem *items = NULL;
-         CatalogItem *i;
-         Iterator j;
-@@ -371,13 +372,17 @@ int catalog_update(const char* database, const char* root, const char* const* di
-         }
- 
-         STRV_FOREACH(f, files) {
--                log_debug("reading file '%s'", *f);
--                catalog_import_file(h, sb, *f);
-+                log_debug("Reading file '%s'", *f);
-+                r = catalog_import_file(h, sb, *f);
-+                if (r < 0) {
-+                        log_error("Failed to import file '%s': %s.",
-+                                  *f, strerror(-r));
-+                        goto finish;
-+                }
-         }
- 
-         if (hashmap_size(h) <= 0) {
-                 log_info("No items in catalog.");
--                r = 0;
-                 goto finish;
-         } else
-                 log_debug("Found %u items in catalog.", hashmap_size(h));
-@@ -408,11 +413,7 @@ int catalog_update(const char* database, const char* root, const char* const* di
-                 log_debug("%s: wrote %u items, with %zu bytes of strings, %ld total size.",
-                           database, n, sb->len, r);
- 
--        r = 0;
--
- finish:
--        if (h)
--                hashmap_free_free(h);
-         if (sb)
-                 strbuf_cleanup(sb);
- 
-diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c
-index 5db5bed..f021dbf 100644
---- a/src/journal/test-catalog.c
-+++ b/src/journal/test-catalog.c
-@@ -126,7 +126,8 @@ int main(int argc, char *argv[]) {
- 
-         setlocale(LC_ALL, "de_DE.UTF-8");
- 
--        log_set_max_level(LOG_DEBUG);
-+        log_parse_environment();
-+        log_open();
- 
-         test_catalog_importing();
- 
diff --git a/SOURCES/0343-bash-completion-fix-__get_startable_units.patch b/SOURCES/0343-bash-completion-fix-__get_startable_units.patch
deleted file mode 100644
index ae4700d..0000000
--- a/SOURCES/0343-bash-completion-fix-__get_startable_units.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From ab6c4755057a7d852f1eaed62920ef1b25a19507 Mon Sep 17 00:00:00 2001
-From: Dan Kilman <dankilman@gmail.com>
-Date: Sun, 13 Apr 2014 18:06:13 +0300
-Subject: [PATCH] bash completion: fix __get_startable_units
-
-(cherry-picked from a163b64c4b08e8a4ad39a9a295acf3d1634024a3)
-
-Resolves: #1147524
----
- shell-completion/bash/systemctl | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl
-index cbf0eb7..c1cd416 100644
---- a/shell-completion/bash/systemctl
-+++ b/shell-completion/bash/systemctl
-@@ -56,7 +56,7 @@ __get_all_units      () { __systemctl $1 list-units --all \
- __get_active_units   () { __systemctl $1 list-units       \
-         | { while read -r a b; do echo " $a"; done; }; }
- __get_startable_units () { __systemctl $1 list-units --all -t service,timer,socket,mount,automount,path,snapshot,swap \
--        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed " ]] && echo " $a"; done; }; }
-+        | { while read -r a b c d; do [[ $c == "inactive" || $c == "failed" ]] && echo " $a"; done; }; }
- __get_failed_units   () { __systemctl $1 list-units       \
-         | { while read -r a b c d; do [[ $c == "failed"   ]] && echo " $a"; done; }; }
- __get_enabled_units  () { __systemctl $1 list-unit-files  \
diff --git a/SOURCES/0344-core-check-the-right-variable-for-failed-open.patch b/SOURCES/0344-core-check-the-right-variable-for-failed-open.patch
deleted file mode 100644
index 752e8fd..0000000
--- a/SOURCES/0344-core-check-the-right-variable-for-failed-open.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 31cd4f1513656008646ee542e451338112fc8158 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?=C5=81ukasz=20Stelmach?= <l.stelmach@samsung.com>
-Date: Thu, 8 May 2014 12:57:26 +0200
-Subject: [PATCH] core: check the right variable for failed open()
-
-(cherry-picked from cd7affaeea16d3904354b810a292e594dfef25dd)
-
-Resolves: #1147524
----
- src/core/cgroup.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/cgroup.c b/src/core/cgroup.c
-index 32e2599..c215a86 100644
---- a/src/core/cgroup.c
-+++ b/src/core/cgroup.c
-@@ -661,7 +661,7 @@ int manager_setup_cgroup(Manager *m) {
-                 close_nointr_nofail(m->pin_cgroupfs_fd);
- 
-         m->pin_cgroupfs_fd = open(path, O_RDONLY|O_CLOEXEC|O_DIRECTORY|O_NOCTTY|O_NONBLOCK);
--        if (r < 0) {
-+        if (m->pin_cgroupfs_fd < 0) {
-                 log_error("Failed to open pin file: %m");
-                 return -errno;
-         }
diff --git a/SOURCES/0345-util-allow-trailing-semicolons-on-define_trivial_cle.patch b/SOURCES/0345-util-allow-trailing-semicolons-on-define_trivial_cle.patch
deleted file mode 100644
index 3c95a1c..0000000
--- a/SOURCES/0345-util-allow-trailing-semicolons-on-define_trivial_cle.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-From 30725ba0d69c5ba935c64ce9c3892494687e4c9b Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 14 Oct 2013 04:59:26 +0200
-Subject: [PATCH] util: allow trailing semicolons on
- define_trivial_cleanup_func lines
-
-Emacs C indenting really gets confused by these lines if they carry no
-trailing semicolon, hence let's make this nicer for good old emacs. The
-other macros which define functions already do this too, so let's copy
-the scheme here.
-
-Also, let's use an uppercase name for the macro. So far our rough rule
-was that macros that are totally not function-like (like this ones,
-which define a function) are uppercase. (Well, admittedly it is a rough
-rule only, for example function and variable decorators are all
-lower-case SINCE THE CONSTANT YELLING IN THE SOURCES WOULD SUCK, and
-also they at least got underscore prefixes.) Also, the macros that
-define functions that we already have are all uppercase, so let's do the
-same here...
-
-(cherry-picked from cd7affaeea16d3904354b810a292e594dfef25dd)
-
-Related: #1147524
----
- src/gpt-auto-generator/gpt-auto-generator.c |  2 +-
- src/journal/journal-internal.h              |  2 +-
- src/shared/fdset.h                          |  2 +-
- src/shared/hashmap.h                        |  8 ++++++++
- src/shared/label.c                          |  4 ++--
- src/shared/set.h                            |  4 ++--
- src/shared/strv.h                           |  2 +-
- src/shared/udev-util.h                      | 10 +++++-----
- src/shared/util.h                           | 19 ++++++++++---------
- src/tmpfiles/tmpfiles.c                     |  2 +-
- 10 files changed, 32 insertions(+), 23 deletions(-)
-
-diff --git a/src/gpt-auto-generator/gpt-auto-generator.c b/src/gpt-auto-generator/gpt-auto-generator.c
-index 6a4c9d8..eb281b5 100644
---- a/src/gpt-auto-generator/gpt-auto-generator.c
-+++ b/src/gpt-auto-generator/gpt-auto-generator.c
-@@ -51,7 +51,7 @@
- 
- static const char *arg_dest = "/tmp";
- 
--define_trivial_cleanup_func(blkid_probe, blkid_free_probe)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(blkid_probe, blkid_free_probe);
- #define _cleanup_blkid_freep_probe_ _cleanup_(blkid_free_probep)
- 
- static int verify_gpt_partition(const char *node, sd_id128_t *type, unsigned *nr, char **fstype) {
-diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h
-index 1bc912c..3355fca 100644
---- a/src/journal/journal-internal.h
-+++ b/src/journal/journal-internal.h
-@@ -135,7 +135,7 @@ struct sd_journal {
- char *journal_make_match_string(sd_journal *j);
- void journal_print_header(sd_journal *j);
- 
--define_trivial_cleanup_func(sd_journal*, sd_journal_close)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(sd_journal*, sd_journal_close);
- #define _cleanup_journal_close_ _cleanup_(sd_journal_closep)
- 
- #define JOURNAL_FOREACH_DATA_RETVAL(j, data, l, retval)                     \
-diff --git a/src/shared/fdset.h b/src/shared/fdset.h
-index 6277e46..907acd7 100644
---- a/src/shared/fdset.h
-+++ b/src/shared/fdset.h
-@@ -49,5 +49,5 @@ int fdset_iterate(FDSet *s, Iterator *i);
- #define FDSET_FOREACH(fd, fds, i) \
-         for ((i) = ITERATOR_FIRST, (fd) = fdset_iterate((fds), &(i)); (fd) >= 0; (fd) = fdset_iterate((fds), &(i)))
- 
--define_trivial_cleanup_func(FDSet*, fdset_free)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(FDSet*, fdset_free);
- #define _cleanup_fdset_free_ _cleanup_(fdset_freep)
-diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h
-index 3d4f672..b912af8 100644
---- a/src/shared/hashmap.h
-+++ b/src/shared/hashmap.h
-@@ -24,6 +24,7 @@
- #include <stdbool.h>
- 
- #include "macro.h"
-+#include "util.h"
- 
- /* Pretty straightforward hash table implementation. As a minor
-  * optimization a NULL hashmap object will be treated as empty hashmap
-@@ -104,3 +105,10 @@ char **hashmap_get_strv(Hashmap *h);
- 
- #define HASHMAP_FOREACH_BACKWARDS(e, h, i) \
-         for ((i) = ITERATOR_LAST, (e) = hashmap_iterate_backwards((h), &(i), NULL); (e); (e) = hashmap_iterate_backwards((h), &(i), NULL))
-+
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free_free);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, hashmap_free_free_free);
-+#define _cleanup_hashmap_free_ _cleanup_(hashmap_freep)
-+#define _cleanup_hashmap_free_free_ _cleanup_(hashmap_free_freep)
-+#define _cleanup_hashmap_free_free_free_ _cleanup_(hashmap_free_free_freep)
-diff --git a/src/shared/label.c b/src/shared/label.c
-index 4dab93e..8f7dfb4 100644
---- a/src/shared/label.c
-+++ b/src/shared/label.c
-@@ -40,8 +40,8 @@
- #include <selinux/label.h>
- #include <selinux/context.h>
- 
--define_trivial_cleanup_func(security_context_t, freecon);
--define_trivial_cleanup_func(context_t, context_free);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(security_context_t, freecon);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(context_t, context_free);
- 
- #define _cleanup_security_context_free_ _cleanup_(freeconp)
- #define _cleanup_context_free_ _cleanup_(context_freep)
-diff --git a/src/shared/set.h b/src/shared/set.h
-index a291470..5612478 100644
---- a/src/shared/set.h
-+++ b/src/shared/set.h
-@@ -73,7 +73,7 @@ char **set_get_strv(Set *s);
- #define SET_FOREACH_BACKWARDS(e, s, i) \
-         for ((i) = ITERATOR_LAST, (e) = set_iterate_backwards((s), &(i)); (e); (e) = set_iterate_backwards((s), &(i)))
- 
--define_trivial_cleanup_func(Set*, set_free)
--define_trivial_cleanup_func(Set*, set_free_free)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Set*, set_free_free);
- #define _cleanup_set_free_ _cleanup_(set_freep)
- #define _cleanup_set_free_free_ _cleanup_(set_free_freep)
-diff --git a/src/shared/strv.h b/src/shared/strv.h
-index 4d117f8..f6fb033 100644
---- a/src/shared/strv.h
-+++ b/src/shared/strv.h
-@@ -30,7 +30,7 @@ char *strv_find(char **l, const char *name) _pure_;
- char *strv_find_prefix(char **l, const char *name) _pure_;
- 
- void strv_free(char **l);
--define_trivial_cleanup_func(char**, strv_free)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(char**, strv_free);
- #define _cleanup_strv_free_ _cleanup_(strv_freep)
- 
- char **strv_copy(char * const *l);
-diff --git a/src/shared/udev-util.h b/src/shared/udev-util.h
-index bff8f5f..27677af 100644
---- a/src/shared/udev-util.h
-+++ b/src/shared/udev-util.h
-@@ -24,11 +24,11 @@
- #include "udev.h"
- #include "util.h"
- 
--define_trivial_cleanup_func(struct udev*, udev_unref)
--define_trivial_cleanup_func(struct udev_device*, udev_device_unref)
--define_trivial_cleanup_func(struct udev_enumerate*, udev_enumerate_unref)
--define_trivial_cleanup_func(struct udev_event*, udev_event_unref)
--define_trivial_cleanup_func(struct udev_rules*, udev_rules_unref)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_device*, udev_device_unref);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_enumerate*, udev_enumerate_unref);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_unref);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref);
- 
- #define _cleanup_udev_unref_ _cleanup_(udev_unrefp)
- #define _cleanup_udev_device_unref_ _cleanup_(udev_device_unrefp)
-diff --git a/src/shared/util.h b/src/shared/util.h
-index 5a9bc99..d68f385 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -558,11 +558,12 @@ static inline void freep(void *p) {
-         free(*(void**) p);
- }
- 
--#define define_trivial_cleanup_func(type, func) \
--        static inline void func##p(type *p) {   \
--        if (*p)                                 \
--                func(*p);                       \
--        }                                       \
-+#define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func)                 \
-+        static inline void func##p(type *p) {                   \
-+                if (*p)                                         \
-+                        func(*p);                               \
-+        }                                                       \
-+        struct __useless_struct_to_allow_trailing_semicolon__
- 
- static inline void closep(int *fd) {
-         if (*fd >= 0)
-@@ -573,10 +574,10 @@ static inline void umaskp(mode_t *u) {
-         umask(*u);
- }
- 
--define_trivial_cleanup_func(FILE*, fclose)
--define_trivial_cleanup_func(FILE*, pclose)
--define_trivial_cleanup_func(DIR*, closedir)
--define_trivial_cleanup_func(FILE*, endmntent)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, fclose);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, pclose);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(DIR*, closedir);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(FILE*, endmntent);
- 
- #define _cleanup_free_ _cleanup_(freep)
- #define _cleanup_close_ _cleanup_(closep)
-diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c
-index df6c99a..9917514 100644
---- a/src/tmpfiles/tmpfiles.c
-+++ b/src/tmpfiles/tmpfiles.c
-@@ -999,7 +999,7 @@ static void item_free(Item *i) {
-         free(i);
- }
- 
--define_trivial_cleanup_func(Item*, item_free)
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Item*, item_free);
- #define _cleanup_item_free_ _cleanup_(item_freep)
- 
- static bool item_equal(Item *a, Item *b) {
diff --git a/SOURCES/0346-man-sd_journal_send-does-nothing-when-journald-is-no.patch b/SOURCES/0346-man-sd_journal_send-does-nothing-when-journald-is-no.patch
deleted file mode 100644
index 9e76321..0000000
--- a/SOURCES/0346-man-sd_journal_send-does-nothing-when-journald-is-no.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 4dd641efa81998ed328fd2c74be8beee7aa32dad Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Fri, 9 May 2014 08:39:25 -0400
-Subject: [PATCH] man: sd_journal_send does nothing when journald is not
- available
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1096067
-
-(cherry-picked from bdf9fc1a940e342afb7a78075984419cb3bc3135)
-
-Resolves: #1147524
----
- man/sd_journal_print.xml | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/man/sd_journal_print.xml b/man/sd_journal_print.xml
-index a716cc3..d934b0a 100644
---- a/man/sd_journal_print.xml
-+++ b/man/sd_journal_print.xml
-@@ -218,6 +218,11 @@ sd_journal_send("MESSAGE=Hello World, this is PID %lu!", (unsigned long) getpid(
-                 errno-style error code. The
-                 <citerefentry><refentrytitle>errno</refentrytitle><manvolnum>3</manvolnum></citerefentry>
-                 variable itself is not altered.</para>
-+
-+                <para>If
-+                <citerefentry><refentrytitle>systemd-journald</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-+                is not running (the socket is not present), those
-+                functions do nothing, and also return 0.</para>
-         </refsect1>
- 
-         <refsect1>
diff --git a/SOURCES/0347-man-clarify-that-the-ExecReload-command-should-be-sy.patch b/SOURCES/0347-man-clarify-that-the-ExecReload-command-should-be-sy.patch
deleted file mode 100644
index 19bf9a7..0000000
--- a/SOURCES/0347-man-clarify-that-the-ExecReload-command-should-be-sy.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 191c7ee3810782c8968def5b23e46b442a8f530d Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 16 May 2014 01:33:22 +0200
-Subject: [PATCH] man: clarify that the ExecReload= command should be
- synchronous
-
-http://lists.freedesktop.org/archives/systemd-devel/2014-May/019054.html
-
-(cherry-picked from 33169701b0640d3629d4c36cf8c71dc26d2cb7e1)
-
-Resolves: #1147524
----
- man/systemd.service.xml | 14 ++++++++++++++
- 1 file changed, 14 insertions(+)
-
-diff --git a/man/systemd.service.xml b/man/systemd.service.xml
-index 80d6951..8df4b87 100644
---- a/man/systemd.service.xml
-+++ b/man/systemd.service.xml
-@@ -525,6 +525,20 @@ ExecStart=/bin/echo $ONE $TWO ${TWO}
-                                 following:</para>
- 
-                                 <programlisting>/bin/kill -HUP $MAINPID</programlisting>
-+
-+                                <para>Note however that reloading a
-+                                daemon by sending a signal (as with
-+                                the example line above) is usually not
-+                                a good choice, because this is an
-+                                asynchronous operation and hence not
-+                                suitable to order reloads of multiple
-+                                services against each other. It is
-+                                strongly recommended to set
-+                                <varname>ExecReload=</varname> to a
-+                                command that no only triggers a
-+                                configuration reload of the daemon,
-+                                but also synchronously waits for it
-+                                complete.</para>
-                                 </listitem>
-                         </varlistentry>
- 
diff --git a/SOURCES/0348-conf-parser-never-consider-it-an-error-if-we-cannot-.patch b/SOURCES/0348-conf-parser-never-consider-it-an-error-if-we-cannot-.patch
deleted file mode 100644
index c64d9d5..0000000
--- a/SOURCES/0348-conf-parser-never-consider-it-an-error-if-we-cannot-.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 762f7d479be5217a2109dbf0f97fe82e1155e6ee Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 22 May 2014 16:47:46 +0900
-Subject: [PATCH] conf-parser: never consider it an error if we cannot load a
- drop-in file because it is missing
-
-After all, we want to be able to boot with /etc empty one day...
-
-(cherry-picked from 9f43a07f10639c5b41b45448e551e43914eefe32)
-
-Resolves: #1147524
----
- src/shared/conf-parser.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
-index 6085d33..db71168 100644
---- a/src/shared/conf-parser.c
-+++ b/src/shared/conf-parser.c
-@@ -320,8 +320,8 @@ int config_parse(const char *unit,
-         if (!f) {
-                 f = ours = fopen(filename, "re");
-                 if (!f) {
--                        log_error("Failed to open configuration file '%s': %m", filename);
--                        return -errno;
-+                        log_full(errno == ENOENT ? LOG_DEBUG : LOG_ERR, "Failed to open configuration file '%s': %m", filename);
-+                        return errno == ENOENT ? 0 : -errno;
-                 }
-         }
- 
diff --git a/SOURCES/0349-socket-properly-handle-if-our-service-vanished-durin.patch b/SOURCES/0349-socket-properly-handle-if-our-service-vanished-durin.patch
deleted file mode 100644
index 3b16964..0000000
--- a/SOURCES/0349-socket-properly-handle-if-our-service-vanished-durin.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From e1c7d367b8523ec8c9ef3deb81a1cfd879944171 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 22 May 2014 16:56:21 +0900
-Subject: [PATCH] socket: properly handle if our service vanished during
- runtime
-
-(cherry-picked from 640ace4a8de907994a1b95f6d368c3e6a8fcf60f)
-
-Resolves: #1147524
----
- src/core/socket.c | 6 ++++++
- 1 file changed, 6 insertions(+)
-
-diff --git a/src/core/socket.c b/src/core/socket.c
-index 35fc204..958d063 100644
---- a/src/core/socket.c
-+++ b/src/core/socket.c
-@@ -1610,6 +1610,12 @@ static void socket_enter_running(Socket *s, int cfd) {
-                         }
- 
-                 if (!pending) {
-+                        if (!UNIT_ISSET(s->service)) {
-+                                log_error_unit(UNIT(s)->id, "%s: service to activate vanished, refusing activation.", UNIT(s)->id);
-+                                r = -ENOENT;
-+                                goto fail;
-+                        }
-+
-                         r = manager_add_job(UNIT(s)->manager, JOB_START, UNIT_DEREF(s->service), JOB_REPLACE, true, &error, NULL);
-                         if (r < 0)
-                                 goto fail;
diff --git a/SOURCES/0350-Do-not-unescape-unit-names-in-Install-section.patch b/SOURCES/0350-Do-not-unescape-unit-names-in-Install-section.patch
deleted file mode 100644
index 14c7012..0000000
--- a/SOURCES/0350-Do-not-unescape-unit-names-in-Install-section.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 5db48e390d876be7e00c3403953d7fe80ff6c87b Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 26 May 2014 20:09:45 +0200
-Subject: [PATCH] Do not unescape unit names in [Install] section
-
-https://bugs.freedesktop.org/show_bug.cgi?id=49316
-
-(cherry-picked from 000f6e5667eb4f73e137cbd0d7395a9f9db7728a)
-
-Resolves: #1147524
----
- src/shared/conf-parser.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c
-index db71168..b356687 100644
---- a/src/shared/conf-parser.c
-+++ b/src/shared/conf-parser.c
-@@ -670,7 +670,7 @@ int config_parse_strv(const char *unit,
-         FOREACH_WORD_QUOTED(w, l, rvalue, state) {
-                 _cleanup_free_ char *n;
- 
--                n = cunescape_length(w, l);
-+                n = strndup(w, l);
-                 if (!n)
-                         return log_oom();
- 
diff --git a/SOURCES/0351-util-ignore_file-should-not-allow-files-ending-with.patch b/SOURCES/0351-util-ignore_file-should-not-allow-files-ending-with.patch
deleted file mode 100644
index 80fdab8..0000000
--- a/SOURCES/0351-util-ignore_file-should-not-allow-files-ending-with.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 45914d5301d694730965872962fc71b9d11f9b3d Mon Sep 17 00:00:00 2001
-From: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
-Date: Sat, 31 May 2014 21:36:23 +0200
-Subject: [PATCH] util: ignore_file should not allow files ending with '~'
-
-ignore_file currently allows any file ending with '~' while it
-seems that the opposite was intended:
-a228a22fda4faa9ecb7c5a5e499980c8ae5d2a08
-
-(cherry-picked from 93f1a06374e335e8508d89e1bdaadf45be6ab777)
-
-Resolves: #1147524
----
- src/shared/util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/util.c b/src/shared/util.c
-index 9f25b15..1590c3a 100644
---- a/src/shared/util.c
-+++ b/src/shared/util.c
-@@ -1502,7 +1502,7 @@ bool ignore_file(const char *filename) {
-         assert(filename);
- 
-         if (endswith(filename, "~"))
--                return false;
-+                return true;
- 
-         return ignore_file_allow_backup(filename);
- }
diff --git a/SOURCES/0352-core-fix-invalid-free-in-killall.patch b/SOURCES/0352-core-fix-invalid-free-in-killall.patch
deleted file mode 100644
index 93a0721..0000000
--- a/SOURCES/0352-core-fix-invalid-free-in-killall.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 250a6ce38605fe172541fb75e8d64132f2ec38d4 Mon Sep 17 00:00:00 2001
-From: Andreas Henriksson <andreas@fatal.se>
-Date: Fri, 13 Jun 2014 18:48:19 +0200
-Subject: [PATCH] core: fix invalid free() in killall()
-
-static int killall(....) in ./src/core/killall.c tries to get "s"
-initialized by calling get_process_comm(...) which calls
-read_one_line_file(...) which if it fails will mean it is left
-uninitialized.
-It is then used in argument to strna(s) call where it is
-dereferenced(!), in addition to nothing else initializing it before
-the scope it is in finishes.
-
-(cherry-picked from 3e09eb5c83e56bc0184bd9d9c44f76047464f77c)
-
-Resolves: #1147524
----
- src/core/killall.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/core/killall.c b/src/core/killall.c
-index e395050..967dac0 100644
---- a/src/core/killall.c
-+++ b/src/core/killall.c
-@@ -167,7 +167,7 @@ static int killall(int sig, Set *pids) {
-                         continue;
- 
-                 if (sig == SIGKILL) {
--                        _cleanup_free_ char *s;
-+                        _cleanup_free_ char *s = NULL;
- 
-                         get_process_comm(pid, &s);
-                         log_notice("Sending SIGKILL to PID %lu (%s).", (unsigned long) pid, strna(s));
diff --git a/SOURCES/0353-install-fix-invalid-free-in-unit_file_mask.patch b/SOURCES/0353-install-fix-invalid-free-in-unit_file_mask.patch
deleted file mode 100644
index c964279..0000000
--- a/SOURCES/0353-install-fix-invalid-free-in-unit_file_mask.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From b1de3eb93bfdc4cf3872d9e1005166bb9867b0b2 Mon Sep 17 00:00:00 2001
-From: Andreas Henriksson <andreas@fatal.se>
-Date: Fri, 13 Jun 2014 18:48:18 +0200
-Subject: [PATCH] install: fix invalid free() in unit_file_mask()
-
-int unit_file_mask(...) in ./src/shared/install.c calls
-get_config_path(...) which can in 4 error cases return without setting
-"ret", and thus "prefix" can be uninitialized when unit_file_mask(...)
-finishes (which it does directly after the error is returned from
-get_config_path(...)).
-
-(cherry-picked from 223217749e57996336d5730b0a28716cca56d45d)
-
-Resolves: #1147524
----
- src/shared/install.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index dd5e22b..1662c5f 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -598,7 +598,7 @@ int unit_file_mask(
-                 unsigned *n_changes) {
- 
-         char **i;
--        _cleanup_free_ char *prefix;
-+        _cleanup_free_ char *prefix = NULL;
-         int r;
- 
-         assert(scope >= 0);
diff --git a/SOURCES/0354-unit-name-fix-detection-of-unit-templates-instances.patch b/SOURCES/0354-unit-name-fix-detection-of-unit-templates-instances.patch
deleted file mode 100644
index 0305b54..0000000
--- a/SOURCES/0354-unit-name-fix-detection-of-unit-templates-instances.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 14b393f9d9b7caffcd48557c6bd4eb63de4942ad Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 16 Jun 2014 17:01:26 +0200
-Subject: [PATCH] unit-name: fix detection of unit templates/instances
-
-We need to check for the last dot, not the first one in a unit name, for
-the suffix. Correct that.
-
-(cherry-picked from 6ef9eeed61a291cc42b7d911f5cf5a4deca742a3)
-
-Resolves: #1147524
----
- src/shared/unit-name.c | 16 ++++++++++++----
- 1 file changed, 12 insertions(+), 4 deletions(-)
-
-diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c
-index bc8094d..577f7e7 100644
---- a/src/shared/unit-name.c
-+++ b/src/shared/unit-name.c
-@@ -334,7 +334,7 @@ char *unit_name_path_unescape(const char *f) {
- }
- 
- bool unit_name_is_template(const char *n) {
--        const char *p;
-+        const char *p, *e;
- 
-         assert(n);
- 
-@@ -342,11 +342,15 @@ bool unit_name_is_template(const char *n) {
-         if (!p)
-                 return false;
- 
--        return p[1] == '.';
-+        e = strrchr(p+1, '.');
-+        if (!e)
-+                return false;
-+
-+        return e == p + 1;
- }
- 
- bool unit_name_is_instance(const char *n) {
--        const char *p;
-+        const char *p, *e;
- 
-         assert(n);
- 
-@@ -354,7 +358,11 @@ bool unit_name_is_instance(const char *n) {
-         if (!p)
-                 return false;
- 
--        return p[1] != '.';
-+        e = strrchr(p+1, '.');
-+        if (!e)
-+                return false;
-+
-+        return e > p + 1;
- }
- 
- char *unit_name_replace_instance(const char *f, const char *i) {
diff --git a/SOURCES/0355-journald-make-MaxFileSec-really-default-to-1month.patch b/SOURCES/0355-journald-make-MaxFileSec-really-default-to-1month.patch
deleted file mode 100644
index 0206426..0000000
--- a/SOURCES/0355-journald-make-MaxFileSec-really-default-to-1month.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 72c01067d266a49796b5c64018b2d8c92840255a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20Bartoszkiewicz?= <mbartoszkiewicz@gmail.com>
-Date: Thu, 26 Jun 2014 22:11:35 +0200
-Subject: [PATCH] journald: make MaxFileSec really default to 1month
-
-journald.conf(5) states that the default for MaxFileSec is one month,
-but the code didn't respect that.
-
-(cherry-picked from e150e82097211f09b911c7784a89ef9efed713ca)
-
-Resolves: #1147524
----
- src/journal/journald-server.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
-index 1fcb3d5..a289a50 100644
---- a/src/journal/journald-server.c
-+++ b/src/journal/journald-server.c
-@@ -67,6 +67,7 @@
- #define DEFAULT_SYNC_INTERVAL_USEC (5*USEC_PER_MINUTE)
- #define DEFAULT_RATE_LIMIT_INTERVAL (30*USEC_PER_SEC)
- #define DEFAULT_RATE_LIMIT_BURST 1000
-+#define DEFAULT_MAX_FILE_USEC USEC_PER_MONTH
- 
- #define RECHECK_AVAILABLE_SPACE_USEC (30*USEC_PER_SEC)
- 
-@@ -1476,6 +1477,8 @@ int server_init(Server *s) {
- 
-         s->forward_to_syslog = true;
- 
-+        s->max_file_usec = DEFAULT_MAX_FILE_USEC;
-+
-         s->max_level_store = LOG_DEBUG;
-         s->max_level_syslog = LOG_DEBUG;
-         s->max_level_kmsg = LOG_NOTICE;
diff --git a/SOURCES/0356-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch b/SOURCES/0356-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch
deleted file mode 100644
index d999614..0000000
--- a/SOURCES/0356-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 131d8e2cf65eb3c6dfc691676ca6f0a55ae44d71 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 11 Aug 2014 18:23:47 +0200
-Subject: [PATCH] bootchart: it's not OK to return -1 from a main program
-
-(cherry-picked from 4155f7d4be5053d5f34a26e5437fd85e1fe00fa3)
-
-Resolves: #1147524
----
- src/bootchart/bootchart.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
-index 14ccd3e..4a8d6c2 100644
---- a/src/bootchart/bootchart.c
-+++ b/src/bootchart/bootchart.c
-@@ -346,8 +346,8 @@ int main(int argc, char *argv[]) {
- 
-                 sampledata = new0(struct list_sample_data, 1);
-                 if (sampledata == NULL) {
--                        log_error("Failed to allocate memory for a node: %m");
--                        return -1;
-+                        log_oom();
-+                        return EXIT_FAILURE;
-                 }
- 
-                 sampledata->sampletime = gettime_ns();
diff --git a/SOURCES/0357-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch b/SOURCES/0357-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch
deleted file mode 100644
index de08892..0000000
--- a/SOURCES/0357-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From db22c5d0a16eb30b78cdeef927df8c2d0b895ef1 Mon Sep 17 00:00:00 2001
-From: Eelco Dolstra <eelco.dolstra@logicblox.com>
-Date: Wed, 6 Aug 2014 13:14:51 +0200
-Subject: [PATCH] journald: Fix off-by-one error in "Missed X kernel messages"
- warning
-
-On receiving a message, "kernel_seqnum" is set to "serial + 1". So
-subtracting 1 will cause messages like "Missed 0 kernel messages",
-which should be "Missed 1 kernel messages".
-
-(cherry-picked from b9c488f60050248b35640f28e4d00958702ba1c3)
-
-Resolves: #1147524
----
- src/journal/journald-kmsg.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/journal/journald-kmsg.c b/src/journal/journald-kmsg.c
-index e393cb7..0073a33 100644
---- a/src/journal/journald-kmsg.c
-+++ b/src/journal/journald-kmsg.c
-@@ -152,7 +152,7 @@ static void dev_kmsg_record(Server *s, char *p, size_t l) {
-                 /* Did we lose any? */
-                 if (serial > *s->kernel_seqnum)
-                         server_driver_message(s, SD_MESSAGE_JOURNAL_MISSED, "Missed %"PRIu64" kernel messages",
--                                              serial - *s->kernel_seqnum - 1);
-+                                              serial - *s->kernel_seqnum);
- 
-                 /* Make sure we never read this one again. Note that
-                  * we always store the next message serial we expect
diff --git a/SOURCES/0358-man-drop-references-to-removed-and-obsolete-systemct.patch b/SOURCES/0358-man-drop-references-to-removed-and-obsolete-systemct.patch
deleted file mode 100644
index 66f3547..0000000
--- a/SOURCES/0358-man-drop-references-to-removed-and-obsolete-systemct.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 38786feb38a6d7b8a3fa3e5d9a184f06d8fd7802 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 15 Aug 2014 02:41:14 +0200
-Subject: [PATCH] man: drop references to removed and obsolete 'systemctl load'
- command
-
-(cherry-picked from d0a3fb7556d77c44c2bc38a560e99d4ad0abcf33)
-
-Resolves: #1147524
----
- man/systemctl.xml | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index f68b606..d2430ee 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -602,8 +602,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
-             file.</para>
- 
-             <para>This command should not be confused with the
--            <command>daemon-reload</command> or <command>load</command>
--            commands.</para>
-+            <command>daemon-reload</command> command.</para>
-           </listitem>
- 
-         </varlistentry>
-@@ -1163,8 +1162,7 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
-             tree. While the daemon is being reloaded, all sockets systemd
-             listens on on behalf of user configuration will stay
-             accessible.</para> <para>This command should not be confused
--            with the <command>load</command> or
--            <command>reload</command> commands.</para>
-+            with the <command>reload</command> command.</para>
-           </listitem>
-         </varlistentry>
-         <varlistentry>
diff --git a/SOURCES/0359-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch b/SOURCES/0359-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch
deleted file mode 100644
index 85804ad..0000000
--- a/SOURCES/0359-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From 469d48cf685bd0157fa44ff7ebd3bd0302746ab0 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Mon, 18 Aug 2014 22:21:42 +0200
-Subject: [PATCH] units: fix BindsTo= logic when applied relative to services
- with Type=oneshot
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Start jobs for Type=oneshot units are successful when the unit state
-transition activating → inactive took place. In such a case all units
-that BindsTo= on it previously would continue to run, even though the unit
-they dependet on was actually already gone.
-
-(cherry-picked from ff50244582bf69e8489bba6ce59a21663d7f8274)
-
-Resolves: #1147524
----
- src/core/unit.c | 48 ++++++++++++++++++++++++++++++++++++++++++++----
- 1 file changed, 44 insertions(+), 4 deletions(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index b51e351..f221b9a 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1302,12 +1302,44 @@ static void unit_check_unneeded(Unit *u) {
-                 if (unit_active_or_pending(other))
-                         return;
- 
--        log_info_unit(u->id, "Service %s is not needed anymore. Stopping.", u->id);
-+        log_info_unit(u->id, "Unit %s is not needed anymore. Stopping.", u->id);
- 
-         /* Ok, nobody needs us anymore. Sniff. Then let's commit suicide */
-         manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
- }
- 
-+static void unit_check_binds_to(Unit *u) {
-+        bool stop = false;
-+        Unit *other;
-+        Iterator i;
-+
-+        assert(u);
-+
-+        if (u->job)
-+                return;
-+
-+        if (unit_active_state(u) != UNIT_ACTIVE)
-+                return;
-+
-+        SET_FOREACH(other, u->dependencies[UNIT_BINDS_TO], i) {
-+                if (other->job)
-+                        continue;
-+
-+                if (!UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other)))
-+                        continue;
-+
-+                stop = true;
-+        }
-+
-+        if (!stop)
-+                return;
-+
-+        log_info_unit(u->id, "Unit %s is bound to inactive service. Stopping, too.", u->id);
-+
-+        /* A unit we need to run is gone. Sniff. Let's stop this. */
-+        manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
-+}
-+
- static void retroactively_start_dependencies(Unit *u) {
-         Iterator i;
-         Unit *other;
-@@ -1611,11 +1643,19 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
-         manager_recheck_journal(m);
-         unit_trigger_notify(u);
- 
--        /* Maybe we finished startup and are now ready for being
--         * stopped because unneeded? */
--        if (u->manager->n_reloading <= 0)
-+        if (u->manager->n_reloading <= 0) {
-+                /* Maybe we finished startup and are now ready for
-+                 * being stopped because unneeded? */
-                 unit_check_unneeded(u);
- 
-+                /* Maybe we finished startup, but something we needed
-+                 * has vanished? Let's die then. (This happens when
-+                 * something BindsTo= to a Type=oneshot unit, as these
-+                 * units go directly from starting to inactive,
-+                 * without ever entering started.) */
-+                unit_check_binds_to(u);
-+        }
-+
-         unit_add_to_dbus_queue(u);
-         unit_add_to_gc_queue(u);
- }
diff --git a/SOURCES/0360-core-don-t-allow-enabling-if-unit-is-masked.patch b/SOURCES/0360-core-don-t-allow-enabling-if-unit-is-masked.patch
deleted file mode 100644
index 37ebbf8..0000000
--- a/SOURCES/0360-core-don-t-allow-enabling-if-unit-is-masked.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 0fb9d07643a9e9e84c61a6a62f4c2b7d52e4d96f Mon Sep 17 00:00:00 2001
-From: Jan Synacek <jsynacek@redhat.com>
-Date: Tue, 7 Oct 2014 13:27:38 +0200
-Subject: [PATCH] core: don't allow enabling if unit is masked
-
-(cherry-picked from f7101b7368dfe41dbc8b7203e06133cccb589c01)
-
-Resolves: #1149299
----
- src/shared/install.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 1662c5f..7a29798 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1520,6 +1520,19 @@ int unit_file_enable(
-                 return r;
- 
-         STRV_FOREACH(i, files) {
-+                UnitFileState state;
-+
-+                state = unit_file_get_state(scope, root_dir, *i);
-+                if (state < 0) {
-+                        log_error("Failed to get unit file state for %s: %s", *i, strerror(-state));
-+                        return state;
-+                }
-+
-+                if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) {
-+                        log_error("Failed to enable unit: Unit %s is masked", *i);
-+                        return -ENOTSUP;
-+                }
-+
-                 r = install_info_add_auto(&c, *i);
-                 if (r < 0)
-                         return r;
diff --git a/SOURCES/0361-man-systemctl-document-enable-on-masked-units.patch b/SOURCES/0361-man-systemctl-document-enable-on-masked-units.patch
deleted file mode 100644
index adeb1d9..0000000
--- a/SOURCES/0361-man-systemctl-document-enable-on-masked-units.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 091b32bd93acd3e7be844684771ab2248b97637b Mon Sep 17 00:00:00 2001
-From: Jan Synacek <jsynacek@redhat.com>
-Date: Wed, 8 Oct 2014 13:43:02 +0200
-Subject: [PATCH] man/systemctl: document enable on masked units
-
-Related: #1149299
----
- man/systemctl.xml | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/man/systemctl.xml b/man/systemctl.xml
-index d2430ee..b894511 100644
---- a/man/systemctl.xml
-+++ b/man/systemctl.xml
-@@ -862,6 +862,9 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
-             the system, or for all future logins of all users, or only this
-             boot.  Note that in the last case, no systemd daemon
-             configuration is reloaded.</para>
-+
-+            <para>Using <command>enable</command> on masked units
-+            results in an error.</para>
-           </listitem>
-         </varlistentry>
- 
-@@ -999,8 +1002,8 @@ kobject-uevent 1 systemd-udevd-kernel.socket systemd-udevd.service
-             <filename>/dev/null</filename>, making it impossible to
-             start them. This is a stronger version of
-             <command>disable</command>, since it prohibits all kinds of
--            activation of the unit, including manual activation. Use
--            this option with care. This honors the
-+            activation of the unit, including enablement and manual
-+            activation. Use this option with care. This honors the
-             <option>--runtime</option> option, to only mask temporarily
-             until the next reoobt of the system.</para>
-           </listitem>
diff --git a/SOURCES/0362-core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch b/SOURCES/0362-core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch
deleted file mode 100644
index 20d9792..0000000
--- a/SOURCES/0362-core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 4537b962be32aa0a2f49741454f168801ed7c683 Mon Sep 17 00:00:00 2001
-From: Matt Mullins <mokomull@gmail.com>
-Date: Mon, 24 Feb 2014 15:03:52 -0800
-Subject: [PATCH] core: do not segfault if /proc/swaps cannot be opened
-
-The refactoring in f84b1b1ff9b1261 ('core: do not segfault if swap
-activity happens when /proc/swaps is not open') caused
-swap_dispatch_reload and swap_enumerate to continue even if fopen()
-failed with ENOENT.
-
-This should instead be modified to return from swap_dispatch_reload and
-swap_enumerate, rather than continuing to load the list of swaps when
-m->proc_swaps is NULL.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1069393
-
-RHEL (and fedora) only
-
-Resolves: #1151239
----
- src/core/swap.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/core/swap.c b/src/core/swap.c
-index b72034f..36ef88b 100644
---- a/src/core/swap.c
-+++ b/src/core/swap.c
-@@ -1075,7 +1075,7 @@ static int open_proc_swaps(Manager *m) {
- 
-                 m->proc_swaps = fopen("/proc/swaps", "re");
-                 if (!m->proc_swaps)
--                        return (errno == ENOENT) ? 0 : -errno;
-+                        return -errno;
- 
-                 m->swap_watch.type = WATCH_SWAP;
-                 m->swap_watch.fd = fileno(m->proc_swaps);
-@@ -1098,7 +1098,7 @@ int swap_dispatch_reload(Manager *m) {
- 
-         r = open_proc_swaps(m);
-         if (r < 0)
--                return r;
-+                return (r == -ENOENT) ? 0 : r;
- 
-         return swap_fd_event(m, EPOLLPRI);
- }
-@@ -1251,7 +1251,7 @@ static int swap_enumerate(Manager *m) {
- 
-         r = open_proc_swaps(m);
-         if (r < 0)
--                return r;
-+                return (r == -ENOENT) ? 0 : r;
- 
-         r = swap_load_proc_swaps(m, false);
-         if (r < 0)
diff --git a/SOURCES/0363-man-we-don-t-have-Wanted-dependency.patch b/SOURCES/0363-man-we-don-t-have-Wanted-dependency.patch
deleted file mode 100644
index ca23995..0000000
--- a/SOURCES/0363-man-we-don-t-have-Wanted-dependency.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 49beb7d21d269f0feeea6a80145e1cde0d499548 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Wed, 15 Oct 2014 09:28:31 +0200
-Subject: [PATCH] man: we don't have 'Wanted' dependency
-
-(Cherry-picked from 3e883473a0f36c220fc45ecf61d6878c9ac308b4)
-
-Resolves: #1152487
----
- man/systemd.unit.xml | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml
-index c500953..62db219 100644
---- a/man/systemd.unit.xml
-+++ b/man/systemd.unit.xml
-@@ -175,10 +175,10 @@
-                 <filename>foo.service.wants/</filename> may exist. All
-                 unit files symlinked from such a directory are
-                 implicitly added as dependencies of type
--                <varname>Wanted=</varname> to the unit. This is useful
-+                <varname>Wants=</varname> to the unit. This is useful
-                 to hook units into the start-up of other units,
-                 without having to modify their unit files. For details
--                about the semantics of <varname>Wanted=</varname>, see
-+                about the semantics of <varname>Wants=</varname>, see
-                 below. The preferred way to create symlinks in the
-                 <filename>.wants/</filename> directory of a unit file
-                 is with the <command>enable</command> command of the
diff --git a/SOURCES/0364-environment-append-unit_id-to-error-messages-regardi.patch b/SOURCES/0364-environment-append-unit_id-to-error-messages-regardi.patch
deleted file mode 100644
index c06f01d..0000000
--- a/SOURCES/0364-environment-append-unit_id-to-error-messages-regardi.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-From 432496f644241d282d706285181a0b94c7c788f5 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Fri, 17 Oct 2014 11:46:01 +0200
-Subject: [PATCH] environment: append unit_id to error messages regarding
- EnvironmentFile
-
-(cherry-picked from 7491ccf2cb237a2a88b831b2c7374ba2bb255cba)
-Conflicts:
-	src/core/execute.c
-
-Resolves: #1147691
----
- src/core/execute.c     |  6 +++---
- src/core/execute.h     |  2 +-
- src/shared/env-util.c  | 13 ++++++++++---
- src/shared/env-util.h  |  2 +-
- src/test/test-fileio.c |  2 +-
- 5 files changed, 16 insertions(+), 9 deletions(-)
-
-diff --git a/src/core/execute.c b/src/core/execute.c
-index 0894156..be99149 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -1071,7 +1071,7 @@ int exec_spawn(ExecCommand *command,
-         } else
-                 socket_fd = -1;
- 
--        r = exec_context_load_environment(context, &files_env);
-+        r = exec_context_load_environment(context, unit_id, &files_env);
-         if (r < 0) {
-                 log_struct_unit(LOG_ERR,
-                            unit_id,
-@@ -1776,7 +1776,7 @@ void exec_command_free_array(ExecCommand **c, unsigned n) {
-         }
- }
- 
--int exec_context_load_environment(const ExecContext *c, char ***l) {
-+int exec_context_load_environment(const ExecContext *c, const char *unit_id, char ***l) {
-         char **i, **r = NULL;
- 
-         assert(c);
-@@ -1833,7 +1833,7 @@ int exec_context_load_environment(const ExecContext *c, char ***l) {
-                         }
-                         /* Log invalid environment variables with filename */
-                         if (p)
--                                p = strv_env_clean_log(p, pglob.gl_pathv[n]);
-+                                p = strv_env_clean_log(p, unit_id, pglob.gl_pathv[n]);
- 
-                         if (r == NULL)
-                                 r = p;
-diff --git a/src/core/execute.h b/src/core/execute.h
-index 5055890..b66bd5f 100644
---- a/src/core/execute.h
-+++ b/src/core/execute.h
-@@ -200,7 +200,7 @@ void exec_context_tmp_dirs_done(ExecContext *c);
- void exec_context_dump(ExecContext *c, FILE* f, const char *prefix);
- void exec_context_tty_reset(const ExecContext *context);
- 
--int exec_context_load_environment(const ExecContext *c, char ***l);
-+int exec_context_load_environment(const ExecContext *c, const char *unit_id, char ***l);
- 
- bool exec_context_may_touch_console(ExecContext *c);
- void exec_context_serialize(const ExecContext *c, Unit *u, FILE *f);
-diff --git a/src/shared/env-util.c b/src/shared/env-util.c
-index 7976881..5b5da48 100644
---- a/src/shared/env-util.c
-+++ b/src/shared/env-util.c
-@@ -29,6 +29,13 @@
- #include "env-util.h"
- #include "def.h"
- 
-+#define log_full_unit(level, unit, ...) log_meta_object(level, __FILE__, __LINE__, __func__, getpid() == 1 ? "UNIT=" : "USER_UNIT=", unit, __VA_ARGS__)
-+#define log_debug_unit(unit, ...)       log_full_unit(LOG_DEBUG, unit, __VA_ARGS__)
-+#define log_info_unit(unit, ...)        log_full_unit(LOG_INFO, unit, __VA_ARGS__)
-+#define log_notice_unit(unit, ...)      log_full_unit(LOG_NOTICE, unit, __VA_ARGS__)
-+#define log_warning_unit(unit, ...)     log_full_unit(LOG_WARNING, unit, __VA_ARGS__)
-+#define log_error_unit(unit, ...)       log_full_unit(LOG_ERR, unit, __VA_ARGS__)
-+
- #define VALID_CHARS_ENV_NAME                    \
-         DIGITS LETTERS                          \
-         "_"
-@@ -375,7 +382,7 @@ char *strv_env_get(char **l, const char *name) {
-         return strv_env_get_n(l, name, strlen(name));
- }
- 
--char **strv_env_clean_log(char **e, const char *message) {
-+char **strv_env_clean_log(char **e, const char *unit_id, const char *message) {
-         char **p, **q;
-         int k = 0;
- 
-@@ -385,7 +392,7 @@ char **strv_env_clean_log(char **e, const char *message) {
- 
-                 if (!env_assignment_is_valid(*p)) {
-                         if (message)
--                                log_error("Ignoring invalid environment '%s': %s", *p, message);
-+                                log_error_unit(unit_id, "Ignoring invalid environment '%s': %s", *p, message);
-                         free(*p);
-                         continue;
-                 }
-@@ -412,5 +419,5 @@ char **strv_env_clean_log(char **e, const char *message) {
- }
- 
- char **strv_env_clean(char **e) {
--        return strv_env_clean_log(e, NULL);
-+        return strv_env_clean_log(e, NULL, NULL);
- }
-diff --git a/src/shared/env-util.h b/src/shared/env-util.h
-index 8d2114b..5ea82ad 100644
---- a/src/shared/env-util.h
-+++ b/src/shared/env-util.h
-@@ -30,7 +30,7 @@ bool env_assignment_is_valid(const char *e);
- 
- bool strv_env_is_valid(char **e);
- char **strv_env_clean(char **l);
--char **strv_env_clean_log(char **e, const char *message);
-+char **strv_env_clean_log(char **e, const char *unit_id, const char *message);
- 
- bool strv_env_name_or_assignment_is_valid(char **l);
- 
-diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c
-index 06f3e28..c92bb6e 100644
---- a/src/test/test-fileio.c
-+++ b/src/test/test-fileio.c
-@@ -88,7 +88,7 @@ static void test_parse_env_file(void) {
-         assert_se(streq(a[9], "ten="));
-         assert_se(a[10] == NULL);
- 
--        strv_env_clean_log(a, "test");
-+        strv_env_clean_log(a, NULL, "test");
- 
-         k = 0;
-         STRV_FOREACH(i, b) {
diff --git a/SOURCES/0365-udevd-add-event-timeout-commandline-option.patch b/SOURCES/0365-udevd-add-event-timeout-commandline-option.patch
deleted file mode 100644
index 67e1048..0000000
--- a/SOURCES/0365-udevd-add-event-timeout-commandline-option.patch
+++ /dev/null
@@ -1,125 +0,0 @@
-From 3f13db324c715ab9dd0a514490160448ed3ae7ee Mon Sep 17 00:00:00 2001
-From: Hannes Reinecke <hare@suse.de>
-Date: Tue, 29 Jul 2014 09:06:14 +0200
-Subject: [PATCH] udevd: add --event-timeout commandline option
-
-Some events take longer than the default 30 seconds. Killing those
-events will leave the machine halfway configured.
-
-Add a commandline option '--event-timeout' to handle these cases.
-
-(cherry-picked from 9719859c07aa13539ed2cd4b31972cd30f678543)
-
-Conflicts:
-	src/udev/udevd.c
-
-Resolves: #1154778
----
- man/systemd-udevd.service.xml | 19 +++++++++++++++++++
- src/udev/udevd.c              | 14 ++++++++++++--
- 2 files changed, 31 insertions(+), 2 deletions(-)
-
-diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml
-index 7fce300..c3a2cb9 100644
---- a/man/systemd-udevd.service.xml
-+++ b/man/systemd-udevd.service.xml
-@@ -42,6 +42,7 @@
-       <arg><option>--debug</option></arg>
-       <arg><option>--children-max=</option></arg>
-       <arg><option>--exec-delay=</option></arg>
-+      <arg><option>--event-timeout=</option></arg>
-       <arg><option>--resolve-names=early|late|never</option></arg>
-       <arg><option>--version</option></arg>
-       <arg><option>--help</option></arg>
-@@ -90,6 +91,15 @@
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-+        <term><option>--event-timeout=</option></term>
-+        <listitem>
-+          <para>Wait for the event to finish up to the given
-+          number of seconds. After this time the event will
-+          be terminated. Default is 30.</para>
-+        </listitem>
-+      </varlistentry>
-+
-+      <varlistentry>
-         <term><option>--resolve-names=</option></term>
-         <listitem>
-           <para>Specify when systemd-udevd should resolve names of users and groups.
-@@ -155,6 +165,15 @@
-         </listitem>
-       </varlistentry>
-       <varlistentry>
-+        <term><varname>udev.event-timeout=</varname></term>
-+        <term><varname>rd.udev.event-timeout=</varname></term>
-+        <listitem>
-+          <para>Wait for events to finish up to the given number
-+          of seconds. This option might be useful if events are
-+          terminated due to a timeout in large configurations.</para>
-+        </listitem>
-+      </varlistentry>
-+      <varlistentry>
-         <term><varname>net.ifnames=</varname></term>
-         <listitem>
-           <para>Network interfaces are renamed to give them predictable names
-diff --git a/src/udev/udevd.c b/src/udev/udevd.c
-index 3d5feb4..6241549 100644
---- a/src/udev/udevd.c
-+++ b/src/udev/udevd.c
-@@ -72,6 +72,7 @@ static bool reload;
- static int children;
- static int children_max;
- static int exec_delay;
-+static int event_timeout = 30;
- static sigset_t sigmask_orig;
- static UDEV_LIST(event_list);
- static UDEV_LIST(worker_list);
-@@ -287,6 +288,9 @@ static void worker_new(struct event *event)
-                         if (exec_delay > 0)
-                                 udev_event->exec_delay = exec_delay;
- 
-+                        if (event_timeout != 30)
-+                                udev_event->timeout_usec = event_timeout * USEC_PER_SEC;
-+
-                         /* apply rules, create node, symlinks */
-                         udev_event_execute_rules(udev_event, rules, &sigmask_orig);
- 
-@@ -884,6 +888,8 @@ static void kernel_cmdline_options(struct udev *udev)
-                         children_max = strtoul(opt + 18, NULL, 0);
-                 } else if (startswith(opt, "udev.exec-delay=")) {
-                         exec_delay = strtoul(opt + 16, NULL, 0);
-+                } else if (startswith(opt, "udev.event-timeout=")) {
-+                        event_timeout = strtoul(opt + 16, NULL, 0);
-                 }
- 
-                 free(s);
-@@ -903,6 +909,7 @@ int main(int argc, char *argv[])
-                 { "debug", no_argument, NULL, 'D' },
-                 { "children-max", required_argument, NULL, 'c' },
-                 { "exec-delay", required_argument, NULL, 'e' },
-+                { "event-timeout", required_argument, NULL, 't' },
-                 { "resolve-names", required_argument, NULL, 'N' },
-                 { "help", no_argument, NULL, 'h' },
-                 { "version", no_argument, NULL, 'V' },
-@@ -946,6 +953,9 @@ int main(int argc, char *argv[])
-                 case 'e':
-                         exec_delay = strtoul(optarg, NULL, 0);
-                         break;
-+                case 't':
-+                        event_timeout = strtoul(optarg, NULL, 0);
-+                        break;
-                 case 'D':
-                         debug = true;
-                         log_set_max_level(LOG_DEBUG);
-@@ -1278,8 +1288,8 @@ int main(int argc, char *argv[])
-                                 if (worker->state != WORKER_RUNNING)
-                                         continue;
- 
--                                if ((now(CLOCK_MONOTONIC) - worker->event_start_usec) > 30 * 1000 * 1000) {
--                                        log_error("worker [%u] %s timeout; kill it\n", worker->pid,
-+                                if ((now(CLOCK_MONOTONIC) - worker->event_start_usec) > event_timeout * USEC_PER_SEC) {
-+                                        log_error("worker [%u] %s timeout; kill it", worker->pid,
-                                             worker->event ? worker->event->devpath : "<idle>");
-                                         kill(worker->pid, SIGKILL);
-                                         worker->state = WORKER_KILLED;
diff --git a/SOURCES/0366-selinux-fix-potential-double-free-crash-in-child-pro.patch b/SOURCES/0366-selinux-fix-potential-double-free-crash-in-child-pro.patch
deleted file mode 100644
index 389e24f..0000000
--- a/SOURCES/0366-selinux-fix-potential-double-free-crash-in-child-pro.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 161ad7deb00e31cb47fdc29f2e795690ffa66be4 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 13 Oct 2014 13:41:06 +0200
-Subject: [PATCH] selinux: fix potential double free crash in child process
-
-Before returning from function we should reset ret to NULL, thus cleanup
-function is nop.
-
-Also context_str() returns pointer to a string containing context but not a
-copy, hence we must make copy it explicitly.
-
-Related: #1113790
----
- src/shared/label.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/src/shared/label.c b/src/shared/label.c
-index 8f7dfb4..52aea4f 100644
---- a/src/shared/label.c
-+++ b/src/shared/label.c
-@@ -270,7 +270,8 @@ int label_get_child_mls_label(int socket_fd, const char *exe, char **label) {
-         }
- 
-         freecon(mycon);
--        mycon = context_str(bcon);
-+        mycon = NULL;
-+        mycon = strdup(context_str(bcon));
-         if (!mycon) {
-                 r = -errno;
-                 goto out;
-@@ -284,8 +285,8 @@ int label_get_child_mls_label(int socket_fd, const char *exe, char **label) {
-         }
- 
-         *label = ret;
-+        ret = NULL;
-         r = 0;
--
- out:
-         if (r < 0 && security_getenforce() == 1)
-                 return r;
diff --git a/SOURCES/0367-selinux-pass-flag-to-correct-exec_spawn.patch b/SOURCES/0367-selinux-pass-flag-to-correct-exec_spawn.patch
deleted file mode 100644
index ccdb2c0..0000000
--- a/SOURCES/0367-selinux-pass-flag-to-correct-exec_spawn.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From c230e5e8efe72cf4137bf29a197059e5a23bb532 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 13 Oct 2014 13:57:08 +0200
-Subject: [PATCH] selinux: pass flag to correct exec_spawn
-
-We want to spawn service with label passed by remote peer and not processes
-spawned by socket unit itself.
-
-RHEL-only patch
-
-Related: #1113790
----
- src/core/service.c | 2 +-
- src/core/socket.c  | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/core/service.c b/src/core/service.c
-index 7ef2b3a..635a953 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -1867,7 +1867,7 @@ static int service_spawn(
-                        apply_chroot,
-                        apply_tty_stdin,
-                        UNIT(s)->manager->confirm_spawn,
--                       false,
-+                       s->socket_fd_selinux_context_net,
-                        UNIT(s)->manager->cgroup_supported,
-                        path,
-                        UNIT(s)->id,
-diff --git a/src/core/socket.c b/src/core/socket.c
-index 958d063..1a91700 100644
---- a/src/core/socket.c
-+++ b/src/core/socket.c
-@@ -1234,7 +1234,7 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
-                        true,
-                        true,
-                        UNIT(s)->manager->confirm_spawn,
--                       s->selinux_context_from_net,
-+                       false,
-                        UNIT(s)->manager->cgroup_supported,
-                        UNIT(s)->cgroup_path,
-                        UNIT(s)->id,
diff --git a/SOURCES/0368-selinux-set-selinux-context-applied-on-exec-before-c.patch b/SOURCES/0368-selinux-set-selinux-context-applied-on-exec-before-c.patch
deleted file mode 100644
index 2cffafb..0000000
--- a/SOURCES/0368-selinux-set-selinux-context-applied-on-exec-before-c.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From e7c4dc07d35a10dc90f013572da6d25d17311d0a Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Mon, 13 Oct 2014 16:12:30 +0200
-Subject: [PATCH] selinux: set selinux context applied on exec() before closing
- all fds
-
-We need original socket_fd around otherwise label_get_child_mls_label fails with
--EINVAL return code.
-
-Related: #1113790
----
- src/core/execute.c | 56 +++++++++++++++++++++++++++++-------------------------
- 1 file changed, 30 insertions(+), 26 deletions(-)
-
-diff --git a/src/core/execute.c b/src/core/execute.c
-index be99149..06713cc 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -1401,6 +1401,36 @@ int exec_spawn(ExecCommand *command,
-                         }
-                 }
- 
-+#ifdef HAVE_SELINUX
-+                if (apply_permissions) {
-+                        if (use_selinux()) {
-+                                if (context->selinux_context) {
-+                                        err = setexeccon(context->selinux_context);
-+                                        if (err < 0 && !context->selinux_context_ignore) {
-+                                                r = EXIT_SELINUX_CONTEXT;
-+                                                goto fail_child;
-+                                        }
-+                                }
-+
-+                                if (selinux_context_net && socket_fd >= 0) {
-+                                        _cleanup_free_ char *label = NULL;
-+
-+                                        err = label_get_child_mls_label(socket_fd, command->path, &label);
-+                                        if (err < 0) {
-+                                                r = EXIT_SELINUX_CONTEXT;
-+                                                goto fail_child;
-+                                        }
-+
-+                                        err = setexeccon(label);
-+                                        if (err < 0) {
-+                                                r = EXIT_SELINUX_CONTEXT;
-+                                                goto fail_child;
-+                                        }
-+                                }
-+                        }
-+                }
-+#endif
-+
-                 /* We repeat the fd closing here, to make sure that
-                  * nothing is leaked from the PAM modules */
-                 err = close_all_fds(fds, n_fds);
-@@ -1474,33 +1504,7 @@ int exec_spawn(ExecCommand *command,
-                                         goto fail_child;
-                                 }
-                         }
--#ifdef HAVE_SELINUX
--                        if (use_selinux()) {
--                                if (context->selinux_context) {
--                                        err = setexeccon(context->selinux_context);
--                                        if (err < 0 && !context->selinux_context_ignore) {
--                                                r = EXIT_SELINUX_CONTEXT;
--                                                goto fail_child;
--                                        }
--                                }
--
--                                if (selinux_context_net && socket_fd >= 0) {
--                                        _cleanup_free_ char *label = NULL;
- 
--                                        err = label_get_child_mls_label(socket_fd, command->path, &label);
--                                        if (err < 0) {
--                                                r = EXIT_SELINUX_CONTEXT;
--                                                goto fail_child;
--                                        }
--
--                                        err = setexeccon(label);
--                                        if (err < 0) {
--                                                r = EXIT_SELINUX_CONTEXT;
--                                                goto fail_child;
--                                        }
--                                }
--                        }
--#endif
-                 }
- 
-                 our_env = new0(char*, 7);
diff --git a/SOURCES/0369-logind-use-correct-who-enum-values-with-KillUnit.patch b/SOURCES/0369-logind-use-correct-who-enum-values-with-KillUnit.patch
deleted file mode 100644
index ca40c6e..0000000
--- a/SOURCES/0369-logind-use-correct-who-enum-values-with-KillUnit.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 53e9be6b9c38a7a7d943b01da6898355c535991e Mon Sep 17 00:00:00 2001
-From: Marius Vollmer <mvollmer@redhat.com>
-Date: Thu, 31 Oct 2013 15:55:07 +0200
-Subject: [PATCH] logind: use correct "who" enum values with KillUnit.
-
-rhel-only (in upstream fixed during dbus rewrite)
-
-Resolves: #1155502
----
- src/login/logind-dbus.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index 6cabb7b..4137522 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -116,7 +116,7 @@
-         "  <method name=\"KillSession\">\n"                             \
-         "   <arg name=\"id\" type=\"s\" direction=\"in\"/>\n"           \
-         "   <arg name=\"who\" type=\"s\" direction=\"in\"/>\n"          \
--        "   <arg name=\"signal\" type=\"s\" direction=\"in\"/>\n"       \
-+        "   <arg name=\"signal\" type=\"i\" direction=\"in\"/>\n"       \
-         "  </method>\n"                                                 \
-         "  <method name=\"KillUser\">\n"                                \
-         "   <arg name=\"uid\" type=\"u\" direction=\"in\"/>\n"          \
-@@ -2814,7 +2814,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo
-         assert(manager);
-         assert(unit);
- 
--        w = who == KILL_LEADER ? "process" : "cgroup";
-+        w = who == KILL_LEADER ? "main" : "all";
-         assert_cc(sizeof(signo) == sizeof(int32_t));
- 
-         r = bus_method_call_with_reply(
-@@ -2830,7 +2830,7 @@ int manager_kill_unit(Manager *manager, const char *unit, KillWho who, int signo
-                         DBUS_TYPE_INT32, &signo,
-                         DBUS_TYPE_INVALID);
-         if (r < 0) {
--                log_error("Failed to stop unit %s: %s", unit, bus_error(error, r));
-+                log_error("Failed to kill unit %s: %s", unit, bus_error(error, r));
-                 return r;
-         }
- 
diff --git a/SOURCES/0370-logind-always-kill-session-when-termination-is-reque.patch b/SOURCES/0370-logind-always-kill-session-when-termination-is-reque.patch
deleted file mode 100644
index f4b8ed3..0000000
--- a/SOURCES/0370-logind-always-kill-session-when-termination-is-reque.patch
+++ /dev/null
@@ -1,291 +0,0 @@
-From c4e4ad079d6c3c18b6f08722ce30796e8c53346b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Sat, 8 Feb 2014 20:29:56 -0500
-Subject: [PATCH] logind: always kill session when termination is requested
-
-KillUserProcesses=yes/no should be ignored when termination is
-explicitly requested.
-
-Conflicts:
-	src/login/logind-dbus.c
-	src/login/logind-seat-dbus.c
-	src/login/logind-session-dbus.c
-	src/login/logind-session.c
-	src/login/logind-user-dbus.c
-	src/login/logind.c
-
-(cherry-picked (or better say rewritten) from 9bb69af4f2823fdd30902f5ffd959e9b041feb53)
-
-Resolves: #1155502
----
- src/login/logind-dbus.c         |  6 +++---
- src/login/logind-seat-dbus.c    |  2 +-
- src/login/logind-seat.c         |  8 ++++----
- src/login/logind-seat.h         |  4 ++--
- src/login/logind-session-dbus.c |  2 +-
- src/login/logind-session.c      |  8 ++++----
- src/login/logind-session.h      |  2 +-
- src/login/logind-user-dbus.c    |  2 +-
- src/login/logind-user.c         |  4 ++--
- src/login/logind-user.h         |  2 +-
- src/login/logind.c              | 10 +++++-----
- 11 files changed, 25 insertions(+), 25 deletions(-)
-
-diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
-index 4137522..8a463f9 100644
---- a/src/login/logind-dbus.c
-+++ b/src/login/logind-dbus.c
-@@ -1927,7 +1927,7 @@ static DBusHandlerResult manager_message_handler(
-                 if (!session)
-                         return bus_send_error_reply(connection, message, &error, -ENOENT);
- 
--                r = session_stop(session);
-+                r = session_stop(session, true);
-                 if (r < 0)
-                         return bus_send_error_reply(connection, message, NULL, r);
- 
-@@ -1950,7 +1950,7 @@ static DBusHandlerResult manager_message_handler(
-                 if (!user)
-                         return bus_send_error_reply(connection, message, &error, -ENOENT);
- 
--                r = user_stop(user);
-+                r = user_stop(user, true);
-                 if (r < 0)
-                         return bus_send_error_reply(connection, message, NULL, r);
- 
-@@ -1973,7 +1973,7 @@ static DBusHandlerResult manager_message_handler(
-                 if (!seat)
-                         return bus_send_error_reply(connection, message, &error, -ENOENT);
- 
--                r = seat_stop_sessions(seat);
-+                r = seat_stop_sessions(seat, true);
-                 if (r < 0)
-                         return bus_send_error_reply(connection, message, NULL, r);
- 
-diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c
-index 230f7f0..c87c1de 100644
---- a/src/login/logind-seat-dbus.c
-+++ b/src/login/logind-seat-dbus.c
-@@ -261,7 +261,7 @@ static DBusHandlerResult seat_message_dispatch(
- 
-         if (dbus_message_is_method_call(message, "org.freedesktop.login1.Seat", "Terminate")) {
- 
--                r = seat_stop_sessions(s);
-+                r = seat_stop_sessions(s, true);
-                 if (r < 0)
-                         return bus_send_error_reply(connection, message, NULL, r);
- 
-diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
-index feebcf4..d3b999d 100644
---- a/src/login/logind-seat.c
-+++ b/src/login/logind-seat.c
-@@ -369,7 +369,7 @@ int seat_start(Seat *s) {
-         return 0;
- }
- 
--int seat_stop(Seat *s) {
-+int seat_stop(Seat *s, bool force) {
-         int r = 0;
- 
-         assert(s);
-@@ -381,7 +381,7 @@ int seat_stop(Seat *s) {
-                            "MESSAGE=Removed seat %s.", s->id,
-                            NULL);
- 
--        seat_stop_sessions(s);
-+        seat_stop_sessions(s, force);
- 
-         unlink(s->state_file);
-         seat_add_to_gc_queue(s);
-@@ -394,14 +394,14 @@ int seat_stop(Seat *s) {
-         return r;
- }
- 
--int seat_stop_sessions(Seat *s) {
-+int seat_stop_sessions(Seat *s, bool force) {
-         Session *session;
-         int r = 0, k;
- 
-         assert(s);
- 
-         LIST_FOREACH(sessions_by_seat, session, s->sessions) {
--                k = session_stop(session);
-+                k = session_stop(session, force);
-                 if (k < 0)
-                         r = k;
-         }
-diff --git a/src/login/logind-seat.h b/src/login/logind-seat.h
-index be6db6e..bf496b3 100644
---- a/src/login/logind-seat.h
-+++ b/src/login/logind-seat.h
-@@ -72,8 +72,8 @@ bool seat_can_graphical(Seat *s);
- int seat_get_idle_hint(Seat *s, dual_timestamp *t);
- 
- int seat_start(Seat *s);
--int seat_stop(Seat *s);
--int seat_stop_sessions(Seat *s);
-+int seat_stop(Seat *s, bool force);
-+int seat_stop_sessions(Seat *s, bool force);
- 
- int seat_check_gc(Seat *s, bool drop_not_started);
- void seat_add_to_gc_queue(Seat *s);
-diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
-index 86b0746..76e16e7 100644
---- a/src/login/logind-session-dbus.c
-+++ b/src/login/logind-session-dbus.c
-@@ -311,7 +311,7 @@ static DBusHandlerResult session_message_dispatch(
- 
-         if (dbus_message_is_method_call(message, "org.freedesktop.login1.Session", "Terminate")) {
- 
--                r = session_stop(s);
-+                r = session_stop(s, true);
-                 if (r < 0)
-                         return bus_send_error_reply(connection, message, NULL, r);
- 
-diff --git a/src/login/logind-session.c b/src/login/logind-session.c
-index 0fa290b..669a027 100644
---- a/src/login/logind-session.c
-+++ b/src/login/logind-session.c
-@@ -609,7 +609,7 @@ int session_start(Session *s) {
-         return 0;
- }
- 
--static int session_stop_scope(Session *s) {
-+static int session_stop_scope(Session *s, bool force) {
-         DBusError error;
-         char *job;
-         int r;
-@@ -621,7 +621,7 @@ static int session_stop_scope(Session *s) {
-         if (!s->scope)
-                 return 0;
- 
--        if (manager_shall_kill(s->manager, s->user->name)) {
-+        if (force || manager_shall_kill(s->manager, s->user->name)) {
-                 r = manager_stop_unit(s->manager, s->scope, &error, &job);
-                 if (r < 0) {
-                         log_error("Failed to stop session scope: %s", bus_error(&error, r));
-@@ -676,7 +676,7 @@ static void session_close_timer_fd(Session *s) {
-         s->timer_fd = -1;
- }
- 
--int session_stop(Session *s) {
-+int session_stop(Session *s, bool force) {
-         int r;
- 
-         assert(s);
-@@ -690,7 +690,7 @@ int session_stop(Session *s) {
-         session_remove_fifo(s);
- 
-         /* Kill cgroup */
--        r = session_stop_scope(s);
-+        r = session_stop_scope(s, force);
- 
-         s->stopping = true;
- 
-diff --git a/src/login/logind-session.h b/src/login/logind-session.h
-index 9b76582..3659872 100644
---- a/src/login/logind-session.h
-+++ b/src/login/logind-session.h
-@@ -131,7 +131,7 @@ void session_set_idle_hint(Session *s, bool b);
- int session_create_fifo(Session *s);
- void session_remove_fifo(Session *s);
- int session_start(Session *s);
--int session_stop(Session *s);
-+int session_stop(Session *s, bool force);
- int session_finalize(Session *s);
- void session_release(Session *s);
- int session_save(Session *s);
-diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c
-index fa2ecba..72dd5d0 100644
---- a/src/login/logind-user-dbus.c
-+++ b/src/login/logind-user-dbus.c
-@@ -242,7 +242,7 @@ static DBusHandlerResult user_message_dispatch(
- 
-         if (dbus_message_is_method_call(message, "org.freedesktop.login1.User", "Terminate")) {
- 
--                r = user_stop(u);
-+                r = user_stop(u, true);
-                 if (r < 0)
-                         return bus_send_error_reply(connection, message, NULL, r);
- 
-diff --git a/src/login/logind-user.c b/src/login/logind-user.c
-index 653574e..6ddda54 100644
---- a/src/login/logind-user.c
-+++ b/src/login/logind-user.c
-@@ -466,13 +466,13 @@ static int user_remove_runtime_path(User *u) {
-         return r;
- }
- 
--int user_stop(User *u) {
-+int user_stop(User *u, bool force) {
-         Session *s;
-         int r = 0, k;
-         assert(u);
- 
-         LIST_FOREACH(sessions_by_user, s, u->sessions) {
--                k = session_stop(s);
-+                k = session_stop(s, force);
-                 if (k < 0)
-                         r = k;
-         }
-diff --git a/src/login/logind-user.h b/src/login/logind-user.h
-index a12532e..13513fa 100644
---- a/src/login/logind-user.h
-+++ b/src/login/logind-user.h
-@@ -72,7 +72,7 @@ void user_free(User *u);
- int user_check_gc(User *u, bool drop_not_started);
- void user_add_to_gc_queue(User *u);
- int user_start(User *u);
--int user_stop(User *u);
-+int user_stop(User *u, bool force);
- int user_finalize(User *u);
- UserState user_get_state(User *u);
- int user_get_idle_hint(User *u, dual_timestamp *t);
-diff --git a/src/login/logind.c b/src/login/logind.c
-index 5180be7..da3c099 100644
---- a/src/login/logind.c
-+++ b/src/login/logind.c
-@@ -618,14 +618,14 @@ static void manager_dispatch_other(Manager *m, int fd) {
-         if (s) {
-                 assert(s->fifo_fd == fd);
-                 session_remove_fifo(s);
--                session_stop(s);
-+                session_stop(s, false);
-                 return;
-         }
- 
-         s = hashmap_get(m->timer_fds, INT_TO_PTR(fd + 1));
-         if (s) {
-                 assert(s->timer_fd == fd);
--                session_stop(s);
-+                session_stop(s, false);
-                 return;
-         }
- 
-@@ -942,7 +942,7 @@ void manager_gc(Manager *m, bool drop_not_started) {
-                 seat->in_gc_queue = false;
- 
-                 if (seat_check_gc(seat, drop_not_started) == 0) {
--                        seat_stop(seat);
-+                        seat_stop(seat, false);
-                         seat_free(seat);
-                 }
-         }
-@@ -954,7 +954,7 @@ void manager_gc(Manager *m, bool drop_not_started) {
-                 /* First, if we are not closing yet, initiate stopping */
-                 if (!session_check_gc(session, drop_not_started) &&
-                     session_get_state(session) != SESSION_CLOSING)
--                        session_stop(session);
-+                        session_stop(session, false);
- 
-                 if (!session_check_gc(session, drop_not_started)) {
-                         session_finalize(session);
-@@ -968,7 +968,7 @@ void manager_gc(Manager *m, bool drop_not_started) {
- 
-                 if (!user_check_gc(user, drop_not_started) &&
-                     user_get_state(user) != USER_CLOSING)
--                        user_stop(user);
-+                        user_stop(user, false);
- 
-                 if (!user_check_gc(user, drop_not_started)) {
-                         user_finalize(user);
diff --git a/SOURCES/0371-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch b/SOURCES/0371-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch
deleted file mode 100644
index a094bee..0000000
--- a/SOURCES/0371-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 74888db37748c20b144a7cb117fb35f5c9804bcb Mon Sep 17 00:00:00 2001
-From: Tom Gundersen <teg@jklm.no>
-Date: Sat, 25 Oct 2014 17:10:11 +0200
-Subject: [PATCH] udev: net_id - correctly name netdevs based on dev_port when
- set
-
-Upstream, dev_id was replaced by dev_port, and the same happened for some kernel
-drivers. This logic is not in the RHEL7 kernel, except for one new driver which
-uses dev_port, but never used dev_id in the past.
-
-To give proper names to these devices, fall back to using dev_port when dev_id
-is not set. This does not affect any existing drivers.
-
-(rhel only)
-
-Resolves: #1155996
----
- src/udev/udev-builtin-net_id.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
-index b3cb04b..b5b5909 100644
---- a/src/udev/udev-builtin-net_id.c
-+++ b/src/udev/udev-builtin-net_id.c
-@@ -36,7 +36,7 @@
-  *   o<index>                              -- on-board device index number
-  *   s<slot>[f<function>][d<dev_id>]       -- hotplug slot index number
-  *   x<MAC>                                -- MAC address
-- *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_id>]
-+ *   [P<domain>]p<bus>s<slot>[f<function>][d<dev_id>/<dev_port>]
-  *                                         -- PCI geographical location
-  *   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>]
-  *                                         -- USB port number chain
-@@ -185,8 +185,14 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
- 
-         /* kernel provided multi-device index */
-         attr = udev_device_get_sysattr_value(dev, "dev_id");
--        if (attr)
-+        if (attr) {
-                 dev_id = strtol(attr, NULL, 16);
-+                if (dev_id == 0) {
-+                        attr = udev_device_get_sysattr_value(dev, "dev_port");
-+                        if (attr)
-+                                dev_id = strtol(attr, NULL, 16);
-+                }
-+        }
- 
-         /* compose a name based on the raw kernel's PCI bus, slot numbers */
-         s = names->pci_path;
diff --git a/SOURCES/0372-udev-net_id-dev_port-is-base-10.patch b/SOURCES/0372-udev-net_id-dev_port-is-base-10.patch
deleted file mode 100644
index d3dce5e..0000000
--- a/SOURCES/0372-udev-net_id-dev_port-is-base-10.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From 6aba16d2932457f516a3153d85b147f3d962f4a2 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Tue, 4 Nov 2014 17:59:28 +0100
-Subject: [PATCH] udev: net_id dev_port is base 10
-
-Related: #1155996
----
- src/udev/udev-builtin-net_id.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c
-index b5b5909..4e6ca96 100644
---- a/src/udev/udev-builtin-net_id.c
-+++ b/src/udev/udev-builtin-net_id.c
-@@ -190,7 +190,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) {
-                 if (dev_id == 0) {
-                         attr = udev_device_get_sysattr_value(dev, "dev_port");
-                         if (attr)
--                                dev_id = strtol(attr, NULL, 16);
-+                                dev_id = strtol(attr, NULL, 10);
-                 }
-         }
- 
diff --git a/SOURCES/0373-udev-Fix-parsing-of-udev.event-timeout-kernel-parame.patch b/SOURCES/0373-udev-Fix-parsing-of-udev.event-timeout-kernel-parame.patch
deleted file mode 100644
index 2a30e1a..0000000
--- a/SOURCES/0373-udev-Fix-parsing-of-udev.event-timeout-kernel-parame.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1949cb6f5ff8cccecfab4eca5a4e697d5c55dbdf Mon Sep 17 00:00:00 2001
-From: "Richard W.M. Jones" <rjones@redhat.com>
-Date: Wed, 5 Nov 2014 10:50:01 +0100
-Subject: [PATCH] udev: Fix parsing of udev.event-timeout kernel parameter
-
-(rhel-only, will be fixed in upstream differently)
-
-Related: #1154778
----
- src/udev/udevd.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/udev/udevd.c b/src/udev/udevd.c
-index 6241549..8d3f64f 100644
---- a/src/udev/udevd.c
-+++ b/src/udev/udevd.c
-@@ -889,7 +889,7 @@ static void kernel_cmdline_options(struct udev *udev)
-                 } else if (startswith(opt, "udev.exec-delay=")) {
-                         exec_delay = strtoul(opt + 16, NULL, 0);
-                 } else if (startswith(opt, "udev.event-timeout=")) {
--                        event_timeout = strtoul(opt + 16, NULL, 0);
-+                        event_timeout = strtoul(opt + 19, NULL, 0);
-                 }
- 
-                 free(s);
diff --git a/SOURCES/0374-login-rerun-vconsole-setup-when-switching-from-vgaco.patch b/SOURCES/0374-login-rerun-vconsole-setup-when-switching-from-vgaco.patch
deleted file mode 100644
index b97447c..0000000
--- a/SOURCES/0374-login-rerun-vconsole-setup-when-switching-from-vgaco.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-From 8659757c045dcdb6fcf628fa76025f1a2f533e8a Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Wed, 5 Nov 2014 08:30:52 -0500
-Subject: [PATCH] login: rerun vconsole-setup when switching from vgacon to
- fbcon
-
-The initialization performed by systemd-vconsole-setup is reset
-when changing console drivers (say from vgacon to fbcon), so we
-need to run it in that case.
-
-See
-http://lists.freedesktop.org/archives/systemd-devel/2014-October/023919.html
-http://lists.freedesktop.org/archives/systemd-devel/2014-October/024423.html
-http://lists.freedesktop.org/archives/systemd-devel/2014-November/024881.html
-
-This commit adds a udev rule to make systemd-vconsole-setup get run when
-the fbcon device becomes available.
-
-(david: moved into new file 90-vconsole.rules instead of 71-seats.rules;
-        build-failures are on me, not on Ray)
-
-(cherry-picked from f6ba8671d83f9fce9a00045d8fa399a1c07ba7fc)
-
-Related: #1002450
----
- Makefile.am                    |  3 +++
- src/vconsole/90-vconsole.rules | 11 +++++++++++
- 2 files changed, 14 insertions(+)
- create mode 100644 src/vconsole/90-vconsole.rules
-
-diff --git a/Makefile.am b/Makefile.am
-index dab55ba..faf2a32 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -3258,6 +3258,9 @@ rootlibexec_PROGRAMS += \
- nodist_systemunit_DATA += \
- 	units/systemd-vconsole-setup.service
- 
-+dist_udevrules_DATA += \
-+	src/vconsole/90-vconsole.rules
-+
- SYSINIT_TARGET_WANTS += \
- 	systemd-vconsole-setup.service
- endif
-diff --git a/src/vconsole/90-vconsole.rules b/src/vconsole/90-vconsole.rules
-new file mode 100644
-index 0000000..bf6a9ef
---- /dev/null
-+++ b/src/vconsole/90-vconsole.rules
-@@ -0,0 +1,11 @@
-+#  This file is part of systemd.
-+#
-+#  systemd is free software; you can redistribute it and/or modify it
-+#  under the terms of the GNU Lesser General Public License as published by
-+#  the Free Software Foundation; either version 2.1 of the License, or
-+#  (at your option) any later version.
-+
-+# Kernel resets vconsole state when changing console drivers so run
-+# systemd-vconsole-setup when fbcon loads
-+
-+ACTION=="add", SUBSYSTEM=="graphics", KERNEL=="fbcon", RUN+="/usr/lib/systemd/systemd-vconsole-setup"
diff --git a/SOURCES/0375-cgroups-agent-really-down-grade-log-level.patch b/SOURCES/0375-cgroups-agent-really-down-grade-log-level.patch
deleted file mode 100644
index f3e9852..0000000
--- a/SOURCES/0375-cgroups-agent-really-down-grade-log-level.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 6b8650a2e10a00088b977467bf0c79dd7044fcd9 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Mon, 10 Nov 2014 17:00:20 +0100
-Subject: [PATCH] cgroups-agent: really down-grade log level
-
-(rhel-only, fix for broken backport b0010d76a8c56900d15fab8ac1ed94d364d1e566)
-
-Related: #1044386
----
- src/cgroups-agent/cgroups-agent.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/cgroups-agent/cgroups-agent.c b/src/cgroups-agent/cgroups-agent.c
-index 43b9b3a..57db147 100644
---- a/src/cgroups-agent/cgroups-agent.c
-+++ b/src/cgroups-agent/cgroups-agent.c
-@@ -50,11 +50,10 @@ int main(int argc, char *argv[]) {
- 
-         bus = dbus_connection_open_private("unix:path=/run/systemd/private", &error);
-         if (!bus) {
--                log_warning("Failed to get D-Bus connection: %s", strerror(-r));
-                 /* If we couldn't connect we assume this was triggered
-                  * while systemd got restarted/transitioned from
-                  * initrd to the system, so let's ignore this */
--                log_debug("Failed to get D-Bus connection: %s", strerror(-r));
-+                log_debug("Failed to get D-Bus connection: %s", bus_error_message(&error));
-                 goto finish;
-         }
- 
diff --git a/SOURCES/0376-core-introduce-new-Delegate-yes-no-property-controll.patch b/SOURCES/0376-core-introduce-new-Delegate-yes-no-property-controll.patch
deleted file mode 100644
index ab61ded..0000000
--- a/SOURCES/0376-core-introduce-new-Delegate-yes-no-property-controll.patch
+++ /dev/null
@@ -1,385 +0,0 @@
-From 310c5654023cd224f4c016872e39335b1b3ac603 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Thu, 13 Nov 2014 14:34:42 +0100
-Subject: [PATCH] core: introduce new Delegate=yes/no property controlling
- creation of cgroup subhierarchies
-
-For priviliged units this resource control property ensures that the
-processes have all controllers systemd manages enabled.
-
-For unpriviliged services (those with User= set) this ensures that
-access rights to the service cgroup is granted to the user in question,
-to create further subgroups. Note that this only applies to the
-name=systemd hierarchy though, as access to other controllers is not
-safe for unpriviliged processes.
-
-Delegate=yes should be set for container scopes where a systemd instance
-inside the container shall manage the hierarchies below its own cgroup
-and have access to all controllers.
-
-Delegate=yes should also be set for user@.service, so that systemd
---user can run, controlling its own cgroup tree.
-
-This commit changes machined, systemd-nspawn@.service and user@.service
-to set this boolean, in order to ensure that container management will
-just work, and the user systemd instance can run fine.
-
-(cherry picked from a931ad47a8623163a29d898224d8a8c1177ffdaf)
-
-Resolves: #1139223
----
- man/systemd.resource-control.xml      | 14 ++++++++++++
- src/core/cgroup.c                     | 19 +++++++++++++++--
- src/core/cgroup.h                     |  2 ++
- src/core/dbus-cgroup.c                | 40 +++++++++++++++++++++++++++++++++++
- src/core/execute.c                    | 23 +++++++++++++++++---
- src/core/execute.h                    |  2 ++
- src/core/load-fragment-gperf.gperf.m4 |  3 ++-
- src/core/mount.c                      |  1 +
- src/core/service.c                    |  1 +
- src/core/socket.c                     |  1 +
- src/core/swap.c                       |  1 +
- src/machine/machined-dbus.c           | 10 +++++++++
- src/shared/cgroup-util.h              |  3 ++-
- units/systemd-nspawn@.service.in      |  1 +
- 14 files changed, 114 insertions(+), 7 deletions(-)
-
-diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml
-index 8688905..3748c0c 100644
---- a/man/systemd.resource-control.xml
-+++ b/man/systemd.resource-control.xml
-@@ -327,6 +327,20 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>.
-         </listitem>
-       </varlistentry>
- 
-+      <varlistentry>
-+        <term><varname>Delegate=</varname></term>
-+
-+        <listitem>
-+          <para>Turns on delegation of further resource control
-+          partitioning to processes of the unit. For unpriviliged
-+          services (i.e. those using the <varname>User=</varname>
-+          setting) this allows processes to create a subhierarchy
-+          beneath its control group path. For priviliged services and
-+          scopes this ensures the processes will have all control
-+          group controllers enabled.</para>
-+        </listitem>
-+      </varlistentry>
-+
-     </variablelist>
-   </refsect1>
- 
-diff --git a/src/core/cgroup.c b/src/core/cgroup.c
-index c215a86..443937b 100644
---- a/src/core/cgroup.c
-+++ b/src/core/cgroup.c
-@@ -94,14 +94,16 @@ void cgroup_context_dump(CGroupContext *c, FILE* f, const char *prefix) {
-                 "%sCPUShares=%lu\n"
-                 "%sBlockIOWeight=%lu\n"
-                 "%sMemoryLimit=%" PRIu64 "\n"
--                "%sDevicePolicy=%s\n",
-+                "%sDevicePolicy=%s\n"
-+                "%sDelegate=%s\n",
-                 prefix, yes_no(c->cpu_accounting),
-                 prefix, yes_no(c->blockio_accounting),
-                 prefix, yes_no(c->memory_accounting),
-                 prefix, c->cpu_shares,
-                 prefix, c->blockio_weight,
-                 prefix, c->memory_limit,
--                prefix, cgroup_device_policy_to_string(c->device_policy));
-+                prefix, cgroup_device_policy_to_string(c->device_policy),
-+                prefix, yes_no(c->delegate));
- 
-         LIST_FOREACH(device_allow, a, c->device_allow)
-                 fprintf(f,
-@@ -342,6 +344,19 @@ static CGroupControllerMask unit_get_cgroup_mask(Unit *u) {
-         if (!c)
-                 return 0;
- 
-+        /* If delegation is turned on, then turn on all cgroups,
-+         * unless the process we fork into it is known to drop
-+         * privileges anyway, and shouldn't get access to the
-+         * controllers anyway. */
-+
-+        if (c->delegate) {
-+                ExecContext *e;
-+
-+                e = unit_get_exec_context(u);
-+                if (!e || exec_context_maintains_privileges(e))
-+                        return _CGROUP_CONTROLLER_MASK_ALL;
-+        }
-+
-         return cgroup_context_get_mask(c);
- }
- 
-diff --git a/src/core/cgroup.h b/src/core/cgroup.h
-index 0a079e9..d00bcac 100644
---- a/src/core/cgroup.h
-+++ b/src/core/cgroup.h
-@@ -80,6 +80,8 @@ struct CGroupContext {
- 
-         CGroupDevicePolicy device_policy;
-         LIST_HEAD(CGroupDeviceAllow, device_allow);
-+
-+        bool delegate;
- };
- 
- #include "unit.h"
-diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
-index 9ebcad9..a13c869 100644
---- a/src/core/dbus-cgroup.c
-+++ b/src/core/dbus-cgroup.c
-@@ -124,6 +124,7 @@ static int bus_cgroup_append_device_allow(DBusMessageIter *i, const char *proper
- }
- 
- const BusProperty bus_cgroup_context_properties[] = {
-+        { "Delegate",                bus_property_append_bool,            "b",     offsetof(CGroupContext, delegate)           },
-         { "CPUAccounting",           bus_property_append_bool,            "b",     offsetof(CGroupContext, cpu_accounting)     },
-         { "CPUShares",               bus_property_append_ul,              "t",     offsetof(CGroupContext, cpu_shares)         },
-         { "BlockIOAccounting",       bus_property_append_bool,            "b",     offsetof(CGroupContext, blockio_accounting) },
-@@ -138,6 +139,38 @@ const BusProperty bus_cgroup_context_properties[] = {
-         {}
- };
- 
-+static int bus_cgroup_set_transient_property(
-+                Unit *u,
-+                CGroupContext *c,
-+                const char *name,
-+                DBusMessageIter *i,
-+                UnitSetPropertiesMode mode,
-+                DBusError *error) {
-+
-+        assert(u);
-+        assert(c);
-+        assert(name);
-+        assert(i);
-+
-+        if (streq(name, "Delegate")) {
-+
-+                if (dbus_message_iter_get_arg_type(i) != DBUS_TYPE_BOOLEAN)
-+                        return -EINVAL;
-+
-+                if (mode != UNIT_CHECK) {
-+                        dbus_bool_t b;
-+
-+                        dbus_message_iter_get_basic(i, &b);
-+                        c->delegate = b;
-+                        unit_write_drop_in_private(u, mode, name, b ? "Delegate=yes" : "Delegate=no");
-+                }
-+
-+                return 1;
-+        }
-+
-+        return 0;
-+}
-+
- int bus_cgroup_set_property(
-                 Unit *u,
-                 CGroupContext *c,
-@@ -550,5 +583,12 @@ int bus_cgroup_set_property(
-                 return 1;
-         }
- 
-+        if (u->transient && u->load_state == UNIT_STUB) {
-+                int r;
-+                r = bus_cgroup_set_transient_property(u, c, name, i, mode, error);
-+                if (r != 0)
-+                        return r;
-+        }
-+
-         return 0;
- }
-diff --git a/src/core/execute.c b/src/core/execute.c
-index 06713cc..d814c39 100644
---- a/src/core/execute.c
-+++ b/src/core/execute.c
-@@ -1042,6 +1042,7 @@ int exec_spawn(ExecCommand *command,
-                bool selinux_context_net,
-                CGroupControllerMask cgroup_supported,
-                const char *cgroup_path,
-+               bool cgroup_delegate,
-                const char *unit_id,
-                int idle_pipe[4],
-                pid_t *ret) {
-@@ -1306,8 +1307,10 @@ int exec_spawn(ExecCommand *command,
-                         }
-                 }
- 
--#ifdef HAVE_PAM
--                if (cgroup_path && context->user && context->pam_name) {
-+                /* If delegation is enabled we'll pass ownership of the cgroup
-+                 * (but only in systemd's own controller hierarchy!) to the
-+                 * user of the new process. */
-+               if (cgroup_path && context->user && cgroup_delegate) {
-                         err = cg_set_task_access(SYSTEMD_CGROUP_CONTROLLER, cgroup_path, 0644, uid, gid);
-                         if (err < 0) {
-                                 r = EXIT_CGROUP;
-@@ -1321,7 +1324,6 @@ int exec_spawn(ExecCommand *command,
-                                 goto fail_child;
-                         }
-                 }
--#endif
- 
-                 if (apply_permissions) {
-                         err = enforce_groups(context, username, gid);
-@@ -2116,6 +2118,21 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) {
- 
- }
- 
-+bool exec_context_maintains_privileges(ExecContext *c) {
-+        assert(c);
-+
-+        /* Returns true if the process forked off would run under
-+         * an unchanged UID or as root. */
-+
-+        if (!c->user)
-+                return true;
-+
-+        if (streq(c->user, "root") || streq(c->user, "0"))
-+                return true;
-+
-+        return false;
-+}
-+
- void exec_status_start(ExecStatus *s, pid_t pid) {
-         assert(s);
- 
-diff --git a/src/core/execute.h b/src/core/execute.h
-index b66bd5f..03afdf3 100644
---- a/src/core/execute.h
-+++ b/src/core/execute.h
-@@ -177,6 +177,7 @@ int exec_spawn(ExecCommand *command,
-                bool selinux_context_net,
-                CGroupControllerMask cgroup_mask,
-                const char *cgroup_path,
-+               bool cgroup_delegate,
-                const char *unit_id,
-                int pipe_fd[2],
-                pid_t *ret);
-@@ -203,6 +204,7 @@ void exec_context_tty_reset(const ExecContext *context);
- int exec_context_load_environment(const ExecContext *c, const char *unit_id, char ***l);
- 
- bool exec_context_may_touch_console(ExecContext *c);
-+bool exec_context_maintains_privileges(ExecContext *c);
- void exec_context_serialize(const ExecContext *c, Unit *u, FILE *f);
- 
- void exec_status_start(ExecStatus *s, pid_t pid);
-diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4
-index ee7cd5d..c6eb757 100644
---- a/src/core/load-fragment-gperf.gperf.m4
-+++ b/src/core/load-fragment-gperf.gperf.m4
-@@ -96,7 +96,8 @@ $1.BlockIOAccounting,            config_parse_bool,                  0,
- $1.BlockIOWeight,                config_parse_blockio_weight,        0,                             offsetof($1, cgroup_context)
- $1.BlockIODeviceWeight,          config_parse_blockio_device_weight, 0,                             offsetof($1, cgroup_context)
- $1.BlockIOReadBandwidth,         config_parse_blockio_bandwidth,     0,                             offsetof($1, cgroup_context)
--$1.BlockIOWriteBandwidth,        config_parse_blockio_bandwidth,     0,                             offsetof($1, cgroup_context)'
-+$1.BlockIOWriteBandwidth,        config_parse_blockio_bandwidth,     0,                             offsetof($1, cgroup_context)
-+$1.Delegate,                     config_parse_bool,                  0,                             offsetof($1, cgroup_context.delegate)'
- )m4_dnl
- Unit.Description,                config_parse_unit_string_printf,    0,                             offsetof(Unit, description)
- Unit.Documentation,              config_parse_documentation,         0,                             offsetof(Unit, documentation)
-diff --git a/src/core/mount.c b/src/core/mount.c
-index bbceb92..a9cd28b 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -794,6 +794,7 @@ static int mount_spawn(Mount *m, ExecCommand *c, pid_t *_pid) {
-                        false,
-                        UNIT(m)->manager->cgroup_supported,
-                        UNIT(m)->cgroup_path,
-+                       m->cgroup_context.delegate,
-                        UNIT(m)->id,
-                        NULL,
-                        &pid);
-diff --git a/src/core/service.c b/src/core/service.c
-index 635a953..5fd69cf 100644
---- a/src/core/service.c
-+++ b/src/core/service.c
-@@ -1870,6 +1870,7 @@ static int service_spawn(
-                        s->socket_fd_selinux_context_net,
-                        UNIT(s)->manager->cgroup_supported,
-                        path,
-+                       s->cgroup_context.delegate,
-                        UNIT(s)->id,
-                        s->type == SERVICE_IDLE ? UNIT(s)->manager->idle_pipe : NULL,
-                        &pid);
-diff --git a/src/core/socket.c b/src/core/socket.c
-index 1a91700..f7fffbe 100644
---- a/src/core/socket.c
-+++ b/src/core/socket.c
-@@ -1237,6 +1237,7 @@ static int socket_spawn(Socket *s, ExecCommand *c, pid_t *_pid) {
-                        false,
-                        UNIT(s)->manager->cgroup_supported,
-                        UNIT(s)->cgroup_path,
-+                       s->cgroup_context.delegate,
-                        UNIT(s)->id,
-                        NULL,
-                        &pid);
-diff --git a/src/core/swap.c b/src/core/swap.c
-index 36ef88b..152a080 100644
---- a/src/core/swap.c
-+++ b/src/core/swap.c
-@@ -592,6 +592,7 @@ static int swap_spawn(Swap *s, ExecCommand *c, pid_t *_pid) {
-                        false,
-                        UNIT(s)->manager->cgroup_supported,
-                        UNIT(s)->cgroup_path,
-+                       s->cgroup_context.delegate,
-                        UNIT(s)->id,
-                        NULL,
-                        &pid);
-diff --git a/src/machine/machined-dbus.c b/src/machine/machined-dbus.c
-index 22caadf..0cebdc5 100644
---- a/src/machine/machined-dbus.c
-+++ b/src/machine/machined-dbus.c
-@@ -739,9 +739,11 @@ int manager_start_scope(
-         DBusMessageIter iter, sub, sub2, sub3, sub4;
-         const char *timeout_stop_property = "TimeoutStopUSec";
-         const char *pids_property = "PIDs";
-+        const char *delegate_property = "Delegate";
-         uint64_t timeout = 500 * USEC_PER_MSEC;
-         const char *fail = "fail";
-         uint32_t u;
-+        dbus_bool_t b = 1;
-         int r;
- 
-         assert(manager);
-@@ -814,6 +816,14 @@ int manager_start_scope(
-             !dbus_message_iter_close_container(&sub, &sub2))
-                 return log_oom();
- 
-+        if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) ||
-+            !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &delegate_property) ||
-+            !dbus_message_iter_open_container(&sub2, DBUS_TYPE_VARIANT, "b", &sub3) ||
-+            !dbus_message_iter_append_basic(&sub3, DBUS_TYPE_BOOLEAN, &b) ||
-+            !dbus_message_iter_close_container(&sub2, &sub3) ||
-+            !dbus_message_iter_close_container(&sub, &sub2))
-+                return log_oom();
-+
-         if (more_properties) {
-                 r = copy_many_fields(&sub, more_properties);
-                 if (r < 0)
-diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h
-index 0963450..0608b9a 100644
---- a/src/shared/cgroup-util.h
-+++ b/src/shared/cgroup-util.h
-@@ -34,7 +34,8 @@ typedef enum CGroupControllerMask {
-         CGROUP_CPUACCT = 2,
-         CGROUP_BLKIO = 4,
-         CGROUP_MEMORY = 8,
--        CGROUP_DEVICE = 16
-+        CGROUP_DEVICE = 16,
-+        _CGROUP_CONTROLLER_MASK_ALL = 31
- } CGroupControllerMask;
- 
- /*
-diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in
-index 8e00736..bdfa89f 100644
---- a/units/systemd-nspawn@.service.in
-+++ b/units/systemd-nspawn@.service.in
-@@ -12,6 +12,7 @@ Documentation=man:systemd-nspawn(1)
- [Service]
- ExecStart=@bindir@/systemd-nspawn -bjD /var/lib/container/%i
- Type=notify
-+Delegate=yes
- 
- [Install]
- WantedBy=multi-user.target
diff --git a/SOURCES/0377-core-don-t-migrate-PIDs-for-units-that-may-contain-s.patch b/SOURCES/0377-core-don-t-migrate-PIDs-for-units-that-may-contain-s.patch
deleted file mode 100644
index c2bbe4b..0000000
--- a/SOURCES/0377-core-don-t-migrate-PIDs-for-units-that-may-contain-s.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 4d554c7c1b5373f854cdfd3b8c7d6804225c752e Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Wed, 10 Dec 2014 20:38:24 +0100
-Subject: [PATCH] core: don't migrate PIDs for units that may contain
- subcgroups, do this only for leaf units
-
-Otherwise a slice or delegation unit might move PIDs around ignoring the
-fact that it is attached to a subcgroup.
-
-(cherry picked from commit 0cd385d31814c8c1bc0c81d11ef321036b8b0921)
-
-Resolves: #1139223
----
- src/core/cgroup.c | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/src/core/cgroup.c b/src/core/cgroup.c
-index 443937b..5163ee4 100644
---- a/src/core/cgroup.c
-+++ b/src/core/cgroup.c
-@@ -392,11 +392,16 @@ static CGroupControllerMask unit_get_siblings_mask(Unit *u) {
- 
- static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) {
-         _cleanup_free_ char *path;
-+        CGroupContext *c;
-         int r;
-         bool was_in_hash = false;
- 
-         assert(u);
- 
-+        c = unit_get_cgroup_context(u);
-+        if (!c)
-+                return 0;
-+
-         path = unit_default_cgroup_path(u);
-         if (!path)
-                 return log_oom();
-@@ -416,8 +421,10 @@ static int unit_create_cgroups(Unit *u, CGroupControllerMask mask) {
-         if (r < 0)
-                 log_error("Failed to create cgroup %s: %s", path, strerror(-r));
- 
--        /* Then, possibly move things over */
--        if (u->cgroup_path) {
-+        /* Then, possibly move things over, but not if
-+         * subgroups may contain processes, which is the case
-+         * for slice and delegation units. */
-+        if (u->cgroup_path && u->type != UNIT_SLICE && !c->delegate) {
-                 r = cg_migrate_everywhere(u->manager->cgroup_supported, u->cgroup_path, path);
-                 if (r < 0)
-                         log_error("Failed to migrate cgroup from %s to %s: %s",
diff --git a/SOURCES/0378-mount-use-libmount-to-enumerate-proc-self-mountinfo.patch b/SOURCES/0378-mount-use-libmount-to-enumerate-proc-self-mountinfo.patch
deleted file mode 100644
index 9c76eac..0000000
--- a/SOURCES/0378-mount-use-libmount-to-enumerate-proc-self-mountinfo.patch
+++ /dev/null
@@ -1,204 +0,0 @@
-From 53b2695b96c6e8717a375cc2a17fcc4384d04790 Mon Sep 17 00:00:00 2001
-From: Chris Leech <cleech@redhat.com>
-Date: Sun, 23 Nov 2014 20:33:37 -0800
-Subject: [PATCH] mount: use libmount to enumerate /proc/self/mountinfo
-
-This lets libmount add in user options from /run/mount/utab, like
-_netdev which is needed to get proper ordering against remote-fs.target
-
-Conflicts:
-	Makefile.am
-	README
-	configure.ac
-	src/core/mount.c
-
-(cherry-picked from 8d3ae2bd4c9bf9fc2e57f7b3776325a1c750ca30)
-
-Related: #1161417
----
- .travis.yml      |  2 +-
- Makefile.am      |  4 +++-
- README           |  1 +
- configure.ac     | 10 +++++++++
- src/core/mount.c | 65 ++++++++++++++++++++++++++------------------------------
- 5 files changed, 45 insertions(+), 37 deletions(-)
-
-diff --git a/.travis.yml b/.travis.yml
-index 7e5251c..4ea2bc2 100644
---- a/.travis.yml
-+++ b/.travis.yml
-@@ -3,7 +3,7 @@ compiler:
-   - gcc
- before_install:
-  - sudo apt-get update -qq
-- - sudo apt-get install autotools-dev automake autoconf libtool libdbus-1-dev libcap-dev libblkid-dev libpam-dev libcryptsetup-dev libaudit-dev libacl1-dev libattr1-dev libselinux-dev liblzma-dev libgcrypt-dev libqrencode-dev libmicrohttpd-dev gtk-doc-tools gperf python2.7-dev
-+ - sudo apt-get install autotools-dev automake autoconf libtool libdbus-1-dev libcap-dev libblkid-dev libmount-dev libpam-dev libcryptsetup-dev libaudit-dev libacl1-dev libattr1-dev libselinux-dev liblzma-dev libgcrypt-dev libqrencode-dev libmicrohttpd-dev gtk-doc-tools gperf python2.7-dev
- script: ./autogen.sh && ./configure --enable-gtk-doc --enable-gtk-doc-pdf && make V=1 && sudo ./systemd-machine-id-setup && make check && make distcheck
- after_failure: cat test-suite.log
- notifications:
-diff --git a/Makefile.am b/Makefile.am
-index faf2a32..0891bca 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -997,6 +997,7 @@ libsystemd_core_la_CFLAGS = \
- 	$(PAM_CFLAGS) \
- 	$(AUDIT_CFLAGS) \
- 	$(KMOD_CFLAGS) \
-+	$(MOUNT_CFLAGS) \
- 	-pthread
- 
- libsystemd_core_la_LIBADD = \
-@@ -1013,7 +1014,8 @@ libsystemd_core_la_LIBADD = \
- 	$(PAM_LIBS) \
- 	$(AUDIT_LIBS) \
- 	$(CAP_LIBS) \
--	$(KMOD_LIBS)
-+	$(KMOD_LIBS) \
-+	$(MOUNT_LIBS)
- 
- src/core/load-fragment-gperf-nulstr.c: src/core/load-fragment-gperf.gperf
- 	$(AM_V_at)$(MKDIR_P) $(dir $@)
-diff --git a/README b/README
-index b39cd37..42487dd 100644
---- a/README
-+++ b/README
-@@ -94,6 +94,7 @@ REQUIREMENTS:
- 
-         dbus >= 1.4.0
-         libcap
-+        libmount >= 2.20 (from util-linux)
-         libblkid >= 2.20 (from util-linux) (optional)
-         libkmod >= 14 (optional)
-         PAM >= 1.1.2 (optional)
-diff --git a/configure.ac b/configure.ac
-index 4f26092..b7dfc5f 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -292,6 +292,15 @@ fi
- AM_CONDITIONAL(HAVE_BLKID, [test "$have_blkid" = "yes"])
- 
- # ------------------------------------------------------------------------------
-+have_libmount=no
-+PKG_CHECK_MODULES(MOUNT, [ mount >= 2.20 ],
-+        [AC_DEFINE(HAVE_LIBMOUNT, 1, [Define if libmount is available]) have_libmount=yes], have_libmount=no)
-+if test "x$have_libmount" = xno; then
-+        AC_MSG_ERROR([*** libmount support required but libraries not found])
-+fi
-+AM_CONDITIONAL(HAVE_LIBMOUNT, [test "$have_libmount" = "yes"])
-+
-+# ------------------------------------------------------------------------------
- have_ima=yes
- AC_ARG_ENABLE([ima], AS_HELP_STRING([--disable-ima],[Disable optional IMA support]),
-                 [case "${enableval}" in
-@@ -1046,6 +1055,7 @@ AC_MSG_RESULT([
-         efi:                     ${have_efi}
-         kmod:                    ${have_kmod}
-         blkid:                   ${have_blkid}
-+        libmount:                ${have_libmount}
-         nss-myhostname:          ${have_myhostname}
-         gudev:                   ${enable_gudev}
-         gintrospection:          ${enable_introspection}
-diff --git a/src/core/mount.c b/src/core/mount.c
-index bbceb92..d78269c 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -24,6 +24,7 @@
- #include <mntent.h>
- #include <sys/epoll.h>
- #include <signal.h>
-+#include <libmount.h>
- 
- #include "manager.h"
- #include "unit.h"
-@@ -1563,55 +1564,47 @@ fail:
-         return r;
- }
- 
-+static inline void mnt_free_table_p(struct libmnt_table **tb) {
-+        mnt_free_table(*tb);
-+}
-+
-+static inline void mnt_free_iter_p(struct libmnt_iter **itr) {
-+        mnt_free_iter(*itr);
-+}
-+
- static int mount_load_proc_self_mountinfo(Manager *m, bool set_flags) {
-+        _cleanup_(mnt_free_table_p) struct libmnt_table *tb = NULL;
-+        _cleanup_(mnt_free_iter_p) struct libmnt_iter *itr = NULL;
-+        struct libmnt_fs *fs;
-         int r = 0;
--        unsigned i;
- 
-         assert(m);
- 
--        rewind(m->proc_self_mountinfo);
-+        tb = mnt_new_table();
-+        itr = mnt_new_iter(MNT_ITER_FORWARD);
-+        if (!tb || !itr)
-+                return log_oom();
- 
--        for (i = 1;; i++) {
--                _cleanup_free_ char *device = NULL, *path = NULL, *options = NULL, *options2 = NULL, *fstype = NULL, *d = NULL, *p = NULL, *o = NULL;
--                int k;
-+        mnt_table_parse_mtab(tb, NULL);
-+        if (r)
-+                return r;
- 
--                k = fscanf(m->proc_self_mountinfo,
--                           "%*s "       /* (1) mount id */
--                           "%*s "       /* (2) parent id */
--                           "%*s "       /* (3) major:minor */
--                           "%*s "       /* (4) root */
--                           "%ms "       /* (5) mount point */
--                           "%ms"        /* (6) mount options */
--                           "%*[^-]"     /* (7) optional fields */
--                           "- "         /* (8) separator */
--                           "%ms "       /* (9) file system type */
--                           "%ms"        /* (10) mount source */
--                           "%ms"        /* (11) mount options 2 */
--                           "%*[^\n]",   /* some rubbish at the end */
--                           &path,
--                           &options,
--                           &fstype,
--                           &device,
--                           &options2);
--
--                if (k == EOF)
--                        break;
--
--                if (k != 5) {
--                        log_warning("Failed to parse /proc/self/mountinfo:%u.", i);
--                        continue;
--                }
-+        while (mnt_table_next_fs(tb, itr, &fs) == 0) {
-+                const char *device, *path, *options, *fstype;
-+                _cleanup_free_ const char *d = NULL, *p = NULL;
-+                int k;
- 
--                o = strjoin(options, ",", options2, NULL);
--                if (!o)
--                        return log_oom();
-+                device = mnt_fs_get_source(fs);
-+                path = mnt_fs_get_target(fs);
-+                options = mnt_fs_get_options(fs);
-+                fstype = mnt_fs_get_fstype(fs);
- 
-                 d = cunescape(device);
-                 p = cunescape(path);
-                 if (!d || !p)
-                         return log_oom();
- 
--                k = mount_add_one(m, d, p, o, fstype, 0, set_flags);
-+                k = mount_add_one(m, d, p, options, fstype, 0, set_flags);
-                 if (k < 0)
-                         r = k;
-         }
-@@ -1632,6 +1625,8 @@ static int mount_enumerate(Manager *m) {
-         int r;
-         assert(m);
- 
-+        mnt_init_debug(0);
-+
-         if (!m->proc_self_mountinfo) {
-                 struct epoll_event ev = {
-                         .events = EPOLLPRI,
diff --git a/SOURCES/0379-mount-monitor-for-utab-changes-with-inotify.patch b/SOURCES/0379-mount-monitor-for-utab-changes-with-inotify.patch
deleted file mode 100644
index 54f4c80..0000000
--- a/SOURCES/0379-mount-monitor-for-utab-changes-with-inotify.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-From 3c567125dd6e3f0f3a460d79701554ea4198c07b Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 18 Dec 2014 14:13:26 +0100
-Subject: [PATCH] mount: monitor for utab changes with inotify
-
-Parsing the mount table with libmount races against the mount command,
-which will handle the actual mounting before updating utab.  This means
-the poll event on /proc/self/mountinfo can kick of a reparse in systemd
-before the utab information is available.
-
-This change adds in an additional event source using inotify to watch
-for changes to utab.  It only watches for IN_MOVED_TO events, matching
-libmount behavior of always overwriting this file using rename(2).
-
-This does add a second pass through the mount table parsing when utab is
-updated.
-
-(based-on befb6d54948480f836d53d633bef27e3505818c1)
-
-Related: #1161417
----
- src/core/manager.c |  3 ++-
- src/core/manager.h |  2 ++
- src/core/mount.c   | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++---
- src/core/mount.h   |  2 +-
- src/shared/util.h  |  7 +++++
- 5 files changed, 88 insertions(+), 5 deletions(-)
-
-diff --git a/src/core/manager.c b/src/core/manager.c
-index e48ea36..b0772ba 100644
---- a/src/core/manager.c
-+++ b/src/core/manager.c
-@@ -1732,8 +1732,9 @@ static int process_event(Manager *m, struct epoll_event *ev) {
-         }
- 
-         case WATCH_MOUNT:
-+        case WATCH_MOUNT_UTAB:
-                 /* Some mount table change, intended for the mount subsystem */
--                mount_fd_event(m, ev->events);
-+                mount_fd_event(m, w, ev->events);
-                 break;
- 
-         case WATCH_SWAP:
-diff --git a/src/core/manager.h b/src/core/manager.h
-index 0133ea5..af66598 100644
---- a/src/core/manager.h
-+++ b/src/core/manager.h
-@@ -58,6 +58,7 @@ enum WatchType {
-         WATCH_UNIT_TIMER,
-         WATCH_JOB_TIMER,
-         WATCH_MOUNT,
-+        WATCH_MOUNT_UTAB,
-         WATCH_SWAP,
-         WATCH_UDEV,
-         WATCH_DBUS_WATCH,
-@@ -178,6 +179,7 @@ struct Manager {
-         /* Data specific to the mount subsystem */
-         FILE *proc_self_mountinfo;
-         Watch mount_watch;
-+        Watch mount_watch_utab;
- 
-         /* Data specific to the swap filesystem */
-         FILE *proc_swaps;
-diff --git a/src/core/mount.c b/src/core/mount.c
-index d78269c..efa46da 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -25,6 +25,7 @@
- #include <sys/epoll.h>
- #include <signal.h>
- #include <libmount.h>
-+#include <sys/inotify.h>
- 
- #include "manager.h"
- #include "unit.h"
-@@ -1619,6 +1620,11 @@ static void mount_shutdown(Manager *m) {
-                 fclose(m->proc_self_mountinfo);
-                 m->proc_self_mountinfo = NULL;
-         }
-+
-+        if (m->mount_watch_utab.fd) {
-+                close_nointr(m->mount_watch_utab.fd);
-+                m->mount_watch_utab.fd=0;
-+        }
- }
- 
- static int mount_enumerate(Manager *m) {
-@@ -1644,6 +1650,35 @@ static int mount_enumerate(Manager *m) {
-                         return -errno;
-         }
- 
-+        if (!m->mount_watch_utab.fd) {
-+
-+                struct epoll_event ev = {
-+                        .events = EPOLLIN,
-+                        .data.ptr = &m->mount_watch_utab,
-+                };
-+
-+                m->mount_watch_utab.fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC);
-+                if (m->mount_watch_utab.fd < 0) {
-+                        r = -errno;
-+                        goto fail;
-+                }
-+
-+                (void) mkdir_p_label("/run/mount", 0755);
-+
-+                r = inotify_add_watch(m->mount_watch_utab.fd, "/run/mount", IN_MOVED_TO);
-+                if (r < 0) {
-+                        r = -errno;
-+                        goto fail;
-+                }
-+
-+                m->mount_watch_utab.type = WATCH_MOUNT_UTAB;
-+
-+                if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->mount_watch_utab.fd, &ev) < 0) {
-+                        r = -errno;
-+                        goto fail;
-+                }
-+        }
-+
-         r = mount_load_proc_self_mountinfo(m, false);
-         if (r < 0)
-                 goto fail;
-@@ -1655,16 +1690,54 @@ fail:
-         return r;
- }
- 
--void mount_fd_event(Manager *m, int events) {
-+void mount_fd_event(Manager *m, Watch *w, int events) {
-         Unit *u;
-         int r;
- 
-         assert(m);
--        assert(events & EPOLLPRI);
-+        assert(w);
-+        assert(events & (EPOLLPRI|EPOLLIN));
- 
-         /* The manager calls this for every fd event happening on the
-          * /proc/self/mountinfo file, which informs us about mounting
--         * table changes */
-+         * table changes
-+         * This may also be called for /run/mount events */
-+
-+        if (w->type == WATCH_MOUNT_UTAB) {
-+                bool rescan = false;
-+
-+                /* FIXME: We *really* need to replace this with
-+                 * libmount's own API for this, we should not hardcode
-+                 * internal behaviour of libmount here. */
-+
-+                for (;;) {
-+                        uint8_t buffer[INOTIFY_EVENT_MAX] _alignas_(struct inotify_event);
-+                        struct inotify_event *e;
-+                        ssize_t l;
-+
-+                        l = read(w->fd, buffer, sizeof(buffer));
-+                        if (l < 0) {
-+                                if (errno == EAGAIN || errno == EINTR)
-+                                        break;
-+
-+                                log_error("Failed to read utab inotify: %s", strerror(errno));
-+                                break;
-+                        }
-+
-+                        FOREACH_INOTIFY_EVENT(e, buffer, l) {
-+                                /* Only care about changes to utab,
-+                                 * but we have to monitor the
-+                                 * directory to reliably get
-+                                 * notifications about when utab is
-+                                 * replaced using rename(2) */
-+                                if ((e->mask & IN_Q_OVERFLOW) || streq(e->name, "utab"))
-+                                        rescan = true;
-+                        }
-+                }
-+
-+                if (!rescan)
-+                        return;
-+        }
- 
-         r = mount_load_proc_self_mountinfo(m, true);
-         if (r < 0) {
-diff --git a/src/core/mount.h b/src/core/mount.h
-index 7cd4320..df0e541 100644
---- a/src/core/mount.h
-+++ b/src/core/mount.h
-@@ -113,7 +113,7 @@ struct Mount {
- 
- extern const UnitVTable mount_vtable;
- 
--void mount_fd_event(Manager *m, int events);
-+void mount_fd_event(Manager *m, Watch *w, int events);
- 
- const char* mount_state_to_string(MountState i) _const_;
- MountState mount_state_from_string(const char *s) _pure_;
-diff --git a/src/shared/util.h b/src/shared/util.h
-index d68f385..c5ef8b6 100644
---- a/src/shared/util.h
-+++ b/src/shared/util.h
-@@ -791,3 +791,10 @@ static inline void qsort_safe(void *base, size_t nmemb, size_t size,
-                 qsort(base, nmemb, size, compar);
-         }
- }
-+
-+#define INOTIFY_EVENT_MAX (sizeof(struct inotify_event) + NAME_MAX + 1)
-+
-+#define FOREACH_INOTIFY_EVENT(e, buffer, sz) \
-+        for ((e) = (struct inotify_event*) (buffer);    \
-+             (uint8_t*) (e) < (uint8_t*) (buffer) + (sz); \
-+             (e) = (struct inotify_event*) ((uint8_t*) (e) + sizeof(struct inotify_event) + (e)->len))
diff --git a/SOURCES/0380-mount-add-remote-fs-dependencies-if-needed-after-cha.patch b/SOURCES/0380-mount-add-remote-fs-dependencies-if-needed-after-cha.patch
deleted file mode 100644
index 227a08d..0000000
--- a/SOURCES/0380-mount-add-remote-fs-dependencies-if-needed-after-cha.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From ebbcce68c7383217ad93537ef023e85b913d0478 Mon Sep 17 00:00:00 2001
-From: Chris Leech <cleech@redhat.com>
-Date: Sun, 23 Nov 2014 20:33:40 -0800
-Subject: [PATCH] mount: add remote-fs dependencies if needed after change
-
-This is an attempt to add it the remote-fs dependencies to a mount unit
-if the options change, like when the utab options are picked up after
-mountinfo has already been processed.  It just adds the remote-fs
-dependencies, leaving the local-fs ones in place.
-
-With this change I always get mount units with proper remote-fs
-dependencies when mounted with the _netdev option.
-
-(cherry-picked from a6d305f91d722e136c29222070efed5c5d8b120b)
-
-Resolves: #1161417
----
- src/core/mount.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/src/core/mount.c b/src/core/mount.c
-index efa46da..a7987bf 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -1499,6 +1499,19 @@ static int mount_add_one(
-                         }
-                 }
- 
-+                if (m->running_as == SYSTEMD_SYSTEM) {
-+                        const char* target;
-+
-+                        target = mount_needs_network(options, fstype) ?  SPECIAL_REMOTE_FS_TARGET : NULL;
-+                        /* _netdev option may have shown up late, or on a
-+                         * remount. Add remote-fs dependencies, even though
-+                         * local-fs ones may already be there */
-+                        if (target) {
-+                                unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
-+                                load_extras = true;
-+                        }
-+                }
-+
-                 if (u->load_state == UNIT_NOT_FOUND) {
-                         u->load_state = UNIT_LOADED;
-                         u->load_error = 0;
diff --git a/SOURCES/0381-mount-check-options-as-well-as-fstype-for-network-mo.patch b/SOURCES/0381-mount-check-options-as-well-as-fstype-for-network-mo.patch
deleted file mode 100644
index bba353f..0000000
--- a/SOURCES/0381-mount-check-options-as-well-as-fstype-for-network-mo.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 4971e2c8438da1a95cdc306e01e9a3c2349342ad Mon Sep 17 00:00:00 2001
-From: Chris Leech <cleech@redhat.com>
-Date: Sun, 23 Nov 2014 20:33:38 -0800
-Subject: [PATCH] mount: check options as well as fstype for network mounts
-
-When creating a new mount unit after an event on /proc/self/mountinfo,
-check the mount options as well as the fstype to determine if this is a
-remote mount that requires network access.
-
-Conflicts:
-	src/core/mount.c
-
-(cherry-picked from affc3d834347076e8616948978e70ed1fca84db4)
-
-Resolves: #1161417
----
- src/core/mount.c | 33 ++++++++++++++++++++-------------
- 1 file changed, 20 insertions(+), 13 deletions(-)
-
-diff --git a/src/core/mount.c b/src/core/mount.c
-index a7987bf..6c3c7be 100644
---- a/src/core/mount.c
-+++ b/src/core/mount.c
-@@ -75,18 +75,22 @@ static char* mount_test_option(const char *haystack, const char *needle) {
-         return hasmntopt(&me, needle);
- }
- 
--static bool mount_is_network(MountParameters *p) {
--        assert(p);
--
--        if (mount_test_option(p->options, "_netdev"))
-+static bool mount_needs_network(const char *options, const char *fstype) {
-+        if (mount_test_option(options, "_netdev"))
-                 return true;
- 
--        if (p->fstype && fstype_is_network(p->fstype))
-+        if (fstype && fstype_is_network(fstype))
-                 return true;
- 
-         return false;
- }
- 
-+static bool mount_is_network(MountParameters *p) {
-+        assert(p);
-+
-+        return mount_needs_network(p->options, p->fstype);
-+}
-+
- static bool mount_is_bind(MountParameters *p) {
-         assert(p);
- 
-@@ -1446,9 +1450,6 @@ static int mount_add_one(
- 
-         u = manager_get_unit(m, e);
-         if (!u) {
--                const char* const target =
--                        fstype_is_network(fstype) ? SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET;
--
-                 delete = true;
- 
-                 u = unit_new(m, sizeof(Mount));
-@@ -1475,14 +1476,20 @@ static int mount_add_one(
-                         goto fail;
-                 }
- 
--                r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
--                if (r < 0)
--                        goto fail;
- 
--                if (should_umount(MOUNT(u))) {
--                        r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
-+                if (m->running_as == SYSTEMD_SYSTEM) {
-+                        const char* target;
-+
-+                        target = mount_needs_network(options, fstype) ?  SPECIAL_REMOTE_FS_TARGET : SPECIAL_LOCAL_FS_TARGET;
-+                        r = unit_add_dependency_by_name(u, UNIT_BEFORE, target, NULL, true);
-                         if (r < 0)
-                                 goto fail;
-+
-+                        if (should_umount(MOUNT(u))) {
-+                                r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true);
-+                                if (r < 0)
-+                                        goto fail;
-+                        }
-                 }
- 
-                 unit_add_to_load_queue(u);
diff --git a/SOURCES/0382-rules-don-t-enable-usb-pm-for-Avocent-devices.patch b/SOURCES/0382-rules-don-t-enable-usb-pm-for-Avocent-devices.patch
deleted file mode 100644
index b2c5291..0000000
--- a/SOURCES/0382-rules-don-t-enable-usb-pm-for-Avocent-devices.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 35b8533914a82d2ee8a667ec2afac0499dcbfb28 Mon Sep 17 00:00:00 2001
-From: Tom Hirst <tom.hirst@ipe-systems.co.uk>
-Date: Wed, 25 Jun 2014 11:57:11 +0000
-Subject: [PATCH] rules: don't enable usb pm for Avocent devices
-
-The Avocent KVM over IP devices doesn't work correctly with USB power
-management enabled.
-
-(cherry-picked from 52fb538361053f8c4abce0e40cd0bae3d28ceb16)
-
-Resolves: #1155370
----
- rules/42-usb-hid-pm.rules | 4 ----
- 1 file changed, 4 deletions(-)
-
-diff --git a/rules/42-usb-hid-pm.rules b/rules/42-usb-hid-pm.rules
-index 3fd6e8a..483a781 100644
---- a/rules/42-usb-hid-pm.rules
-+++ b/rules/42-usb-hid-pm.rules
-@@ -11,10 +11,6 @@ ACTION=="add", SUBSYSTEM=="usb", ATTR{product}=="QEMU USB Mouse", ATTR{serial}==
- ACTION=="add", SUBSYSTEM=="usb", ATTR{product}=="QEMU USB Tablet", ATTR{serial}=="42", TEST=="power/control", ATTR{power/control}="auto"
- ACTION=="add", SUBSYSTEM=="usb", ATTR{product}=="QEMU USB Keyboard", ATTR{serial}=="42", TEST=="power/control", ATTR{power/control}="auto"
- 
--# Catch-all for Avocent HID devices. Keyed off interface in order to only
--# trigger on HID class devices.
--ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0624", ATTR{bInterfaceClass}=="03", TEST=="../power/control", ATTR{../power/control}="auto"
--
- # Dell DRAC 4
- ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="413c", ATTR{idProduct}=="2500", TEST=="power/control", ATTR{power/control}="auto"
- 
diff --git a/SOURCES/0383-shared-install-avoid-prematurely-rejecting-missing-u.patch b/SOURCES/0383-shared-install-avoid-prematurely-rejecting-missing-u.patch
deleted file mode 100644
index d524a12..0000000
--- a/SOURCES/0383-shared-install-avoid-prematurely-rejecting-missing-u.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From be49ecd6ee3af4aa83572ca413aa457058e3573d Mon Sep 17 00:00:00 2001
-From: Dave Reisner <dreisner@archlinux.org>
-Date: Thu, 30 Oct 2014 20:12:05 -0400
-Subject: [PATCH] shared/install: avoid prematurely rejecting "missing" units
-
-f7101b7368df copied some logic to prevent enabling masked units, but
-also added a check which causes attempts to enable templated units to
-fail. Since we know the logic beyond this check will properly handle
-units which truly do not exist, we can rely on the unit file state
-comparison to suffice for expressing the intent of f7101b7368df.
-
-ref: https://bugs.archlinux.org/task/42616
-
-(Cherry-picked from 0ffce503cd6e5a5ff5ba5cd1cc23684cfb8bb9e3)
-
-Resolves: #1199981
----
- src/shared/install.c | 8 +++-----
- 1 file changed, 3 insertions(+), 5 deletions(-)
-
-diff --git a/src/shared/install.c b/src/shared/install.c
-index 7a29798..13db732 100644
---- a/src/shared/install.c
-+++ b/src/shared/install.c
-@@ -1522,12 +1522,10 @@ int unit_file_enable(
-         STRV_FOREACH(i, files) {
-                 UnitFileState state;
- 
-+                /* We only want to know if this unit is masked, so we ignore
-+                 * errors from unit_file_get_state, deferring other checks.
-+                 * This allows templated units to be enabled on the fly. */
-                 state = unit_file_get_state(scope, root_dir, *i);
--                if (state < 0) {
--                        log_error("Failed to get unit file state for %s: %s", *i, strerror(-state));
--                        return state;
--                }
--
-                 if (state == UNIT_FILE_MASKED || state == UNIT_FILE_MASKED_RUNTIME) {
-                         log_error("Failed to enable unit: Unit %s is masked", *i);
-                         return -ENOTSUP;
diff --git a/SOURCES/0384-core-fix-enabling-units-via-their-absolute-paths.patch b/SOURCES/0384-core-fix-enabling-units-via-their-absolute-paths.patch
deleted file mode 100644
index 257ade4..0000000
--- a/SOURCES/0384-core-fix-enabling-units-via-their-absolute-paths.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From a13006e07ad1c8f3de577b8b64f22a0e044784e7 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Tue, 10 Feb 2015 10:34:20 +0100
-Subject: [PATCH] core: fix enabling units via their absolute paths
-
-In case when client requests enable but gives us full path to unit file we
-should call manager_load_unit with 2nd and 3rd argument swapped because we
-don't want to search for unit file in usual places but rather load it directly.
-
-Related: #1199981
----
- src/core/dbus-manager.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c
-index cebc730..f35f23b 100644
---- a/src/core/dbus-manager.c
-+++ b/src/core/dbus-manager.c
-@@ -1603,7 +1603,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 STRV_FOREACH(i, l) {
-                         Unit *u;
- 
--                        r = manager_load_unit(m, *i, NULL, NULL, &u);
-+                        r = path_is_absolute(*i) ? manager_load_unit(m, NULL, *i, NULL, &u) : manager_load_unit(m, *i, NULL, NULL, &u);
-                         if (r < 0) {
-                                 dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s does not exist.", *i);
-                                 return bus_send_error_reply(connection, message, &error, -ENOENT);
-@@ -1681,7 +1681,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
-                 STRV_FOREACH(i, l) {
-                         Unit *u;
- 
--                        r = manager_load_unit(m, *i, NULL, NULL, &u);
-+                        r = path_is_absolute(*i) ? manager_load_unit(m, NULL, *i, NULL, &u) : manager_load_unit(m, *i, NULL, NULL, &u);
-                         if (r < 0) {
-                                 dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s does not exist.", *i);
-                                 return bus_send_error_reply(connection, message, &error, -ENOENT);
diff --git a/SOURCES/0385-Revert-units-fix-BindsTo-logic-when-applied-relative.patch b/SOURCES/0385-Revert-units-fix-BindsTo-logic-when-applied-relative.patch
deleted file mode 100644
index a52830e..0000000
--- a/SOURCES/0385-Revert-units-fix-BindsTo-logic-when-applied-relative.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-From 1f4f34eb7592ec54f86040529c96d35efe97b219 Mon Sep 17 00:00:00 2001
-From: Michal Sekletar <msekleta@redhat.com>
-Date: Wed, 11 Mar 2015 11:29:40 +0100
-Subject: [PATCH] Revert "units: fix BindsTo= logic when applied relative to
- services with Type=oneshot"
-
-This reverts commit 469d48cf685bd0157fa44ff7ebd3bd0302746ab0.
-
-Resolves: #1203803
----
- src/core/unit.c | 48 ++++--------------------------------------------
- 1 file changed, 4 insertions(+), 44 deletions(-)
-
-diff --git a/src/core/unit.c b/src/core/unit.c
-index f221b9a..b51e351 100644
---- a/src/core/unit.c
-+++ b/src/core/unit.c
-@@ -1302,44 +1302,12 @@ static void unit_check_unneeded(Unit *u) {
-                 if (unit_active_or_pending(other))
-                         return;
- 
--        log_info_unit(u->id, "Unit %s is not needed anymore. Stopping.", u->id);
-+        log_info_unit(u->id, "Service %s is not needed anymore. Stopping.", u->id);
- 
-         /* Ok, nobody needs us anymore. Sniff. Then let's commit suicide */
-         manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
- }
- 
--static void unit_check_binds_to(Unit *u) {
--        bool stop = false;
--        Unit *other;
--        Iterator i;
--
--        assert(u);
--
--        if (u->job)
--                return;
--
--        if (unit_active_state(u) != UNIT_ACTIVE)
--                return;
--
--        SET_FOREACH(other, u->dependencies[UNIT_BINDS_TO], i) {
--                if (other->job)
--                        continue;
--
--                if (!UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other)))
--                        continue;
--
--                stop = true;
--        }
--
--        if (!stop)
--                return;
--
--        log_info_unit(u->id, "Unit %s is bound to inactive service. Stopping, too.", u->id);
--
--        /* A unit we need to run is gone. Sniff. Let's stop this. */
--        manager_add_job(u->manager, JOB_STOP, u, JOB_FAIL, true, NULL, NULL);
--}
--
- static void retroactively_start_dependencies(Unit *u) {
-         Iterator i;
-         Unit *other;
-@@ -1643,19 +1611,11 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su
-         manager_recheck_journal(m);
-         unit_trigger_notify(u);
- 
--        if (u->manager->n_reloading <= 0) {
--                /* Maybe we finished startup and are now ready for
--                 * being stopped because unneeded? */
-+        /* Maybe we finished startup and are now ready for being
-+         * stopped because unneeded? */
-+        if (u->manager->n_reloading <= 0)
-                 unit_check_unneeded(u);
- 
--                /* Maybe we finished startup, but something we needed
--                 * has vanished? Let's die then. (This happens when
--                 * something BindsTo= to a Type=oneshot unit, as these
--                 * units go directly from starting to inactive,
--                 * without ever entering started.) */
--                unit_check_binds_to(u);
--        }
--
-         unit_add_to_dbus_queue(u);
-         unit_add_to_gc_queue(u);
- }
diff --git a/SOURCES/0386-run-drop-mistakenly-committed-test-code.patch b/SOURCES/0386-run-drop-mistakenly-committed-test-code.patch
deleted file mode 100644
index 9ae34fa..0000000
--- a/SOURCES/0386-run-drop-mistakenly-committed-test-code.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 5fa9c2729f673aca07741506a5e490b58534ded8 Mon Sep 17 00:00:00 2001
-From: Lennart Poettering <lennart@poettering.net>
-Date: Fri, 31 Jan 2014 18:03:15 +0100
-Subject: [PATCH] run: drop mistakenly committed test code
-
-Conflicts:
-	src/run/run.c
-
-Resolves: #1220272
----
- src/run/run.c | 8 --------
- 1 file changed, 8 deletions(-)
-
-diff --git a/src/run/run.c b/src/run/run.c
-index 93e3f88..a6abead 100644
---- a/src/run/run.c
-+++ b/src/run/run.c
-@@ -315,14 +315,6 @@ static int start_transient_scope(
-         if (r < 0)
-                 return r;
- 
--        {
--                const char *unique_id;
--                sd_bus_get_unique_name(bus, &unique_id);
--                r = sd_bus_message_append(m, "(sv)", "Controller", "s", unique_id);
--                if (r < 0)
--                        return r;
--        }
--
-         r = sd_bus_message_append(m, "(sv)", "PIDs", "au", 1, (uint32_t) getpid());
-         if (r < 0)
-                 return r;
diff --git a/SOURCES/0387-cgroup-downgrade-log-messages-when-we-cannot-write-t.patch b/SOURCES/0387-cgroup-downgrade-log-messages-when-we-cannot-write-t.patch
deleted file mode 100644
index 6e60fa7..0000000
--- a/SOURCES/0387-cgroup-downgrade-log-messages-when-we-cannot-write-t.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-From 4557f90ba7c744e5240e6b494f1eb1ef66ae6ea6 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Mon, 11 May 2015 13:17:03 +0200
-Subject: [PATCH] cgroup: downgrade log messages when we cannot write to cgroup
- trees that are mounted read-only
-
-rhel-only (fixed in upstream differently)
-
-Resolves: #1220298
----
- src/core/cgroup.c | 13 +++++++------
- 1 file changed, 7 insertions(+), 6 deletions(-)
-
-diff --git a/src/core/cgroup.c b/src/core/cgroup.c
-index 5163ee4..71d64a1 100644
---- a/src/core/cgroup.c
-+++ b/src/core/cgroup.c
-@@ -188,7 +188,7 @@ static int whitelist_device(const char *path, const char *node, const char *acc)
- 
-         r = cg_set_attribute("devices", path, "devices.allow", buf);
-         if (r < 0)
--                log_warning("Failed to set devices.allow on %s: %s", path, strerror(-r));
-+                log_full(IN_SET(r, -ENOENT, -EROFS, -EINVAL) ? LOG_DEBUG : LOG_WARNING, "Failed to set devices.allow on %s: %s", path, strerror(-r));
- 
-         return r;
- }
-@@ -208,7 +208,8 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
-                 sprintf(buf, "%lu\n", c->cpu_shares);
-                 r = cg_set_attribute("cpu", path, "cpu.shares", buf);
-                 if (r < 0)
--                        log_warning("Failed to set cpu.shares on %s: %s", path, strerror(-r));
-+                        log_full(IN_SET(r, -ENOENT, -EROFS) ? LOG_DEBUG : LOG_WARNING, "Failed to set cpu.shares on %s: %s", path, strerror(-r));
-+
-         }
- 
-         if (mask & CGROUP_BLKIO) {
-@@ -221,7 +222,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
-                 sprintf(buf, "%lu\n", c->blockio_weight);
-                 r = cg_set_attribute("blkio", path, "blkio.weight", buf);
-                 if (r < 0)
--                        log_warning("Failed to set blkio.weight on %s: %s", path, strerror(-r));
-+                        log_full(IN_SET(r, -ENOENT, -EROFS) ? LOG_DEBUG : LOG_WARNING, "Failed to set blkio.weight on %s: %s", path, strerror(-r));
- 
-                 /* FIXME: no way to reset this list */
-                 LIST_FOREACH(device_weights, w, c->blockio_device_weights) {
-@@ -234,7 +235,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
-                         sprintf(buf, "%u:%u %lu", major(dev), minor(dev), w->weight);
-                         r = cg_set_attribute("blkio", path, "blkio.weight_device", buf);
-                         if (r < 0)
--                                log_error("Failed to set blkio.weight_device on %s: %s", path, strerror(-r));
-+                                log_full(IN_SET(r, -ENOENT, -EROFS) ? LOG_DEBUG : LOG_WARNING, "Failed to set blkio.weight_device on %s: %s", path, strerror(-r));
-                 }
- 
-                 /* FIXME: no way to reset this list */
-@@ -251,7 +252,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
-                         sprintf(buf, "%u:%u %" PRIu64 "\n", major(dev), minor(dev), b->bandwidth);
-                         r = cg_set_attribute("blkio", path, a, buf);
-                         if (r < 0)
--                                log_error("Failed to set %s on %s: %s", a, path, strerror(-r));
-+                                log_full(IN_SET(r, -ENOENT, -EROFS) ? LOG_DEBUG : LOG_WARNING, "Failed to set %s on %s: %s", a, path, strerror(-r));
-                 }
-         }
- 
-@@ -265,7 +266,7 @@ void cgroup_context_apply(CGroupContext *c, CGroupControllerMask mask, const cha
-                         r = cg_set_attribute("memory", path, "memory.limit_in_bytes", "-1");
- 
-                 if (r < 0)
--                        log_error("Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r));
-+                        log_full(IN_SET(r, -ENOENT, -EROFS) ? LOG_DEBUG : LOG_WARNING, "Failed to set memory.limit_in_bytes on %s: %s", path, strerror(-r));
-         }
- 
-         if (mask & CGROUP_DEVICE) {
diff --git a/SOURCES/0388-rules-load-sg-module.patch b/SOURCES/0388-rules-load-sg-module.patch
deleted file mode 100644
index 9165218..0000000
--- a/SOURCES/0388-rules-load-sg-module.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 6d5b6bff86bca5db72a859330a29783fc5676935 Mon Sep 17 00:00:00 2001
-From: Lukas Nykryn <lnykryn@redhat.com>
-Date: Thu, 21 May 2015 09:23:04 +0200
-Subject: [PATCH] rules: load sg module
-
-Revert of 09637f743414e2c36d6c5b032d77d76dbeb86b31
-RHEL-only
-
-Resolves: #1223340
----
- rules/40-redhat.rules | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/rules/40-redhat.rules b/rules/40-redhat.rules
-index 2b494e5..b14f8a9 100644
---- a/rules/40-redhat.rules
-+++ b/rules/40-redhat.rules
-@@ -1,3 +1,6 @@
- # do not edit this file, it will be overwritten on update
- 
- SUBSYSTEM=="cpu", ACTION=="add", TEST=="online", ATTR{online}=="0", ATTR{online}="1"
-+
-+# load SCSI generic (sg) driver
-+SUBSYSTEM=="scsi", ENV{DEVTYPE}=="scsi_device", TEST!="[module/sg]", RUN+="/sbin/modprobe -bv sg"
diff --git a/SOURCES/0389-machined-force-machined-to-dispatch-messages.patch b/SOURCES/0389-machined-force-machined-to-dispatch-messages.patch
deleted file mode 100644
index 8ebbf12..0000000
--- a/SOURCES/0389-machined-force-machined-to-dispatch-messages.patch
+++ /dev/null
@@ -1,95 +0,0 @@
-From 1ed560ffff6753d79f2f1da81447e5f8d3628ec1 Mon Sep 17 00:00:00 2001
-From: Alexander Solganik <solganik@gmail.com>
-Date: Wed, 29 Apr 2015 10:06:40 +0300
-Subject: [PATCH] machined: force machined to dispatch messages
-
-Fixes  https://bugzilla.redhat.com/show_bug.cgi?format=multiple&id=1172387.
-
-Machined works in the follwing way :
-
-loop :
-       1) perform GC (Note at the end)
-       2) read messages from DBUS and dispatch one
-       3) if more messages pending goto (1)
-       3) perform GC (NOTE at the end)
-       4) poll on DBUS fd
-       5) goto step 1
-
-This works fine, except that in step (3) and (1)
-there is a message send/reply receive of
- r = bus_method_call_with_reply(
-                        manager->bus,
-                        "org.freedesktop.systemd1",
-                        "/org/freedesktop/systemd1",
-                        "org.freedesktop.systemd1.Manager",
-                        "StopUnit",
-                        &reply,
-                        error,
-                        DBUS_TYPE_STRING, &unit,
-                        DBUS_TYPE_STRING, &fail,
-                        DBUS_TYPE_INVALID);
-
-which causes network layer to read/write messages to DBUS fd. In case that any
-other message gets in during this send/receive cycle it wont be processed till
-next stage (2) which will occur only in case that more messages are received
-by machined.
-
-Cherry-picked from: rhel-only
-Resolves: #1243401
----
- src/machine/machined.c | 8 ++++++--
- src/machine/machined.h | 2 +-
- 2 files changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/src/machine/machined.c b/src/machine/machined.c
-index ad804a1..531e7ad 100644
---- a/src/machine/machined.c
-+++ b/src/machine/machined.c
-@@ -243,20 +243,23 @@ fail:
-         return r;
- }
- 
--void manager_gc(Manager *m, bool drop_not_started) {
-+bool manager_gc(Manager *m, bool drop_not_started) {
-         Machine *machine;
-+        bool dbus_send_receive_performed = false;
- 
-         assert(m);
- 
-         while ((machine = m->machine_gc_queue)) {
-                 LIST_REMOVE(Machine, gc_queue, m->machine_gc_queue, machine);
-                 machine->in_gc_queue = false;
-+                dbus_send_receive_performed = true;
- 
-                 if (machine_check_gc(machine, drop_not_started) == 0) {
-                         machine_stop(machine);
-                         machine_free(machine);
-                 }
-         }
-+        return dbus_send_receive_performed;
- }
- 
- int manager_startup(Manager *m) {
-@@ -301,7 +304,8 @@ int manager_run(Manager *m) {
-                 if (dbus_connection_dispatch(m->bus) != DBUS_DISPATCH_COMPLETE)
-                         continue;
- 
--                manager_gc(m, true);
-+                if (manager_gc(m, true))
-+                       continue;
- 
-                 n = epoll_wait(m->epoll_fd, &event, 1, -1);
-                 if (n < 0) {
-diff --git a/src/machine/machined.h b/src/machine/machined.h
-index 780f516..3245e05 100644
---- a/src/machine/machined.h
-+++ b/src/machine/machined.h
-@@ -59,7 +59,7 @@ int manager_enumerate_machines(Manager *m);
- int manager_startup(Manager *m);
- int manager_run(Manager *m);
- 
--void manager_gc(Manager *m, bool drop_not_started);
-+bool manager_gc(Manager *m, bool drop_not_started);
- 
- int manager_get_machine_by_pid(Manager *m, pid_t pid, Machine **machine);
- 
diff --git a/SPECS/systemd.spec b/SPECS/systemd.spec
index 7d2e7c8..28af519 100644
--- a/SPECS/systemd.spec
+++ b/SPECS/systemd.spec
@@ -1,422 +1,291 @@
-%global _hardened_build 1
-
 # We ship a .pc file but don't want to have a dep on pkg-config. We
 # strip the automatically generated dep here and instead co-own the
 # directory.
 %global __requires_exclude pkg-config
+%global _hardened_build 1
 
 Name:           systemd
 Url:            http://www.freedesktop.org/wiki/Software/systemd
-Version:        208
-Release:        20%{?dist}.6
+Version:        219
+Release:        19%{?dist}
 # For a breakdown of the licensing, see README
 License:        LGPLv2+ and MIT and GPLv2+
 Summary:        A System and Service Manager
 
 Source0:        http://www.freedesktop.org/software/systemd/%{name}-%{version}.tar.xz
-# RHEL7 default preset policy
+# Preset policy is in rhel-release package
+# we are just disabling everything
 Source1:        99-default-disable.preset
-# SysV convert script.
-Source2:        systemd-sysv-convert
-# Stop-gap, just to ensure things work fine with rsyslog without having to change the package right-away
-Source3:        listen.conf
 # Prevent accidental removal of the systemd package
-Source4:        yum-protect-systemd.conf
+Source2:        yum-protect-systemd.conf
+# SysV convert script.
+Source3:        systemd-sysv-convert
 # ship /etc/rc.d/rc.local https://bugzilla.redhat.com/show_bug.cgi?id=968401
-Source5:        rc.local
+Source4:        rc.local
 #https://bugzilla.redhat.com/show_bug.cgi?id=1032711
-Source6:        60-alias-kmsg.rules
-
-# RHEL-specific:
-Patch0001: 0001-units-add-Install-section-to-tmp.mount.patch
-Patch0002: 0002-man-explain-NAME-in-systemctl-man-page.patch
-Patch0003: 0003-fix-lingering-references-to-var-lib-backlight-random.patch
-Patch0004: 0004-cryptsetup-fix-OOM-handling-when-parsing-mount-optio.patch
-Patch0005: 0005-journald-add-missing-error-check.patch
-Patch0006: 0006-bus-fix-potentially-uninitialized-memory-access.patch
-Patch0007: 0007-dbus-fix-return-value-of-dispatch_rqueue.patch
-Patch0008: 0008-modules-load-fix-error-handling.patch
-Patch0009: 0009-efi-never-call-qsort-on-potentially-NULL-arrays.patch
-Patch0010: 0010-strv-don-t-access-potentially-NULL-string-arrays.patch
-Patch0011: 0011-mkdir-pass-a-proper-function-pointer-to-mkdir_safe_i.patch
-Patch0012: 0012-tmpfiles.d-include-setgid-perms-for-run-log-journal.patch
-Patch0013: 0013-gpt-auto-generator-exit-immediately-if-in-container.patch
-Patch0014: 0014-systemd-order-remote-mounts-from-mountinfo-before-re.patch
-Patch0015: 0015-manager-when-verifying-whether-clients-may-change-en.patch
-Patch0016: 0016-mount-check-for-NULL-before-reading-pm-what.patch
-Patch0017: 0017-core-do-not-add-what-to-RequiresMountsFor-for-networ.patch
-Patch0018: 0018-systemd-serialize-deserialize-forbid_restart-value.patch
-Patch0019: 0019-core-unify-the-way-we-denote-serialization-attribute.patch
-Patch0020: 0020-journald-fix-minor-memory-leak.patch
-Patch0021: 0021-journald-remove-rotated-file-from-hashmap-when-rotat.patch
-Patch0022: 0022-udevadm.xml-document-resolve-names-option-for-test.patch
-Patch0023: 0023-dbus-common-avoid-leak-in-error-path.patch
-Patch0024: 0024-drop-ins-check-return-value.patch
-Patch0025: 0025-shared-util-Fix-glob_extend-argument.patch
-Patch0026: 0026-Fix-for-SIGSEGV-in-systemd-bootchart-on-short-living.patch
-Patch0027: 0027-man-document-the-b-special-boot-option.patch
-Patch0028: 0028-tmpfiles-log-unaccessible-FUSE-mount-points-only-as-.patch
-Patch0029: 0029-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch
-Patch0030: 0030-Configurable-Timeouts-Restarts-default-values.patch
-Patch0031: 0031-manager-configurable-StartLimit-default-values.patch
-Patch0032: 0032-sysctl-bring-back-etc-sysctl.conf.patch
-Patch0033: 0033-systemd-treat-reload-failure-as-failure.patch
-Patch0034: 0034-journal-when-appending-to-journal-file-allocate-larg.patch
-Patch0035: 0035-journal-optimize-bisection-logic-a-bit-by-caching-th.patch
-Patch0036: 0036-journal-fix-iteration-when-we-go-backwards-from-the-.patch
-Patch0037: 0037-journal-allow-journal_file_copy_entry-to-work-on-non.patch
-Patch0038: 0038-journal-simplify-pre-allocation-logic.patch
-Patch0039: 0039-journald-mention-how-long-we-needed-to-flush-to-var-.patch
-Patch0040: 0040-Never-call-qsort-on-potentially-NULL-arrays.patch
-Patch0041: 0041-localed-match-converted-keymaps-before-legacy.patch
-Patch0042: 0042-core-socket-fix-SO_REUSEPORT.patch
-Patch0043: 0043-activate-fix-crash-when-s-is-passed.patch
-Patch0044: 0044-systemd-python-fix-booted-and-add-two-functions-to-d.patch
-Patch0045: 0045-util.c-check-if-return-value-from-ttyname_r-is-0-ins.patch
-Patch0046: 0046-activate-mention-E-in-the-help-text.patch
-Patch0047: 0047-docs-remove-unneeded-the-s-in-gudev-docs.patch
-Patch0048: 0048-man-explicitly-say-when-multiple-units-can-be-specif.patch
-Patch0049: 0049-util-fix-handling-of-trailing-whitespace-in-split_qu.patch
-Patch0050: 0050-man-Improve-the-description-of-parameter-X-in-tmpfil.patch
-Patch0051: 0051-coredumpctl-in-case-of-error-free-pattern-after-prin.patch
-Patch0052: 0052-udev-net_id-Introduce-predictable-network-names-for-.patch
-Patch0053: 0053-tmpfiles-don-t-allow-label_fix-to-print-ENOENT-when-.patch
-Patch0054: 0054-delta-ensure-that-d_type-will-be-set-on-every-fs.patch
-Patch0055: 0055-shell-completion-dump-has-moved-to-systemd-analyze.patch
-Patch0056: 0056-shell-completion-remove-load-from-systemctl.patch
-Patch0057: 0057-Fix-SELinux-check-for-transient-units.-1008864.patch
-Patch0058: 0058-acpi-fptd-fix-memory-leak-in-acpi_get_boot_usec.patch
-Patch0059: 0059-acpi-make-sure-we-never-free-an-uninitialized-pointe.patch
-Patch0060: 0060-systemctl-fix-name-mangling-for-sysv-units.patch
-Patch0061: 0061-execute-more-debugging-messages.patch
-Patch0062: 0062-logind-fix-bus-introspection-data-for-TakeControl.patch
-Patch0063: 0063-utf8-fix-utf8_is_printable.patch
-Patch0064: 0064-keymap-Fix-Samsung-900X-34-C.patch
-Patch0065: 0065-do-not-accept-garbage-from-acpi-firmware-performance.patch
-Patch0066: 0066-login-fix-invalid-free-in-sd_session_get_vt.patch
-Patch0067: 0067-login-make-sd_session_get_vt-actually-work.patch
-Patch0068: 0068-Make-sure-that-we-don-t-dereference-NULL.patch
-Patch0069: 0069-gitignore-ignore-clang-analyze-output.patch
-Patch0070: 0070-man-add-more-markup-to-udevadm-8.patch
-Patch0071: 0071-Fix-bad-assert-in-show_pid_array.patch
-Patch0072: 0072-Never-call-qsort-on-potentially-NULL-arrays.patch
-Patch0073: 0073-rules-expose-loop-block-devices-to-systemd.patch
-Patch0074: 0074-rules-don-t-limit-some-of-the-rules-to-the-add-actio.patch
-Patch0075: 0075-hwdb-update.patch
-Patch0076: 0076-rules-remove-pointless-MODE-settings.patch
-Patch0077: 0077-catalog-remove-links-to-non-existent-wiki-pages.patch
-Patch0078: 0078-udev-builtin-path_id-add-support-for-bcma-bus.patch
-Patch0079: 0079-libudev-default-log_priority-to-INFO.patch
-Patch0080: 0080-nspawn-only-pass-in-slice-setting-if-it-is-set.patch
-Patch0081: 0081-zsh-completion-add-systemd-run.patch
-Patch0082: 0082-systemctl-fix-typo-in-help-text.patch
-Patch0083: 0083-detect_virtualization-returns-NULL-pass-empty-string.patch
-Patch0084: 0084-udev-builtin-keyboard-Fix-large-scan-codes-on-32-bit.patch
-Patch0085: 0085-nspawn-log-out-of-memory-errors.patch
-Patch0086: 0086-man-fix-typo.patch
-Patch0087: 0087-man-do-not-use-term-in-para.patch
-Patch0088: 0088-shutdown-trim-the-cgroup-tree-on-loop-iteration.patch
-Patch0089: 0089-run-support-system-to-match-other-commands-even-if-r.patch
-Patch0090: 0090-acpi-fpdt-break-on-zero-or-negative-length-read.patch
-Patch0091: 0091-man-add-rationale-into-systemd-halt-8.patch
-Patch0092: 0092-systemd-python-convert-keyword-value-to-string.patch
-Patch0093: 0093-Make-hibernation-test-work-for-swap-files.patch
-Patch0094: 0094-man-add-docs-for-sd_is_special-and-some-man-page-sym.patch
-Patch0095: 0095-systemctl-return-r-instead-of-always-returning-0.patch
-Patch0096: 0096-journal-fix-minor-memory-leak.patch
-Patch0097: 0097-man-units-fix-installation-of-systemd-nspawn-.servic.patch
-Patch0098: 0098-systemd-fix-memory-leak-in-cgroup-code.patch
-Patch0099: 0099-button-don-t-exit-if-we-cannot-handle-a-button-press.patch
-Patch0100: 0100-timer-properly-format-relative-timestamps-in-the-fut.patch
-Patch0101: 0101-timer-consider-usec_t-1-an-invalid-timestamp.patch
-Patch0102: 0102-Resolve-dev-console-to-the-active-tty-instead-of-jus.patch
-Patch0103: 0103-Only-disable-output-on-console-during-boot-if-needed.patch
-Patch0104: 0104-Fix-possible-lack-of-status-messages-on-shutdown-reb.patch
-Patch0105: 0105-random-seed-improve-debugging-messages-a-bit.patch
-Patch0106: 0106-Fix-RemainAfterExit-services-keeping-a-hold-on-conso.patch
-Patch0107: 0107-keymap-Add-Toshiba-Satellite-U940.patch
-Patch0108: 0108-calendar-support-yearly-and-annually-names-the-same-.patch
-Patch0109: 0109-hashmap-be-a-bit-more-conservative-with-pre-allocati.patch
-Patch0110: 0110-manager-don-t-do-plymouth-in-a-container.patch
-Patch0111: 0111-hwdb-Update-database-of-Bluetooth-company-identifier.patch
-Patch0112: 0112-automount-log-info-about-triggering-process.patch
-Patch0113: 0113-hwdb-Update-database-of-Bluetooth-company-identifier.patch
-Patch0114: 0114-journal-fail-silently-in-sd_j_sendv-if-journal-is-un.patch
-Patch0115: 0115-Fix-memory-leak-in-stdout-journal-streams.patch
-Patch0116: 0116-man-document-is-enabled-output.patch
-Patch0117: 0117-hostnamed-avoid-using-NULL-in-error-path.patch
-Patch0118: 0118-core-do-not-segfault-if-swap-activity-happens-when-p.patch
-Patch0119: 0119-kernel-install-add-h-help.patch
-Patch0120: 0120-kernel-install-fix-help-output.patch
-Patch0121: 0121-man-improve-wording-and-comma-usage-in-systemd.journ.patch
-Patch0122: 0122-drop-several-entries-from-kbd-model-map-whose-kbd-la.patch
-Patch0123: 0123-correct-name-of-Tajik-kbd-layout-in-kbd-model-map.patch
-Patch0124: 0124-hwdb-Update-database-of-Bluetooth-company-identifier.patch
-Patch0125: 0125-Ensure-unit-is-journaled-for-short-lived-or-oneshot-.patch
-Patch0126: 0126-core-manager-remove-infinite-loop.patch
-Patch0127: 0127-util-check-for-overflow-in-greedy_realloc.patch
-Patch0128: 0128-journald-use-a-bit-more-cleanup-magic.patch
-Patch0129: 0129-activate-clean-up-inherited-descriptors.patch
-Patch0130: 0130-man-explain-in-more-detail-how-SYSTEMD_READY-influen.patch
-Patch0131: 0131-units-don-t-run-readahead-done-timers-in-containers.patch
-Patch0132: 0132-nspawn-complain-and-continue-if-machine-has-same-id.patch
-Patch0133: 0133-man-beef-up-ExecStart-description.patch
-Patch0134: 0134-man-remove-advice-to-avoid-setting-the-same-var-more.patch
-Patch0135: 0135-systemctl-add-the-plain-option-to-the-help-message.patch
-Patch0136: 0136-Fix-a-few-resource-leaks-in-error-paths.patch
-Patch0137: 0137-Fix-a-few-signed-unsigned-format-string-issues.patch
-Patch0138: 0138-journal-file-protect-against-alloca-0.patch
-Patch0139: 0139-man-describe-journalctl-show-cursor.patch
-Patch0140: 0140-journal-fix-against-theoretical-undefined-behavior.patch
-Patch0141: 0141-journald-downgrade-warning-message-when-dev-kmsg-doe.patch
-Patch0142: 0142-journal-file.c-remove-redundant-assignment-of-variab.patch
-Patch0143: 0143-login-Don-t-stop-a-running-user-manager-from-garbage.patch
-Patch0144: 0144-log-when-we-log-to-dev-console-and-got-disconnected-.patch
-Patch0145: 0145-loginctl-when-showing-device-tree-of-seats-with-no-d.patch
-Patch0146: 0146-man-be-more-explicit-about-option-arguments-that-tak.patch
-Patch0147: 0147-man-add-DOI-for-refereed-article-on-Forward-Secure-S.patch
-Patch0148: 0148-keymap-Refactor-Acer-tables.patch
-Patch0149: 0149-logind-remove-dead-variable.patch
-Patch0150: 0150-hwdb-update.patch
-Patch0151: 0151-delta-replace-readdir_r-with-readdir.patch
-Patch0152: 0152-delta-fix-delta-for-drop-ins.patch
-Patch0153: 0153-delta-if-prefix-is-specified-only-show-overrides-the.patch
-Patch0154: 0154-man-units-tmpfiles.d-5-cleanup.patch
-Patch0155: 0155-tmpfiles-introduce-the-concept-of-unsafe-operations.patch
-Patch0156: 0156-sleep-config-fix-useless-check-for-swapfile-type.patch
-Patch0157: 0157-man-resolve-word-omissions.patch
-Patch0158: 0158-man-improvements-to-comma-placement.patch
-Patch0159: 0159-man-grammar-and-wording-improvements.patch
-Patch0160: 0160-man-document-fail-nofail-auto-noauto.patch
-Patch0161: 0161-man-fix-description-of-is-enabled-returned-value.patch
-Patch0162: 0162-man-fix-Type-reference.patch
-Patch0163: 0163-man-fix-Type-reference-v2.patch
-Patch0164: 0164-hwdb-Update-database-of-Bluetooth-company-identifier.patch
-Patch0165: 0165-man-add-a-note-about-propagating-signals.patch
-Patch0166: 0166-man-include-autoconf-snippet-in-daemon-7.patch
-Patch0167: 0167-systemd-python-fix-setting-of-exception-codes.patch
-Patch0168: 0168-systemd-python-fix-listen_fds-under-Python-2.patch
-Patch0169: 0169-man-expand-on-some-more-subtle-points-in-systemd.soc.patch
-Patch0170: 0170-tmpfiles-rename-unsafe-to-boot.patch
-Patch0171: 0171-sleep-config-Dereference-pointer-before-check-for-NU.patch
-Patch0172: 0172-sleep-config-fix-double-free.patch
-Patch0173: 0173-core-service-check-if-mainpid-matches-only-if-it-is-.patch
-Patch0174: 0174-man-typo-fix.patch
-Patch0175: 0175-swap-remove-if-else-with-the-same-data-path.patch
-Patch0176: 0176-hwdb-update.patch
-Patch0177: 0177-journal-Add-missing-byte-order-conversions.patch
-Patch0178: 0178-hwdb-change-key-mappings-for-Samsung-90X3A.patch
-Patch0179: 0179-hwdb-add-Samsung-700G.patch
-Patch0180: 0180-hwdb-remove-duplicate-entry-for-Samsung-700Z.patch
-Patch0181: 0181-hwdb-fix-match-for-Thinkpad-X201-tablet.patch
-Patch0182: 0182-keymap-Recognize-different-Toshiba-Satellite-capital.patch
-Patch0183: 0183-sleep.c-fix-typo.patch
-Patch0184: 0184-man-mention-which-variables-will-be-expanded-in-Exec.patch
-Patch0185: 0185-hwdb-Add-support-for-Toshiba-Satellite-P75-A7200-key.patch
-Patch0186: 0186-journal-fix-access-to-munmapped-memory-in-sd_journal.patch
-Patch0187: 0187-gpt-auto-generator-skip-nonexistent-devices.patch
-Patch0188: 0188-gpt-auto-generator-use-EBADSLT-code-when-unable-to-d.patch
-Patch0189: 0189-nspawn-explicitly-terminate-machines-when-we-exit-ns.patch
-Patch0190: 0190-bash-completion-journalctl-file.patch
-Patch0191: 0191-journalctl-zsh-completion-fix-several-issues-in-help.patch
-Patch0192: 0192-cgroup-run-PID-1-in-the-root-cgroup.patch
-Patch0193: 0193-pam-retrieve-value-of-debug-param-first.patch
-Patch0194: 0194-utils-silence-the-compiler-warning.patch
-Patch0195: 0195-s390-getty-generator-initialize-essential-system-ter.patch
-Patch0196: 0196-pam-use-correct-log-level.patch
-Patch0197: 0197-pam-do-not-set-XDG_RUNTIME_DIR-unconditionally.patch
-Patch0198: 0198-selinux-Don-t-attempt-to-load-policy-in-initramfs-if.patch
-Patch0199: 0199-kernel-install-add-fedora-specific-callouts-to-new-k.patch
-Patch0200: 0200-remove-user-.service.patch
-Patch0201: 0201-Fix-bad-assert-in-show_pid_array.patch
-Patch0202: 0202-mount-don-t-send-out-PropertiesChanged-message-if-ac.patch
-Patch0203: 0203-udev-rules-setup-tty-permissions-and-group-for-sclp_.patch
-Patch0204: 0204-cdrom_id-use-the-old-MMC-fallback.patch
-Patch0205: 0205-core-introduce-new-stop-protocol-for-unit-scopes.patch
-Patch0206: 0206-core-watch-SIGCHLD-more-closely-to-track-processes-o.patch
-Patch0207: 0207-logind-rework-session-shutdown-logic.patch
-Patch0208: 0208-logind-order-all-scopes-after-both-systemd-logind.se.patch
-Patch0209: 0209-logind-given-that-we-can-now-relatively-safely-shutd.patch
-Patch0210: 0210-utmp-make-sure-we-don-t-write-the-utmp-reboot-record.patch
-Patch0211: 0211-rules-mark-loop-device-as-SYSTEMD_READY-0-if-no-file.patch
-Patch0212: 0212-logind-fix-reference-to-systemd-user-sessions.servic.patch
-Patch0213: 0213-logind-add-forgotten-call-to-user_send_changed.patch
-Patch0214: 0214-logind-save-session-after-setting-the-stopping-flag.patch
-Patch0215: 0215-logind-save-user-state-after-stopping-the-session.patch
-Patch0216: 0216-logind-initialize-timer_fd.patch
-Patch0217: 0217-service-don-t-create-extra-cgroup-for-control-proces.patch
-Patch0218: 0218-logind-pass-pointer-to-User-object-to-user_save.patch
-Patch0219: 0219-fstab-generator-When-parsing-the-root-cmdline-option.patch
-Patch0220: 0220-gpt-auto-generator-Generate-explicit-dependencies-on.patch
-Patch0221: 0221-fstab-generator-Generate-explicit-dependencies-on-sy.patch
-Patch0222: 0222-fsck-root-only-run-when-requested-in-fstab.patch
-Patch0223: 0223-core-allow-PIDs-to-be-watched-by-two-units-at-the-sa.patch
-Patch0224: 0224-core-correctly-unregister-PIDs-from-PID-hashtables.patch
-Patch0225: 0225-logind-uninitialized-timer_fd-is-set-to-1.patch
-Patch0226: 0226-logind-add-forgotten-return-statement.patch
-Patch0227: 0227-core-remove-extra-semicolon-and-make-gcc-shut-up.patch
-Patch0228: 0228-core-fix-detection-of-dead-processes.patch
-Patch0229: 0229-Fix-prototype-of-get_process_state.patch
-Patch0230: 0230-core-check-for-return-value-from-get_process_state.patch
-Patch0231: 0231-unit-add-waiting-jobs-to-run-queue-in-unit_coldplug.patch
-Patch0232: 0232-logind-session-save-stopping-flag.patch
-Patch0233: 0233-units-serial-getty-.service-add-Install-section.patch
-Patch0234: 0234-units-order-network-online.target-after-network.targ.patch
-Patch0235: 0235-util-consider-both-fuse.glusterfs-and-glusterfs-netw.patch
-Patch0236: 0236-core-make-StopWhenUnneeded-work-in-conjunction-with-.patch
-Patch0237: 0237-cgroups-agent-down-grade-log-level.patch
-Patch0238: 0238-random-seed-raise-POOL_SIZE_MIN-constant-to-1024.patch
-Patch0239: 0239-delta-do-not-use-unicode-chars-in-C-locale.patch
-Patch0240: 0240-core-print-debug-instead-of-error-message.patch
-Patch0241: 0241-journald-always-add-syslog-facility-for-messages-com.patch
-Patch0242: 0242-Introduce-_cleanup_endmntent_.patch
-Patch0243: 0243-Introduce-_cleanup_fdset_free_.patch
-Patch0244: 0244-Introduce-udev-object-cleanup-functions.patch
-Patch0245: 0245-fsck-modernization.patch
-Patch0246: 0246-fsck-fstab-generator-be-lenient-about-missing-fsck.-.patch
-Patch0247: 0247-rules-60-persistent-storage-add-nvme-pcie-ssd-scsi_i.patch
-Patch0248: 0248-cgls-fix-running-with-M-option.patch
-Patch0249: 0249-units-when-spawning-a-getty-configure-TERM-explicitl.patch
-Patch0250: 0250-getty-Start-getty-on-3270-terminals-available-on-Lin.patch
-Patch0251: 0251-core-Added-support-for-ERRNO-NOTIFY_SOCKET-message-p.patch
-Patch0252: 0252-service-don-t-accept-negative-ERRNO-notification-mes.patch
-Patch0253: 0253-socket-add-SocketUser-and-SocketGroup-for-chown-ing-.patch
-Patch0254: 0254-selinux-Check-access-vector-for-enable-and-disable-p.patch
-Patch0255: 0255-systemctl-show-StatusErrno-value-in-systemctl-status.patch
-Patch0256: 0256-service-flush-status-text-and-errno-values-each-time.patch
-Patch0257: 0257-service-don-t-free-status_text-twice.patch
-Patch0258: 0258-util-add-files_same-helper-function.patch
-Patch0259: 0259-systemctl-for-switch-root-check-if-we-switch-to-a-sy.patch
-Patch0260: 0260-shared-include-root-when-canonicalizing-conf-paths.patch
-Patch0261: 0261-shared-add-root-argument-to-search_and_fopen.patch
-Patch0262: 0262-machine-id-add-root-option-to-operate-on-an-alternat.patch
-Patch0263: 0263-conf-files-fix-when-for-root-logic.patch
-Patch0264: 0264-Make-systemctl-root-look-for-files-in-the-proper-pla.patch
-Patch0265: 0265-tmpfiles-fix-memory-leak-of-exclude_prefixes.patch
-Patch0266: 0266-tmpfiles-add-root-option-to-operate-on-an-alternate-.patch
-Patch0267: 0267-conf-files-include-root-in-returned-file-paths.patch
-Patch0268: 0268-install-make-sure-that-root-mode-doesn-t-make-us-con.patch
-Patch0269: 0269-shared-install-do-not-prefix-created-symlink-with-ro.patch
-Patch0270: 0270-systemctl-fail-in-the-case-that-no-unit-files-were-f.patch
-Patch0271: 0271-units-make-ExecStopPost-action-part-of-ExecStart.patch
-Patch0272: 0272-systemctl-fix-broken-list-unit-files-with-root.patch
-Patch0273: 0273-machine-id-only-look-into-KVM-uuid-when-we-are-not-r.patch
-Patch0274: 0274-util-reset-signals-when-we-fork-off-agents.patch
-Patch0275: 0275-util-fix-minimal-race-where-we-might-miss-SIGTERMs-w.patch
-Patch0276: 0276-udev-do-not-skip-the-execution-of-RUN-when-renaming-.patch
-Patch0277: 0277-man-mention-System-Administrator-s-Guide-in-systemct.patch
-Patch0278: 0278-vconsole-also-copy-character-maps-not-just-fonts-fro.patch
-Patch0279: 0279-vconsole-setup-run-setfont-before-loadkeys.patch
-Patch0280: 0280-vconsole-setup-fix-inverted-error-messages.patch
-Patch0281: 0281-localed-consider-an-unset-model-as-a-wildcard.patch
-Patch0282: 0282-systemd-detect-virt-detect-s390-virtualization.patch
-Patch0283: 0283-systemctl-unbreak-switchroot.patch
-Patch0284: 0284-systemd-detect-virt-fix-detect-s390-virtualization.patch
-Patch0285: 0285-exec-Add-SELinuxContext-configuration-item.patch
-Patch0286: 0286-exec-Ignore-the-setting-SELinuxContext-if-selinux-is.patch
-Patch0287: 0287-exec-Add-support-for-ignoring-errors-on-SELinuxConte.patch
-Patch0288: 0288-core-store-and-expose-SELinuxContext-field-normalize.patch
-Patch0289: 0289-socket-introduce-SELinuxContextFromNet-option.patch
-Patch0290: 0290-sysctl-make-prefix-allow-all-kinds-of-sysctl-paths.patch
-Patch0291: 0291-core-make-sure-to-serialize-jobs-for-all-units.patch
-Patch0292: 0292-man-mention-localectl-in-locale.conf.patch
-Patch0293: 0293-rules-automatically-online-hot-added-CPUs.patch
-Patch0294: 0294-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch
-Patch0295: 0295-bash-completion-add-verb-set-property.patch
-Patch0296: 0296-man-update-journald-rate-limit-defaults.patch
-Patch0297: 0297-core-don-t-try-to-connect-to-d-bus-after-switchroot.patch
-Patch0298: 0298-localed-log-locale-keymap-changes-in-detail.patch
-Patch0299: 0299-localed-introduce-helper-function-to-simplify-matchi.patch
-Patch0300: 0300-localed-check-for-partially-matching-converted-keyma.patch
-Patch0301: 0301-fileio-make-parse_env_file-return-number-of-parsed-i.patch
-Patch0302: 0302-localectl-print-warning-when-there-are-options-given.patch
-Patch0303: 0303-dbus-fix-crash-when-appending-selinux-context.patch
-Patch0304: 0304-tmpfiles-minor-modernizations.patch
-Patch0305: 0305-install-when-looking-for-a-unit-file-for-enabling-se.patch
-Patch0306: 0306-install-remove-unused-variable.patch
-Patch0307: 0307-bootctl-typo-fix-in-help-message.patch
-Patch0308: 0308-logind-ignore-failing-close-on-session-devices.patch
-Patch0309: 0309-sysfs-show.c-return-negative-error.patch
-Patch0310: 0310-core-only-send-SIGHUP-when-doing-first-kill-not-when.patch
-Patch0311: 0311-cgroup-make-sure-to-properly-send-SIGCONT-to-all-pro.patch
-Patch0312: 0312-core-don-t-send-duplicate-SIGCONT-when-killing-units.patch
-Patch0313: 0313-efi-fix-Undefined-reference-efi_loader_get_boot_usec.patch
-Patch0314: 0314-macro-better-make-IN_SET-macro-use-const-arrays.patch
-Patch0315: 0315-macro-make-sure-we-can-use-IN_SET-also-with-complex-.patch
-Patch0316: 0316-core-fix-property-changes-in-transient-units.patch
-Patch0317: 0317-load-modules-properly-return-a-failing-error-code-if.patch
-Patch0318: 0318-core-unit-fix-unit_add_target_dependencies-for-units.patch
-Patch0319: 0319-man-there-is-no-ExecStopPre-for-service-units.patch
-Patch0320: 0320-man-document-that-per-interface-sysctl-variables-are.patch
-Patch0321: 0321-journal-downgrade-vaccuum-message-to-debug-level.patch
-Patch0322: 0322-logs-show-fix-corrupt-output-with-empty-messages.patch
-Patch0323: 0323-journalctl-refuse-extra-arguments-with-verify-and-si.patch
-Patch0324: 0324-journal-assume-that-next-entry-is-after-previous-ent.patch
-Patch0325: 0325-journal-forget-file-after-encountering-an-error.patch
-Patch0326: 0326-man-update-link-to-LSB.patch
-Patch0327: 0327-man-systemd-bootchart-fix-spacing-in-command.patch
-Patch0328: 0328-man-add-missing-comma.patch
-Patch0329: 0329-units-Do-not-unescape-instance-name-in-systemd-backl.patch
-Patch0330: 0330-manager-flush-memory-stream-before-using-the-buffer.patch
-Patch0331: 0331-man-multiple-sleep-modes-are-to-be-separated-by-whit.patch
-Patch0332: 0332-man-fix-description-of-systemctl-after-before.patch
-Patch0333: 0333-udev-properly-detect-reference-to-unexisting-part-of.patch
-Patch0334: 0334-gpt-auto-generator-don-t-return-OOM-on-parentless-de.patch
-Patch0335: 0335-man-improve-wording-of-systemctl-s-after-before.patch
-Patch0336: 0336-cgroup-it-s-not-OK-to-invoke-alloca-in-loops.patch
-Patch0337: 0337-core-don-t-try-to-relabel-mounts-before-we-loaded-th.patch
-Patch0338: 0338-systemctl-kill-mode-is-long-long-gone-don-t-mention-.patch
-Patch0339: 0339-ask-password-when-the-user-types-a-overly-long-passw.patch
-Patch0340: 0340-logind-don-t-print-error-if-devices-vanish-during-AC.patch
-Patch0341: 0341-tty-ask-password-agent-return-negative-errno.patch
-Patch0342: 0342-journal-cleanup-up-error-handling-in-update_catalog.patch
-Patch0343: 0343-bash-completion-fix-__get_startable_units.patch
-Patch0344: 0344-core-check-the-right-variable-for-failed-open.patch
-Patch0345: 0345-util-allow-trailing-semicolons-on-define_trivial_cle.patch
-Patch0346: 0346-man-sd_journal_send-does-nothing-when-journald-is-no.patch
-Patch0347: 0347-man-clarify-that-the-ExecReload-command-should-be-sy.patch
-Patch0348: 0348-conf-parser-never-consider-it-an-error-if-we-cannot-.patch
-Patch0349: 0349-socket-properly-handle-if-our-service-vanished-durin.patch
-Patch0350: 0350-Do-not-unescape-unit-names-in-Install-section.patch
-Patch0351: 0351-util-ignore_file-should-not-allow-files-ending-with.patch
-Patch0352: 0352-core-fix-invalid-free-in-killall.patch
-Patch0353: 0353-install-fix-invalid-free-in-unit_file_mask.patch
-Patch0354: 0354-unit-name-fix-detection-of-unit-templates-instances.patch
-Patch0355: 0355-journald-make-MaxFileSec-really-default-to-1month.patch
-Patch0356: 0356-bootchart-it-s-not-OK-to-return-1-from-a-main-progra.patch
-Patch0357: 0357-journald-Fix-off-by-one-error-in-Missed-X-kernel-mes.patch
-Patch0358: 0358-man-drop-references-to-removed-and-obsolete-systemct.patch
-Patch0359: 0359-units-fix-BindsTo-logic-when-applied-relative-to-ser.patch
-Patch0360: 0360-core-don-t-allow-enabling-if-unit-is-masked.patch
-Patch0361: 0361-man-systemctl-document-enable-on-masked-units.patch
-Patch0362: 0362-core-do-not-segfault-if-proc-swaps-cannot-be-opened.patch
-Patch0363: 0363-man-we-don-t-have-Wanted-dependency.patch
-Patch0364: 0364-environment-append-unit_id-to-error-messages-regardi.patch
-Patch0365: 0365-udevd-add-event-timeout-commandline-option.patch
-Patch0366: 0366-selinux-fix-potential-double-free-crash-in-child-pro.patch
-Patch0367: 0367-selinux-pass-flag-to-correct-exec_spawn.patch
-Patch0368: 0368-selinux-set-selinux-context-applied-on-exec-before-c.patch
-Patch0369: 0369-logind-use-correct-who-enum-values-with-KillUnit.patch
-Patch0370: 0370-logind-always-kill-session-when-termination-is-reque.patch
-Patch0371: 0371-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch
-Patch0372: 0372-udev-net_id-dev_port-is-base-10.patch
-Patch0373: 0373-udev-Fix-parsing-of-udev.event-timeout-kernel-parame.patch
-Patch0374: 0374-login-rerun-vconsole-setup-when-switching-from-vgaco.patch
-Patch0375: 0375-cgroups-agent-really-down-grade-log-level.patch
-Patch0376: 0376-core-introduce-new-Delegate-yes-no-property-controll.patch
-Patch0377: 0377-core-don-t-migrate-PIDs-for-units-that-may-contain-s.patch
-Patch0378: 0378-mount-use-libmount-to-enumerate-proc-self-mountinfo.patch
-Patch0379: 0379-mount-monitor-for-utab-changes-with-inotify.patch
-Patch0380: 0380-mount-add-remote-fs-dependencies-if-needed-after-cha.patch
-Patch0381: 0381-mount-check-options-as-well-as-fstype-for-network-mo.patch
-Patch0382: 0382-rules-don-t-enable-usb-pm-for-Avocent-devices.patch
-Patch0383: 0383-shared-install-avoid-prematurely-rejecting-missing-u.patch
-Patch0384: 0384-core-fix-enabling-units-via-their-absolute-paths.patch
-Patch0385: 0385-Revert-units-fix-BindsTo-logic-when-applied-relative.patch
-Patch0386: 0386-run-drop-mistakenly-committed-test-code.patch
-Patch0387: 0387-cgroup-downgrade-log-messages-when-we-cannot-write-t.patch
-Patch0388: 0388-rules-load-sg-module.patch
-Patch0389: 0389-machined-force-machined-to-dispatch-messages.patch
+Source5:        60-alias-kmsg.rules
+# Stop-gap, just to ensure things work fine with rsyslog without having to change the package right-away
+Source6:        listen.conf
+
+# RHEL-specific
+Patch0001: 0001-kernel-install-add-fedora-specific-callouts-to-new-k.patch
+Patch0002: 0002-Revert-fsck-re-enable-fsck-l.patch
+Patch0003: 0003-sysctl-bring-back-etc-sysctl.conf.patch
+Patch0004: 0004-remove-user-.service.patch
+Patch0005: 0005-logind-session-save-stopping-flag.patch
+Patch0006: 0006-man-mention-System-Administrator-s-Guide-in-systemct.patch
+Patch0007: 0007-rules-automatically-online-hot-added-CPUs.patch
+Patch0008: 0008-Revert-remove-references-of-readahead.patch
+Patch0009: 0009-Revert-missing-remove-fanotify.patch
+Patch0010: 0010-Revert-readahead-wipe-out-readahead.patch
+Patch0011: 0011-rules-add-rule-for-naming-Dell-iDRAC-USB-Virtual-NIC.patch
+Patch0012: 0012-udev-net_id-correctly-name-netdevs-based-on-dev_port.patch
+Patch0013: 0013-Revert-blkid-Warn-when-rejecting-a-superblock-with-a.patch
+Patch0014: 0014-journald-audit-exit-gracefully-in-the-case-we-can-t-.patch
+Patch0015: 0015-fedora-disable-resolv.conf-symlink.patch
+Patch0016: 0016-Revert-timedated-manage-systemd-timesyncd-directly-i.patch
+Patch0017: 0017-journal-remote-fix-certificate-status-memory-leak.patch
+Patch0018: 0018-journal-remote-fix-client_cert-memory-leak.patch
+Patch0019: 0019-tmpfiles-Fix-parse_acl-error-message.patch
+Patch0020: 0020-test-utf8-fix-utf16-tests-on-BE-machines.patch
+Patch0021: 0021-tmpfiles-avoid-creating-duplicate-acl-entries.patch
+Patch0022: 0022-shared-time-util-fix-gcc5-warning.patch
+Patch0023: 0023-test-time-test-infinity-parsing-in-nanoseconds.patch
+Patch0024: 0024-bootchart-fix-default-init-path.patch
+Patch0025: 0025-systemctl-bump-NOFILE-only-for-systemctl_main.patch
+Patch0026: 0026-acl-util-avoid-freeing-uninitialized-pointer.patch
+Patch0027: 0027-bootchart-svg-fix-checking-of-list-end.patch
+Patch0028: 0028-systemd-add-getrandom-syscall-numbers-for-MIPS.patch
+Patch0029: 0029-unit-use-weaker-dependencies-between-mount-and-devic.patch
+Patch0030: 0030-unit-When-stopping-due-to-BindsTo-log-which-unit-cau.patch
+Patch0031: 0031-sysctl-downgrade-message-about-sysctl-overrides-to-d.patch
+Patch0032: 0032-sysctl-add-some-hints-how-to-override-settings.patch
+Patch0033: 0033-core-rework-device-state-logic.patch
+Patch0034: 0034-core-fix-return-value-on-OOM.patch
+Patch0035: 0035-machined-use-x-machine-unix-prefix-for-the-container.patch
+Patch0036: 0036-shared-AFS-is-also-a-network-filesystem.patch
+Patch0037: 0037-core-downgrade-unit-type-not-supported-message.patch
+Patch0038: 0038-journal-remote-fix-saving-of-binary-fields.patch
+Patch0039: 0039-journal-fix-Inappropriate-ioctl-for-device-on-ext4.patch
+Patch0040: 0040-sd-daemon-replace-VLA-with-alloca-to-make-llvm-happy.patch
+Patch0041: 0041-tmpfiles-quietly-ignore-ACLs-on-unsupported-filesyst.patch
+Patch0042: 0042-shared-util-assume-ac-when-sys-class-power_supply-is.patch
+Patch0043: 0043-import-remove-unused-variable.patch
+Patch0044: 0044-hwdb-fix-ThinkPad-X-Tablet-special-keys.patch
+Patch0045: 0045-man-add-newlines-to-the-pull-raw-example-in-machinec.patch
+Patch0046: 0046-core-shared-in-deserializing-match-same-files-reache.patch
+Patch0047: 0047-shared-use-SocketAddress-in-socket_address_matches_f.patch
+Patch0048: 0048-shared-avoid-semi-duplicating-socket_address_equal.patch
+Patch0049: 0049-shared-handle-unnamed-sockets-in-socket_address_equa.patch
+Patch0050: 0050-man-make-bootup-graph-consistent.patch
+Patch0051: 0051-nspawn-fix-whitespace-and-typo-in-partition-table-bl.patch
+Patch0052: 0052-man-explain-time-units-in-tmpfiles.patch
+Patch0053: 0053-systemctl-check-validity-of-PID-we-received.patch
+Patch0054: 0054-systemctl-support-auditd.service-better.patch
+Patch0055: 0055-shared-unit-name-fix-gcc5-warning.patch
+Patch0056: 0056-test-hashmap-fix-gcc5-warning.patch
+Patch0057: 0057-shared-fix-wrong-assertion-in-barrier_set_role.patch
+Patch0058: 0058-hwdb-Update-database-of-Bluetooth-company-identifier.patch
+Patch0059: 0059-journal-make-skipping-of-exhausted-journal-files-eff.patch
+Patch0060: 0060-shared-condition-fix-gcc5-warning.patch
+Patch0061: 0061-man-correct-description-of-systemd-user-sessions.patch
+Patch0062: 0062-build-sys-allow-lto-and-FORTIFY_SOURCE-with-O-sz.patch
+Patch0063: 0063-man-fix-typo.patch
+Patch0064: 0064-bus-proxyd-avoid-logging-oom-twice.patch
+Patch0065: 0065-Do-not-run-sysv-generator-test-when-sysv-compat-is-d.patch
+Patch0066: 0066-README-mention-ACLs-more.patch
+Patch0067: 0067-Do-not-advertise-.d-snippets-over-main-config-file.patch
+Patch0068: 0068-hwdb-add-pnpid-for-the-T450s-touchpad.patch
+Patch0069: 0069-networkd-netdev-inform-when-we-take-over-an-existing.patch
+Patch0070: 0070-man-replace-obsolete-wiki-link-with-man-page.patch
+Patch0071: 0071-Use-correct-uname-identifiers-in-arch_map-for-SuperH.patch
+Patch0072: 0072-hwdb-fix-Dell-XPS12-9Q33-key-name.patch
+Patch0073: 0073-Remove-the-cap-on-epoll-events.patch
+Patch0074: 0074-Allow-up-to-4096-simultaneous-connections.patch
+Patch0075: 0075-hwdb-add-Logitech-G5-Laser-Mouse.patch
+Patch0076: 0076-tmpfiles-Fix-handling-of-duplicate-lines.patch
+Patch0077: 0077-hwdb-add-Lenovo-W451-to-TOUCHPAD_HAS_TRACKPOINT_BUTT.patch
+Patch0078: 0078-vconsole-match-on-vtcon-events-not-fbcon-ones.patch
+Patch0079: 0079-core-do-not-spawn-jobs-or-touch-other-units-during-c.patch
+Patch0080: 0080-firstboot-set-all-spwd-fields-to-1-for-consistency-w.patch
+Patch0081: 0081-sysusers-do-not-reject-users-with-already-present-et.patch
+Patch0082: 0082-nspawn-fix-use-after-free-and-leak-in-error-paths.patch
+Patch0083: 0083-login-fix-copy-pasto-in-error-path.patch
+Patch0084: 0084-journalctl-update-hint-now-that-we-set-ACL-everywher.patch
+Patch0085: 0085-sd-journal-return-error-when-we-cannot-open-a-file.patch
+Patch0086: 0086-missing.h-add-NDA_.patch
+Patch0087: 0087-udevd-close-race-in-udev-settle.patch
+Patch0088: 0088-man-document-that-ExecStartPre-is-not-the-place-to-s.patch
+Patch0089: 0089-journal-fix-return-code.patch
+Patch0090: 0090-console-fix-error-code-inversion.patch
+Patch0091: 0091-bus-proxy-complain-only-once-about-queue-overflows.patch
+Patch0092: 0092-cgtop-fix-assert-when-not-on-tty.patch
+Patch0093: 0093-man-split-paragraph.patch
+Patch0094: 0094-hwdb-update.patch
+Patch0095: 0095-networkd-Begin-with-serial-number-1-for-netlink-requ.patch
+Patch0096: 0096-journal-remote-downgrade-routine-messages-to-debug.patch
+Patch0097: 0097-journal-remote-process-events-without-delay.patch
+Patch0098: 0098-man-update-example-2-in-systemd.network-5.patch
+Patch0099: 0099-gpt-auto-generator-fix-detection-of-srv.patch
+Patch0100: 0100-sd-rtnl-never-set-serial-to-0.patch
+Patch0101: 0101-gpt-auto-generator-allow-type-check-to-fail.patch
+Patch0102: 0102-man-fix-a-bunch-of-links.patch
+Patch0103: 0103-man-link-to-fd.o-for-dbus-stuff.patch
+Patch0104: 0104-man-fix-name-of-systemd.resource-control-5.patch
+Patch0105: 0105-selinux-fix-SEGV-during-switch-root-if-SELinux-polic.patch
+Patch0106: 0106-service-don-t-add-After-dependencies-on-.busname-uni.patch
+Patch0107: 0107-libudev-monitor-fix-error-path-in-send_device.patch
+Patch0108: 0108-core-remove-left-over-debug-message.patch
+Patch0109: 0109-units-there-is-no-systemd-udev-hwdb-update.service.patch
+Patch0110: 0110-util-remove-redundant-debug-message.patch
+Patch0111: 0111-tmpfiles-remove-redundant-debug-message.patch
+Patch0112: 0112-sysv-generator-initialize-LookupPaths-just-once.patch
+Patch0113: 0113-core-do-not-use-quotes-around-virt-and-arch.patch
+Patch0114: 0114-udev-downgrade-has-devpath-and-filled-with-db-file-m.patch
+Patch0115: 0115-cryptsetup-generator-remove-warning-about-crypttab-a.patch
+Patch0116: 0116-sysctl-tweak-debug-message.patch
+Patch0117: 0117-journald-add-syslog-fields-for-audit-messages.patch
+Patch0118: 0118-core-remove-useless-debug-message.patch
+Patch0119: 0119-man-standard-conf-change-directory-reference-to-wild.patch
+Patch0120: 0120-core-don-t-change-removed-devices-to-state-tentative.patch
+Patch0121: 0121-fstab-generator-ignore-invalid-swap-priority.patch
+Patch0122: 0122-missing.h-add-more-btrfs-types-and-defines.patch
+Patch0123: 0123-build-sys-add-configure-option-to-disableLTO-gold.patch
+Patch0124: 0124-rules-bring-back-80-net-name-slot.rules.patch
+Patch0125: 0125-Revert-journald-allow-restarting-journald-without-lo.patch
+Patch0126: 0126-Revert-man-switch-yum-to-dnf-for-Fedora.patch
+Patch0127: 0127-journal-remove-audit-socket-unit-files.patch
+Patch0128: 0128-factory-we-don-t-want-that.patch
+Patch0129: 0129-timedated-flip-internal-status-after-executing-opera.patch
+Patch0130: 0130-timedated-fix-enable-disable-reversal.patch
+Patch0131: 0131-core-make-SELinux-enable-disable-check-symmetric.patch
+Patch0132: 0132-shared-add-path_compare-an-ordering-path-comparison.patch
+Patch0133: 0133-core-namespace-fix-path-sorting.patch
+Patch0134: 0134-machine-do-not-rely-on-asprintf-setting-arg-on-error.patch
+Patch0135: 0135-some-compilators-don-t-support-__INCLUDE_LEVEL__.patch
+Patch0136: 0136-udev-net_id-support-multi-port-enpo-device-names.patch
+Patch0137: 0137-udev-net_id-improve-comments.patch
+Patch0138: 0138-udev-restore-udevadm-settle-timeout.patch
+Patch0139: 0139-udev-settle-should-return-immediately-when-timeout-i.patch
+Patch0140: 0140-udev-Fix-ping-timeout-when-settle-timeout-is-0.patch
+Patch0141: 0141-detect-virt-use-proc-device-tree.patch
+Patch0142: 0142-ARM-detect-virt-detect-Xen.patch
+Patch0143: 0143-ARM-detect-virt-detect-QEMU-KVM.patch
+Patch0144: 0144-Persistent-by_path-links-for-ata-devices.patch
+Patch0145: 0145-man-document-forwarding-to-syslog-better.patch
+Patch0146: 0146-man-fix-typos-in-previous-comimt.patch
+Patch0147: 0147-LSB-always-add-network-online.target-to-services-wit.patch
+Patch0148: 0148-rules-enable-memory-hotplug.patch
+Patch0149: 0149-rules-reload-sysctl-settings-when-the-bridge-module-.patch
+Patch0150: 0150-console-getty.service-don-t-start-when-dev-console-i.patch
+Patch0151: 0151-resolved-Do-not-add-.busname-dependencies-when-compi.patch
+Patch0152: 0152-man-add-journal-remote.conf-5.patch
+Patch0153: 0153-mount-don-t-run-quotaon-only-for-network-filesystems.patch
+Patch0154: 0154-mount-fix-up-wording-in-the-comment.patch
+Patch0155: 0155-udev-net_id-fix-copy-paste-error.patch
+Patch0156: 0156-man-don-t-mention-journalctl-dev-sda.patch
+Patch0157: 0157-units-move-After-systemd-hwdb-update.service-depende.patch
+Patch0158: 0158-units-explicitly-order-systemd-user-sessions.service.patch
+Patch0159: 0159-zsh-completion-update-loginctl.patch
+Patch0160: 0160-zsh-completion-add-missing-M-completion-for-journalc.patch
+Patch0161: 0161-zsh-completion-update-hostnamectl.patch
+Patch0162: 0162-shell-completion-systemctl-switch-root-verb.patch
+Patch0163: 0163-core-automount-beef-up-error-message.patch
+Patch0164: 0164-man-remove-fs-from-rootfsflags.patch
+Patch0165: 0165-shared-fix-memleak.patch
+Patch0166: 0166-udevd-fix-synchronization-with-settle-when-handling-.patch
+Patch0167: 0167-python-systemd-fix-is_socket_inet-to-cope-with-ports.patch
+Patch0168: 0168-man-fix-examples-indentation-in-tmpfiles.d-5.patch
+Patch0169: 0169-systemctl-avoid-bumping-NOFILE-rlimit-unless-needed.patch
+Patch0170: 0170-exit-status-Fix-NOTINSSTALLED-typo.patch
+Patch0171: 0171-tmpfiles-there-s-no-systemd-forbid-user-logins.servi.patch
+Patch0172: 0172-kmod-setup-load-ip_tables-kmod-at-boot.patch
+Patch0173: 0173-util-Fix-assertion-in-split-on-missing.patch
+Patch0174: 0174-units-set-KillMode-mixed-for-our-daemons-that-fork-w.patch
+Patch0175: 0175-unit-don-t-add-automatic-dependencies-on-device-unit.patch
+Patch0176: 0176-update-done-ignore-nanosecond-file-timestamp-compone.patch
+Patch0177: 0177-sd-daemon-simplify-sd_pid_notify_with_fds.patch
+Patch0178: 0178-fstab-generator-add-x-systemd.requires-and-x-systemd.patch
+Patch0179: 0179-core-Fix-assertion-with-empty-Exec-paths.patch
+Patch0180: 0180-rules-load-sg-module.patch
+Patch0181: 0181-util-add-shell_maybe_quote-call-for-preparing-a-stri.patch
+Patch0182: 0182-bus-util-be-more-verbose-if-dbus-job-fails.patch
+Patch0183: 0183-notify-fix-badly-backported-help-message.patch
+Patch0184: 0184-cryptsetup-craft-a-unique-ID-with-the-source-device.patch
+Patch0185: 0185-systemctl-introduce-now-for-enable-disable-and-mask.patch
+Patch0186: 0186-udev-also-create-old-sas-paths.patch
+Patch0187: 0187-journald-do-not-strip-leading-whitespace-from-messag.patch
+Patch0188: 0188-Revert-core-one-step-back-again-for-nspawn-we-actual.patch
+Patch0189: 0189-bus-creds-always-set-SD_BUS_CREDS_PID-when-we-set-pi.patch
+Patch0190: 0190-sd-bus-do-not-use-per-datagram-auxiliary-information.patch
+Patch0191: 0191-sd-bus-store-selinux-context-at-connection-time.patch
+Patch0192: 0192-journald-simplify-context-handling.patch
+Patch0193: 0193-bash-completion-add-verb-set-property.patch
+Patch0194: 0194-sd-bus-don-t-inherit-connection-creds-into-message-c.patch
+Patch0195: 0195-udev-fix-crash-in-path_id-builtin.patch
+Patch0196: 0196-sysv-generator-test-Fix-assertion.patch
+Patch0197: 0197-man-avoid-line-break-in-url.patch
+Patch0198: 0198-Add-VARIANT-as-a-standard-value-for-etc-os-release.patch
+Patch0199: 0199-Fix-permissions-on-run-systemd-nspawn-locks.patch
+Patch0200: 0200-generators-rename-add_-root-usr-_mount-to-add_-sysro.patch
+Patch0201: 0201-Generate-systemd-fsck-root.service-in-the-initramfs.patch
+Patch0202: 0202-units-fix-typo-in-systemd-resolved.service.patch
+Patch0203: 0203-core-don-t-consider-umask-for-SocketMode.patch
+Patch0204: 0204-timedate-fix-memory-leak-in-timedated.patch
+Patch0205: 0205-coredump-make-sure-we-vacuum-by-default.patch
+Patch0206: 0206-tmpfiles-don-t-fail-if-we-cannot-create-a-subvolume-.patch
+Patch0207: 0207-resolved-fix-crash-when-shutting-down.patch
+Patch0208: 0208-resolved-allow-DnsAnswer-objects-with-no-space-for-R.patch
+Patch0209: 0209-id128-add-new-sd_id128_is_null-call.patch
+Patch0210: 0210-journalctl-Improve-boot-ID-lookup.patch
+Patch0211: 0211-test-hashmap-fix-an-assert.patch
+Patch0212: 0212-units-make-sure-systemd-nspawn-.slice-instances-are-.patch
+Patch0213: 0213-Revert-journald-audit-exit-gracefully-in-the-case-we.patch
+Patch0214: 0214-journald-handle-more-gracefully-when-bind-fails-on-a.patch
+Patch0215: 0215-udev-link-config-fix-corruption.patch
+Patch0216: 0216-udev-net_id-Only-read-the-first-64-bytes-of-PCI-conf.patch
+Patch0217: 0217-shared-generator-correct-path-to-systemd-fsck.patch
+Patch0218: 0218-logind-Save-the-user-s-state-when-a-session-enters-S.patch
+Patch0219: 0219-small-fix-ru-translation.patch
+Patch0220: 0220-kmod-setup-don-t-warn-when-ipv6-can-t-be-loaded.patch
+Patch0221: 0221-Partially-revert-ma-setup-simplify.patch
+Patch0222: 0222-ima-setup-write-policy-one-line-at-a-time.patch
+Patch0223: 0223-ata_id-unbotch-format-specifier.patch
+Patch0224: 0224-install-explicitly-return-0-on-success.patch
+Patch0225: 0225-systemd.service.xml-document-that-systemd-removes-th.patch
+Patch0226: 0226-core-handle-log-target-null-when-calling-systemd-shu.patch
+Patch0227: 0227-man-ProtectHome-protects-root-as-well.patch
+Patch0228: 0228-timedatectl-trim-non-local-RTC-warning-to-80-chars-w.patch
+Patch0229: 0229-escape-fix-exit-code.patch
+Patch0230: 0230-man-information-about-available-properties.patch
+Patch0231: 0231-journal-in-persistent-mode-create-var-log-journal-wi.patch
+Patch0232: 0232-sysv-generator-fix-wrong-Overwriting-existing-symlin.patch
+Patch0233: 0233-mount-don-t-claim-a-device-is-gone-from-proc-self-mo.patch
+Patch0234: 0234-mount-properly-check-for-mounts-currently-in-proc-se.patch
+Patch0235: 0235-units-add-Install-section-to-tmp.mount.patch
+Patch0236: 0236-bus-util-add-articles-to-explanation-messages.patch
+Patch0237: 0237-bus-util-print-correct-warnings-for-units-that-fail-.patch
+Patch0238: 0238-Revert-journald-move-dev-log-socket-to-run.patch
+Patch0239: 0239-journald-server-don-t-read-audit-events.patch
+Patch0240: 0240-everything-remove-traces-of-user.patch
+Patch0241: 0241-selinux-fix-check-for-transient-units.patch
+Patch0242: 0242-socket-fix-setsockopt-call.-SOL_SOCKET-changed-to-SO.patch
+Patch0243: 0243-selinux-fix-missing-SELinux-unit-access-check.patch
+Patch0244: 0244-selinux-always-use-_raw-API-from-libselinux.patch
+Patch0245: 0245-udev-net_id-support-predictable-ifnames-on-virtio-bu.patch
+Patch0246: 0246-Revert-sysctl.d-default-to-fq_codel-fight-bufferbloa.patch
+Patch0247: 0247-loginctl-print-nontrivial-properties-in-logictl-show.patch
+Patch0248: 0248-login-fix-label-on-run-nologin.patch
+Patch0249: 0249-udev-rules-prandom-character-device-node-permissions.patch
+Patch0250: 0250-login-fix-gcc-warning-include-missing-header-file.patch
+Patch0251: 0251-shutdown-make-sure-run-nologin-has-correct-label.patch
+Patch0252: 0252-sd-event-fix-prepare-priority-queue-comparison-funct.patch
+Patch0253: 0253-units-run-ldconfig-also-when-cache-is-unpopulated.patch
+Patch0254: 0254-selinux-fix-regression-of-systemctl-subcommands-when.patch
+Patch0255: 0255-tmpfiles.d-don-t-clean-SAP-lockfiles-and-logs.patch
+Patch0256: 0256-udev-make-naming-for-virtio-devices-opt-in.patch
+Patch0257: 0257-tmpfiles.d-don-t-clean-SAP-sockets-either.patch
+
 
 %global num_patches %{lua: c=0; for i,p in ipairs(patches) do c=c+1; end; print(c);}
 
@@ -433,8 +302,12 @@ BuildRequires:  glib2-devel
 BuildRequires:  gobject-introspection-devel
 BuildRequires:  libblkid-devel
 BuildRequires:  xz-devel
+BuildRequires:  libidn-devel
+BuildRequires:  libcurl-devel
 BuildRequires:  kmod-devel
+BuildRequires:  elfutils-devel
 BuildRequires:  libgcrypt-devel
+BuildRequires:  gnutls-devel
 BuildRequires:  qrencode-devel
 BuildRequires:  libmicrohttpd-devel
 BuildRequires:  libxslt
@@ -442,8 +315,13 @@ BuildRequires:  docbook-style-xsl
 BuildRequires:  pkgconfig
 BuildRequires:  intltool
 BuildRequires:  gperf
+BuildRequires:  gawk
 BuildRequires:  gtk-doc
 BuildRequires:  python2-devel
+BuildRequires:  python-lxml
+%ifarch x86_64 i686
+#BuildRequires:  libseccomp-devel
+%endif
 BuildRequires:  automake
 BuildRequires:  autoconf
 BuildRequires:  libtool
@@ -458,29 +336,18 @@ Requires(pre):  coreutils
 Requires(pre):  /usr/bin/getent
 Requires(pre):  /usr/sbin/groupadd
 Requires:       dbus
-Requires:       nss-myhostname
 Requires:       %{name}-libs = %{version}-%{release}
-Requires:       kmod >= 14
+Requires:       kmod >= 18-4
 Requires:       redhat-release >= 7.0
-
+Requires:       diffutils
 Provides:       /bin/systemctl
 Provides:       /sbin/shutdown
 Provides:       syslog
 Provides:       systemd-units = %{version}-%{release}
-# part of system since f18, drop at f20
 Provides:       udev = %{version}
 Obsoletes:      udev < 183
-Conflicts:      dracut < 027
-# f18 version, drop at f20
-Conflicts:      plymouth < 0.8.5.1
-# For the journal-gateway split in F20, drop at F22
-Obsoletes:      systemd < 204-10
-# Ensures correct multilib updates added F18, drop at F20
-Conflicts:      systemd < 185-4
-# added F18, drop at F20
 Obsoletes:      system-setup-keyboard < 0.9
 Provides:       system-setup-keyboard = 0.9
-# nss-myhostname got integrated in F19, drop at F21
 Obsoletes:      nss-myhostname < 0.4
 Provides:       nss-myhostname = 0.4
 # systemd-analyze got merged in F19, drop at F21
@@ -491,6 +358,8 @@ Obsoletes:      upstart-sysvinit < 1.2-3
 Conflicts:      upstart-sysvinit
 Obsoletes:      hal
 Obsoletes:      ConsoleKit
+Conflicts:      dracut < 033-243
+Conflicts:      initscripts < 9.49.28-1
 
 %description
 systemd is a system and service manager for Linux, compatible with
@@ -531,18 +400,19 @@ Requires:       %{name} = %{version}-%{release}
 SysV compatibility tools for systemd
 
 %package python
-Summary:        Python Bindings for systemd
+Summary:        Python 2 bindings for systemd
 License:        LGPLv2+
 Requires:       %{name} = %{version}-%{release}
 
 %description python
-This package contains python binds for systemd APIs
+This package contains bindings which allow Python 2 programs to use
+systemd APIs
 
 %package -n libgudev1
 Summary:        Libraries for adding libudev support to applications that use glib
 Conflicts:      filesystem < 3
 License:        LGPLv2+
-Requires:       %{name} = %{version}-%{release}
+Requires:       %{name}-libs = %{version}-%{release}
 
 %description -n libgudev1
 This package contains the libraries that make it easier to use libudev
@@ -565,72 +435,116 @@ Requires(pre):    /usr/bin/getent
 Requires(post):   systemd
 Requires(preun):  systemd
 Requires(postun): systemd
-# For the journal-gateway split in F20, drop at F22
-Obsoletes:      systemd < 204-10
 
 %description journal-gateway
 systemd-journal-gatewayd serves journal events over the network using HTTP.
 
+%package networkd
+Summary:        System service that manages networks.
+Requires:       %{name} = %{version}-%{release}
+License:        LGPLv2+
+Requires(pre):    /usr/bin/getent
+Requires(post):   systemd
+Requires(preun):  systemd
+Requires(postun): systemd
+
+%description networkd
+systemd-networkd is a system service that manages networks.
+It detects and configures network devices as they appear, as well as creating virtual network devices.
+
+%package resolved
+Summary:        Network Name Resolution manager.
+Requires:       %{name} = %{version}-%{release}
+License:        LGPLv2+
+Requires(pre):    /usr/bin/getent
+Requires(post):   systemd
+Requires(preun):  systemd
+Requires(postun): systemd
+
+%description resolved
+systemd-resolved is a system service that manages network name resolution.
+It implements a caching DNS stub resolver and an LLMNR resolver and responder.
+
 %prep
 %setup -q
 
+%if %{num_patches}
 git init
 git config user.email "systemd-maint@redhat.com"
-git config user.name "Fedora systemd team"
+git config user.name "systemd team"
 git add .
 git commit -a -q -m "%{version} baseline."
 
 # Apply all the patches.
 git am \
-    --exclude .gitignore \
-    --exclude docs/.gitignore \
-    --exclude docs/gudev/.gitignore \
-    --exclude docs/libudev/.gitignore \
-    --exclude docs/sysvinit/.gitignore \
-    --exclude docs/var-log/.gitignore \
-    --exclude hwdb/.gitignore \
-    --exclude m4/.gitignore \
-    --exclude man/.gitignore \
-    --exclude po/.gitignore \
-    --exclude rules/.gitignore \
-    --exclude src/.gitignore \
-    --exclude src/analyze/.gitignore \
-    --exclude src/core/.gitignore \
-    --exclude src/gudev/.gitignore \
-    --exclude src/hostname/.gitignore \
-    --exclude src/journal/.gitignore \
-    --exclude src/libsystemd-daemon/.gitignore \
-    --exclude src/libsystemd-id128/.gitignore \
-    --exclude src/libudev/.gitignore \
-    --exclude src/locale/.gitignore \
-    --exclude src/login/.gitignore \
-    --exclude src/python-systemd/.gitignore \
-    --exclude src/python-systemd/docs/* \
-    --exclude src/timedate/.gitignore \
-    --exclude src/udev/.gitignore \
-    --exclude src/udev/scsi_id/.gitignore \
-    --exclude sysctl.d/.gitignore \
-    --exclude test/.gitignore \
-    --exclude units/.gitignore \
-    --exclude units/user/.gitignore \
-    --exclude .travis.yml \
-    %{patches}
-
+--exclude .gitignore \
+--exclude docs/.gitignore \
+--exclude docs/gudev/.gitignore \
+--exclude docs/libudev/.gitignore \
+--exclude docs/sysvinit/.gitignore \
+--exclude docs/var-log/.gitignore \
+--exclude hwdb/.gitignore \
+--exclude m4/.gitignore \
+--exclude man/.gitignore \
+--exclude po/.gitignore \
+--exclude rules/.gitignore \
+--exclude src/.gitignore \
+--exclude src/analyze/.gitignore \
+--exclude src/core/.gitignore \
+--exclude src/gudev/.gitignore \
+--exclude src/hostname/.gitignore \
+--exclude src/journal/.gitignore \
+--exclude src/libsystemd-daemon/.gitignore \
+--exclude src/libsystemd-id128/.gitignore \
+--exclude src/libudev/.gitignore \
+--exclude src/locale/.gitignore \
+--exclude src/login/.gitignore \
+--exclude src/python-systemd/.gitignore \
+--exclude tmpfiles.d/systemd.conf.m4 \
+--exclude src/python-systemd/docs/.gitignore \
+--exclude src/timedate/.gitignore \
+--exclude src/udev/.gitignore \
+--exclude src/udev/scsi_id/.gitignore \
+--exclude sysctl.d/.gitignore \
+--exclude test/.gitignore \
+--exclude units/.gitignore \
+--exclude units/user/.gitignore \
+--exclude src/libsystemd/sd-bus/PORTING-DBUS1 \
+--exclude CODING_STYLE \
+--exclude src/readahead/Makefile \
+--exclude src/libsystemd-terminal/unifont-def.h \
+--exclude hwdb/sdio.ids \
+%{patches}
+%endif
 
 %build
-autoreconf
-
-%configure \
-        --libexecdir=%{_prefix}/lib \
-        --enable-gtk-doc \
-        --disable-static \
-        --with-sysvinit-path=/etc/rc.d/init.d \
-        --with-rc-local-script-path-start=/etc/rc.d/rc.local
-make %{?_smp_mflags} V=1
+autoreconf -i
+
+CONFIGURE_OPTS=(
+--libexecdir=%{_prefix}/lib
+--with-sysvinit-path=/etc/rc.d/init.d
+--with-rc-local-script-path-start=/etc/rc.d/rc.local
+--disable-timesyncd
+--disable-kdbus
+--disable-terminal
+--disable-importd
+--enable-gtk-doc
+--enable-compat-libs
+--disable-sysusers
+%ifarch s390 s390x ppc %{power64} aarch64
+--disable-lto
+%endif
+)
+
+
+%configure "${CONFIGURE_OPTS[@]}"
+make %{?_smp_mflags} GCC_COLORS="" V=1
 
 %install
 %make_install
+
 find %{buildroot} \( -name '*.a' -o -name '*.la' \) -delete
+sed -i 's/L+/#/' %{buildroot}/usr/lib/tmpfiles.d/etc.conf
 
 # udev links
 mkdir -p %{buildroot}/%{_sbindir}
@@ -648,9 +562,10 @@ ln -s ../bin/systemctl %{buildroot}%{_sbindir}/runlevel
 
 # legacy links
 ln -s loginctl %{buildroot}%{_bindir}/systemd-loginctl
+ln -s coredumpctl %{buildroot}%{_bindir}/systemd-coredumpctl
 
 # We create all wants links manually at installation time to make sure
-# they are not owned and hence overriden by rpm after the used deleted
+# they are not owned and hence overriden by rpm after the user deleted
 # them.
 rm -r %{buildroot}%{_sysconfdir}/systemd/system/*.target.wants
 
@@ -666,6 +581,22 @@ mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/default.target.wants
 mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/dbus.target.wants
 mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/syslog.target.wants
 
+# Temporary workaround for #1002806
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/poweroff.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/rescue.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/multi-user.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/graphical.target.wants
+mkdir -p %{buildroot}%{_prefix}/lib/systemd/system/reboot.target.wants
+ln -s ../systemd-update-utmp-runlevel.service %{buildroot}%{_prefix}/lib/systemd/system/poweroff.target.wants/
+ln -s ../systemd-update-utmp-runlevel.service %{buildroot}%{_prefix}/lib/systemd/system/rescue.target.wants/
+ln -s ../systemd-update-utmp-runlevel.service %{buildroot}%{_prefix}/lib/systemd/system/multi-user.target.wants/
+ln -s ../systemd-update-utmp-runlevel.service %{buildroot}%{_prefix}/lib/systemd/system/graphical.target.wants/
+ln -s ../systemd-update-utmp-runlevel.service %{buildroot}%{_prefix}/lib/systemd/system/reboot.target.wants/
+
+mkdir -p %{buildroot}%{_localstatedir}/{run,log}/
+touch %{buildroot}%{_localstatedir}/run/utmp
+touch %{buildroot}%{_localstatedir}/log/{w,b}tmp
+
 # Make sure the user generators dir exists too
 mkdir -p %{buildroot}%{_prefix}/lib/systemd/system-generators
 mkdir -p %{buildroot}%{_prefix}/lib/systemd/user-generators
@@ -695,25 +626,35 @@ mkdir -p %{buildroot}%{_prefix}/lib/systemd/ntp-units.d/
 # Make sure directories in /var exist
 mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/coredump
 mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/catalog
+mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/backlight
+mkdir -p %{buildroot}%{_localstatedir}/lib/systemd/rfkill
 touch %{buildroot}%{_localstatedir}/lib/systemd/catalog/database
 touch %{buildroot}%{_sysconfdir}/udev/hwdb.bin
+touch %{buildroot}%{_localstatedir}/lib/systemd/random-seed
+touch %{buildroot}%{_localstatedir}/lib/systemd/clock
 
-# Install SysV conversion tool for systemd
-install -m 0755 %{SOURCE2} %{buildroot}%{_bindir}/
 
-# Install rsyslog fragment
-mkdir -p %{buildroot}%{_sysconfdir}/rsyslog.d/
-install -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/rsyslog.d/
+# Install SysV conversion tool for systemd
+install -m 0755 %{SOURCE3} %{buildroot}%{_bindir}/
 
 # Install yum protection fragment
 mkdir -p %{buildroot}%{_sysconfdir}/yum/protected.d/
-install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/yum/protected.d/systemd.conf
+install -m 0644 %{SOURCE2} %{buildroot}%{_sysconfdir}/yum/protected.d/systemd.conf
 
 # Install rc.local
 mkdir -p %{buildroot}%{_sysconfdir}/rc.d/
-install -m 0644 %{SOURCE5} %{buildroot}%{_sysconfdir}/rc.d/rc.local
+install -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/rc.d/rc.local
 ln -s rc.d/rc.local %{buildroot}%{_sysconfdir}/rc.local
 
+# Install rsyslog fragment
+mkdir -p %{buildroot}%{_sysconfdir}/rsyslog.d/
+install -m 0644 %{SOURCE6} %{buildroot}%{_sysconfdir}/rsyslog.d/
+
+# Delete LICENSE files from _docdir (we'll get them in as %%license)
+rm -rf %{buildroot}%{_docdir}/LICENSE*
+
+%find_lang %{name}
+
 # To avoid making life hard for Rawhide-using developers, don't package the
 # kernel.core_pattern setting until systemd-coredump is a part of an actual
 # systemd release and it's made clear how to get the core dumps out of the
@@ -730,57 +671,29 @@ rm -f %{buildroot}%{_prefix}/lib/systemd/system/local-fs.target.wants/tmp.mount
 # No gpt-auto-generator in RHEL7
 rm -f %{buildroot}%{_prefix}/lib/systemd/system-generators/systemd-gpt-auto-generator
 
-install -m 0644 %{SOURCE6} $RPM_BUILD_ROOT/%{_udevrulesdir}/
+# 50-bridge.conf rules are in intscripts
+rm -f %{buildroot}%{_prefix}/lib/sysctl.d/50-bridge.conf
+
+# no networkd in rhel7
+rm -f %{buildroot}%{_prefix}/lib/systemd/network/*
+
+install -m 0644 %{SOURCE5} $RPM_BUILD_ROOT/%{_udevrulesdir}/
 
 %pre
 getent group cdrom >/dev/null 2>&1 || groupadd -r -g 11 cdrom >/dev/null 2>&1 || :
+getent group utmp >/dev/null 2>&1 || groupadd -r -g 22 utmp >/dev/null 2>&1 || :
 getent group tape >/dev/null 2>&1 || groupadd -r -g 33 tape >/dev/null 2>&1 || :
 getent group dialout >/dev/null 2>&1 || groupadd -r -g 18 dialout >/dev/null 2>&1 || :
+getent group input >/dev/null 2>&1 || groupadd -r input >/dev/null 2>&1 || :
 getent group floppy >/dev/null 2>&1 || groupadd -r -g 19 floppy >/dev/null 2>&1 || :
 getent group systemd-journal >/dev/null 2>&1 || groupadd -r -g 190 systemd-journal 2>&1 || :
+getent group systemd-bus-proxy >/dev/null 2>&1 || groupadd -r systemd-bus-proxy 2>&1 || :
+getent passwd systemd-bus-proxy >/dev/null 2>&1 || useradd -r -l -g systemd-bus-proxy -d / -s /sbin/nologin -c "systemd Bus Proxy" systemd-bus-proxy >/dev/null 2>&1 || :
+getent group systemd-network >/dev/null 2>&1 || groupadd -r systemd-network 2>&1 || :
+getent passwd systemd-network >/dev/null 2>&1 || useradd -r -l -g systemd-network -d / -s /sbin/nologin -c "systemd Network Management" systemd-network >/dev/null 2>&1 || :
 
 systemctl stop systemd-udevd-control.socket systemd-udevd-kernel.socket systemd-udevd.service >/dev/null 2>&1 || :
 
-# Rename configuration files that changed their names
-mv -n %{_sysconfdir}/systemd/systemd-logind.conf %{_sysconfdir}/systemd/logind.conf >/dev/null 2>&1 || :
-mv -n %{_sysconfdir}/systemd/systemd-journald.conf %{_sysconfdir}/systemd/journald.conf >/dev/null 2>&1 || :
-
-%pretrans -p <lua>
---# Migrate away from systemd-timedated-ntp.target.
---# Take note which ntp services, if any, were pulled in by it.
---# We'll enable them the usual way in %%post.
---# Remove this after upgrades from F17 are no longer supported.
-function migrate_ntp()
-    --# Are we upgrading from a version that had systemd-timedated-ntp.target?
-    t = posix.stat("/usr/lib/systemd/system/systemd-timedated-ntp.target", "type")
-    if t ~= "regular" then return end
-
-    --# Was the target enabled?
-    t = posix.stat("/etc/systemd/system/multi-user.target.wants/systemd-timedated-ntp.target", "type")
-    if t ~= "link" then return end
-
-    --# filesystem provides /var/lib/rpm-state since F17 GA
-    r,msg,errno = posix.mkdir("/var/lib/rpm-state/systemd")
-    if r == nil and errno ~= 17 then return end  --# EEXIST is fine.
-
-    --# Save the list of ntp services pulled by the target.
-    f = io.open("/var/lib/rpm-state/systemd/ntp-units", "w")
-    if f == nil then return end
-
-    files = posix.dir("/usr/lib/systemd/system/systemd-timedated-ntp.target.wants")
-    for i,name in ipairs(files) do
-        if name ~= "." and name ~= ".." then
-            s = string.format("%s\n", name)
-            f:write(s)
-        end
-    end
-
-    f:close()
-end
-
-migrate_ntp()
-return 0
-
 %post
 systemd-machine-id-setup >/dev/null 2>&1 || :
 /usr/lib/systemd/systemd-random-seed save >/dev/null 2>&1 || :
@@ -790,173 +703,190 @@ udevadm hwdb --update >/dev/null 2>&1 || :
 journalctl --update-catalog >/dev/null 2>&1 || :
 systemd-tmpfiles --create >/dev/null 2>&1 || :
 
+# Make sure new journal files will be owned by the "systemd-journal" group
+chgrp systemd-journal /run/log/journal/ /run/log/journal/`cat /etc/machine-id 2> /dev/null` /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || :
+chmod g+s /run/log/journal/ /run/log/journal/`cat /etc/machine-id 2> /dev/null` /var/log/journal/ /var/log/journal/`cat /etc/machine-id 2> /dev/null` >/dev/null 2>&1 || :
+
 if [ $1 -eq 1 ] ; then
-        # Try to read default runlevel from the old inittab if it exists
-        runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab 2> /dev/null)
-        if [ -z "$runlevel" ] ; then
-                target="/usr/lib/systemd/system/graphical.target"
-        else
-                target="/usr/lib/systemd/system/runlevel$runlevel.target"
-        fi
-
-        # And symlink what we found to the new-style default.target
-        ln -sf "$target" /etc/systemd/system/default.target >/dev/null 2>&1 || :
-
-        # Services we install by default, and which are controlled by presets.
-        systemctl preset \
-                getty@tty1.service \
-                remote-fs.target \
-                systemd-readahead-replay.service \
-                systemd-readahead-collect.service >/dev/null 2>&1 || :
+# Try to read default runlevel from the old inittab if it exists
+runlevel=$(awk -F ':' '$3 == "initdefault" && $1 !~ "^#" { print $2 }' /etc/inittab 2> /dev/null)
+if [ -z "$runlevel" ] ; then
+target="/usr/lib/systemd/system/graphical.target"
 else
-        # This systemd service does not exist anymore, we now do it
-        # internally in PID 1
-        rm -f /etc/systemd/system/sysinit.target.wants/hwclock-load.service >/dev/null 2>&1 || :
-
-        # This systemd target does not exist anymore. It's been replaced
-        # by ntp-units.d.
-        rm -f /etc/systemd/system/multi-user.target.wants/systemd-timedated-ntp.target >/dev/null 2>&1 || :
-
-        # Enable the units recorded by %%pretrans
-        if [ -e /var/lib/rpm-state/systemd/ntp-units ] ; then
-                while read service; do
-                        systemctl enable "$service" >/dev/null 2>&1 || :
-                done < /var/lib/rpm-state/systemd/ntp-units
-                rm -r /var/lib/rpm-state/systemd/ntp-units >/dev/null 2>&1 || :
-        fi
+target="/usr/lib/systemd/system/runlevel$runlevel.target"
 fi
 
+# And symlink what we found to the new-style default.target
+ln -sf "$target" /etc/systemd/system/default.target >/dev/null 2>&1 || :
+
+# Services we install by default, and which are controlled by presets.
+systemctl preset \
+remote-fs.target \
+getty@.service \
+serial-getty@.service \
+console-getty.service \
+console-shell.service \
+debug-shell.service \
+systemd-readahead-replay.service \
+systemd-readahead-collect.service \
+>/dev/null 2>&1 || :
+else
+# This systemd service does not exist anymore, we now do it
+# internally in PID 1
+rm -f /etc/systemd/system/sysinit.target.wants/hwclock-load.service >/dev/null 2>&1 || :
+
+# This systemd target does not exist anymore. It's been replaced
+# by ntp-units.d.
+rm -f /etc/systemd/system/multi-user.target.wants/systemd-timedated-ntp.target >/dev/null 2>&1 || :
+
+# Enable the units recorded by %%pretrans
+if [ -e /var/lib/rpm-state/systemd/ntp-units ] ; then
+while read service; do
+systemctl enable "$service" >/dev/null 2>&1 || :
+done < /var/lib/rpm-state/systemd/ntp-units
+rm -r /var/lib/rpm-state/systemd/ntp-units >/dev/null 2>&1 || :
+fi
+fi
+
+# Move old stuff around in /var/lib
+mv %{_localstatedir}/lib/random-seed %{_localstatedir}/lib/systemd/random-seed >/dev/null 2>&1 || :
+mv %{_localstatedir}/lib/backlight %{_localstatedir}/lib/systemd/backlight >/dev/null 2>&1 || :
+
 # Migrate /etc/sysconfig/clock
 if [ ! -L /etc/localtime -a -e /etc/sysconfig/clock ] ; then
-       . /etc/sysconfig/clock >/dev/null 2>&1 || :
-       if [ -n "$ZONE" -a -e "/usr/share/zoneinfo/$ZONE" ] ; then
-              ln -sf "../usr/share/zoneinfo/$ZONE" /etc/localtime >/dev/null 2>&1 || :
-       fi
+. /etc/sysconfig/clock >/dev/null 2>&1 || :
+if [ -n "$ZONE" -a -e "/usr/share/zoneinfo/$ZONE" ] ; then
+ln -sf "../usr/share/zoneinfo/$ZONE" /etc/localtime >/dev/null 2>&1 || :
+fi
 fi
 rm -f /etc/sysconfig/clock >/dev/null 2>&1 || :
 
 # Migrate /etc/sysconfig/i18n
 if [ -e /etc/sysconfig/i18n -a ! -e /etc/locale.conf ]; then
-        unset LANG
-        unset LC_CTYPE
-        unset LC_NUMERIC
-        unset LC_TIME
-        unset LC_COLLATE
-        unset LC_MONETARY
-        unset LC_MESSAGES
-        unset LC_PAPER
-        unset LC_NAME
-        unset LC_ADDRESS
-        unset LC_TELEPHONE
-        unset LC_MEASUREMENT
-        unset LC_IDENTIFICATION
-        . /etc/sysconfig/i18n >/dev/null 2>&1 || :
-        [ -n "$LANG" ] && echo LANG=$LANG > /etc/locale.conf 2>&1 || :
-        [ -n "$LC_CTYPE" ] && echo LC_CTYPE=$LC_CTYPE >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_NUMERIC" ] && echo LC_NUMERIC=$LC_NUMERIC >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_TIME" ] && echo LC_TIME=$LC_TIME >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_COLLATE" ] && echo LC_COLLATE=$LC_COLLATE >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_MONETARY" ] && echo LC_MONETARY=$LC_MONETARY >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_MESSAGES" ] && echo LC_MESSAGES=$LC_MESSAGES >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_PAPER" ] && echo LC_PAPER=$LC_PAPER >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_NAME" ] && echo LC_NAME=$LC_NAME >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_ADDRESS" ] && echo LC_ADDRESS=$LC_ADDRESS >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_TELEPHONE" ] && echo LC_TELEPHONE=$LC_TELEPHONE >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_MEASUREMENT" ] && echo LC_MEASUREMENT=$LC_MEASUREMENT >> /etc/locale.conf 2>&1 || :
-        [ -n "$LC_IDENTIFICATION" ] && echo LC_IDENTIFICATION=$LC_IDENTIFICATION >> /etc/locale.conf 2>&1 || :
+unset LANG
+unset LC_CTYPE
+unset LC_NUMERIC
+unset LC_TIME
+unset LC_COLLATE
+unset LC_MONETARY
+unset LC_MESSAGES
+unset LC_PAPER
+unset LC_NAME
+unset LC_ADDRESS
+unset LC_TELEPHONE
+unset LC_MEASUREMENT
+unset LC_IDENTIFICATION
+. /etc/sysconfig/i18n >/dev/null 2>&1 || :
+[ -n "$LANG" ] && echo LANG=$LANG > /etc/locale.conf 2>&1 || :
+[ -n "$LC_CTYPE" ] && echo LC_CTYPE=$LC_CTYPE >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_NUMERIC" ] && echo LC_NUMERIC=$LC_NUMERIC >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_TIME" ] && echo LC_TIME=$LC_TIME >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_COLLATE" ] && echo LC_COLLATE=$LC_COLLATE >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_MONETARY" ] && echo LC_MONETARY=$LC_MONETARY >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_MESSAGES" ] && echo LC_MESSAGES=$LC_MESSAGES >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_PAPER" ] && echo LC_PAPER=$LC_PAPER >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_NAME" ] && echo LC_NAME=$LC_NAME >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_ADDRESS" ] && echo LC_ADDRESS=$LC_ADDRESS >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_TELEPHONE" ] && echo LC_TELEPHONE=$LC_TELEPHONE >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_MEASUREMENT" ] && echo LC_MEASUREMENT=$LC_MEASUREMENT >> /etc/locale.conf 2>&1 || :
+[ -n "$LC_IDENTIFICATION" ] && echo LC_IDENTIFICATION=$LC_IDENTIFICATION >> /etc/locale.conf 2>&1 || :
 fi
 
 # Migrate /etc/sysconfig/keyboard
 if [ -e /etc/sysconfig/keyboard -a ! -e /etc/vconsole.conf ]; then
-        unset SYSFONT
-        unset SYSFONTACM
-        unset UNIMAP
-        unset KEYMAP
-        [ -e /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n >/dev/null 2>&1 || :
-        . /etc/sysconfig/keyboard >/dev/null 2>&1 || :
-        [ -n "$SYSFONT" ] && echo FONT=$SYSFONT > /etc/vconsole.conf 2>&1 || :
-        [ -n "$SYSFONTACM" ] && echo FONT_MAP=$SYSFONTACM >> /etc/vconsole.conf 2>&1 || :
-        [ -n "$UNIMAP" ] && echo FONT_UNIMAP=$UNIMAP >> /etc/vconsole.conf 2>&1 || :
-        [ -n "$KEYTABLE" ] && echo KEYMAP=$KEYTABLE >> /etc/vconsole.conf 2>&1 || :
+unset SYSFONT
+unset SYSFONTACM
+unset UNIMAP
+unset KEYMAP
+[ -e /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n >/dev/null 2>&1 || :
+. /etc/sysconfig/keyboard >/dev/null 2>&1 || :
+[ -n "$SYSFONT" ] && echo FONT=$SYSFONT > /etc/vconsole.conf 2>&1 || :
+[ -n "$SYSFONTACM" ] && echo FONT_MAP=$SYSFONTACM >> /etc/vconsole.conf 2>&1 || :
+[ -n "$UNIMAP" ] && echo FONT_UNIMAP=$UNIMAP >> /etc/vconsole.conf 2>&1 || :
+[ -n "$KEYTABLE" ] && echo KEYMAP=$KEYTABLE >> /etc/vconsole.conf 2>&1 || :
 fi
 rm -f /etc/sysconfig/i18n >/dev/null 2>&1 || :
 rm -f /etc/sysconfig/keyboard >/dev/null 2>&1 || :
 
 # Migrate HOSTNAME= from /etc/sysconfig/network
 if [ -e /etc/sysconfig/network -a ! -e /etc/hostname ]; then
-        unset HOSTNAME
-        . /etc/sysconfig/network >/dev/null 2>&1 || :
-        [ -n "$HOSTNAME" ] && echo $HOSTNAME > /etc/hostname 2>&1 || :
+unset HOSTNAME
+. /etc/sysconfig/network >/dev/null 2>&1 || :
+[ -n "$HOSTNAME" ] && echo $HOSTNAME > /etc/hostname 2>&1 || :
 fi
 sed -i '/^HOSTNAME=/d' /etc/sysconfig/network >/dev/null 2>&1 || :
 
 # Migrate the old systemd-setup-keyboard X11 configuration fragment
 if [ ! -e /etc/X11/xorg.conf.d/00-keyboard.conf ] ; then
-        mv /etc/X11/xorg.conf.d/00-system-setup-keyboard.conf /etc/X11/xorg.conf.d/00-keyboard.conf >/dev/null 2>&1 || :
+mv /etc/X11/xorg.conf.d/00-system-setup-keyboard.conf /etc/X11/xorg.conf.d/00-keyboard.conf >/dev/null 2>&1 || :
 else
-        rm -f /etc/X11/xorg.conf.d/00-system-setup-keyboard.conf >/dev/null 2>&1 || :
+rm -f /etc/X11/xorg.conf.d/00-system-setup-keyboard.conf >/dev/null 2>&1 || :
 fi
 
 # sed-fu to add myhostname to the hosts line of /etc/nsswitch.conf
 if [ -f /etc/nsswitch.conf ] ; then
-        sed -i.bak -e '
-                /^hosts:/ !b
-                /\<myhostname\>/ b
-                s/[[:blank:]]*$/ myhostname/
-                ' /etc/nsswitch.conf >/dev/null 2>&1 || :
+sed -i.bak -e '
+/^hosts:/ !b
+/\<myhostname\>/ b
+s/[[:blank:]]*$/ myhostname/
+' /etc/nsswitch.conf >/dev/null 2>&1 || :
 fi
 
 %posttrans
 # Convert old /etc/sysconfig/desktop settings
 preferred=
 if [ -f /etc/sysconfig/desktop ]; then
-        . /etc/sysconfig/desktop
-        if [ "$DISPLAYMANAGER" = GNOME ]; then
-                preferred=gdm
-        elif [ "$DISPLAYMANAGER" = KDE ]; then
-                preferred=kdm
-        elif [ "$DISPLAYMANAGER" = WDM ]; then
-                preferred=wdm
-        elif [ "$DISPLAYMANAGER" = XDM ]; then
-                preferred=xdm
-        elif [ -n "$DISPLAYMANAGER" ]; then
-                preferred=${DISPLAYMANAGER##*/}
-        fi
+. /etc/sysconfig/desktop
+if [ "$DISPLAYMANAGER" = GNOME ]; then
+preferred=gdm
+elif [ "$DISPLAYMANAGER" = KDE ]; then
+preferred=kdm
+elif [ "$DISPLAYMANAGER" = WDM ]; then
+preferred=wdm
+elif [ "$DISPLAYMANAGER" = XDM ]; then
+preferred=xdm
+elif [ -n "$DISPLAYMANAGER" ]; then
+preferred=${DISPLAYMANAGER##*/}
+fi
 fi
 if [ -z "$preferred" ]; then
-        if [ -x /usr/sbin/gdm ]; then
-                preferred=gdm
-        elif [ -x /usr/bin/kdm ]; then
-                preferred=kdm
-        fi
+if [ -x /usr/sbin/gdm ]; then
+preferred=gdm
+elif [ -x /usr/bin/kdm ]; then
+preferred=kdm
+fi
 fi
 if [ -n "$preferred" -a -r "/usr/lib/systemd/system/$preferred.service" ]; then
-        # This is supposed to fail when the symlink already exists
-        ln -s "/usr/lib/systemd/system/$preferred.service" /etc/systemd/system/display-manager.service >/dev/null 2>&1 || :
+# This is supposed to fail when the symlink already exists
+ln -s "/usr/lib/systemd/system/$preferred.service" /etc/systemd/system/display-manager.service >/dev/null 2>&1 || :
 fi
 
 %postun
 if [ $1 -ge 1 ] ; then
-        systemctl daemon-reload > /dev/null 2>&1 || :
-        systemctl try-restart systemd-logind.service >/dev/null 2>&1 || :
+systemctl daemon-reload > /dev/null 2>&1 || :
 fi
 
 %preun
 if [ $1 -eq 0 ] ; then
-        systemctl disable \
-                getty@.service \
-                remote-fs.target \
-                systemd-readahead-replay.service \
-                systemd-readahead-collect.service >/dev/null 2>&1 || :
-
-        rm -f /etc/systemd/system/default.target >/dev/null 2>&1 || :
-
-        if [ -f /etc/nsswitch.conf ] ; then
-                sed -i.bak -e '
-                        /^hosts:/ !b
-                        s/[[:blank:]]\+myhostname\>//
-                        ' /etc/nsswitch.conf >/dev/null 2>&1 || :
-        fi
+systemctl disable \
+remote-fs.target \
+getty@.service \
+serial-getty@.service \
+console-getty.service \
+console-shell.service \
+debug-shell.service \
+systemd-readahead-replay.service \
+systemd-readahead-collect.service \
+>/dev/null 2>&1 || :
+
+rm -f /etc/systemd/system/default.target >/dev/null 2>&1 || :
+
+if [ -f /etc/nsswitch.conf ] ; then
+sed -i.bak -e '
+/^hosts:/ !b
+s/[[:blank:]]\+myhostname\>//
+' /etc/nsswitch.conf >/dev/null 2>&1 || :
+fi
 fi
 
 %post libs -p /sbin/ldconfig
@@ -967,19 +897,53 @@ fi
 
 %pre journal-gateway
 getent group systemd-journal-gateway >/dev/null 2>&1 || groupadd -r -g 191 systemd-journal-gateway 2>&1 || :
-getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g systemd-journal-gateway -d %{_prefix}/lib/systemd -s /sbin/nologin -c "Journal Gateway" systemd-journal-gateway >/dev/null 2>&1 || :
+getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g systemd-journal-gateway -d %{_localstatedir}/log/journal -s /sbin/nologin -c "Journal Gateway" systemd-journal-gateway >/dev/null 2>&1 || :
+getent group systemd-journal-remote >/dev/null 2>&1 || groupadd -r systemd-journal-remote 2>&1 || :
+getent passwd systemd-journal-remote >/dev/null 2>&1 || useradd -r -l -g systemd-journal-remote -d /%{_localstatedir}/log/journal/remote -s /sbin/nologin -c "Journal Remote" systemd-journal-remote >/dev/null 2>&1 || :
+getent group systemd-journal-upload >/dev/null 2>&1 || groupadd -r systemd-journal-upload 2>&1 || :
+getent passwd systemd-journal-upload >/dev/null 2>&1 || useradd -r -l -g systemd-journal-upload -d /%{_localstatedir}/log/journal/upload -s /sbin/nologin -c "Journal Upload" systemd-journal-upload >/dev/null 2>&1 || :
 
 %post journal-gateway
 %systemd_post systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
+%systemd_post systemd-journal-remote.socket systemd-journal-remote.service
+%systemd_post systemd-journal-upload.service
 
 %preun journal-gateway
 %systemd_preun systemd-journal-gatewayd.socket systemd-journal-gatewayd.service
+%systemd_preun systemd-journal-remote.socket systemd-journal-remote.service
+%systemd_preun systemd-journal-upload.service
 
 %postun journal-gateway
 %systemd_postun_with_restart systemd-journal-gatewayd.service
+%systemd_postun_with_restart systemd-journal-remote.service
+%systemd_postun_with_restart systemd-journal-upload.service
+
+%post networkd
+%systemd_post systemd-networkd.service systemd-networkd-wait-online.service
+
+%preun networkd
+%systemd_preun systemd-networkd.service systemd-networkd-wait-online.service
+
+%postun networkd
+%systemd_postun_with_restart systemd-networkd.service systemd-networkd-wait-online.service
+
+%pre resolved
+getent group systemd-resolve >/dev/null 2>&1 || groupadd -r systemd-resolve 2>&1 || :
+getent passwd systemd-resolve >/dev/null 2>&1 || useradd -r -l -g systemd-resolve -d / -s /sbin/nologin -c "systemd Resolver" systemd-resolve >/dev/null 2>&1 || :
+
+%post resolved
+%systemd_post systemd-resolved.service
+
+%preun resolved
+%systemd_preun systemd-resolved.service
+
+%postun resolved
+%systemd_postun_with_restart systemd-resolved.service
 
-%files
+%files -f %{name}.lang
 %doc %{_docdir}/systemd
+%{!?_licensedir:%global license %%doc}
+%license LICENSE.GPL2 LICENSE.LGPL2.1 LICENSE.MIT
 %dir %{_sysconfdir}/systemd
 %dir %{_sysconfdir}/systemd/system
 %dir %{_sysconfdir}/systemd/user
@@ -990,8 +954,8 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %dir %{_sysconfdir}/udev
 %dir %{_sysconfdir}/udev/rules.d
 %dir %{_prefix}/lib/systemd
-%dir %{_prefix}/lib/systemd/system-generators
-%dir %{_prefix}/lib/systemd/user-generators
+%{_prefix}/lib/systemd/system-generators
+%{_prefix}/lib/systemd/user-generators
 %dir %{_prefix}/lib/systemd/system-preset
 %dir %{_prefix}/lib/systemd/user-preset
 %dir %{_prefix}/lib/systemd/system-shutdown
@@ -999,14 +963,28 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %dir %{_prefix}/lib/systemd/catalog
 %dir %{_prefix}/lib/systemd/ntp-units.d
 %dir %{_prefix}/lib/tmpfiles.d
+#%dir %{_prefix}/lib/sysusers.d
 %dir %{_prefix}/lib/sysctl.d
 %dir %{_prefix}/lib/modules-load.d
 %dir %{_prefix}/lib/binfmt.d
+%dir %{_prefix}/lib/kernel
+%dir %{_prefix}/lib/kernel/install.d
 %dir %{_datadir}/systemd
 %dir %{_datadir}/pkgconfig
+%dir %{_datadir}/zsh
+%dir %{_datadir}/zsh/site-functions
+%ghost %dir %{_localstatedir}/log/journal
 %dir %{_localstatedir}/lib/systemd
 %dir %{_localstatedir}/lib/systemd/catalog
-%dir %{_localstatedir}/lib/systemd/coredump
+%ghost %dir %{_localstatedir}/lib/systemd/coredump
+%ghost %dir %{_localstatedir}/lib/systemd/backlight
+%ghost %dir %{_localstatedir}/lib/systemd/rfkill
+%ghost %{_localstatedir}/lib/systemd/random-seed
+%ghost %{_localstatedir}/lib/systemd/clock
+%ghost %{_localstatedir}/lib/systemd/catalog/database
+%ghost %attr(0664,root,utmp) %{_localstatedir}/run/utmp
+%ghost %attr(0664,root,utmp) %{_localstatedir}/log/wtmp
+%ghost %attr(0600,root,utmp) %{_localstatedir}/log/btmp
 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.systemd1.conf
 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.hostname1.conf
 %config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.login1.conf
@@ -1018,6 +996,7 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %config(noreplace) %{_sysconfdir}/systemd/logind.conf
 %config(noreplace) %{_sysconfdir}/systemd/journald.conf
 %config(noreplace) %{_sysconfdir}/systemd/bootchart.conf
+%config(noreplace) %{_sysconfdir}/systemd/coredump.conf
 %config(noreplace) %{_sysconfdir}/udev/udev.conf
 %config(noreplace) %{_sysconfdir}/rsyslog.d/listen.conf
 %config(noreplace) %{_sysconfdir}/yum/protected.d/systemd.conf
@@ -1032,12 +1011,12 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %ghost %config(noreplace) %{_sysconfdir}/locale.conf
 %ghost %config(noreplace) %{_sysconfdir}/machine-id
 %ghost %config(noreplace) %{_sysconfdir}/machine-info
+%dir %{_sysconfdir}/X11/xorg.conf.d
 %ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-keyboard.conf
-%ghost %config(noreplace) %{_sysconfdir}/X11/xorg.conf.d/00-system-setup-keyboard.conf
-%ghost %{_localstatedir}/lib/systemd/catalog/database
 %{_bindir}/systemctl
 %{_bindir}/systemd-notify
 %{_bindir}/systemd-analyze
+%{_bindir}/systemd-escape
 %{_bindir}/systemd-ask-password
 %{_bindir}/systemd-tty-ask-password-agent
 %{_bindir}/systemd-machine-id-setup
@@ -1045,6 +1024,9 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %{_bindir}/systemd-loginctl
 %{_bindir}/journalctl
 %{_bindir}/machinectl
+%{_bindir}/busctl
+%{_bindir}/coredumpctl
+%{_bindir}/systemd-coredumpctl
 %{_bindir}/systemd-tmpfiles
 %{_bindir}/systemd-nspawn
 %{_bindir}/systemd-stdio-bridge
@@ -1053,34 +1035,50 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %{_bindir}/systemd-cgtop
 %{_bindir}/systemd-delta
 %{_bindir}/systemd-run
-%caps(cap_dac_override,cap_sys_ptrace=pe) %{_bindir}/systemd-detect-virt
+%{_bindir}/systemd-detect-virt
 %{_bindir}/systemd-inhibit
+%{_bindir}/systemd-path
+#%{_bindir}/systemd-sysusers
+%{_bindir}/systemd-firstboot
 %{_bindir}/hostnamectl
 %{_bindir}/localectl
 %{_bindir}/timedatectl
 %{_bindir}/bootctl
-%{_bindir}/systemd-coredumpctl
 %{_bindir}/udevadm
 %{_bindir}/kernel-install
+%{_bindir}/systemd-hwdb
 %{_prefix}/lib/systemd/systemd
 %exclude %{_prefix}/lib/systemd/system/systemd-journal-gatewayd.*
+%exclude %{_prefix}/lib/systemd/system/systemd-journal-remote.*
+%exclude %{_prefix}/lib/systemd/system/systemd-journal-upload.*
+%exclude %{_prefix}/lib/systemd/system/systemd-networkd.service
+%exclude %{_prefix}/lib/systemd/system/systemd-networkd-wait-online.service
+%exclude %{_prefix}/lib/systemd/system/systemd-resolved.service
+%exclude %{_prefix}/lib/systemd/system/dbus-org.freedesktop.resolve1.service
 %{_prefix}/lib/systemd/system
 %{_prefix}/lib/systemd/user
 %exclude %{_prefix}/lib/systemd/systemd-journal-gatewayd
+%exclude %{_prefix}/lib/systemd/systemd-journal-remote
+%exclude %{_prefix}/lib/systemd/systemd-networkd
+%exclude %{_prefix}/lib/systemd/systemd-networkd-wait-online
+%exclude %{_prefix}/lib/systemd/systemd-resolved
+%exclude %{_prefix}/lib/systemd/systemd-resolve-host
+%exclude %{_prefix}/lib/systemd/systemd-journal-upload
 %{_prefix}/lib/systemd/systemd-*
 %{_prefix}/lib/udev
-%{_prefix}/lib/systemd/system-generators/systemd-cryptsetup-generator
-%{_prefix}/lib/systemd/system-generators/systemd-getty-generator
-%{_prefix}/lib/systemd/system-generators/systemd-rc-local-generator
-%{_prefix}/lib/systemd/system-generators/systemd-fstab-generator
-%{_prefix}/lib/systemd/system-generators/systemd-system-update-generator
-%{_prefix}/lib/systemd/system-generators/systemd-efi-boot-generator
+%exclude  %{_sysconfdir}/udev/rules.d/80-net-setup-link.rules
 %{_prefix}/lib/tmpfiles.d/systemd.conf
+%{_prefix}/lib/tmpfiles.d/systemd-nologin.conf
 %{_prefix}/lib/tmpfiles.d/x11.conf
 %{_prefix}/lib/tmpfiles.d/legacy.conf
 %{_prefix}/lib/tmpfiles.d/tmp.conf
-%{_prefix}/lib/tmpfiles.d/systemd-nologin.conf
+%{_prefix}/lib/tmpfiles.d/var.conf
+%{_prefix}/lib/tmpfiles.d/etc.conf
+%{_prefix}/lib/tmpfiles.d/sap.conf
 %{_prefix}/lib/sysctl.d/50-default.conf
+#%{_prefix}/lib/sysusers.d/basic.conf
+#%{_prefix}/lib/sysusers.d/systemd.conf
+%{_prefix}/lib/systemd/system-preset/90-systemd.preset
 %{_prefix}/lib/systemd/system-preset/99-default-disable.preset
 %{_prefix}/lib/systemd/catalog/systemd.catalog
 %{_prefix}/lib/kernel/install.d/50-depmod.install
@@ -1094,10 +1092,20 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %{_sbindir}/runlevel
 %{_sbindir}/udevadm
 %{_mandir}/man1/*
+%exclude %{_mandir}/man5/systemd.network.*
+%exclude %{_mandir}/man5/systemd.netdev.*
+%exclude %{_mandir}/man5/systemd.link.*
+%exclude %{_mandir}/man5/resolved.conf.*
 %{_mandir}/man5/*
 %{_mandir}/man7/*
 %exclude %{_mandir}/man8/systemd-journal-gatewayd.*
+%exclude %{_mandir}/man8/systemd-journal-remote.*
+%exclude %{_mandir}/man8/systemd-networkd.*
+%exclude %{_mandir}/man8/systemd-resolved.*
 %{_mandir}/man8/*
+#%{_datadir}/factory/etc/nsswitch.conf
+#%{_datadir}/factory/etc/pam.d/other
+#%{_datadir}/factory/etc/pam.d/system-auth
 %{_datadir}/systemd/kbd-model-map
 %{_datadir}/dbus-1/services/org.freedesktop.systemd1.service
 %{_datadir}/dbus-1/system-services/org.freedesktop.systemd1.service
@@ -1106,37 +1114,22 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %{_datadir}/dbus-1/system-services/org.freedesktop.locale1.service
 %{_datadir}/dbus-1/system-services/org.freedesktop.timedate1.service
 %{_datadir}/dbus-1/system-services/org.freedesktop.machine1.service
-%{_datadir}/dbus-1/interfaces/org.freedesktop.systemd1.*.xml
-%{_datadir}/dbus-1/interfaces/org.freedesktop.hostname1.xml
-%{_datadir}/dbus-1/interfaces/org.freedesktop.locale1.xml
-%{_datadir}/dbus-1/interfaces/org.freedesktop.timedate1.xml
+%dir %{_datadir}/polkit-1
+%dir %{_datadir}/polkit-1/actions
 %{_datadir}/polkit-1/actions/org.freedesktop.systemd1.policy
 %{_datadir}/polkit-1/actions/org.freedesktop.hostname1.policy
 %{_datadir}/polkit-1/actions/org.freedesktop.login1.policy
 %{_datadir}/polkit-1/actions/org.freedesktop.locale1.policy
 %{_datadir}/polkit-1/actions/org.freedesktop.timedate1.policy
-%{_datadir}/pkgconfig/systemd.pc
+%{_datadir}/polkit-1/actions/org.freedesktop.machine1.policy
+%{_libdir}/pkgconfig/systemd.pc
 %{_datadir}/pkgconfig/udev.pc
-%{_datadir}/bash-completion/completions/hostnamectl
-%{_datadir}/bash-completion/completions/journalctl
-%{_datadir}/bash-completion/completions/localectl
-%{_datadir}/bash-completion/completions/loginctl
-%{_datadir}/bash-completion/completions/systemctl
-%{_datadir}/bash-completion/completions/systemd-coredumpctl
-%{_datadir}/bash-completion/completions/timedatectl
-%{_datadir}/bash-completion/completions/udevadm
-%{_datadir}/bash-completion/completions/systemd-analyze
-%{_datadir}/bash-completion/completions/kernel-install
-%{_datadir}/bash-completion/completions/systemd-run
+%{_datadir}/bash-completion/completions/*
 %{_datadir}/zsh/site-functions/*
-%ghost %{_localstatedir}/lib/random-seed
-%ghost %dir %{_localstatedir}/var/lib/systemd/
-%ghost %dir %{_localstatedir}/var/lib/systemd/coredump
-%ghost %dir %{_localstatedir}/var/lib/systemd/catalog
-%ghost %{_localstatedir}/var/lib/systemd/catalog/database
-%ghost %dir %{_localstatedir}/var/lib/backlight/
+%{_prefix}/lib/systemd/catalog/systemd.*.catalog
 %config(noreplace) %{_sysconfdir}/rc.d/rc.local
 %{_sysconfdir}/rc.local
+%{_datadir}/systemd/language-fallback-map
 
 # Make sure we don't remove runlevel targets from F14 alpha installs,
 # but make sure we don't create then anew.
@@ -1148,31 +1141,35 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %files libs
 %{_libdir}/security/pam_systemd.so
 %{_libdir}/libnss_myhostname.so.2
+%{_libdir}/libnss_mymachines.so.2
+%{_libdir}/libudev.so.*
+%{_libdir}/libsystemd.so.*
 %{_libdir}/libsystemd-daemon.so.*
 %{_libdir}/libsystemd-login.so.*
 %{_libdir}/libsystemd-journal.so.*
 %{_libdir}/libsystemd-id128.so.*
-%{_libdir}/libudev.so.*
 
 %files devel
 %dir %{_includedir}/systemd
+%{_libdir}/libudev.so
+%{_libdir}/libsystemd.so
 %{_libdir}/libsystemd-daemon.so
 %{_libdir}/libsystemd-login.so
 %{_libdir}/libsystemd-journal.so
 %{_libdir}/libsystemd-id128.so
-%{_libdir}/libudev.so
 %{_includedir}/systemd/sd-daemon.h
 %{_includedir}/systemd/sd-login.h
 %{_includedir}/systemd/sd-journal.h
 %{_includedir}/systemd/sd-id128.h
 %{_includedir}/systemd/sd-messages.h
-%{_includedir}/systemd/sd-shutdown.h
+%{_includedir}/systemd/_sd-common.h
 %{_includedir}/libudev.h
+%{_libdir}/pkgconfig/libudev.pc
+%{_libdir}/pkgconfig/libsystemd.pc
 %{_libdir}/pkgconfig/libsystemd-daemon.pc
 %{_libdir}/pkgconfig/libsystemd-login.pc
 %{_libdir}/pkgconfig/libsystemd-journal.pc
 %{_libdir}/pkgconfig/libsystemd-id128.pc
-%{_libdir}/pkgconfig/libudev.pc
 %{_mandir}/man3/*
 %dir %{_datadir}/gtk-doc/html/libudev
 %{_datadir}/gtk-doc/html/libudev/*
@@ -1181,20 +1178,7 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %{_bindir}/systemd-sysv-convert
 
 %files python
-%{python_sitearch}/systemd/__init__.py
-%{python_sitearch}/systemd/__init__.pyc
-%{python_sitearch}/systemd/__init__.pyo
-%{python_sitearch}/systemd/_journal.so
-%{python_sitearch}/systemd/_reader.so
-%{python_sitearch}/systemd/_daemon.so
-%{python_sitearch}/systemd/id128.so
-%{python_sitearch}/systemd/login.so
-%{python_sitearch}/systemd/journal.py
-%{python_sitearch}/systemd/journal.pyc
-%{python_sitearch}/systemd/journal.pyo
-%{python_sitearch}/systemd/daemon.py
-%{python_sitearch}/systemd/daemon.pyc
-%{python_sitearch}/systemd/daemon.pyo
+%{python_sitearch}/systemd
 
 %files -n libgudev1
 %{_libdir}/libgudev-1.0.so.*
@@ -1211,40 +1195,238 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %{_libdir}/pkgconfig/gudev-1.0*
 
 %files journal-gateway
+%config(noreplace) %{_sysconfdir}/systemd/journal-remote.conf
+%config(noreplace) %{_sysconfdir}/systemd/journal-upload.conf
 %{_prefix}/lib/systemd/system/systemd-journal-gatewayd.*
+%{_prefix}/lib/systemd/system/systemd-journal-remote.*
+%{_prefix}/lib/systemd/system/systemd-journal-upload.*
 %{_prefix}/lib/systemd/systemd-journal-gatewayd
+%{_prefix}/lib/systemd/systemd-journal-upload
+%{_prefix}/lib/systemd/systemd-journal-remote
+%{_prefix}/lib/tmpfiles.d/systemd-remote.conf
+#%{_prefix}/lib/sysusers.d/systemd-remote.conf
 %{_mandir}/man8/systemd-journal-gatewayd.*
+%{_mandir}/man8/systemd-journal-remote.*
 %{_datadir}/systemd/gatewayd
 
-%changelog
-* Thu Jul 16 2015 Lukas Nykryn <lnykryn@redhat.com> - 208-20.6
-- machined: force machined to dispatch messages (#1243401)
-
-* Thu May 21 2015 Lukas Nykryn <lnykryn@redhat.com> - 208-20.5
-- rules: load sg module (#1223340)
-
-* Mon May 11 2015 Lukas Nykryn <lnykryn@redhat.com> - 208-20.4
-- run: drop mistakenly committed test code (#1220272)
-- cgroup: downgrade log messages when we cannot write to cgroup trees that are mounted read-only (#1220298)
-
-* Wed Apr 08 2015 Lukáš Nykrýn <lnykryn@redhat.com> - 208-20.3
-- Revert "conditionalize hardening away on s390(x)"
-
-* Thu Mar 19 2015 Lukas Nykryn <lnykryn@redhat.com> - 208-20.2
-- Revert "units: fix BindsTo= logic when applied relative to services with Type=oneshot" (#1203803)
-
-* Mon Mar 09 2015 Lukas Nykryn <lnykryn@redhat.com> - 208-20.1
-- shared/install: avoid prematurely rejecting "missing" units (#1199981)
-- core: fix enabling units via their absolute paths (#1199981)
+%files networkd
+%dir %{_prefix}/lib/systemd/network
+%{_bindir}/networkctl
+#%{_prefix}/lib/systemd/network/99-default.link
+#%{_prefix}/lib/systemd/network/80-container-host0.network
+#%{_prefix}/lib/systemd/network/80-container-ve.network
+%{_prefix}/lib/systemd/system/systemd-networkd.service
+%{_prefix}/lib/systemd/system/systemd-networkd-wait-online.service
+%{_prefix}/lib/systemd/systemd-networkd
+%{_prefix}/lib/systemd/systemd-networkd-wait-online
+%{_mandir}/man8/systemd-journal-gatewayd.*
+%{_mandir}/man8/systemd-journal-remote.*
+%{_mandir}/man8/systemd-networkd.*
+%{_mandir}/man5/systemd.network.*
+%{_mandir}/man5/systemd.netdev.*
+%{_mandir}/man5/systemd.link.*
+%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.network1.conf
+%{_datadir}/dbus-1/system-services/org.freedesktop.network1.service
+#%{_datadir}/polkit-1/actions/org.freedesktop.network1.policy
+%{_prefix}/lib/udev/rules.d/80-net-setup-link.rules
+
+%files resolved
+%{_prefix}/lib/systemd/systemd-resolved
+%{_prefix}/lib/systemd/systemd-resolve-host
+%{_sysconfdir}/systemd/resolved.conf
+%config(noreplace) %{_sysconfdir}/dbus-1/system.d/org.freedesktop.resolve1.conf
+%{_datadir}/dbus-1/system-services/org.freedesktop.resolve1.service
+%{_libdir}/libnss_resolve.so.2
+%{_prefix}/lib/systemd/system/systemd-resolved.service
+%{_prefix}/lib/systemd/system/dbus-org.freedesktop.resolve1.service
+%{_mandir}/man5/resolved.conf.*
+%{_mandir}/man8/systemd-resolved.*
 
-* Mon Dec 22 2014 Lukas Nykryn <lnykryn@redhat.com> - 208-20
-- core: introduce new Delegate=yes/no property controlling creation of cgroup subhierarchies (#1139223)
-- core: don't migrate PIDs for units that may contain subcgroups, do this only for leaf units (#1139223)
-- mount: use libmount to enumerate /proc/self/mountinfo (#1161417)
-- mount: monitor for utab changes with inotify (#1161417)
-- mount: add remote-fs dependencies if needed after change (#1161417)
-- mount: check options as well as fstype for network mounts (#1161417)
-- rules: don't enable usb pm for Avocent devices (#1155370)
+%changelog
+* Mon Oct 12 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-19
+- udev: make naming for virtio devices opt-in (#1269216)
+- tmpfiles.d: don't clean SAP sockets either (#1186044)
+
+* Tue Oct 06 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-18
+- tmpfiles.d: don't clean SAP lockfiles and logs (#1186044)
+
+* Mon Sep 28 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-17
+- sd-event: fix prepare priority queue comparison function (#1266479)
+- units: run ldconfig also when cache is unpopulated (#1265539)
+- selinux: fix regression of systemctl subcommands when absolute unit file paths are specified (#1185120)
+
+* Wed Sep 23 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-16
+- login: fix gcc warning, include missing header file (#1264073)
+- shutdown: make sure /run/nologin has correct label (#1264073)
+
+* Tue Sep 22 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-15
+- login: fix label on /run/nologin (#1264073)
+- udev-rules: prandom character device node permissions (#1264112)
+
+* Tue Sep 15 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-14
+- Revert "sysctl.d: default to fq_codel, fight bufferbloat" (#1263158)
+- loginctl: print nontrivial properties in logictl show-* (#1260465)
+
+* Wed Sep 02 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-13
+- udev: net_id - support predictable ifnames on virtio buses (#1259015)
+
+* Tue Sep 01 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-12
+- selinux: fix check for transient units (#1255129)
+- socket: fix setsockopt call. SOL_SOCKET changed to SOL_TCP. (#1135599)
+- selinux: fix missing SELinux unit access check (#1185120)
+- selinux: always use *_raw API from libselinux (#1256888)
+
+* Wed Aug 12 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-11
+- journald-server: don't read audit events (#1252409)
+- everything: remove traces of --user (#1071363)
+
+* Fri Aug 07 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-10
+- Revert "journald: move /dev/log socket to /run" (#1249968)
+
+* Fri Jul 31 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-9
+- units: add [Install] section to tmp.mount
+- bus-util: add articles to explanation messages (#1016680)
+- bus-util: print correct warnings for units that fail but for which we have a NULL result only (#1016680)
+
+* Thu Jul 16 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-8
+- sysv-generator test: Fix assertion (#1222517)
+- man: avoid line break in url (#1222517)
+- Add VARIANT as a standard value for /etc/os-release (#1222517)
+- Fix permissions on /run/systemd/nspawn/locks (#1222517)
+- generators: rename add_{root,usr}_mount to add_{sysroot,sysroot_usr}_mount (#1222517)
+- Generate systemd-fsck-root.service in the initramfs (#1222517)
+- units: fix typo in systemd-resolved.service (#1222517)
+- core: don't consider umask for SocketMode= (#1222517)
+- timedate: fix memory leak in timedated (#1222517)
+- coredump: make sure we vacuum by default (#1222517)
+- tmpfiles: don't fail if we cannot create a subvolume because a file system is read-only but a dir already exists anyway (#1222517)
+- resolved: fix crash when shutting down (#1222517)
+- resolved: allow DnsAnswer objects with no space for RRs (#1222517)
+- id128: add new sd_id128_is_null() call (#1222517)
+- journalctl: Improve boot ID lookup (#1222517)
+- test-hashmap: fix an assert (#1222517)
+- units: make sure systemd-nspawn@.slice instances are actually located in machine.slice (#1222517)
+- Revert "journald-audit: exit gracefully in the case we can't join audit multicast group" (#1222517)
+- journald: handle more gracefully when bind() fails on audit sockets (#1222517)
+- udev: link-config - fix corruption (#1222517)
+- udev/net_id: Only read the first 64 bytes of PCI config space (#1222517)
+- shared: generator - correct path to systemd-fsck (#1222517)
+- logind: Save the user’s state when a session enters SESSION_ACTIVE (#1222517)
+- small fix ru translation (#1222517)
+- kmod-setup: don't warn when ipv6 can't be loaded (#1222517)
+- Partially revert "ma-setup: simplify" (#1222517)
+- ima-setup: write policy one line at a time (#1222517)
+- ata_id: unbotch format specifier (#1222517)
+- install: explicitly return 0 on success (#1222517)
+- systemd.service.xml: document that systemd removes the PIDFile (#1222517)
+- core: handle --log-target=null when calling systemd-shutdown (#1222517)
+- man: ProtectHome= protects /root as well (#1222517)
+- timedatectl: trim non-local RTC warning to 80 chars wide (#1222517)
+- escape: fix exit code (#1222517)
+- man: information about available properties (#1222517)
+- journal: in persistent mode create /var/log/journal, with all parents. (#1222517)
+- sysv-generator: fix wrong "Overwriting existing symlink" warnings (#1222517)
+- mount: don't claim a device is gone from /proc/self/mountinfo before it is gone from *all* lines (#1222517)
+- mount: properly check for mounts currently in /proc/self/mountinfo (#1222517)
+
+* Tue Jul 14 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-7
+- udev: fix crash in path_id builtin (#957112)
+
+* Fri Jul 10 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-6
+- sd-bus: don't inherit connection creds into message creds when we have a direct connection (#1230190)
+
+* Tue Jun 30 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-5
+- Revert "core: one step back again, for nspawn we actually can't wait for cgroups running empty since systemd will get exactly zero notifications about it" (#1199644)
+- bus-creds: always set SD_BUS_CREDS_PID when we set pid in the mask (#1230190)
+- sd-bus: do not use per-datagram auxiliary information (#1230190)
+- sd-bus: store selinux context at connection time (#1230190)
+- journald: simplify context handling (#1230190)
+- bash-completion: add verb set-property (#1235635)
+
+* Fri Jun 19 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-4
+- core: Fix assertion with empty Exec*= paths (#1222517)
+- rules: load sg module (#1186462)
+- util: add shell_maybe_quote() call for preparing a string for shell cmdline inclusion (#1016680)
+- bus-util: be more verbose if dbus job fails (#1016680)
+- notify: fix badly backported help message (#1199644)
+- cryptsetup: craft a unique ID with the source device (#1226333)
+- systemctl: introduce --now for enable, disable and mask (#1233081)
+- udev: also create old sas paths (#957112)
+- journald: do not strip leading whitespace from messages (#1227396)
+
+* Mon May 18 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-3
+- console-getty.service: don't start when /dev/console is missing (#1222517)
+- resolved: Do not add .busname dependencies, when compiling without kdbus. (#1222517)
+- man: add journal-remote.conf(5) (#1222517)
+- mount: don't run quotaon only for network filesystems (#1222517)
+- mount: fix up wording in the comment (#1222517)
+- udev: net_id - fix copy-paste error (#1222517)
+- man: don't mention "journalctl /dev/sda" (#1222517)
+- units: move After=systemd-hwdb-update.service dependency from udev to udev-trigger (#1222517)
+- units: explicitly order systemd-user-sessions.service after nss-user-lookup.target (#1222517)
+- zsh-completion: update loginctl (#1222517)
+- zsh-completion: add missing -M completion for journalctl (#1222517)
+- zsh-completion: update hostnamectl (#1222517)
+- shell-completion: systemctl switch-root verb (#1222517)
+- core/automount: beef up error message (#1222517)
+- man: remove 'fs' from 'rootfsflags' (#1222517)
+- shared: fix memleak (#1222517)
+- udevd: fix synchronization with settle when handling inotify events (#1222517)
+- python-systemd: fix is_socket_inet to cope with ports (#1222517)
+- man: fix examples indentation in tmpfiles.d(5) (#1222517)
+- systemctl: avoid bumping NOFILE rlimit unless needed (#1222517)
+- exit-status: Fix "NOTINSSTALLED" typo (#1222517)
+- tmpfiles: there's no systemd-forbid-user-logins.service service (#1222517)
+- kmod-setup: load ip_tables kmod at boot (#1222517)
+- util: Fix assertion in split() on missing ' (#1222517)
+- units: set KillMode=mixed for our daemons that fork worker processes (#1222517)
+- unit: don't add automatic dependencies on device units if they aren't supported (#1222517)
+- update-done: ignore nanosecond file timestamp components, they are not reliable (#1222517)
+- sd-daemon: simplify sd_pid_notify_with_fds (#1222517)
+- fstab-generator: add x-systemd.requires and x-systemd.requires-mounts-for (#1164334)
+
+* Thu May 14 2015 Lukas Nykryn <lnykryn@redhat.com> - 219-2
+- udev: restore udevadm settle timeout (#1210981)
+- udev: settle should return immediately when timeout is 0 (#1210981)
+- udev: Fix ping timeout when settle timeout is 0 (#1210981)
+- detect-virt: use /proc/device-tree (#1207773)
+- ARM: detect-virt: detect Xen (#1207773)
+- ARM: detect-virt: detect QEMU/KVM (#1207773)
+- Persistent by_path links for ata devices (#1045498)
+- man: document forwarding to syslog better (#1177336)
+- man: fix typos in previous comimt (#1177336)
+- LSB: always add network-online.target to services with priority over 10 (#1189253)
+- rules: enable memory hotplug (#1105020)
+- rules: reload sysctl settings when the bridge module is loaded (#1182105)
+
+* Tue Apr 14 2015 Lukáš Nykrýn <lnykryn@redhat.com> - 219-1
+- workaround build issues on ppc and s390
+- some more patches
+
+* Tue Mar 17 2015 Lukáš Nykrýn <lnykryn@redhat.com> - 219-0.4
+- steal more patches from fedora
+
+* Fri Mar 13 2015 Lukáš Nykrýn <lnykryn@redhat.com> - 219-0.3
+- steal patches from fedora
+
+* Fri Mar 06 2015 Lukáš Nykrýn <lnykryn@redhat.com> - 219-0.1
+- rebase to 219
+
+* Mon Dec 15 2014 Lukáš Nykrýn <lnykryn@redhat.com> - 218-0.3
+- rebase to 218
+- remove networkd tmpfiles snipets due to packaging issues
+- add resolved subpackage
+- backport some nspawn features from upstream
+
+* Thu Nov 20 2014 Lukáš Nykrýn <lnykryn@redhat.com> - 217-0.3
+- split systemd and networkd tmpfiles snippets
+
+* Thu Nov 20 2014 Lukáš Nykrýn <lnykryn@redhat.com> - 217-0.2
+- spec fixes
+- core: introduce new Delegate=yes/no property controlling creation of cgroup subhierarchies
+
+* Mon Nov 17 2014 Lukáš Nykrýn <lnykryn@redhat.com> - 217-0.1
+- rebase to 217
 
 * Mon Nov 10 2014 Lukas Nykryn <lnykryn@redhat.com> - 208-19
 - cgroups-agent: really down-grade log level (#1044386)
@@ -1541,7 +1723,7 @@ Resolves: rhbz#995197
 
 * Tue Jul 23 2013 Kay Sievers <kay@redhat.com> - 206-1
 - New upstream release
-  Resolves (#984152)
+Resolves (#984152)
 
 * Wed Jul  3 2013 Lennart Poettering <lpoetter@redhat.com> - 205-1
 - New upstream release
@@ -1554,7 +1736,7 @@ Resolves: rhbz#995197
 
 * Fri Jun 14 2013 Harald Hoyer <harald@redhat.com> 204-8
 - fix, which helps to sucessfully browse journals with
-  duplicated seqnums
+duplicated seqnums
 
 * Fri Jun 14 2013 Harald Hoyer <harald@redhat.com> 204-7
 - fix duplicate message ID bug
@@ -1600,7 +1782,7 @@ Resolves: rhbz#974132
 
 * Tue Apr 09 2013 Michal Schmidt <mschmidt@redhat.com> - 201-2
 - Automatically discover whether to run autoreconf and add autotools and git
-  BuildRequires based on the presence of patches to be applied.
+BuildRequires based on the presence of patches to be applied.
 - Use find -delete.
 
 * Mon Apr  8 2013 Lennart Poettering <lpoetter@redhat.com> - 201-1
@@ -1662,12 +1844,12 @@ Resolves: rhbz#974132
 
 * Mon Dec 10 2012 Michal Schmidt <mschmidt@redhat.com> - 196-3
 - Disable hardening on s390(x) because PIE is broken there and produces
-  text relocations with __thread (#868839).
+text relocations with __thread (#868839).
 
 * Wed Dec 05 2012 Michal Schmidt <mschmidt@redhat.com> - 196-2
 - added spice-vdagentd.service to presets (Lennart, #876237)
 - BR cryptsetup-devel instead of the legacy cryptsetup-luks-devel provide name
-  (requested by Milan Brož).
+(requested by Milan Brož).
 - verbose make to see the actual build flags
 
 * Wed Nov 21 2012 Lennart Poettering <lpoetter@redhat.com> - 196-1
@@ -1698,7 +1880,7 @@ Resolves: rhbz#974132
 
 * Wed Oct 24 2012 Kay Sievers <kay@redhat.com> - 195-3
 - Migrate /etc/sysconfig/ i18n, keyboard, network files/variables to
-  systemd native files
+systemd native files
 
 * Tue Oct 23 2012 Lennart Poettering <lpoetter@redhat.com> - 195-2
 - Provide syslog because the journal is fine as a syslog implementation
@@ -1792,9 +1974,9 @@ Resolves: rhbz#974132
 
 * Thu Aug 16 2012 Ray Strode <rstrode@redhat.com> 188-4
 - more scriptlet fixes
-  (move dm migration logic to %posttrans so the service
-   files it's looking for are available at the time
-   the logic is run)
+(move dm migration logic to %%posttrans so the service
+files it's looking for are available at the time
+the logic is run)
 
 * Sat Aug 11 2012 Lennart Poettering <lpoetter@redhat.com> - 188-3
 - Remount file systems MS_PRIVATE before switching roots
@@ -1835,8 +2017,8 @@ Resolves: rhbz#974132
 
 * Wed Jun 06 2012 Michal Schmidt <mschmidt@redhat.com> - 185-4.gita2368a3
 - Update to current git snapshot
-  - Add systemd-readahead-analyze
-  - Drop upstream patch
+- Add systemd-readahead-analyze
+- Drop upstream patch
 - Split systemd-libs
 - Drop duplicate doc files
 - Fixed License headers of subpackages
@@ -1851,9 +2033,9 @@ Resolves: rhbz#974132
 
 * Mon Jun 04 2012 Kay Sievers - 185-1
 - New upstream release
-  - udev selinux labeling fixes
-  - new man pages
-  - systemctl help <unit name>
+- udev selinux labeling fixes
+- new man pages
+- systemctl help <unit name>
 
 * Thu May 31 2012 Lennart Poettering <lpoetter@redhat.com> - 184-1
 - New upstream release
@@ -1863,7 +2045,7 @@ Resolves: rhbz#974132
 
 * Wed Mar 28 2012 Michal Schmidt <mschmidt@redhat.com> - 44-4
 - Add triggers from Bill Nottingham to correct the damage done by
-  the obsoleted systemd-units's preun scriptlet (#807457).
+the obsoleted systemd-units's preun scriptlet (#807457).
 
 * Mon Mar 26 2012 Dennis Gilmore <dennis@ausil.us> - 44-3
 - apply patch from upstream so we can build systemd on arm and ppc
@@ -1907,7 +2089,7 @@ Resolves: rhbz#974132
 
 * Wed Jan 25 2012 Kay Sievers <kay@redhat.com> - 39-1.1
 - install everything in /usr
-  https://fedoraproject.org/wiki/Features/UsrMove
+https://fedoraproject.org/wiki/Features/UsrMove
 
 * Wed Jan 25 2012 Lennart Poettering <lpoetter@redhat.com> - 39-1
 - New upstream release