Commit 2ba545f1 authored by Lennart Poettering's avatar Lennart Poettering

service: implement FsckPassNo= option

parent dcdf86bb
......@@ -638,6 +638,33 @@
refers to.</para></listitem>
</varlistentry>
<varlistentry>
<term><varname>FsckPassNo=</varname></term>
<listitem><para>Set the fsck passno
priority to use to order this service
in relation to other file system
checking services. This option is only
necessary to fix ordering in relation
to fsck jobs automatically created for
all <filename>/etc/fstab</filename>
entries with a value in the fs_passno
column > 0. As such it should only be
used as option for fsck
services. Almost always it is a better
choice to add explicit ordering
directives via
<varname>After=</varname> or
<varname>Before=</varname>,
instead. For more details see
<citerefentry><refentrytitle>systemd.unit</refentrytitle><manvolnum>5</manvolnum></citerefentry>. If
used, pass an integer value in the
same range as
<filename>/etc/fstab</filename>'s
fs_passno column. See
<citerefentry><refentrytitle>fstab</refentrytitle><manvolnum>5</manvolnum></citerefentry>
for details.</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
......
......@@ -1002,6 +1002,32 @@ static int config_parse_sysv_priority(
}
#endif
static int config_parse_fsck_passno(
const char *filename,
unsigned line,
const char *section,
const char *lvalue,
const char *rvalue,
void *data,
void *userdata) {
int *passno = data;
int r, i;
assert(filename);
assert(lvalue);
assert(rvalue);
assert(data);
if ((r = safe_atoi(rvalue, &i)) < 0 || i < 0) {
log_error("[%s:%u] Failed to parse fsck pass number, ignoring: %s", filename, line, rvalue);
return 0;
}
*passno = (int) i;
return 0;
}
static DEFINE_CONFIG_PARSE_ENUM(config_parse_kill_mode, kill_mode, KillMode, "Failed to parse kill mode");
static int config_parse_kill_signal(
......@@ -1781,6 +1807,7 @@ static int load_from_path(Unit *u, const char *path) {
{ "BusName", config_parse_string_printf, &u->service.bus_name, "Service" },
{ "NotifyAccess", config_parse_notify_access, &u->service.notify_access, "Service" },
{ "Sockets", config_parse_service_sockets, &u->service, "Service" },
{ "FsckPassNo", config_parse_fsck_passno, &u->service.fsck_passno, "Service" },
EXEC_CONTEXT_CONFIG_ITEMS(u->service.exec_context, "Service"),
{ "ListenStream", config_parse_listen, &u->socket, "Socket" },
......
......@@ -15,3 +15,4 @@ Before=local-fs.target shutdown.target remount-rootfs.service quotacheck.service
Type=oneshot
RemainAfterExit=no
ExecStart=@rootlibexecdir@/systemd-fsck
FsckPassNo=1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment