<?xml version="1.0"?>
<!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
<refentry id="systemd-fsck@.service" xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>systemd-fsck@.service</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>systemd-fsck@.service</refentrytitle>
    <manvolnum>8</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>systemd-fsck@.service</refname>
    <refname>systemd-fsck-root.service</refname>
    <refname>systemd-fsck-usr.service</refname>
    <refname>systemd-fsck</refname>
    <refpurpose>File system checker logic</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <para><filename>systemd-fsck@.service</filename></para>
    <para><filename>systemd-fsck-root.service</filename></para>
    <para><filename>systemd-fsck-usr.service</filename></para>
    <para><filename>/usr/lib/systemd/systemd-fsck</filename></para>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><filename>systemd-fsck@.service</filename>, <filename>systemd-fsck-root.service</filename>, and
    <filename>systemd-fsck-usr.service</filename> are services responsible for file system checks. They are
    instantiated for each device that is configured for file system checking.
    <filename>systemd-fsck-root.service</filename> and <filename>systemd-fsck-usr.service</filename> are
    responsible for file system checks on the root and /usr file system, respectively, but only if the root
    filesystem was not checked in the initrd. <filename>systemd-fsck@.service</filename> is used for all
    other file systems and for the root file system in the initrd.</para>

    <para>These services are started at boot if <option>passno</option> in <filename>/etc/fstab</filename>
    for the file system is set to a value greater than zero, but only if it is also configured to be
    mounted at boot (i.e. without <literal>noauto</literal> option). The file system check for root is
    performed before the other file systems. Other file systems may be checked in parallel, except when
    they are on the same rotating disk.</para>

    <para><filename>systemd-fsck</filename> does not know any details
    about specific filesystems, and simply executes file system
    checkers specific to each filesystem type
    (<filename>fsck.<replaceable>type</replaceable></filename>). These checkers will decide if
    the filesystem should actually be checked based on the time since
    last check, number of mounts, unclean unmount, etc.</para>

    <para><filename>systemd-fsck-root.service</filename> and <filename>systemd-fsck-usr.service</filename>
    will activate <filename>reboot.target</filename> if <filename>fsck</filename> returns the "System
    should reboot" condition, or <filename>emergency.target</filename> if <filename>fsck</filename>
    returns the "Filesystem errors left uncorrected" condition.</para>

    <para><filename>systemd-fsck@.service</filename> will fail if
    <filename>fsck</filename> returns with either "System should reboot"
    or "Filesystem errors left uncorrected" conditions. For filesystems
    listed in <filename>/etc/fstab</filename> without <literal>nofail</literal>
    or <literal>noauto</literal> options, <literal>local-fs.target</literal>
    will then activate <filename>emergency.target</filename>.</para>
  </refsect1>

  <refsect1>
    <title>Kernel Command Line</title>

    <para><filename>systemd-fsck</filename> understands these kernel
    command line parameters:</para>

    <variablelist class='kernel-commandline-options'>
      <varlistentry>
        <term><varname>fsck.mode=</varname></term>

        <listitem><para>One of <literal>auto</literal>,
        <literal>force</literal>, <literal>skip</literal>. Controls
        the mode of operation. The default is <literal>auto</literal>,
        and ensures that file system checks are done when the file
        system checker deems them necessary. <literal>force</literal>
        unconditionally results in full file system checks.
        <literal>skip</literal> skips any file system
        checks.</para>

        <xi:include href="version-info.xml" xpointer="v186"/></listitem>
      </varlistentry>

      <varlistentry>
        <term><varname>fsck.repair=</varname></term>

        <listitem><para>One of <literal>preen</literal>,
        <literal>yes</literal>, <literal>no</literal>. Controls the
        mode of operation. The default is <literal>preen</literal>,
        and will automatically repair problems that can be safely
        fixed. <literal>yes</literal> will answer yes to all
        questions by fsck and <literal>no</literal> will answer no to
        all questions. </para>

        <xi:include href="version-info.xml" xpointer="v213"/></listitem>
      </varlistentry>
    </variablelist>
  </refsect1>

  <refsect1>
    <title>See Also</title>
    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</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>
