From d7158efe8662f10529a175a2f5fec6dc742a6123 Mon Sep 17 00:00:00 2001
From: Didier Roche <didrocks@ubuntu.com>
Date: Thu, 9 Apr 2015 15:39:30 +0200
Subject: [PATCH 3/3] gbp-pq fuzz, refresh patches and remove old fsckd patch
 stack

---
 ...-service-and-socket-retarget-systemd-fsck.patch | 124 ---
 .../Add-man-page-and-references-to-it.patch        | 305 -------
 debian/patches/Add-mock-fsck-process.patch         |  42 -
 ...-for-compatibility-with-Debian-insserv-sy.patch |   4 +-
 ...plymouth-and-support-cancellation-of-in-p.patch | 383 ---------
 .../Disable-tests-which-fail-on-buildds.patch      |  10 +-
 .../Don-t-mount-tmp-as-tmpfs-by-default.patch      |   4 +-
 debian/patches/Drop-rc-local-generator.patch       |   4 +-
 debian/patches/Fix-paths-in-man-pages.patch        |   4 +-
 ...tc-X11-default-display-manager-if-present.patch |   6 +-
 debian/patches/Refresh-po-files.patch              | 232 ------
 .../Translate-fsckd-messages-for-plymouth.patch    |  63 --
 debian/patches/fsck-fsckd-various-fixes.patch      | 872 ---------------------
 debian/patches/insserv.conf-generator.patch        |   6 +-
 ...temd-fsck-always-connect-to-systemd-fsckd.patch |  68 --
 debian/patches/v219-stable.patch                   |   2 +-
 16 files changed, 20 insertions(+), 2109 deletions(-)
 delete mode 100644 debian/patches/Add-fsckd-service-and-socket-retarget-systemd-fsck.patch
 delete mode 100644 debian/patches/Add-man-page-and-references-to-it.patch
 delete mode 100644 debian/patches/Add-mock-fsck-process.patch
 delete mode 100644 debian/patches/Connect-to-plymouth-and-support-cancellation-of-in-p.patch
 delete mode 100644 debian/patches/Refresh-po-files.patch
 delete mode 100644 debian/patches/Translate-fsckd-messages-for-plymouth.patch
 delete mode 100644 debian/patches/fsck-fsckd-various-fixes.patch
 delete mode 100644 debian/patches/systemd-fsck-always-connect-to-systemd-fsckd.patch

diff --git a/debian/patches/Add-fsckd-service-and-socket-retarget-systemd-fsck.patch b/debian/patches/Add-fsckd-service-and-socket-retarget-systemd-fsck.patch
deleted file mode 100644
index e56b45a..0000000
--- a/debian/patches/Add-fsckd-service-and-socket-retarget-systemd-fsck.patch
+++ /dev/null
@@ -1,124 +0,0 @@
-From: Didier Roche <didrocks@ubuntu.com>
-Date: Mon, 26 Jan 2015 17:30:00 +0100
-Subject: Add fsckd service and socket, retarget systemd-fsck
-
-systemd-fsckd can be socket-activated by systemd-fsck process. Reflect that
-in the different unit files.
----
- Makefile.am                        |  3 +++
- units/systemd-fsck-root.service.in |  3 ++-
- units/systemd-fsck@.service.in     |  4 ++--
- units/systemd-fsckd.service.in     | 16 ++++++++++++++++
- units/systemd-fsckd.socket         | 14 ++++++++++++++
- 5 files changed, 37 insertions(+), 3 deletions(-)
- create mode 100644 units/systemd-fsckd.service.in
- create mode 100644 units/systemd-fsckd.socket
-
-diff --git a/Makefile.am b/Makefile.am
-index 7423590..bcebf4d 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -494,6 +494,7 @@ dist_systemunit_DATA = \
- 	units/slices.target \
- 	units/system.slice \
- 	units/x-.slice \
-+	units/systemd-fsckd.socket \
- 	units/systemd-initctl.socket \
- 	units/systemd-shutdownd.socket \
- 	units/syslog.socket \
-@@ -545,6 +546,7 @@ nodist_systemunit_DATA = \
- 	units/systemd-kexec.service \
- 	units/systemd-fsck@.service \
- 	units/systemd-fsck-root.service \
-+	units/systemd-fsckd.service \
- 	units/systemd-machine-id-commit.service \
- 	units/systemd-udevd.service \
- 	units/systemd-udev-trigger.service \
-@@ -598,6 +600,7 @@ EXTRA_DIST += \
- 	units/user/systemd-exit.service.in \
- 	units/systemd-fsck@.service.in \
- 	units/systemd-fsck-root.service.in \
-+	units/systemd-fsckd.service.in \
- 	units/systemd-machine-id-commit.service.in \
- 	units/user@.service.m4.in \
- 	units/debug-shell.service.in \
-diff --git a/units/systemd-fsck-root.service.in b/units/systemd-fsck-root.service.in
-index 6d76578..f493445 100644
---- a/units/systemd-fsck-root.service.in
-+++ b/units/systemd-fsck-root.service.in
-@@ -9,12 +9,13 @@
- Description=File System Check on Root Device
- Documentation=man:systemd-fsck-root.service(8)
- DefaultDependencies=no
-+Wants=systemd-fsckd.socket
- Before=local-fs.target shutdown.target
-+After=systemd-fsckd.socket
- ConditionPathIsReadWrite=!/
- 
- [Service]
- Type=oneshot
- RemainAfterExit=yes
- ExecStart=@rootlibexecdir@/systemd-fsck
--StandardOutput=journal+console
- TimeoutSec=0
-diff --git a/units/systemd-fsck@.service.in b/units/systemd-fsck@.service.in
-index 857e625..e6d98c0 100644
---- a/units/systemd-fsck@.service.in
-+++ b/units/systemd-fsck@.service.in
-@@ -10,12 +10,12 @@ 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
-+Wants=systemd-fsckd.socket
-+After=%i.device systemd-fsck-root.service local-fs-pre.target systemd-fsckd.socket
- Before=shutdown.target
- 
- [Service]
- Type=oneshot
- RemainAfterExit=yes
- ExecStart=@rootlibexecdir@/systemd-fsck %f
--StandardOutput=journal+console
- TimeoutSec=0
-diff --git a/units/systemd-fsckd.service.in b/units/systemd-fsckd.service.in
-new file mode 100644
-index 0000000..27c325f
---- /dev/null
-+++ b/units/systemd-fsckd.service.in
-@@ -0,0 +1,16 @@
-+#  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=File System Check Daemon to report status
-+DefaultDependencies=no
-+Requires=systemd-fsckd.socket
-+Before=shutdown.target
-+
-+[Service]
-+ExecStart=@rootlibexecdir@/systemd-fsckd
-+StandardOutput=journal+console
-diff --git a/units/systemd-fsckd.socket b/units/systemd-fsckd.socket
-new file mode 100644
-index 0000000..a8994a1
---- /dev/null
-+++ b/units/systemd-fsckd.socket
-@@ -0,0 +1,14 @@
-+#  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=fsck to fsckd communication Socket
-+Documentation=man:systemd-fsck@.service(8) man:systemd-fsck-root.service(8)
-+DefaultDependencies=no
-+
-+[Socket]
-+ListenStream=/run/systemd/fsckd
diff --git a/debian/patches/Add-man-page-and-references-to-it.patch b/debian/patches/Add-man-page-and-references-to-it.patch
deleted file mode 100644
index a8fdb86..0000000
--- a/debian/patches/Add-man-page-and-references-to-it.patch
+++ /dev/null
@@ -1,305 +0,0 @@
-From: Didier Roche <didrocks@ubuntu.com>
-Date: Mon, 26 Jan 2015 17:34:59 +0100
-Subject: Add man page and references to it.
-
-Add man page explaining the plymouth theme protocol, usage of the daemon
-as well as the socket activation part.
-Adapt existing fsck man page.
----
- Makefile-man.am                |  12 +++
- man/systemd-fsck@.service.xml  |  26 +++----
- man/systemd-fsckd.service.xml  | 162 +++++++++++++++++++++++++++++++++++++++++
- units/systemd-fsckd.service.in |   1 +
- units/systemd-fsckd.socket     |   2 +-
- 5 files changed, 189 insertions(+), 14 deletions(-)
- create mode 100644 man/systemd-fsckd.service.xml
-
-diff --git a/Makefile-man.am b/Makefile-man.am
-index d0fb9aa..7a9612e 100644
---- a/Makefile-man.am
-+++ b/Makefile-man.am
-@@ -66,6 +66,7 @@ MANPAGES += \
- 	man/systemd-efi-boot-generator.8 \
- 	man/systemd-escape.1 \
- 	man/systemd-fsck@.service.8 \
-+	man/systemd-fsckd.service.8 \
- 	man/systemd-fstab-generator.8 \
- 	man/systemd-getty-generator.8 \
- 	man/systemd-gpt-auto-generator.8 \
-@@ -209,6 +210,8 @@ MANPAGES_ALIAS += \
- 	man/systemd-ask-password-wall.service.8 \
- 	man/systemd-fsck-root.service.8 \
- 	man/systemd-fsck.8 \
-+	man/systemd-fsckd.8 \
-+	man/systemd-fsckd.socket.8 \
- 	man/systemd-hibernate-resume.8 \
- 	man/systemd-hibernate.service.8 \
- 	man/systemd-hybrid-sleep.service.8 \
-@@ -321,6 +324,8 @@ man/systemd-ask-password-wall.path.8: man/systemd-ask-password-console.service.8
- man/systemd-ask-password-wall.service.8: man/systemd-ask-password-console.service.8
- man/systemd-fsck-root.service.8: man/systemd-fsck@.service.8
- man/systemd-fsck.8: man/systemd-fsck@.service.8
-+man/systemd-fsckd.8: man/systemd-fsckd.service.8
-+man/systemd-fsckd.socket.8: man/systemd-fsckd.service.8
- man/systemd-hibernate-resume.8: man/systemd-hibernate-resume@.service.8
- man/systemd-hibernate.service.8: man/systemd-suspend.service.8
- man/systemd-hybrid-sleep.service.8: man/systemd-suspend.service.8
-@@ -601,6 +606,12 @@ man/systemd-fsck-root.service.html: man/systemd-fsck@.service.html
- man/systemd-fsck.html: man/systemd-fsck@.service.html
- 	$(html-alias)
- 
-+man/systemd-fsckd.html: man/systemd-fsckd.service.html
-+	$(html-alias)
-+
-+man/systemd-fsckd.socket.html: man/systemd-fsckd.service.html
-+	$(html-alias)
-+
- man/systemd-hibernate-resume.html: man/systemd-hibernate-resume@.service.html
- 	$(html-alias)
- 
-@@ -1738,6 +1749,7 @@ EXTRA_DIST += \
- 	man/systemd-escape.xml \
- 	man/systemd-firstboot.xml \
- 	man/systemd-fsck@.service.xml \
-+	man/systemd-fsckd.service.xml \
- 	man/systemd-fstab-generator.xml \
- 	man/systemd-getty-generator.xml \
- 	man/systemd-gpt-auto-generator.xml \
-diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
-index 88e11e8..69b8fdd 100644
---- a/man/systemd-fsck@.service.xml
-+++ b/man/systemd-fsck@.service.xml
-@@ -81,10 +81,10 @@
-     last check, number of mounts, unclean unmount, etc.</para>
- 
-     <para><filename>systemd-fsck</filename> will forward file system
--    checking progress to the console. If a file system check fails for
--    a service without <option>nofail</option>, emergency mode is
--    activated, by isolating to
--    <filename>emergency.target</filename>.</para>
-+    checking progress to <filename>systemd-fsckd.service</filename>
-+    socket. If a file system check fails for a service without
-+    <option>nofail</option>, emergency mode is activated, by isolating
-+    to <filename>emergency.target</filename>.</para>
-   </refsect1>
- 
-   <refsect1>
-@@ -125,16 +125,16 @@
-     <title>See Also</title>
-     <para>
-       <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-       <citerefentry><refentrytitle>systemd-quotacheck.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.cramfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.ext4</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.fat</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.hfsplus</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.minix</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.ntfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
--      <citerefentry><refentrytitle>fsck.xfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-+      <citerefentry project='man-pages'><refentrytitle>fsck.btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.cramfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.ext4</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.fat</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.hfsplus</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.minix</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.ntfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.xfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-     </para>
-   </refsect1>
- 
-diff --git a/man/systemd-fsckd.service.xml b/man/systemd-fsckd.service.xml
-new file mode 100644
-index 0000000..2ad7844
---- /dev/null
-+++ b/man/systemd-fsckd.service.xml
-@@ -0,0 +1,162 @@
-+<?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 Canonical
-+
-+  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-fsckd.service" xmlns:xi="http://www.w3.org/2001/XInclude">
-+
-+  <refentryinfo>
-+    <title>systemd-fsckd.service</title>
-+    <productname>systemd</productname>
-+
-+    <authorgroup>
-+      <author>
-+        <contrib>Developer</contrib>
-+        <firstname>Didier</firstname>
-+        <surname>Roche</surname>
-+        <email>didrocks@ubuntu.com</email>
-+      </author>
-+    </authorgroup>
-+  </refentryinfo>
-+
-+  <refmeta>
-+    <refentrytitle>systemd-fsckd.service</refentrytitle>
-+    <manvolnum>8</manvolnum>
-+  </refmeta>
-+
-+  <refnamediv>
-+    <refname>systemd-fsckd.service</refname>
-+    <refname>systemd-fsckd.socket</refname>
-+    <refname>systemd-fsckd</refname>
-+    <refpurpose>File system check progress reporting</refpurpose>
-+  </refnamediv>
-+
-+  <refsynopsisdiv>
-+    <para><filename>systemd-fsckd.service</filename></para>
-+    <para><filename>systemd-fsckd.socket</filename></para>
-+    <para><filename>/usr/lib/systemd/systemd-fsckd</filename></para>
-+  </refsynopsisdiv>
-+
-+  <refsect1>
-+    <title>Description</title>
-+
-+    <para><filename>systemd-fsckd.service</filename> is a service responsible
-+    for receiving file system check progress, and communicating some
-+    consolidated data to console and plymouth (if running). It also handles
-+    possible check cancellations.</para>
-+
-+    <para><command>systemd-fsckd</command> receives messages about file
-+    system check progress from <command>systemd-fsck</command> through a
-+    UNIX domain socket. It can display the progress of the least advanced
-+    fsck as well as the total number of devices being checked in parallel
-+    to the console. It will also send progress messages to plymouth.
-+    Both the raw data and translated messages are sent, so compiled
-+    plymouth themes can use the raw data to display custom messages, and
-+    scripted themes, not supporting i18n, can display the translated
-+    versions.</para>
-+
-+    <para><command>systemd-fsckd</command> will instruct plymouth to grab
-+    Control+C keypresses. When the key is pressed, running checks will be
-+    terminated. It will also cancel any newly connected fsck instances for
-+    the lifetime of <filename>systemd-fsckd</filename>.</para>
-+  </refsect1>
-+
-+  <refsect1>
-+    <title>Protocol for communication with plymouth</title>
-+
-+    <para><filename>systemd-fsckd</filename> passes the
-+    following messages to the theme:</para>
-+
-+    <para>Progress update, sent as a plymouth update message:
-+      <literal>fsckd:&lt;num_devices&gt;:&lt;progress&gt;:&lt;string&gt;</literal>
-+      <variablelist>
-+        <varlistentry>
-+          <term><literal>&lt;num_devices&gt;</literal></term>
-+          <listitem><para>the current number of devices
-+          being checked (int)</para></listitem>
-+        </varlistentry>
-+        <varlistentry>
-+          <term><literal>&lt;progress&gt;</literal></term>
-+          <listitem><para>the current minimum percentage of
-+          all devices being checking (float, from 0 to 100)</para></listitem>
-+        </varlistentry>
-+        <varlistentry>
-+          <term><literal>&lt;string&gt;</literal></term>
-+          <listitem><para>a translated message ready to be displayed
-+          by the plymouth theme displaying the data above. It can be overriden
-+          by themes supporting i18n.</para></listitem>
-+        </varlistentry>
-+      </variablelist>
-+    </para>
-+
-+    <para>Cancel message, sent as a traditional plymouth message:
-+      <literal>fsckd-cancel-msg:&lt;string&gt;</literal>
-+      <variablelist>
-+        <varlistentry>
-+          <term><literal>&lt;strings&gt;</literal></term>
-+          <listitem><para>a translated string ready to be displayed
-+          by the plymouth theme indicating that Control+C can be used to cancel
-+          current checks. It can be overriden (matching only
-+          <literal>fsckd-cancel-msg</literal> prefix)
-+          by themes supporting i18n.</para></listitem>
-+        </varlistentry>
-+      </variablelist>
-+    </para>
-+  </refsect1>
-+
-+  <refsect1>
-+    <title>Options</title>
-+
-+    <para>The following options are understood:</para>
-+
-+    <variablelist>
-+      <xi:include href="standard-options.xml" xpointer="help" />
-+      <xi:include href="standard-options.xml" xpointer="version" />
-+    </variablelist>
-+
-+  </refsect1>
-+
-+  <refsect1>
-+    <title>Exit status</title>
-+
-+    <para>On success, 0 is returned, a non-zero failure
-+    code otherwise. Note that the daemon stays idle for
-+    a while to accept new <filename>systemd-fsck</filename>
-+    connections before exiting.</para>
-+  </refsect1>
-+
-+  <refsect1>
-+    <title>See Also</title>
-+    <para>
-+      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
-+      <citerefentry><refentrytitle>systemd-fsck</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry><refentrytitle>systemd-quotacheck.service</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.btrfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.cramfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.ext4</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.fat</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.hfsplus</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.minix</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.ntfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
-+      <citerefentry project='man-pages'><refentrytitle>fsck.xfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
-+    </para>
-+  </refsect1>
-+
-+</refentry>
-diff --git a/units/systemd-fsckd.service.in b/units/systemd-fsckd.service.in
-index 27c325f..9c7ed51 100644
---- a/units/systemd-fsckd.service.in
-+++ b/units/systemd-fsckd.service.in
-@@ -7,6 +7,7 @@
- 
- [Unit]
- Description=File System Check Daemon to report status
-+Documentation=man:systemd-fsckd.service(8)
- DefaultDependencies=no
- Requires=systemd-fsckd.socket
- Before=shutdown.target
-diff --git a/units/systemd-fsckd.socket b/units/systemd-fsckd.socket
-index a8994a1..93c4ea9 100644
---- a/units/systemd-fsckd.socket
-+++ b/units/systemd-fsckd.socket
-@@ -7,7 +7,7 @@
- 
- [Unit]
- Description=fsck to fsckd communication Socket
--Documentation=man:systemd-fsck@.service(8) man:systemd-fsck-root.service(8)
-+Documentation=man:systemd-fsckd.service(8) man:systemd-fsck@.service(8) man:systemd-fsck-root.service(8)
- DefaultDependencies=no
- 
- [Socket]
diff --git a/debian/patches/Add-mock-fsck-process.patch b/debian/patches/Add-mock-fsck-process.patch
deleted file mode 100644
index 22b7a54..0000000
--- a/debian/patches/Add-mock-fsck-process.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From: Didier Roche <didrocks@ubuntu.com>
-Date: Mon, 26 Jan 2015 17:46:36 +0100
-Subject: Add mock fsck process
-
----
- test/mocks/fsck | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
- create mode 100755 test/mocks/fsck
-
-diff --git a/test/mocks/fsck b/test/mocks/fsck
-new file mode 100755
-index 0000000..77b50d7
---- /dev/null
-+++ b/test/mocks/fsck
-@@ -0,0 +1,27 @@
-+#!/bin/bash
-+fd=0
-+
-+OPTIND=1
-+while getopts "C:aTlM" opt; do
-+    case "$opt" in
-+        C)
-+            fd=$OPTARG
-+            ;;
-+        \?);;
-+    esac
-+done
-+
-+shift "$((OPTIND-1))"
-+device=$1
-+
-+echo "Running fake fsck on $device"
-+
-+declare -a maxpass=(30 5 2 30 60)
-+
-+for pass in {1..5}; do
-+    maxprogress=${maxpass[$((pass-1))]}
-+    for (( current=0; current<=${maxprogress}; current++)); do
-+        echo "$pass $current $maxprogress $device">&$fd
-+        sleep 0.1
-+    done
-+done
diff --git a/debian/patches/Add-targets-for-compatibility-with-Debian-insserv-sy.patch b/debian/patches/Add-targets-for-compatibility-with-Debian-insserv-sy.patch
index cb208f8..ef33f47 100644
--- a/debian/patches/Add-targets-for-compatibility-with-Debian-insserv-sy.patch
+++ b/debian/patches/Add-targets-for-compatibility-with-Debian-insserv-sy.patch
@@ -10,10 +10,10 @@ Subject: Add targets for compatibility with Debian insserv system facilities
  create mode 100644 units/mail-transport-agent.target
 
 diff --git a/Makefile.am b/Makefile.am
-index 8318a53..2618142 100644
+index d27a8b1..47e670c 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -567,6 +567,11 @@ nodist_systemunit_DATA += \
+@@ -564,6 +564,11 @@ nodist_systemunit_DATA += \
  	units/systemd-update-utmp-runlevel.service
  endif
  
diff --git a/debian/patches/Connect-to-plymouth-and-support-cancellation-of-in-p.patch b/debian/patches/Connect-to-plymouth-and-support-cancellation-of-in-p.patch
deleted file mode 100644
index 5756b7f..0000000
--- a/debian/patches/Connect-to-plymouth-and-support-cancellation-of-in-p.patch
+++ /dev/null
@@ -1,383 +0,0 @@
-From: Didier Roche <didrocks@ubuntu.com>
-Date: Thu, 5 Feb 2015 17:08:18 +0100
-Subject: Connect to plymouth and support cancellation of in progress fsck
-
-Try to connect and send to plymouth (if running) some checked report progress,
-using direct plymouth protocole.
-
-Update message is the following:
-fsckd:<num_devices>:<progress>:<string>
-* num_devices corresponds to the current number of devices being checked (int)
-* progress corresponds to the current minimum percentage of all devices being
-  checked (float, from 0 to 100)
-* string is a translated message ready to be displayed by the plymouth theme
-  displaying the information above. It can be overriden by plymouth themes
-  supporting i18n.
-
-Grab in fsckd plymouth watch key Control+C, and propagate this cancel request
-to systemd-fsck which will terminate fsck.
-
-Send a message to signal to user what key we are grabbing for fsck cancel.
-
-Message is: fsckd-cancel-msg:<string>
-Where string is a translated string ready to be displayed by the plymouth theme
-indicating that Control+C can be used to cancel current checks. It can be
-overriden (matching only fsckd-cancel-msg prefix) for themes supporting i18n.
----
- src/fsck/fsck.c   |  33 ++++++++----
- src/fsckd/fsckd.c | 146 +++++++++++++++++++++++++++++++++++++++++++++++++++++-
- src/fsckd/fsckd.h |   4 ++
- 3 files changed, 173 insertions(+), 10 deletions(-)
-
-diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
-index 9ecba99..e718534 100644
---- a/src/fsck/fsck.c
-+++ b/src/fsck/fsck.c
-@@ -132,7 +132,7 @@ static void test_files(void) {
- 
- }
- 
--static int process_progress(int fd, dev_t device_num) {
-+static int process_progress(int fd, pid_t fsck_pid, dev_t device_num) {
-         _cleanup_fclose_ FILE *f = NULL;
-         usec_t last = 0;
-         _cleanup_close_ int fsckd_fd = -1;
-@@ -153,11 +153,13 @@ static int process_progress(int fd, dev_t device_num) {
- 
-         while (!feof(f)) {
-                 int pass;
-+                size_t buflen;
-                 size_t cur, max;
--                ssize_t n;
-+                ssize_t r;
-                 usec_t t;
-                 _cleanup_free_ char *device = NULL;
-                 FsckProgress progress;
-+                FsckdMessage fsckd_message;
- 
-                 if (fscanf(f, "%i %lu %lu %ms", &pass, &cur, &max, &device) != 4)
-                         break;
-@@ -175,9 +177,19 @@ static int process_progress(int fd, dev_t device_num) {
-                 progress.max = max;
-                 progress.pass = pass;
- 
--                n = send(fsckd_fd, &progress, sizeof(FsckProgress), 0);
--                if (n < 0 || (size_t) n < sizeof(FsckProgress))
-+                r = send(fsckd_fd, &progress, sizeof(FsckProgress), 0);
-+                if (r < 0 || (size_t) r < sizeof(FsckProgress))
-                         log_warning_errno(errno, "Cannot communicate fsck progress to fsckd: %m");
-+
-+                /* get fsckd requests, only read when we have coherent size data */
-+                r = ioctl(fsckd_fd, FIONREAD, &buflen);
-+                if (r == 0 && (size_t) buflen >= sizeof(FsckdMessage)) {
-+                        r = recv(fsckd_fd, &fsckd_message, sizeof(FsckdMessage), 0);
-+                        if (r > 0 && fsckd_message.cancel == 1) {
-+                                log_info("Request to cancel fsck from fsckd");
-+                                kill(fsck_pid, SIGTERM);
-+                        }
-+                }
-         }
- 
-         return 0;
-@@ -187,6 +199,7 @@ int main(int argc, char *argv[]) {
-         const char *cmdline[9];
-         int i = 0, r = EXIT_FAILURE, q;
-         pid_t pid;
-+        int progress_rc;
-         siginfo_t status;
-         _cleanup_udev_unref_ struct udev *udev = NULL;
-         _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
-@@ -328,7 +341,7 @@ int main(int argc, char *argv[]) {
-         progress_pipe[1] = safe_close(progress_pipe[1]);
- 
-         if (progress_pipe[0] >= 0) {
--                process_progress(progress_pipe[0], st.st_rdev);
-+                progress_rc = process_progress(progress_pipe[0], pid, st.st_rdev);
-                 progress_pipe[0] = -1;
-         }
- 
-@@ -338,13 +351,14 @@ int main(int argc, char *argv[]) {
-                 goto finish;
-         }
- 
--        if (status.si_code != CLD_EXITED || (status.si_status & ~1)) {
-+        if (status.si_code != CLD_EXITED || (status.si_status & ~1) || progress_rc != 0) {
- 
--                if (status.si_code == CLD_KILLED || status.si_code == CLD_DUMPED)
-+                /* cancel will kill fsck (but process_progress returns 0) */
-+                if ((progress_rc != 0 && status.si_code == CLD_KILLED) || status.si_code == CLD_DUMPED)
-                         log_error("fsck terminated by signal %s.", signal_to_string(status.si_status));
-                 else if (status.si_code == CLD_EXITED)
-                         log_error("fsck failed with error code %i.", status.si_status);
--                else
-+                else if (progress_rc != 0)
-                         log_error("fsck failed due to unknown reason.");
- 
-                 if (status.si_code == CLD_EXITED && (status.si_status & 2) && root_directory)
-@@ -355,7 +369,8 @@ int main(int argc, char *argv[]) {
-                         start_target(SPECIAL_EMERGENCY_TARGET);
-                 else {
-                         r = EXIT_SUCCESS;
--                        log_warning("Ignoring error.");
-+                        if (progress_rc != 0)
-+                                log_warning("Ignoring error.");
-                 }
- 
-         } else
-diff --git a/src/fsckd/fsckd.c b/src/fsckd/fsckd.c
-index 6b2eeb0..dc00fc6 100644
---- a/src/fsckd/fsckd.c
-+++ b/src/fsckd/fsckd.c
-@@ -34,6 +34,7 @@
- #include <unistd.h>
- 
- #include "build.h"
-+#include "def.h"
- #include "event-util.h"
- #include "fsckd.h"
- #include "log.h"
-@@ -44,6 +45,7 @@
- #include "util.h"
- 
- #define IDLE_TIME_SECONDS 30
-+#define PLYMOUTH_REQUEST_KEY "K\2\2\3"
- 
- struct Manager;
- 
-@@ -56,6 +58,7 @@ typedef struct Client {
-         int pass;
-         double percent;
-         size_t buflen;
-+        bool cancelled;
- 
-         LIST_FIELDS(struct Client, clients);
- } Client;
-@@ -68,8 +71,13 @@ typedef struct Manager {
-         FILE *console;
-         double percent;
-         int numdevices;
-+        int plymouth_fd;
-+        bool plymouth_cancel_sent;
-+        bool cancel_requested;
- } Manager;
- 
-+static int connect_plymouth(Manager *m);
-+static int update_global_progress(Manager *m);
- static void manager_free(Manager *m);
- DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
- #define _cleanup_manager_free_ _cleanup_(manager_freep)
-@@ -92,6 +100,19 @@ static double compute_percent(int pass, size_t cur, size_t max) {
-                 (double) cur / max;
- }
- 
-+static int request_cancel_client(Client *current) {
-+        FsckdMessage cancel_msg;
-+        ssize_t n;
-+        cancel_msg.cancel = 1;
-+
-+        n = send(current->fd, &cancel_msg, sizeof(FsckdMessage), 0);
-+        if (n < 0 || (size_t) n < sizeof(FsckdMessage))
-+                return log_warning_errno(n, "Cannot send cancel to fsck on (%u, %u): %m",
-+                                         major(current->devnum), minor(current->devnum));
-+        else
-+                current->cancelled = true;
-+        return 0;
-+}
- 
- static void remove_client(Client **first, Client *item) {
-         LIST_REMOVE(clients, *first, item);
-@@ -99,10 +120,91 @@ static void remove_client(Client **first, Client *item) {
-         free(item);
- }
- 
-+static void on_plymouth_disconnect(Manager *m) {
-+        safe_close(m->plymouth_fd);
-+        m->plymouth_fd = -1;
-+        m->plymouth_cancel_sent = false;
-+}
-+
-+static int plymouth_feedback_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-+        Manager *m = userdata;
-+        Client *current;
-+        char buffer[6];
-+        int r;
-+
-+        assert(m);
-+
-+        r = read(m->plymouth_fd, buffer, sizeof(buffer));
-+        if (r <= 0)
-+                on_plymouth_disconnect(m);
-+        else {
-+               if (buffer[0] == '\15')
-+                       log_error("Message update to plymouth wasn't delivered successfully");
-+
-+               /* the only answer support type we requested is a key interruption */
-+               if (buffer[0] == '\2' && buffer[5] == '\3') {
-+                       m->cancel_requested = true;
-+                       /* cancel all connected clients */
-+                       LIST_FOREACH(clients, current, m->clients)
-+                               request_cancel_client(current);
-+               }
-+        }
-+
-+        return 0;
-+}
-+
-+static int send_message_plymouth_socket(int plymouth_fd, const char *message, bool update) {
-+        _cleanup_free_ char *packet = NULL;
-+        int r, n;
-+        char mode = 'M';
-+
-+        if (update)
-+                mode = 'U';
-+
-+        if (asprintf(&packet, "%c\002%c%s%n", mode, (int) (strlen(message) + 1), message, &n) < 0)
-+                return log_oom();
-+        r = loop_write(plymouth_fd, packet, n + 1, true);
-+        return r;
-+}
-+
-+
-+static int send_message_plymouth(Manager *m, const char *message) {
-+        int r;
-+        const char *plymouth_cancel_message = NULL;
-+
-+        r = connect_plymouth(m);
-+        if (r < 0)
-+                return r;
-+
-+        if (!m->plymouth_cancel_sent) {
-+                /* indicate to plymouth that we listen to Ctrl+C */
-+                r = loop_write(m->plymouth_fd, PLYMOUTH_REQUEST_KEY, sizeof(PLYMOUTH_REQUEST_KEY), true);
-+                if (r < 0)
-+                        return log_warning_errno(errno, "Can't send to plymouth cancel key: %m");
-+                m->plymouth_cancel_sent = true;
-+                plymouth_cancel_message = strjoina("fsckd-cancel-msg:", "Press Ctrl+C to cancel all filesystem checks in progress");
-+                r = send_message_plymouth_socket(m->plymouth_fd, plymouth_cancel_message, false);
-+                if (r < 0)
-+                        log_warning_errno(r, "Can't send filesystem cancel message to plymouth: %m");
-+        } else if (m->numdevices == 0) {
-+                m->plymouth_cancel_sent = false;
-+                r = send_message_plymouth_socket(m->plymouth_fd, "", false);
-+                if (r < 0)
-+                        log_warning_errno(r, "Can't clear plymouth filesystem cancel message: %m");
-+        }
-+
-+        r = send_message_plymouth_socket(m->plymouth_fd,  message, true);
-+        if (r < 0)
-+                return log_warning_errno(errno, "Couldn't send \"%s\" to plymouth: %m", message);
-+
-+        return 0;
-+}
-+
- static int update_global_progress(Manager *m) {
-         Client *current = NULL;
-         _cleanup_free_ char *console_message = NULL;
--        int current_numdevices = 0, l = 0;
-+        _cleanup_free_ char *fsck_message = NULL;
-+        int current_numdevices = 0, l = 0, r;
-         double current_percent = 100;
- 
-         /* get the overall percentage */
-@@ -123,6 +225,8 @@ static int update_global_progress(Manager *m) {
-                 if (asprintf(&console_message, "Checking in progress on %d disks (%3.1f%% complete)",
-                                                 m->numdevices, m->percent) < 0)
-                         return -ENOMEM;
-+                if (asprintf(&fsck_message, "fsckd:%d:%3.1f:%s", m->numdevices, m->percent, console_message) < 0)
-+                        return -ENOMEM;
- 
-                 /* write to console */
-                 if (m->console) {
-@@ -130,12 +234,41 @@ static int update_global_progress(Manager *m) {
-                         fflush(m->console);
-                 }
- 
-+                /* try to connect to plymouth and send message */
-+                r = send_message_plymouth(m, fsck_message);
-+                if (r < 0)
-+                        log_debug("Couldn't send message to plymouth");
-+
-                 if (l > m->clear)
-                         m->clear = l;
-         }
-         return 0;
- }
- 
-+static int connect_plymouth(Manager *m) {
-+        union sockaddr_union sa = PLYMOUTH_SOCKET;
-+        int r;
-+
-+        /* try to connect or reconnect if sending a message */
-+        if (m->plymouth_fd <= 0) {
-+                m->plymouth_fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0);
-+                if (m->plymouth_fd < 0) {
-+                        return log_warning_errno(errno, "Connection to plymouth socket failed: %m");
-+                }
-+                if (connect(m->plymouth_fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) {
-+                        on_plymouth_disconnect(m);
-+                        return log_warning_errno(errno, "Couldn't connect to plymouth: %m");
-+                }
-+                r = sd_event_add_io(m->event, NULL, m->plymouth_fd, EPOLLIN, plymouth_feedback_handler, m);
-+                if (r < 0) {
-+                        on_plymouth_disconnect(m);
-+                        return log_warning_errno(r, "Can't listen to plymouth socket: %m");
-+                }
-+        }
-+
-+        return 0;
-+}
-+
- static int progress_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-         Client *client = userdata;
-         Manager *m = NULL;
-@@ -146,6 +279,12 @@ static int progress_handler(sd_event_source *s, int fd, uint32_t revents, void *
-         assert(client);
-         m = client->manager;
- 
-+        /* check first if we need to cancel this client */
-+        if (m->cancel_requested) {
-+                if (!client->cancelled)
-+                        request_cancel_client(client);
-+        }
-+
-         /* ensure we have enough data to read */
-         r = ioctl(fd, FIONREAD, &buflen);
-         if (r == 0 && buflen != 0 && (size_t) buflen < sizeof(FsckProgress)) {
-@@ -210,6 +349,9 @@ static int new_connection_handler(sd_event_source *s, int fd, uint32_t revents,
-                         remove_client(&(m->clients), client);
-                         return r;
-                 }
-+                /* only request the client to cancel now in case the request is dropped by the client (chance to recancel) */
-+                if (m->cancel_requested)
-+                        request_cancel_client(client);
-         } else
-                 return log_error_errno(errno, "Couldn't accept a new connection: %m");
- 
-@@ -233,6 +375,7 @@ static void manager_free(Manager *m) {
-         }
- 
-         safe_close(m->connection_fd);
-+        safe_close(m->plymouth_fd);
-         if (m->console)
-                 fclose(m->console);
- 
-@@ -266,6 +409,7 @@ static int manager_new(Manager **ret, int fd) {
-         }
-         m->percent = 100;
- 
-+        m->plymouth_fd = -1;
-         *ret = m;
-         m = NULL;
- 
-diff --git a/src/fsckd/fsckd.h b/src/fsckd/fsckd.h
-index 6fe37a7..8239273 100644
---- a/src/fsckd/fsckd.h
-+++ b/src/fsckd/fsckd.h
-@@ -32,3 +32,7 @@ typedef struct FsckProgress {
-         size_t max;
-         int pass;
- } FsckProgress;
-+
-+typedef struct FsckdMessage {
-+        uint8_t cancel;
-+} FsckdMessage;
diff --git a/debian/patches/Disable-tests-which-fail-on-buildds.patch b/debian/patches/Disable-tests-which-fail-on-buildds.patch
index 6554e56..c971fe2 100644
--- a/debian/patches/Disable-tests-which-fail-on-buildds.patch
+++ b/debian/patches/Disable-tests-which-fail-on-buildds.patch
@@ -9,10 +9,10 @@ Presumably these are due to running on too old kernels, misconfigured
  1 file changed, 7 deletions(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index 0e182f9..9687d3c 100644
+index 01cf515..4408161 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -1429,14 +1429,11 @@ tests += \
+@@ -1425,14 +1425,11 @@ tests += \
  	test-capability \
  	test-async \
  	test-ratelimit \
@@ -27,7 +27,7 @@ index 0e182f9..9687d3c 100644
  	test-verbs
  
  EXTRA_DIST += \
-@@ -3000,10 +2997,8 @@ tests += \
+@@ -2984,10 +2981,8 @@ tests += \
  	test-bus-introspect \
  	test-bus-objects \
  	test-bus-error \
@@ -38,7 +38,7 @@ index 0e182f9..9687d3c 100644
  	test-local-addresses \
  	test-resolve
  
-@@ -3343,7 +3338,6 @@ test_lldp_LDADD = \
+@@ -3327,7 +3322,6 @@ test_lldp_LDADD = \
  
  tests += \
  	test-dhcp-option \
@@ -46,7 +46,7 @@ index 0e182f9..9687d3c 100644
  	test-dhcp-server \
  	test-ipv4ll \
  	test-icmp6-rs \
-@@ -5710,7 +5704,6 @@ test_network_tables_LDADD += \
+@@ -5694,7 +5688,6 @@ test_network_tables_LDADD += \
  endif
  
  tests += \
diff --git a/debian/patches/Don-t-mount-tmp-as-tmpfs-by-default.patch b/debian/patches/Don-t-mount-tmp-as-tmpfs-by-default.patch
index 5ade69d..7abb94d 100644
--- a/debian/patches/Don-t-mount-tmp-as-tmpfs-by-default.patch
+++ b/debian/patches/Don-t-mount-tmp-as-tmpfs-by-default.patch
@@ -18,10 +18,10 @@ anymore afterwards).
  2 files changed, 4 insertions(+), 2 deletions(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index bcebf4d..50202bf 100644
+index aadaad2..0a811e9 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -6468,8 +6468,7 @@ SYSINIT_TARGET_WANTS += \
+@@ -6452,8 +6452,7 @@ SYSINIT_TARGET_WANTS += \
  	systemd-update-done.service
  
  LOCAL_FS_TARGET_WANTS += \
diff --git a/debian/patches/Drop-rc-local-generator.patch b/debian/patches/Drop-rc-local-generator.patch
index 4620fc4..24890d1 100644
--- a/debian/patches/Drop-rc-local-generator.patch
+++ b/debian/patches/Drop-rc-local-generator.patch
@@ -14,10 +14,10 @@ Bug-Debian: https://bugs.debian.org/776170
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 diff --git a/Makefile.am b/Makefile.am
-index 9687d3c..b5be95d 100644
+index 4408161..5c9e5cd 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -628,12 +628,13 @@ CLEANFILES += \
+@@ -624,12 +624,13 @@ CLEANFILES += \
  
  if HAVE_SYSV_COMPAT
  nodist_systemunit_DATA += \
diff --git a/debian/patches/Fix-paths-in-man-pages.patch b/debian/patches/Fix-paths-in-man-pages.patch
index 80c79f5..b4e1a8c 100644
--- a/debian/patches/Fix-paths-in-man-pages.patch
+++ b/debian/patches/Fix-paths-in-man-pages.patch
@@ -383,7 +383,7 @@ index 3431c3c..9b6f1e1 100644
  
    <refsect1>
 diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml
-index 69b8fdd..ea25a60 100644
+index 88e11e8..32ba062 100644
 --- a/man/systemd-fsck@.service.xml
 +++ b/man/systemd-fsck@.service.xml
 @@ -50,7 +50,7 @@
@@ -396,7 +396,7 @@ index 69b8fdd..ea25a60 100644
  
    <refsect1>
 @@ -137,5 +137,4 @@
-       <citerefentry project='man-pages'><refentrytitle>fsck.xfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
+       <citerefentry><refentrytitle>fsck.xfs</refentrytitle><manvolnum>8</manvolnum></citerefentry>
      </para>
    </refsect1>
 -
diff --git a/debian/patches/Prefer-etc-X11-default-display-manager-if-present.patch b/debian/patches/Prefer-etc-X11-default-display-manager-if-present.patch
index 452fb40..141c520 100644
--- a/debian/patches/Prefer-etc-X11-default-display-manager-if-present.patch
+++ b/debian/patches/Prefer-etc-X11-default-display-manager-if-present.patch
@@ -13,10 +13,10 @@ which display-manager is started.
  create mode 100644 src/default-display-manager-generator/default-display-manager-generator.c
 
 diff --git a/Makefile.am b/Makefile.am
-index 2618142..0e182f9 100644
+index 47e670c..01cf515 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -410,7 +410,8 @@ systemgenerator_PROGRAMS = \
+@@ -409,7 +409,8 @@ systemgenerator_PROGRAMS = \
  	systemd-getty-generator \
  	systemd-fstab-generator \
  	systemd-system-update-generator \
@@ -26,7 +26,7 @@ index 2618142..0e182f9 100644
  
  dist_bashcompletion_DATA = \
  	shell-completion/bash/busctl \
-@@ -2418,6 +2419,14 @@ systemd_delta_LDADD = \
+@@ -2402,6 +2403,14 @@ systemd_delta_LDADD = \
  	libsystemd-shared.la
  
  # ------------------------------------------------------------------------------
diff --git a/debian/patches/Refresh-po-files.patch b/debian/patches/Refresh-po-files.patch
deleted file mode 100644
index d776c04..0000000
--- a/debian/patches/Refresh-po-files.patch
+++ /dev/null
@@ -1,232 +0,0 @@
-From: Didier Roche <didrocks@ubuntu.com>
-Date: Mon, 26 Jan 2015 17:23:08 +0100
-Subject: Refresh po files
-
-Also, add new plymouth fsckd translated strings in french.
-Refreshed with "make update-po".
----
- po/de.po    | 15 +++++++++++++--
- po/el.po    | 11 +++++++++++
- po/fr.po    | 11 +++++++++++
- po/hu.po    | 11 +++++++++++
- po/it.po    | 11 +++++++++++
- po/pl.po    | 11 +++++++++++
- po/pt_BR.po | 11 +++++++++++
- po/ru.po    | 13 ++++++++++++-
- po/sv.po    | 11 +++++++++++
- po/uk.po    | 12 ++++++++++++
- 10 files changed, 114 insertions(+), 3 deletions(-)
-
-diff --git a/po/de.po b/po/de.po
-index 69c1fb9..dcaff30 100644
---- a/po/de.po
-+++ b/po/de.po
-@@ -10,8 +10,8 @@ msgstr ""
- "Report-Msgid-Bugs-To: https://bugs.freedesktop.org/enter_bug.cgi?"
- "product=systemd&keywords=I18N+L10N&component=general\n"
- "POT-Creation-Date: 2015-01-22 14:27+0000\n"
--"PO-Revision-Date: 2015-01-29 19:00+0100\n"
--"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
-+"PO-Revision-Date: 2015-02-18 17:08+0100\n"
-+"Last-Translator: Martin Pitt <martin.pitt@ubuntu.com>\n"
- "Language-Team: German <gnome-de@gnome.org>\n"
- "Language: de\n"
- "MIME-Version: 1.0\n"
-@@ -454,5 +454,16 @@ msgstr ""
- "Legitimierung ist zum Festlegen, ob Netzwerkzeitabgeich eingeschaltet sein "
- "soll, erforderlich."
- 
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr "Strl+C drücken um laufende Dateisystem-Prüfungen abzubrechen"
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] "Prüfe %d Laufwerk (%3.1f%% fertig)"
-+msgstr[1] "Prüfe %d Laufwerke (%3.1f%% fertig)"
-+
- #~ msgid "Privileged system and service manager access"
- #~ msgstr "Privilegierter Zugriff auf die System- und Dienstverwaltung"
-diff --git a/po/el.po b/po/el.po
-index 8f7a0ed..14ee497 100644
---- a/po/el.po
-+++ b/po/el.po
-@@ -402,3 +402,14 @@ msgid "Authentication is required to access the system and service manager."
- msgstr ""
- "Απαιτείται πιστοποίηση για να προσπελάσετε τον διαχειριστή συστήματος και "
- "υπηρεσιών."
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr ""
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] ""
-+msgstr[1] ""
-diff --git a/po/fr.po b/po/fr.po
-index 4d4fc6b..8e44e0c 100644
---- a/po/fr.po
-+++ b/po/fr.po
-@@ -433,3 +433,14 @@ msgid ""
- msgstr ""
- "Authentification requise pour activer ou désactiver la synchronisation de "
- "l'heure avec le réseau."
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr "Appuyez sur Ctrl+C pour annuler toutes vérifications du système de fichier en cours"
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] "Vérification en cours sur %d disque (%3.1f%% complété)"
-+msgstr[1] "Vérification en cours sur %d disques (%3.1f%% complété)"
-diff --git a/po/hu.po b/po/hu.po
-index a914b3c..308e03d 100644
---- a/po/hu.po
-+++ b/po/hu.po
-@@ -411,3 +411,14 @@ msgstr "A systemd állapotának újratöltése"
- #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:8
- msgid "Authentication is required to reload the systemd state."
- msgstr "Hitelesítés szükséges a systemd állapotának újratöltéséhez."
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr ""
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] ""
-+msgstr[1] ""
-diff --git a/po/it.po b/po/it.po
-index 93a1e79..53cccfe 100644
---- a/po/it.po
-+++ b/po/it.po
-@@ -424,3 +424,14 @@ msgstr "Autenticazione richiesta per riavviare lo stato di sistemd."
- 
- #~ msgid "Privileged system and service manager access"
- #~ msgstr "Accesso privilegiato per la gestione del sistema e dei servizi"
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr ""
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] ""
-+msgstr[1] ""
-diff --git a/po/pl.po b/po/pl.po
-index e5987be..cd7dbda 100644
---- a/po/pl.po
-+++ b/po/pl.po
-@@ -411,3 +411,14 @@ msgid ""
- msgstr ""
- "Wymagane jest uwierzytelnienie, aby kontrolować, czy włączyć synchronizację "
- "czasu przez sieć."
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr ""
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] ""
-+msgstr[1] ""
-diff --git a/po/pt_BR.po b/po/pt_BR.po
-index 5204047..072b8d3 100644
---- a/po/pt_BR.po
-+++ b/po/pt_BR.po
-@@ -419,3 +419,14 @@ msgstr "É necessária autenticação para recarregar o estado do sistema."
- 
- #~ msgid "Privileged system and service manager access"
- #~ msgstr "Acesso privilegiado ao gerenciador de serviço e de sistema"
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr ""
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] ""
-+msgstr[1] ""
-diff --git a/po/ru.po b/po/ru.po
-index 4dda604..1ffeec6 100644
---- a/po/ru.po
-+++ b/po/ru.po
-@@ -7,7 +7,7 @@ msgstr ""
- "Project-Id-Version: systemd\n"
- "Report-Msgid-Bugs-To: 0comffdiz@inbox.ru\n"
- "POT-Creation-Date: 2013-03-24 19:22+0300\n"
--"PO-Revision-Date: 2015-01-23 20:55+0300\n"
-+"PO-Revision-Date: 2015-02-19 03:27+0300\n"
- "Last-Translator: Sergey Ptashnick <0comffdiz@inbox.ru>\n"
- "Language: ru\n"
- "MIME-Version: 1.0\n"
-@@ -325,3 +325,14 @@ msgstr "Перечитать конфигурацию systemd"
- #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:8
- msgid "Authentication is required to reload the systemd state."
- msgstr "Чтобы заставить systemd перечитать конфигурацию, необходимо пройти аутентификацию."
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr "Чтобы прервать все запущенные проверки файловых систем, нажмите Ctrl+C"
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] "Проверяется целостность файловой системы на %d диске (выполнено %3.1f%%)"
-+msgstr[1] "Проверяется целостность файловых систем на %d дисках (выполнено %3.1f%%)"
-diff --git a/po/sv.po b/po/sv.po
-index 25d4ae8..132b2ab 100644
---- a/po/sv.po
-+++ b/po/sv.po
-@@ -401,3 +401,14 @@ msgstr "Läs om tillståndet för systemd"
- #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:8
- msgid "Authentication is required to reload the systemd state."
- msgstr "Autentisering krävs för att läsa om tillståndet för systemd."
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr ""
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] ""
-+msgstr[1] ""
-diff --git a/po/uk.po b/po/uk.po
-index 6e32236..3603999 100644
---- a/po/uk.po
-+++ b/po/uk.po
-@@ -375,3 +375,15 @@ msgstr "Привілейований доступ до менеджера сис
- #: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4
- msgid "Authentication is required to access the system and service manager."
- msgstr "Засвідчення потрібно, щоб доступитись до менеджера системи і служб."
-+
-+#: ../src/fsckd/fsckd.c:186
-+msgid "Press Ctrl+C to cancel all filesystem checks in progress"
-+msgstr ""
-+
-+#: ../src/fsckd/fsckd.c:227
-+#, c-format
-+msgid "Checking in progress on %d disk (%3.1f%% complete)"
-+msgid_plural "Checking in progress on %d disks (%3.1f%% complete)"
-+msgstr[0] ""
-+msgstr[1] ""
-+msgstr[2] ""
diff --git a/debian/patches/Translate-fsckd-messages-for-plymouth.patch b/debian/patches/Translate-fsckd-messages-for-plymouth.patch
deleted file mode 100644
index b3714bb..0000000
--- a/debian/patches/Translate-fsckd-messages-for-plymouth.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From: Didier Roche <didrocks@ubuntu.com>
-Date: Mon, 26 Jan 2015 17:12:54 +0100
-Subject: Translate fsckd messages for plymouth
-
-For plymouth themes not supporting i18n (like .script), send translated
-messages to display to user, which is equivalent to the sent machine
-readable data.
----
- po/POTFILES.in    |  1 +
- src/fsckd/fsckd.c | 10 +++++++---
- 2 files changed, 8 insertions(+), 3 deletions(-)
-
-diff --git a/po/POTFILES.in b/po/POTFILES.in
-index b4c1121..70e7594 100644
---- a/po/POTFILES.in
-+++ b/po/POTFILES.in
-@@ -5,3 +5,4 @@ src/locale/org.freedesktop.locale1.policy.in
- src/login/org.freedesktop.login1.policy.in
- src/machine/org.freedesktop.machine1.policy.in
- src/timedate/org.freedesktop.timedate1.policy.in
-+src/fsckd/fsckd.c
-diff --git a/src/fsckd/fsckd.c b/src/fsckd/fsckd.c
-index dc00fc6..834476c 100644
---- a/src/fsckd/fsckd.c
-+++ b/src/fsckd/fsckd.c
-@@ -24,6 +24,7 @@
- 
- #include <getopt.h>
- #include <errno.h>
-+#include <libintl.h>
- #include <math.h>
- #include <stdbool.h>
- #include <stdlib.h>
-@@ -182,7 +183,7 @@ static int send_message_plymouth(Manager *m, const char *message) {
-                 if (r < 0)
-                         return log_warning_errno(errno, "Can't send to plymouth cancel key: %m");
-                 m->plymouth_cancel_sent = true;
--                plymouth_cancel_message = strjoina("fsckd-cancel-msg:", "Press Ctrl+C to cancel all filesystem checks in progress");
-+                plymouth_cancel_message = strjoina("fsckd-cancel-msg:", _("Press Ctrl+C to cancel all filesystem checks in progress"));
-                 r = send_message_plymouth_socket(m->plymouth_fd, plymouth_cancel_message, false);
-                 if (r < 0)
-                         log_warning_errno(r, "Can't send filesystem cancel message to plymouth: %m");
-@@ -222,8 +223,10 @@ static int update_global_progress(Manager *m) {
-                 m->numdevices = current_numdevices;
-                 m->percent = current_percent;
- 
--                if (asprintf(&console_message, "Checking in progress on %d disks (%3.1f%% complete)",
--                                                m->numdevices, m->percent) < 0)
-+                if (asprintf(&console_message,
-+                             ngettext("Checking in progress on %d disk (%3.1f%% complete)",
-+                                      "Checking in progress on %d disks (%3.1f%% complete)", m->numdevices),
-+                                      m->numdevices, m->percent) < 0)
-                         return -ENOMEM;
-                 if (asprintf(&fsck_message, "fsckd:%d:%3.1f:%s", m->numdevices, m->percent, console_message) < 0)
-                         return -ENOMEM;
-@@ -507,6 +510,7 @@ int main(int argc, char *argv[]) {
-         log_set_target(LOG_TARGET_AUTO);
-         log_parse_environment();
-         log_open();
-+        init_gettext();
- 
-         r = parse_argv(argc, argv);
-         if (r <= 0)
diff --git a/debian/patches/fsck-fsckd-various-fixes.patch b/debian/patches/fsck-fsckd-various-fixes.patch
deleted file mode 100644
index d09f2f1..0000000
--- a/debian/patches/fsck-fsckd-various-fixes.patch
+++ /dev/null
@@ -1,872 +0,0 @@
-From: Martin Pitt <martin.pitt@ubuntu.com>
-Date: Tue, 3 Mar 2015 00:02:31 -0500
-Subject: fsck, fsckd: various fixes
-
-Various fixes to fsck and fsckd from upstream git.
-
-LP: #1429171
----
- src/fsck/fsck.c   |  83 +++++------
- src/fsckd/fsckd.c | 420 +++++++++++++++++++++++++++++++++---------------------
- 2 files changed, 297 insertions(+), 206 deletions(-)
-
-diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
-index e718534..d1c3a8c 100644
---- a/src/fsck/fsck.c
-+++ b/src/fsck/fsck.c
-@@ -161,7 +161,7 @@ static int process_progress(int fd, pid_t fsck_pid, dev_t device_num) {
-                 FsckProgress progress;
-                 FsckdMessage fsckd_message;
- 
--                if (fscanf(f, "%i %lu %lu %ms", &pass, &cur, &max, &device) != 4)
-+                if (fscanf(f, "%i %zu %zu %ms", &pass, &cur, &max, &device) != 4)
-                         break;
- 
-                 /* Only update once every 50ms */
-@@ -205,7 +205,7 @@ int main(int argc, char *argv[]) {
-         _cleanup_udev_device_unref_ struct udev_device *udev_device = NULL;
-         const char *device, *type;
-         bool root_directory;
--        int progress_pipe[2] = { -1, -1 };
-+        _cleanup_close_pair_ int progress_pipe[2] = { -1, -1 };
-         char dash_c[sizeof("-C")-1 + DECIMAL_STR_MAX(int) + 1];
-         struct stat st;
- 
-@@ -226,13 +226,15 @@ int main(int argc, char *argv[]) {
- 
-         test_files();
- 
--        if (!arg_force && arg_skip)
--                return 0;
-+        if (!arg_force && arg_skip) {
-+                r = 0;
-+                goto finish;
-+        }
- 
-         udev = udev_new();
-         if (!udev) {
--                log_oom();
--                return EXIT_FAILURE;
-+                r = log_oom();
-+                goto finish;
-         }
- 
-         if (argc > 1) {
-@@ -240,14 +242,14 @@ int main(int argc, char *argv[]) {
-                 root_directory = false;
- 
-                 if (stat(device, &st) < 0) {
--                        log_error_errno(errno, "Failed to stat '%s': %m", device);
--                        return EXIT_FAILURE;
-+                        r = log_error_errno(errno, "Failed to stat '%s': %m", device);
-+                        goto finish;
-                 }
- 
-                 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;
-+                        r = log_error_errno(errno, "Failed to detect device %s", device);
-+                        goto finish;
-                 }
-         } else {
-                 struct timespec times[2];
-@@ -255,32 +257,37 @@ int main(int argc, char *argv[]) {
-                 /* Find root device */
- 
-                 if (stat("/", &st) < 0) {
--                        log_error_errno(errno, "Failed to stat() the root directory: %m");
--                        return EXIT_FAILURE;
-+                        r = log_error_errno(errno, "Failed to stat() the root directory: %m");
-+                        goto finish;
-                 }
- 
-                 /* Virtual root devices don't need an fsck */
--                if (major(st.st_dev) == 0)
--                        return EXIT_SUCCESS;
-+                if (major(st.st_dev) == 0) {
-+                        log_debug("Root directory is virtual, skipping check.");
-+                        r = 0;
-+                        goto finish;
-+                }
- 
-                 /* 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 EXIT_SUCCESS;
-+                        r = 0;
-+                        goto finish;
-                 }
- 
-                 udev_device = udev_device_new_from_devnum(udev, 'b', st.st_dev);
-                 if (!udev_device) {
--                        log_error("Failed to detect root device.");
--                        return EXIT_FAILURE;
-+                        r = log_error_errno(errno, "Failed to detect root device.");
-+                        goto finish;
-                 }
- 
-                 device = udev_device_get_devnode(udev_device);
-                 if (!device) {
-                         log_error("Failed to detect device node of root directory.");
--                        return EXIT_FAILURE;
-+                        r = -ENXIO;
-+                        goto finish;
-                 }
- 
-                 root_directory = true;
-@@ -291,14 +298,15 @@ int main(int argc, char *argv[]) {
-                 r = fsck_exists(type);
-                 if (r == -ENOENT) {
-                         log_info("fsck.%s doesn't exist, not checking file system on %s", type, device);
--                        return EXIT_SUCCESS;
-+                        r = 0;
-+                        goto finish;
-                 } else if (r < 0)
-                         log_warning_errno(r, "fsck.%s cannot be used for %s: %m", type, device);
-         }
- 
-         if (pipe(progress_pipe) < 0) {
--                log_error_errno(errno, "pipe(): %m");
--                return EXIT_FAILURE;
-+                r = log_error_errno(errno, "pipe(): %m");
-+                goto finish;
-         }
- 
-         cmdline[i++] = "/sbin/fsck";
-@@ -318,36 +326,31 @@ int main(int argc, char *argv[]) {
-         if (arg_force)
-                 cmdline[i++] = "-f";
- 
--        if (progress_pipe[1] >= 0) {
--                xsprintf(dash_c, "-C%i", progress_pipe[1]);
--                cmdline[i++] = dash_c;
--        }
-+        xsprintf(dash_c, "-C%i", progress_pipe[1]);
-+        cmdline[i++] = dash_c;
- 
-         cmdline[i++] = device;
-         cmdline[i++] = NULL;
- 
-         pid = fork();
-         if (pid < 0) {
--                log_error_errno(errno, "fork(): %m");
-+                r = log_error_errno(errno, "fork(): %m");
-                 goto finish;
-         } else if (pid == 0) {
-                 /* Child */
--                if (progress_pipe[0] >= 0)
--                        safe_close(progress_pipe[0]);
-+                progress_pipe[0] = safe_close(progress_pipe[0]);
-                 execv(cmdline[0], (char**) cmdline);
-                 _exit(8); /* Operational error */
-         }
- 
-         progress_pipe[1] = safe_close(progress_pipe[1]);
- 
--        if (progress_pipe[0] >= 0) {
--                progress_rc = process_progress(progress_pipe[0], pid, st.st_rdev);
--                progress_pipe[0] = -1;
--        }
-+        progress_rc = process_progress(progress_pipe[0], pid, st.st_rdev);
-+        progress_pipe[0] = -1;
- 
--        q = wait_for_terminate(pid, &status);
--        if (q < 0) {
--                log_error_errno(q, "waitid(): %m");
-+        r = wait_for_terminate(pid, &status);
-+        if (r < 0) {
-+                log_error_errno(r, "waitid(): %m");
-                 goto finish;
-         }
- 
-@@ -361,6 +364,8 @@ int main(int argc, char *argv[]) {
-                 else if (progress_rc != 0)
-                         log_error("fsck failed due to unknown reason.");
- 
-+                r = -EINVAL;
-+
-                 if (status.si_code == CLD_EXITED && (status.si_status & 2) && root_directory)
-                         /* System should be rebooted. */
-                         start_target(SPECIAL_REBOOT_TARGET);
-@@ -368,19 +373,17 @@ int main(int argc, char *argv[]) {
-                         /* Some other problem */
-                         start_target(SPECIAL_EMERGENCY_TARGET);
-                 else {
--                        r = EXIT_SUCCESS;
-+                        r = 0;
-                         if (progress_rc != 0)
-                                 log_warning("Ignoring error.");
-                 }
- 
-         } else
--                r = EXIT_SUCCESS;
-+                r = 0;
- 
-         if (status.si_code == CLD_EXITED && (status.si_status & 1))
-                 touch("/run/systemd/quotacheck");
- 
- finish:
--        safe_close_pair(progress_pipe);
--
--        return r;
-+        return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
- }
-diff --git a/src/fsckd/fsckd.c b/src/fsckd/fsckd.c
-index 834476c..6b35fc2 100644
---- a/src/fsckd/fsckd.c
-+++ b/src/fsckd/fsckd.c
-@@ -34,19 +34,20 @@
- #include <sys/un.h>
- #include <unistd.h>
- 
-+#include "sd-daemon.h"
- #include "build.h"
- #include "def.h"
- #include "event-util.h"
--#include "fsckd.h"
- #include "log.h"
- #include "list.h"
- #include "macro.h"
--#include "sd-daemon.h"
- #include "socket-util.h"
- #include "util.h"
-+#include "fsckd.h"
- 
- #define IDLE_TIME_SECONDS 30
- #define PLYMOUTH_REQUEST_KEY "K\2\2\3"
-+#define CLIENTS_MAX 128
- 
- struct Manager;
- 
-@@ -54,34 +55,79 @@ typedef struct Client {
-         struct Manager *manager;
-         int fd;
-         dev_t devnum;
-+
-         size_t cur;
-         size_t max;
-         int pass;
-+
-         double percent;
-+
-         size_t buflen;
-         bool cancelled;
- 
-+        sd_event_source *event_source;
-+
-         LIST_FIELDS(struct Client, clients);
- } Client;
- 
- typedef struct Manager {
-         sd_event *event;
--        Client *clients;
--        int clear;
-+
-+        LIST_HEAD(Client, clients);
-+        unsigned n_clients;
-+
-+        size_t clear;
-+
-         int connection_fd;
--        FILE *console;
-+        sd_event_source *connection_event_source;
-+
-+        bool show_status_console;
-+
-         double percent;
-         int numdevices;
-+
-         int plymouth_fd;
-+        sd_event_source *plymouth_event_source;
-         bool plymouth_cancel_sent;
-+
-         bool cancel_requested;
- } Manager;
- 
--static int connect_plymouth(Manager *m);
--static int update_global_progress(Manager *m);
-+static void client_free(Client *c);
- static void manager_free(Manager *m);
-+
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Client*, client_free);
- DEFINE_TRIVIAL_CLEANUP_FUNC(Manager*, manager_free);
--#define _cleanup_manager_free_ _cleanup_(manager_freep)
-+
-+static int manager_write_console(Manager *m, const char *message) {
-+        _cleanup_fclose_ FILE *console = NULL;
-+        int l;
-+        size_t j;
-+
-+        assert(m);
-+
-+        if (!m->show_status_console)
-+                return 0;
-+
-+        /* Reduce the SAK window by opening and closing console on every request */
-+        console = fopen("/dev/console", "we");
-+        if (!console)
-+                return -errno;
-+
-+        if (message) {
-+                fprintf(console, "\r%s\r%n", message, &l);
-+                if (m->clear  < (size_t)l)
-+                        m->clear = (size_t)l;
-+        } else {
-+                fputc('\r', console);
-+                for (j = 0; j < m->clear; j++)
-+                        fputc(' ', console);
-+                fputc('\r', console);
-+        }
-+        fflush(console);
-+
-+        return 0;
-+}
- 
- static double compute_percent(int pass, size_t cur, size_t max) {
-         /* Values stolen from e2fsck */
-@@ -101,62 +147,122 @@ static double compute_percent(int pass, size_t cur, size_t max) {
-                 (double) cur / max;
- }
- 
--static int request_cancel_client(Client *current) {
--        FsckdMessage cancel_msg;
-+static int client_request_cancel(Client *c) {
-+        FsckdMessage cancel_msg = {
-+                .cancel = 1,
-+        };
-+
-         ssize_t n;
--        cancel_msg.cancel = 1;
--
--        n = send(current->fd, &cancel_msg, sizeof(FsckdMessage), 0);
--        if (n < 0 || (size_t) n < sizeof(FsckdMessage))
--                return log_warning_errno(n, "Cannot send cancel to fsck on (%u, %u): %m",
--                                         major(current->devnum), minor(current->devnum));
--        else
--                current->cancelled = true;
--        return 0;
-+
-+        assert(c);
-+
-+        if (c->cancelled)
-+                return 0;
-+
-+        n = send(c->fd, &cancel_msg, sizeof(FsckdMessage), 0);
-+        if (n < 0)
-+                return log_warning_errno(errno, "Cannot send cancel to fsck on (%u:%u): %m", major(c->devnum), minor(c->devnum));
-+        if ((size_t) n < sizeof(FsckdMessage)) {
-+                log_warning("Short send when sending cancel to fsck on (%u:%u).", major(c->devnum), minor(c->devnum));
-+                return -EIO;
-+        }
-+
-+        c->cancelled = true;
-+        return 1;
- }
- 
--static void remove_client(Client **first, Client *item) {
--        LIST_REMOVE(clients, *first, item);
--        safe_close(item->fd);
--        free(item);
-+static void client_free(Client *c) {
-+        assert(c);
-+
-+        if (c->manager) {
-+                LIST_REMOVE(clients, c->manager->clients, c);
-+                c->manager->n_clients--;
-+        }
-+
-+        sd_event_source_unref(c->event_source);
-+
-+        safe_close(c->fd);
-+        free(c);
- }
- 
--static void on_plymouth_disconnect(Manager *m) {
--        safe_close(m->plymouth_fd);
--        m->plymouth_fd = -1;
-+static void manager_disconnect_plymouth(Manager *m) {
-+        assert(m);
-+
-+        m->plymouth_event_source = sd_event_source_unref(m->plymouth_event_source);
-+        m->plymouth_fd = safe_close(m->plymouth_fd);
-         m->plymouth_cancel_sent = false;
- }
- 
--static int plymouth_feedback_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-+static int manager_plymouth_feedback_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-         Manager *m = userdata;
-         Client *current;
-         char buffer[6];
--        int r;
-+        ssize_t l;
- 
-         assert(m);
- 
--        r = read(m->plymouth_fd, buffer, sizeof(buffer));
--        if (r <= 0)
--                on_plymouth_disconnect(m);
--        else {
--               if (buffer[0] == '\15')
--                       log_error("Message update to plymouth wasn't delivered successfully");
--
--               /* the only answer support type we requested is a key interruption */
--               if (buffer[0] == '\2' && buffer[5] == '\3') {
--                       m->cancel_requested = true;
--                       /* cancel all connected clients */
--                       LIST_FOREACH(clients, current, m->clients)
--                               request_cancel_client(current);
--               }
-+        l = read(m->plymouth_fd, buffer, sizeof(buffer));
-+        if (l < 0) {
-+                log_warning_errno(errno, "Got error while reading from plymouth: %m");
-+                manager_disconnect_plymouth(m);
-+                return -errno;
-+        }
-+        if (l == 0) {
-+                manager_disconnect_plymouth(m);
-+                return 0;
-+        }
-+
-+        if (l > 1 && buffer[0] == '\15')
-+                log_error("Message update to plymouth wasn't delivered successfully");
-+
-+        /* the only answer support type we requested is a key interruption */
-+        if (l > 2 && buffer[0] == '\2' && buffer[5] == '\3') {
-+                m->cancel_requested = true;
-+
-+                /* cancel all connected clients */
-+                LIST_FOREACH(clients, current, m->clients)
-+                        client_request_cancel(current);
-         }
- 
-         return 0;
- }
- 
--static int send_message_plymouth_socket(int plymouth_fd, const char *message, bool update) {
-+static int manager_connect_plymouth(Manager *m) {
-+        union sockaddr_union sa = PLYMOUTH_SOCKET;
-+        int r;
-+
-+        if (!plymouth_running())
-+                return 0;
-+
-+        /* try to connect or reconnect if sending a message */
-+        if (m->plymouth_fd >= 0)
-+                return 1;
-+
-+        m->plymouth_fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0);
-+        if (m->plymouth_fd < 0)
-+                return log_warning_errno(errno, "Connection to plymouth socket failed: %m");
-+
-+        if (connect(m->plymouth_fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) {
-+                r = log_warning_errno(errno, "Couldn't connect to plymouth: %m");
-+                goto fail;
-+        }
-+
-+        r = sd_event_add_io(m->event, &m->plymouth_event_source, m->plymouth_fd, EPOLLIN, manager_plymouth_feedback_handler, m);
-+        if (r < 0) {
-+                log_warning_errno(r, "Can't listen to plymouth socket: %m");
-+                goto fail;
-+        }
-+
-+        return 1;
-+
-+fail:
-+        manager_disconnect_plymouth(m);
-+        return r;
-+}
-+
-+static int plymouth_send_message(int plymouth_fd, const char *message, bool update) {
-         _cleanup_free_ char *packet = NULL;
--        int r, n;
-+        int n;
-         char mode = 'M';
- 
-         if (update)
-@@ -164,48 +270,58 @@ static int send_message_plymouth_socket(int plymouth_fd, const char *message, bo
- 
-         if (asprintf(&packet, "%c\002%c%s%n", mode, (int) (strlen(message) + 1), message, &n) < 0)
-                 return log_oom();
--        r = loop_write(plymouth_fd, packet, n + 1, true);
--        return r;
--}
- 
-+        return loop_write(plymouth_fd, packet, n + 1, true);
-+}
- 
--static int send_message_plymouth(Manager *m, const char *message) {
-+static int manager_send_plymouth_message(Manager *m, const char *message) {
-+        const char *plymouth_cancel_message = NULL, *l10n_cancel_message = NULL;
-         int r;
--        const char *plymouth_cancel_message = NULL;
- 
--        r = connect_plymouth(m);
-+        r = manager_connect_plymouth(m);
-         if (r < 0)
-                 return r;
-+        /* 0 means that plymouth isn't running, do not send any message yet */
-+        else if (r == 0)
-+                return 0;
- 
-         if (!m->plymouth_cancel_sent) {
--                /* indicate to plymouth that we listen to Ctrl+C */
-+
-+                /* Indicate to plymouth that we listen to Ctrl+C */
-                 r = loop_write(m->plymouth_fd, PLYMOUTH_REQUEST_KEY, sizeof(PLYMOUTH_REQUEST_KEY), true);
-                 if (r < 0)
--                        return log_warning_errno(errno, "Can't send to plymouth cancel key: %m");
-+                        return log_warning_errno(r, "Can't send to plymouth cancel key: %m");
-+
-                 m->plymouth_cancel_sent = true;
--                plymouth_cancel_message = strjoina("fsckd-cancel-msg:", _("Press Ctrl+C to cancel all filesystem checks in progress"));
--                r = send_message_plymouth_socket(m->plymouth_fd, plymouth_cancel_message, false);
-+
-+                l10n_cancel_message = _("Press Ctrl+C to cancel all filesystem checks in progress");
-+                plymouth_cancel_message = strjoina("fsckd-cancel-msg:", l10n_cancel_message);
-+
-+                r = plymouth_send_message(m->plymouth_fd, plymouth_cancel_message, false);
-                 if (r < 0)
-                         log_warning_errno(r, "Can't send filesystem cancel message to plymouth: %m");
-+
-         } else if (m->numdevices == 0) {
-+
-                 m->plymouth_cancel_sent = false;
--                r = send_message_plymouth_socket(m->plymouth_fd, "", false);
-+
-+                r = plymouth_send_message(m->plymouth_fd, "", false);
-                 if (r < 0)
-                         log_warning_errno(r, "Can't clear plymouth filesystem cancel message: %m");
-         }
- 
--        r = send_message_plymouth_socket(m->plymouth_fd,  message, true);
-+        r = plymouth_send_message(m->plymouth_fd,  message, true);
-         if (r < 0)
--                return log_warning_errno(errno, "Couldn't send \"%s\" to plymouth: %m", message);
-+                return log_warning_errno(r, "Couldn't send \"%s\" to plymouth: %m", message);
- 
-         return 0;
- }
- 
--static int update_global_progress(Manager *m) {
-+static int manager_update_global_progress(Manager *m) {
-         Client *current = NULL;
-         _cleanup_free_ char *console_message = NULL;
-         _cleanup_free_ char *fsck_message = NULL;
--        int current_numdevices = 0, l = 0, r;
-+        int current_numdevices = 0, r;
-         double current_percent = 100;
- 
-         /* get the overall percentage */
-@@ -228,65 +344,36 @@ static int update_global_progress(Manager *m) {
-                                       "Checking in progress on %d disks (%3.1f%% complete)", m->numdevices),
-                                       m->numdevices, m->percent) < 0)
-                         return -ENOMEM;
-+
-                 if (asprintf(&fsck_message, "fsckd:%d:%3.1f:%s", m->numdevices, m->percent, console_message) < 0)
-                         return -ENOMEM;
- 
--                /* write to console */
--                if (m->console) {
--                        fprintf(m->console, "\r%s\r%n", console_message, &l);
--                        fflush(m->console);
--                }
-+                r = manager_write_console(m, console_message);
-+                if (r < 0)
-+                        return r;
- 
-                 /* try to connect to plymouth and send message */
--                r = send_message_plymouth(m, fsck_message);
-+                r = manager_send_plymouth_message(m, fsck_message);
-                 if (r < 0)
--                        log_debug("Couldn't send message to plymouth");
--
--                if (l > m->clear)
--                        m->clear = l;
--        }
--        return 0;
--}
--
--static int connect_plymouth(Manager *m) {
--        union sockaddr_union sa = PLYMOUTH_SOCKET;
--        int r;
--
--        /* try to connect or reconnect if sending a message */
--        if (m->plymouth_fd <= 0) {
--                m->plymouth_fd = socket(AF_UNIX, SOCK_STREAM|SOCK_CLOEXEC, 0);
--                if (m->plymouth_fd < 0) {
--                        return log_warning_errno(errno, "Connection to plymouth socket failed: %m");
--                }
--                if (connect(m->plymouth_fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) {
--                        on_plymouth_disconnect(m);
--                        return log_warning_errno(errno, "Couldn't connect to plymouth: %m");
--                }
--                r = sd_event_add_io(m->event, NULL, m->plymouth_fd, EPOLLIN, plymouth_feedback_handler, m);
--                if (r < 0) {
--                        on_plymouth_disconnect(m);
--                        return log_warning_errno(r, "Can't listen to plymouth socket: %m");
--                }
-+                        return r;
-         }
--
-         return 0;
- }
- 
--static int progress_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-+static int client_progress_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-         Client *client = userdata;
--        Manager *m = NULL;
-         FsckProgress fsck_data;
-         size_t buflen;
-+        Manager *m;
-         int r;
- 
-         assert(client);
-+
-         m = client->manager;
- 
-         /* check first if we need to cancel this client */
--        if (m->cancel_requested) {
--                if (!client->cancelled)
--                        request_cancel_client(client);
--        }
-+        if (m->cancel_requested)
-+                client_request_cancel(client);
- 
-         /* ensure we have enough data to read */
-         r = ioctl(fd, FIONREAD, &buflen);
-@@ -296,10 +383,8 @@ static int progress_handler(sd_event_source *s, int fd, uint32_t revents, void *
-                 /* we got twice the same size from a bad behaving client, kick it off the list */
-                 else {
-                         log_warning("Closing bad behaving fsck client connection at fd %d", client->fd);
--                        remove_client(&(m->clients), client);
--                        r = update_global_progress(m);
--                        if (r < 0)
--                                log_warning_errno(r, "Couldn't update global progress: %m");
-+                        client_free(client);
-+                        manager_update_global_progress(m);
-                 }
-                 return 0;
-         }
-@@ -308,7 +393,7 @@ static int progress_handler(sd_event_source *s, int fd, uint32_t revents, void *
-         r = recv(fd, &fsck_data, sizeof(FsckProgress), 0);
-         if (r == 0) {
-                 log_debug("Fsck client connected to fd %d disconnected", client->fd);
--                remove_client(&(m->clients), client);
-+                client_free(client);
-         } else if (r > 0 && r != sizeof(FsckProgress))
-                 log_warning("Unexpected data structure sent to fsckd socket from fd: %d. Ignoring", client->fd);
-         else if (r > 0 && r == sizeof(FsckProgress)) {
-@@ -323,67 +408,72 @@ static int progress_handler(sd_event_source *s, int fd, uint32_t revents, void *
-         } else
-                 log_error_errno(r, "Unknown error while trying to read fsck data: %m");
- 
--        r = update_global_progress(m);
--        if (r < 0)
--                log_warning_errno(r, "Couldn't update global progress: %m");
-+        manager_update_global_progress(m);
- 
-         return 0;
- }
- 
--static int new_connection_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-+static int manager_new_connection_handler(sd_event_source *s, int fd, uint32_t revents, void *userdata) {
-+        _cleanup_(client_freep) Client *c = NULL;
-+        _cleanup_close_ int new_client_fd = -1;
-         Manager *m = userdata;
--        Client *client = NULL;
--        int new_client_fd, r;
-+        int r;
- 
-         assert(m);
- 
-         /* Initialize and list new clients */
-         new_client_fd = accept4(m->connection_fd, NULL, NULL, SOCK_CLOEXEC);
--        if (new_client_fd > 0) {
--                log_debug("New fsck client connected to fd: %d", new_client_fd);
--                client = new0(Client, 1);
--                if (!client)
--                        return log_oom();
--                client->fd = new_client_fd;
--                client->manager = m;
--                LIST_PREPEND(clients, m->clients, client);
--                r = sd_event_add_io(m->event, NULL, client->fd, EPOLLIN, progress_handler, client);
--                if (r < 0) {
--                        remove_client(&(m->clients), client);
--                        return r;
--                }
--                /* only request the client to cancel now in case the request is dropped by the client (chance to recancel) */
--                if (m->cancel_requested)
--                        request_cancel_client(client);
--        } else
-+        if (new_client_fd < 0)
-                 return log_error_errno(errno, "Couldn't accept a new connection: %m");
- 
-+        if (m->n_clients >= CLIENTS_MAX) {
-+                log_error("Too many clients, refusing connection.");
-+                return 0;
-+        }
-+
-+        log_debug("New fsck client connected to fd: %d", new_client_fd);
-+
-+        c = new0(Client, 1);
-+        if (!c) {
-+                log_oom();
-+                return 0;
-+        }
-+
-+        c->fd = new_client_fd;
-+        new_client_fd = -1;
-+
-+        r = sd_event_add_io(m->event, &c->event_source, c->fd, EPOLLIN, client_progress_handler, c);
-+        if (r < 0) {
-+                log_oom();
-+                return 0;
-+        }
-+
-+        LIST_PREPEND(clients, m->clients, c);
-+        m->n_clients++;
-+        c->manager = m;
-+
-+        /* only request the client to cancel now in case the request is dropped by the client (chance to recancel) */
-+        if (m->cancel_requested)
-+                client_request_cancel(c);
-+
-+        c = NULL;
-         return 0;
- }
- 
- static void manager_free(Manager *m) {
--        Client *current = NULL, *l = NULL;
-         if (!m)
-                 return;
- 
-         /* clear last line */
--        if (m->console && m->clear > 0) {
--                unsigned j;
--
--                fputc('\r', m->console);
--                for (j = 0; j < (unsigned) m->clear; j++)
--                        fputc(' ', m->console);
--                fputc('\r', m->console);
--                fflush(m->console);
--        }
-+        manager_write_console(m, NULL);
- 
-+        sd_event_source_unref(m->connection_event_source);
-         safe_close(m->connection_fd);
--        safe_close(m->plymouth_fd);
--        if (m->console)
--                fclose(m->console);
- 
--        LIST_FOREACH_SAFE(clients, current, l, m->clients)
--                remove_client(&(m->clients), current);
-+        while (m->clients)
-+                client_free(m->clients);
-+
-+        manager_disconnect_plymouth(m);
- 
-         sd_event_unref(m->event);
- 
-@@ -391,7 +481,7 @@ static void manager_free(Manager *m) {
- }
- 
- static int manager_new(Manager **ret, int fd) {
--        _cleanup_manager_free_ Manager *m = NULL;
-+        _cleanup_(manager_freep) Manager *m = NULL;
-         int r;
- 
-         assert(ret);
-@@ -400,19 +490,21 @@ static int manager_new(Manager **ret, int fd) {
-         if (!m)
-                 return -ENOMEM;
- 
-+        m->plymouth_fd = -1;
-+        m->connection_fd = fd;
-+        m->percent = 100;
-+
-         r = sd_event_default(&m->event);
-         if (r < 0)
-                 return r;
- 
--        m->connection_fd = fd;
--        if (access("/run/systemd/show-status", F_OK) >= 0) {
--                m->console = fopen("/dev/console", "we");
--                if (!m->console)
--                        return log_warning_errno(errno, "Can't connect to /dev/console: %m");
--        }
--        m->percent = 100;
-+        if (access("/run/systemd/show-status", F_OK) >= 0)
-+                m->show_status_console = true;
-+
-+        r = sd_event_add_io(m->event, &m->connection_event_source, fd, EPOLLIN, manager_new_connection_handler, m);
-+        if (r < 0)
-+                return r;
- 
--        m->plymouth_fd = -1;
-         *ret = m;
-         m = NULL;
- 
-@@ -503,7 +595,7 @@ static int parse_argv(int argc, char *argv[]) {
- }
- 
- int main(int argc, char *argv[]) {
--        _cleanup_manager_free_ Manager *m = NULL;
-+        _cleanup_(manager_freep) Manager *m = NULL;
-         int fd = -1;
-         int r, n;
- 
-@@ -514,41 +606,37 @@ int main(int argc, char *argv[]) {
- 
-         r = parse_argv(argc, argv);
-         if (r <= 0)
--                return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
-+                goto finish;
- 
-         n = sd_listen_fds(0);
-         if (n > 1) {
-                 log_error("Too many file descriptors received.");
--                return EXIT_FAILURE;
--        } else if (n == 1) {
-+                r = -EINVAL;
-+                goto finish;
-+        } else if (n == 1)
-                 fd = SD_LISTEN_FDS_START + 0;
--        } else {
-+        else {
-                 fd = make_socket_fd(LOG_DEBUG, FSCKD_SOCKET_PATH, SOCK_STREAM | SOCK_CLOEXEC);
-                 if (fd < 0) {
--                        log_error_errno(r, "Couldn't create listening socket fd on %s: %m", FSCKD_SOCKET_PATH);
--                        return EXIT_FAILURE;
-+                        r = log_error_errno(fd, "Couldn't create listening socket fd on %s: %m", FSCKD_SOCKET_PATH);
-+                        goto finish;
-                 }
-         }
- 
-         r = manager_new(&m, fd);
-         if (r < 0) {
-                 log_error_errno(r, "Failed to allocate manager: %m");
--                return EXIT_FAILURE;
--        }
--
--        r = sd_event_add_io(m->event, NULL, fd, EPOLLIN, new_connection_handler, m);
--        if (r < 0) {
--                log_error_errno(r, "Can't listen to connection socket: %m");
--                return EXIT_FAILURE;
-+                goto finish;
-         }
- 
-         r = run_event_loop_with_timeout(m->event, IDLE_TIME_SECONDS * USEC_PER_SEC);
-         if (r < 0) {
-                 log_error_errno(r, "Failed to run event loop: %m");
--                return EXIT_FAILURE;
-+                goto finish;
-         }
- 
-         sd_event_get_exit_code(m->event, &r);
- 
-+finish:
-         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
- }
diff --git a/debian/patches/insserv.conf-generator.patch b/debian/patches/insserv.conf-generator.patch
index 1b0ca55..c50d926 100644
--- a/debian/patches/insserv.conf-generator.patch
+++ b/debian/patches/insserv.conf-generator.patch
@@ -25,10 +25,10 @@ It has the following modifications:
  create mode 100644 src/insserv-generator/insserv-generator.c
 
 diff --git a/Makefile.am b/Makefile.am
-index 50202bf..8318a53 100644
+index 0a811e9..d27a8b1 100644
 --- a/Makefile.am
 +++ b/Makefile.am
-@@ -406,6 +406,7 @@ rootlibexec_PROGRAMS += \
+@@ -405,6 +405,7 @@ rootlibexec_PROGRAMS += \
  endif
  
  systemgenerator_PROGRAMS = \
@@ -36,7 +36,7 @@ index 50202bf..8318a53 100644
  	systemd-getty-generator \
  	systemd-fstab-generator \
  	systemd-system-update-generator \
-@@ -2412,6 +2413,14 @@ systemd_delta_LDADD = \
+@@ -2396,6 +2397,14 @@ systemd_delta_LDADD = \
  	libsystemd-shared.la
  
  # ------------------------------------------------------------------------------
diff --git a/debian/patches/systemd-fsck-always-connect-to-systemd-fsckd.patch b/debian/patches/systemd-fsck-always-connect-to-systemd-fsckd.patch
deleted file mode 100644
index e73a808..0000000
--- a/debian/patches/systemd-fsck-always-connect-to-systemd-fsckd.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From: Didier Roche <didrocks@ubuntu.com>
-Date: Mon, 26 Jan 2015 16:01:11 +0100
-Subject: systemd-fsck: always connect to systemd-fsckd
-
-Remove the plymouth running or show-status checks from systemd-fsck. Instead,
-always connect to systemd-fsckd socket, and let this one decide if we display
-progress or not.
----
- src/fsck/fsck.c   | 12 ++++--------
- src/fsckd/fsckd.c |  8 +++++---
- 2 files changed, 9 insertions(+), 11 deletions(-)
-
-diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c
-index 6ccb2e7..9ecba99 100644
---- a/src/fsck/fsck.c
-+++ b/src/fsck/fsck.c
-@@ -45,7 +45,6 @@
- 
- static bool arg_skip = false;
- static bool arg_force = false;
--static bool arg_show_progress = false;
- static const char *arg_repair = "-a";
- 
- static void start_target(const char *target) {
-@@ -131,8 +130,6 @@ static void test_files(void) {
-         }
- #endif
- 
--        if (access("/run/systemd/show-status", F_OK) >= 0 || plymouth_running())
--                arg_show_progress = true;
- }
- 
- static int process_progress(int fd, dev_t device_num) {
-@@ -286,11 +283,10 @@ int main(int argc, char *argv[]) {
-                         log_warning_errno(r, "fsck.%s cannot be used for %s: %m", type, device);
-         }
- 
--        if (arg_show_progress)
--                if (pipe(progress_pipe) < 0) {
--                        log_error_errno(errno, "pipe(): %m");
--                        return EXIT_FAILURE;
--                }
-+        if (pipe(progress_pipe) < 0) {
-+                log_error_errno(errno, "pipe(): %m");
-+                return EXIT_FAILURE;
-+        }
- 
-         cmdline[i++] = "/sbin/fsck";
-         cmdline[i++] =  arg_repair;
-diff --git a/src/fsckd/fsckd.c b/src/fsckd/fsckd.c
-index 39fe899..6b2eeb0 100644
---- a/src/fsckd/fsckd.c
-+++ b/src/fsckd/fsckd.c
-@@ -259,9 +259,11 @@ static int manager_new(Manager **ret, int fd) {
-                 return r;
- 
-         m->connection_fd = fd;
--        m->console = fopen("/dev/console", "we");
--        if (!m->console)
--                return log_warning_errno(errno, "Can't connect to /dev/console: %m");
-+        if (access("/run/systemd/show-status", F_OK) >= 0) {
-+                m->console = fopen("/dev/console", "we");
-+                if (!m->console)
-+                        return log_warning_errno(errno, "Can't connect to /dev/console: %m");
-+        }
-         m->percent = 100;
- 
-         *ret = m;
diff --git a/debian/patches/v219-stable.patch b/debian/patches/v219-stable.patch
index c617324..1d237f4 100644
--- a/debian/patches/v219-stable.patch
+++ b/debian/patches/v219-stable.patch
@@ -3699,7 +3699,7 @@ index 32299db..706b95a 100644
    <!-- the ID is output in the block.object call for refsect1 -->
    <h2>
 diff --git a/man/file-hierarchy.xml b/man/file-hierarchy.xml
-index e9c894f..364e1307 100644
+index e9c894f..364e130 100644
 --- a/man/file-hierarchy.xml
 +++ b/man/file-hierarchy.xml
 @@ -397,7 +397,7 @@
-- 
2.1.4

