diff --git a/Makefile-man.am b/Makefile-man.am
index a4835a533f..7514e6a24f 100644
--- a/Makefile-man.am
+++ b/Makefile-man.am
@@ -1850,11 +1850,21 @@ MANPAGES += \
man/coredumpctl.1 \
man/systemd-coredump.8
MANPAGES_ALIAS += \
- man/coredump.conf.d.5
+ man/coredump.conf.d.5 \
+ man/systemd-coredump.socket.8 \
+ man/systemd-coredump@.service.8
man/coredump.conf.d.5: man/coredump.conf.5
+man/systemd-coredump.socket.8: man/systemd-coredump.8
+man/systemd-coredump@.service.8: man/systemd-coredump.8
man/coredump.conf.d.html: man/coredump.conf.html
$(html-alias)
+man/systemd-coredump.socket.html: man/systemd-coredump.html
+ $(html-alias)
+
+man/systemd-coredump@.service.html: man/systemd-coredump.html
+ $(html-alias)
+
endif
if ENABLE_EFI
diff --git a/man/coredump.conf.xml b/man/coredump.conf.xml
index a0a497b467..2064a96523 100644
--- a/man/coredump.conf.xml
+++ b/man/coredump.conf.xml
@@ -60,7 +60,14 @@
These files configure the behavior of
systemd-coredump8,
- a handler for core dumps invoked by the kernel.
+ a handler for core dumps invoked by the kernel. Whether systemd-coredump is used
+ is determined by the kernel's
+ kernel.core_patternsysctl8
+ setting. See
+ systemd-coredump8
+ and
+ core5
+ pages for the details.
diff --git a/man/systemd-coredump.xml b/man/systemd-coredump.xml
index f1598461ef..51dc27e8d3 100644
--- a/man/systemd-coredump.xml
+++ b/man/systemd-coredump.xml
@@ -45,11 +45,15 @@
systemd-coredump
+ systemd-coredump.socket
+ systemd-coredump@.serviceLog and store core dumps/usr/lib/systemd/systemd-coredump
+ systemd-coredump@.service
+ systemd-coredump.socket
@@ -60,12 +64,13 @@
signal and dumps core. For it to be used in this capacity, it must
be specified by the
kernel.core_patternsysctl8
- setting. Systemd installs
- /usr/lib/sysctl.d/50-coredump.conf which
- configures kernel.core_pattern to invoke
- systemd-coredump. This file may be masked or
- overridden to use a different setting following normal
- sysctl.d5 rules.
+ setting. The syntax of this setting is explained in
+ core5.
+ Systemd installs /usr/lib/sysctl.d/50-coredump.conf which configures
+ kernel.core_pattern to invoke systemd-coredump.
+ This file may be masked or overridden to use a different setting following normal
+ sysctl.d5
+ rules.
The behavior of a specific program upon reception of a
signal is governed by a few factors which are described in detail
@@ -77,18 +82,35 @@
systemd.exec5).
- systemd-coredump will log the coredump
- including a backtrace if possible, and store the core (contents of
- process' memory contents) in an external file on disk in
- /var/lib/systemd/coredump, or directly in
- the journal. This behavior may be modified using
- coredump.conf5.
+ The behaviour of systemd-coredump is configured through
+ /etc/systemd/coredump.conf and other configuration files. See
+ coredump.conf5
+ for details. By default, systemd-coredump will log the coredump including a
+ backtrace if possible, and store the core (contents of process' memory contents) in an external
+ file on disk in /var/lib/systemd/coredump.
- Apart from the
- journalctl1
- log viewer,
+ When the kernel invokes systemd-coredump to handle a coredump,
+ it will connect to the socket created by the systemd-coredump.socket
+ unit, which in turn will spawn a systemd-coredump@.service instance
+ to process the coredump. Hence systemd-coredump.socket
+ and systemd-coredump@.service are helper units which do the actual
+ processing of coredumps and are subject to normal service management.
+
+ The log entry and a backtrace are stored in the journal, and can be viewed with
+ journalctl1.
coredumpctl1
- may be used to list and extract coredumps.
+ may be used to list and extract coredumps or load them in
+ gdb1.
+
+
+ The coredump helper is invoked anew each time. Therefore, any configuration
+ changes will take effect on the invocation of systemd-coredump.
+ If the sysctl configuration is modified, it must be updated in the kernel before
+ it takes effect, see
+ systemd-sysctl8
+ and
+ sysctl8.
+
diff --git a/man/systemd-sysctl.service.xml b/man/systemd-sysctl.service.xml
index 9027ff0f3f..686b2cdef4 100644
--- a/man/systemd-sysctl.service.xml
+++ b/man/systemd-sysctl.service.xml
@@ -62,24 +62,29 @@
systemd-sysctl.service is an early boot
service that configures
sysctl8
- kernel parameters.
+ kernel parameters by invoking /usr/lib/systemd/systemd-sysctl.
- If invoked with no arguments, it applies all directives from
- all configuration files in
- sysctl.d5
- are searched for a matching file. If one or more filenames are passed on
- the command line, only the directives in these files are applied.
-
+ When invoked with no arguments, /usr/lib/systemd/systemd-sysctl applies
+ all directives from configuration files listed in
+ sysctl.d5.
+ If one or more filenames are passed on the command line, only the directives in these files are
+ applied.
+
+ In addition, option may be used to limit which sysctl
+ settings are applied.See
sysctl.d5
- for information about the configuration of this service.
+ for information about the configuration of sysctl settings. After sysctl configuration is
+ changed on disk, it must be written to the files in /proc/sys before it
+ takes effect. It is possible to update specific settings, or simply to reload all configuration,
+ see Examples below.
Options
-
-
+
+ Only apply rules with the specified prefix.
@@ -91,6 +96,50 @@
+
+ Examples
+
+
+ Reset all sysctl settings
+
+ systemctl restart systemd-sysctl
+
+
+
+ View coredump handler configuration
+
+ # sysctl kernel.core_pattern
+kernel.core_pattern = |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t %P %I
+
+
+
+
+ Update coredump handler configuration
+
+ # /usr/lib/systemd/systemd-sysctl --prefix kernel.core_pattern
+
+ This searches all the directories listed in
+ sysctl.d5
+ for configuration files and writes /proc/sys/kernel/core_pattern.
+
+
+
+ Update coredump handler configuration according to a specific file
+
+ # /usr/lib/systemd/systemd-sysctl 50-coredump.conf
+
+ This applies all the settings found in 50-coredump.conf.
+ Either /etc/sysctl.d/50-coredump.conf, or
+ /run/sysctl.d/50-coredump.conf, or
+ /usr/lib/sysctl.d/50-coredump.conf will be used, in the order
+ of preference.
+
+
+ See
+ sysctl8
+ for various ways to directly apply sysctl settings.
+
+
See Also
diff --git a/man/systemd.nspawn.xml b/man/systemd.nspawn.xml
index 5ec878512a..ce900a5db1 100644
--- a/man/systemd.nspawn.xml
+++ b/man/systemd.nspawn.xml
@@ -224,7 +224,7 @@
-
+ KillSignal=Specify the process signal to send to the
container's PID 1 when nspawn itself receives SIGTERM, in
diff --git a/src/basic/copy.c b/src/basic/copy.c
index 41dc8ca79a..e2db4be9ff 100644
--- a/src/basic/copy.c
+++ b/src/basic/copy.c
@@ -71,7 +71,7 @@ static ssize_t try_copy_file_range(int fd_in, loff_t *off_in,
int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
bool try_cfr = true, try_sendfile = true, try_splice = true;
int r;
- size_t m = SSIZE_MAX; /* that the maximum that sendfile and c_f_r accept */
+ size_t m = SSIZE_MAX; /* that is the maximum that sendfile and c_f_r accept */
assert(fdf >= 0);
assert(fdt >= 0);
@@ -94,8 +94,8 @@ int copy_bytes(int fdf, int fdt, uint64_t max_bytes, bool try_reflink) {
if (max_bytes <= 0)
return 1; /* return > 0 if we hit the max_bytes limit */
- if ((uint64_t) m > max_bytes)
- m = (size_t) max_bytes;
+ if (m > max_bytes)
+ m = max_bytes;
}
/* First try copy_file_range(), unless we already tried */
diff --git a/src/basic/parse-util.h b/src/basic/parse-util.h
index d8dc26a36e..c407263e16 100644
--- a/src/basic/parse-util.h
+++ b/src/basic/parse-util.h
@@ -90,6 +90,18 @@ static inline int safe_atoli(const char *s, long int *ret_u) {
}
#endif
+#if SIZE_MAX == UINT_MAX
+static inline int safe_atozu(const char *s, size_t *ret_u) {
+ assert_cc(sizeof(size_t) == sizeof(unsigned));
+ return safe_atou(s, ret_u);
+}
+#else
+static inline int safe_atozu(const char *s, size_t *ret_u) {
+ assert_cc(sizeof(size_t) == sizeof(long unsigned));
+ return safe_atolu(s, ret_u);
+}
+#endif
+
int safe_atod(const char *s, double *ret_d);
int parse_fractional_part_u(const char **s, size_t digits, unsigned *res);
diff --git a/src/core/triggers.systemd.in b/src/core/triggers.systemd.in
index 9e18a39a67..0d8c303136 100644
--- a/src/core/triggers.systemd.in
+++ b/src/core/triggers.systemd.in
@@ -18,6 +18,8 @@
# along with systemd; If not, see .
# The contents of this are an example to be copied into systemd.spec.
+#
+# Minimum rpm version supported: 4.13.0
%transfiletriggerin -P 900900 -p -- @systemunitdir@ /etc/systemd/system
-- This script will run after any package is initially installed or
diff --git a/src/coredump/coredumpctl.c b/src/coredump/coredumpctl.c
index dac800ebef..27b1e0fb3f 100644
--- a/src/coredump/coredumpctl.c
+++ b/src/coredump/coredumpctl.c
@@ -664,7 +664,7 @@ static int save_core(sd_journal *j, int fd, char **path, bool *unlink_temp) {
#endif
} else {
if (r == -ENOENT)
- log_error("Cannot retrieve coredump from journal nor disk.");
+ log_error("Cannot retrieve coredump from journal or disk.");
else
log_error_errno(r, "Failed to retrieve COREDUMP field: %m");
goto error;
diff --git a/src/journal/compress.c b/src/journal/compress.c
index c43849c46a..ba734b5561 100644
--- a/src/journal/compress.c
+++ b/src/journal/compress.c
@@ -112,7 +112,7 @@ int compress_blob_lz4(const void *src, uint64_t src_size,
if (src_size < 9)
return -ENOBUFS;
- r = LZ4_compress_limitedOutput(src, dst + 8, src_size, (int) dst_alloc_size - 8);
+ r = LZ4_compress_limitedOutput(src, (char*)dst + 8, src_size, (int) dst_alloc_size - 8);
if (r <= 0)
return -ENOBUFS;
@@ -176,7 +176,7 @@ int decompress_blob_xz(const void *src, uint64_t src_size,
return -ENOMEM;
s.avail_out = space - used;
- s.next_out = *dst + used;
+ s.next_out = *(uint8_t**)dst + used;
}
*dst_size = space - s.avail_out;
@@ -215,7 +215,7 @@ int decompress_blob_lz4(const void *src, uint64_t src_size,
} else
out = *dst;
- r = LZ4_decompress_safe(src + 8, out, src_size - 8, size);
+ r = LZ4_decompress_safe((char*)src + 8, out, src_size - 8, size);
if (r < 0 || r != size)
return -EBADMSG;
@@ -291,7 +291,7 @@ int decompress_startswith_xz(const void *src, uint64_t src_size,
if (!(greedy_realloc(buffer, buffer_size, *buffer_size * 2, 1)))
return -ENOMEM;
- s.next_out = *buffer + *buffer_size - s.avail_out;
+ s.next_out = *(uint8_t**)buffer + *buffer_size - s.avail_out;
}
#else
@@ -324,7 +324,7 @@ int decompress_startswith_lz4(const void *src, uint64_t src_size,
if (!(greedy_realloc(buffer, buffer_size, ALIGN_8(prefix_len + 1), 1)))
return -ENOMEM;
- r = LZ4_decompress_safe_partial(src + 8, *buffer, src_size - 8,
+ r = LZ4_decompress_safe_partial((char*)src + 8, *buffer, src_size - 8,
prefix_len + 1, *buffer_size);
if (r >= 0)
size = (unsigned) r;
diff --git a/src/journal/test-compress-benchmark.c b/src/journal/test-compress-benchmark.c
index 0ef6d36a50..6f6d71435d 100644
--- a/src/journal/test-compress-benchmark.c
+++ b/src/journal/test-compress-benchmark.c
@@ -164,7 +164,7 @@ int main(int argc, char *argv[]) {
arg_duration = x * USEC_PER_SEC;
}
if (argc == 3)
- (void) safe_atolu(argv[2], &arg_start);
+ (void) safe_atozu(argv[2], &arg_start);
else
arg_start = getpid();
diff --git a/src/network/.gitignore b/src/network/.gitignore
index 8858596489..aca55206b7 100644
--- a/src/network/.gitignore
+++ b/src/network/.gitignore
@@ -1,2 +1,3 @@
/networkd-network-gperf.c
/networkd-netdev-gperf.c
+/networkd-gperf.c
diff --git a/src/systemd/sd-lldp.h b/src/systemd/sd-lldp.h
index 4f2a3b50c0..fa6ab9ad3b 100644
--- a/src/systemd/sd-lldp.h
+++ b/src/systemd/sd-lldp.h
@@ -100,7 +100,6 @@ enum {
SD_LLDP_SYSTEM_CAPABILITIES_SVLAN| \
SD_LLDP_SYSTEM_CAPABILITIES_TPMR))
-
#define SD_LLDP_OUI_802_1 (uint8_t[]) { 0x00, 0x80, 0xc2 }
#define SD_LLDP_OUI_802_3 (uint8_t[]) { 0x00, 0x12, 0x0f }