From 2c2b21017fcf68c136b568b35b4cafcfc9ee3786 Mon Sep 17 00:00:00 2001
From: Didier Roche <didrocks@ubuntu.com>
Date: Mon, 26 Jan 2015 17:34:59 +0100
Subject: [PATCH 12/13] 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  |   6 +-
 man/systemd-fsckd.service.xml  | 172 +++++++++++++++++++++++++++++++++++++++++
 units/systemd-fsckd.service.in |   1 +
 units/systemd-fsckd.socket     |   2 +-
 5 files changed, 190 insertions(+), 3 deletions(-)
 create mode 100644 man/systemd-fsckd.service.xml

diff --git a/Makefile-man.am b/Makefile-man.am
index 105853e..f2e13e8 100644
--- a/Makefile-man.am
+++ b/Makefile-man.am
@@ -67,6 +67,7 @@ MANPAGES += \
 	man/systemd-escape.1 \
 	man/systemd-firstboot.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 \
@@ -210,6 +211,8 @@ MANPAGES_ALIAS += \
 	man/systemd-firstboot.service.1 \
 	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 \
@@ -323,6 +326,8 @@ man/systemd-ask-password-wall.service.8: man/systemd-ask-password-console.servic
 man/systemd-firstboot.service.1: man/systemd-firstboot.1
 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
@@ -606,6 +611,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)
 
@@ -1732,6 +1743,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 ee66f37..9b37a80 100644
--- a/man/systemd-fsck@.service.xml
+++ b/man/systemd-fsck@.service.xml
@@ -87,8 +87,9 @@
                 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
+                file system 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>
@@ -142,6 +143,7 @@
                 <para>
                         <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                         <citerefentry><refentrytitle>fsck</refentrytitle><manvolnum>8</manvolnum></citerefentry>,
+                        <citerefentry><refentrytitle>systemd-fsckd.service</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>,
diff --git a/man/systemd-fsckd.service.xml b/man/systemd-fsckd.service.xml
new file mode 100644
index 0000000..4b6510e
--- /dev/null
+++ b/man/systemd-fsckd.service.xml
@@ -0,0 +1,172 @@
+<?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 checker log 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 fetching file system check
+                progress, and communicating some consolidated data
+                to console and plymouth (if running). It handles
+                as well eventual check cancellations.</para>
+                <para><filename>systemd-fsck-root.service</filename> or
+                <filename>systemd-fsck@.service</filename> will get the
+                progress from fsck and send each individual infos to
+                <filename>systemd-fsckd</filename>, through socket activation
+                by <filename>systemd-fsckd.socket</filename>.</para>
+
+                <para><filename>systemd-fsckd</filename> accepts
+                <filename>systemd-fsck</filename> UNIX domain
+                sockets communication, fetch the lower progress value of
+                any fsck running in parallel with the number of devices
+                being currently check. It communicates to plymouth some
+                translated strings written to <filename>/dev/console</filename>
+                in addition to this metadata in case the plymouth theme
+                is a script, not supporting, i18n. The themes can use the
+                raw metadata (see below) to display their own custom messages.
+                </para>
+
+                <para>The first time it connects to plymouth, a request
+                to grab c or C keypresses is sent, as well as a text message.
+                When the cancel key is pressed, it forwards this info to
+                various running <filename>systemd-fsck</filename>
+                processes which will then terminate the checks. It will as well
+                cancel any new <filename>systemd-fsck</filename> for the lifetime
+               of <filename>systemd-fsckd</filename>.</para>
+        </refsect1>
+
+        <refsect1>
+                <title>Protocol with plymouth</title>
+
+                <para><filename>systemd-fsckd</filename> pass through
+                libplymouth following messages to the theme:</para>
+
+                <para>Progress update, send as a plymouth update message:
+                   <literal>fsckd:&lt;nb_devices&gt;:&lt;progress&gt;:&lt;string&gt;</literal>
+                   <variablelist>
+                      <varlistentry>
+                         <term><literal>&lt;nb_devices&gt;</literal></term>
+                         <listitem><para>corresponds to the current number of devices
+                         being checked (int)</para></listitem>
+                      </varlistentry>
+                      <varlistentry>
+                         <term><literal>&lt;progress&gt;</literal></term>
+                         <listitem><para>corresponds to 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>is a translated message ready to be displayed
+                         by the plymouth theme displaying both 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>is a translated string ready to be displayed
+                         by the plymouth theme indicating that c or 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>
+                connexions 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><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>
+                </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 46373fc..5258b96 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
 Before=sockets.target
 
-- 
2.1.4

