diff options
-rw-r--r-- | man/systemd-fsck@.service.xml | 3 | ||||
-rw-r--r-- | man/systemd-fstab-generator.xml | 5 | ||||
-rw-r--r-- | src/fstab-generator/fstab-generator.c | 21 | ||||
-rw-r--r-- | units/systemd-fsck@.service.in | 2 |
4 files changed, 25 insertions, 6 deletions
diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml index e934352f19..17bd1c027b 100644 --- a/man/systemd-fsck@.service.xml +++ b/man/systemd-fsck@.service.xml @@ -62,7 +62,8 @@ system check. <filename>systemd-fsck-root.service</filename> is responsible for file system checks on the root - file system.</para> + file system. The root file system check is performed + before the other file systems.</para> <para><filename>systemd-fsck</filename> will forward file system checking progress to the diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml index 9ca16c7ea1..740db8fddb 100644 --- a/man/systemd-fstab-generator.xml +++ b/man/systemd-fstab-generator.xml @@ -61,6 +61,11 @@ reloaded. This will instantiate mount and swap units as necessary.</para> + <para>The <term><varname>passno</varname></term> field + is treated like a simlpe boolean, and the ordering information + is discarded. However, the root filesystem is checked + before all the other filesystems.</para> + <para>See <citerefentry><refentrytitle>systemd.mount</refentrytitle><manvolnum>5</manvolnum></citerefentry> and diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index a7536f8f7e..77247dee5e 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -209,17 +209,30 @@ static int add_mount( "Before=%s\n", post); + if (passno > 0) { + _cleanup_free_ char *fsck = NULL; + + fsck = unit_name_from_path_instance("systemd-fsck", what, ".service"); + if (!fsck) + return log_oom(); + + fprintf(f, + "Requires=%s\n" + "After=%s\n", + fsck, + fsck); + } + + fprintf(f, "\n" "[Mount]\n" "What=%s\n" "Where=%s\n" - "Type=%s\n" - "FsckPassNo=%i\n", + "Type=%s\n", what, where, - type, - passno); + type); if (!isempty(opts) && !streq(opts, "defaults")) diff --git a/units/systemd-fsck@.service.in b/units/systemd-fsck@.service.in index e229cdcb83..c12efa8e76 100644 --- a/units/systemd-fsck@.service.in +++ b/units/systemd-fsck@.service.in @@ -10,7 +10,7 @@ Description=File System Check on %f Documentation=man:systemd-fsck@.service(8) DefaultDependencies=no BindsTo=%i.device -After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device +After=systemd-readahead-collect.service systemd-readahead-replay.service %i.device systemd-fsck-root.service Before=shutdown.target [Service] |