mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-04 17:47:03 +03:00
Merge pull request #8617 from keszybz/tmpfiles-relax
Do not exit with error when systemd-tmpfiles --boot fails
This commit is contained in:
commit
6064de2de8
@ -225,11 +225,15 @@
|
||||
<refsect1>
|
||||
<title>Exit status</title>
|
||||
|
||||
<para>On success, 0 is returned. If the configuration was invalid (invalid syntax, missing
|
||||
arguments, …), so some lines had to be ignored, but no other errors occurred,
|
||||
<para>On success, 0 is returned. If the configuration was syntactically invalid (syntax errors,
|
||||
missing arguments, …), so some lines had to be ignored, but no other errors occurred,
|
||||
<constant>65</constant> is returned (<constant>EX_DATAERR</constant> from
|
||||
<filename>/usr/include/sysexits.h</filename>). Otherwise, <constant>1</constant> is returned
|
||||
(<constant>EXIT_FAILURE</constant> from <filename>/usr/include/stdlib.h</filename>).
|
||||
<filename>/usr/include/sysexits.h</filename>). If the configuration was syntactically valid, but
|
||||
could not be executed (lack of permissions, creation of files in missing directories, invalid
|
||||
contents when writing to <filename>/sys/</filename> values, …), <constant>73</constant> is
|
||||
returned (<constant>EX_DATAERR</constant> from <filename>/usr/include/sysexits.h</filename>).
|
||||
Otherwise, <constant>1</constant> is returned (<constant>EXIT_FAILURE</constant> from
|
||||
<filename>/usr/include/stdlib.h</filename>).
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
|
@ -98,6 +98,10 @@ int acquire_data_fd(const void *data, size_t size, unsigned flags);
|
||||
#define ERRNO_IS_DISCONNECT(r) \
|
||||
IN_SET(r, ENOTCONN, ECONNRESET, ECONNREFUSED, ECONNABORTED, EPIPE, ENETUNREACH)
|
||||
|
||||
/* Resource exhaustion, could be our fault or general system trouble */
|
||||
#define ERRNO_IS_RESOURCE(r) \
|
||||
IN_SET(r, ENOMEM, EMFILE, ENFILE)
|
||||
|
||||
int fd_move_above_stdio(int fd);
|
||||
|
||||
int rearrange_stdio(int original_input_fd, int original_output_fd, int original_error_fd);
|
||||
|
@ -1289,7 +1289,7 @@ static int write_one_file(Item *i, const char *path) {
|
||||
|
||||
fd = safe_close(fd);
|
||||
|
||||
done:
|
||||
done:
|
||||
if (stat(path, &st) < 0)
|
||||
return log_error_errno(errno, "stat(%s) failed: %m", path);
|
||||
|
||||
@ -2725,7 +2725,7 @@ static int read_config_files(char **config_dirs, char **args, bool *invalid_conf
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int r, k;
|
||||
int r, k, r_process = 0;
|
||||
ItemArray *a;
|
||||
Iterator iterator;
|
||||
_cleanup_strv_free_ char **config_dirs = NULL;
|
||||
@ -2772,7 +2772,7 @@ int main(int argc, char *argv[]) {
|
||||
|
||||
t = strv_join(config_dirs, "\n\t");
|
||||
if (t)
|
||||
log_debug("Looking for configuration files in (higher priority first:\n\t%s", t);
|
||||
log_debug("Looking for configuration files in (higher priority first):\n\t%s", t);
|
||||
}
|
||||
|
||||
/* If command line arguments are specified along with --replace, read all
|
||||
@ -2788,22 +2788,20 @@ int main(int argc, char *argv[]) {
|
||||
if (r < 0)
|
||||
goto finish;
|
||||
|
||||
|
||||
|
||||
/* The non-globbing ones usually create things, hence we apply
|
||||
* them first */
|
||||
ORDERED_HASHMAP_FOREACH(a, items, iterator) {
|
||||
k = process_item_array(a);
|
||||
if (k < 0 && r == 0)
|
||||
r = k;
|
||||
if (k < 0 && r_process == 0)
|
||||
r_process = k;
|
||||
}
|
||||
|
||||
/* The globbing ones usually alter things, hence we apply them
|
||||
* second. */
|
||||
ORDERED_HASHMAP_FOREACH(a, globs, iterator) {
|
||||
k = process_item_array(a);
|
||||
if (k < 0 && r == 0)
|
||||
r = k;
|
||||
if (k < 0 && r_process == 0)
|
||||
r_process = k;
|
||||
}
|
||||
|
||||
finish:
|
||||
@ -2818,10 +2816,12 @@ finish:
|
||||
|
||||
mac_selinux_finish();
|
||||
|
||||
if (r < 0)
|
||||
if (r < 0 || ERRNO_IS_RESOURCE(-r_process))
|
||||
return EXIT_FAILURE;
|
||||
else if (invalid_config)
|
||||
return EX_DATAERR;
|
||||
else if (r_process < 0)
|
||||
return EX_CANTCREAT;
|
||||
else
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
@ -20,4 +20,4 @@ ConditionCapability=CAP_SYS_MODULE
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=@rootbindir@/systemd-tmpfiles --prefix=/dev --create --boot
|
||||
SuccessExitStatus=65
|
||||
SuccessExitStatus=65 73
|
||||
|
@ -20,4 +20,4 @@ RefuseManualStop=yes
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
ExecStart=@rootbindir@/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev
|
||||
SuccessExitStatus=65
|
||||
SuccessExitStatus=65 73
|
||||
|
Loading…
x
Reference in New Issue
Block a user