mirror of
https://github.com/systemd/systemd.git
synced 2025-03-31 14:50:15 +03:00
service: implement FsckPassNo= option
This commit is contained in:
parent
dcdf86bbb0
commit
2ba545f1a0
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user