diff options
author | Lennart Poettering <lennart@poettering.net> | 2016-04-06 10:49:52 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2016-04-06 10:49:52 +0200 |
commit | d4337c15d5835c8eecf079bd5173f8b5c51727c7 (patch) | |
tree | f9cadf1f81c2fb7e2f8d6ff4752c45fdeb00624f | |
parent | 056f0498fefc4c3e3cedf11ea3ba1b04a8694118 (diff) | |
parent | 6dfde7acf1405adbb7adb2adc6969c4eb3c0990a (diff) |
Merge pull request #2944 from keszybz/man-coredump-sysctl
Man coredump sysctl
-rw-r--r-- | Makefile-man.am | 12 | ||||
-rw-r--r-- | man/coredump.conf.xml | 9 | ||||
-rw-r--r-- | man/systemd-coredump.xml | 56 | ||||
-rw-r--r-- | man/systemd-sysctl.service.xml | 69 | ||||
-rw-r--r-- | man/systemd.nspawn.xml | 2 | ||||
-rw-r--r-- | src/basic/copy.c | 6 | ||||
-rw-r--r-- | src/basic/parse-util.h | 12 | ||||
-rw-r--r-- | src/core/triggers.systemd.in | 2 | ||||
-rw-r--r-- | src/coredump/coredumpctl.c | 2 | ||||
-rw-r--r-- | src/journal/compress.c | 10 | ||||
-rw-r--r-- | src/journal/test-compress-benchmark.c | 2 | ||||
-rw-r--r-- | src/network/.gitignore | 1 | ||||
-rw-r--r-- | src/systemd/sd-lldp.h | 1 |
13 files changed, 143 insertions, 41 deletions
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 @@ <para>These files configure the behavior of <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry>, - a handler for core dumps invoked by the kernel.</para> + a handler for core dumps invoked by the kernel. Whether <command>systemd-coredump</command> is used + is determined by the kernel's + <varname>kernel.core_pattern</varname> <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> + setting. See + <citerefentry><refentrytitle>systemd-coredump</refentrytitle><manvolnum>8</manvolnum></citerefentry> + and + <citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry> + pages for the details.</para> </refsect1> <xi:include href="standard-conf.xml" xpointer="main-conf" /> 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 @@ <refnamediv> <refname>systemd-coredump</refname> + <refname>systemd-coredump.socket</refname> + <refname>systemd-coredump@.service</refname> <refpurpose>Log and store core dumps</refpurpose> </refnamediv> <refsynopsisdiv> <para><filename>/usr/lib/systemd/systemd-coredump</filename></para> + <para><filename>systemd-coredump@.service</filename></para> + <para><filename>systemd-coredump.socket</filename></para> </refsynopsisdiv> <refsect1> @@ -60,12 +64,13 @@ signal and dumps core. For it to be used in this capacity, it must be specified by the <varname>kernel.core_pattern</varname> <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> - setting. Systemd installs - <filename>/usr/lib/sysctl.d/50-coredump.conf</filename> which - configures <varname>kernel.core_pattern</varname> to invoke - <command>systemd-coredump</command>. This file may be masked or - overridden to use a different setting following normal - <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> rules.</para> + setting. The syntax of this setting is explained in + <citerefentry project='man-pages'><refentrytitle>core</refentrytitle><manvolnum>5</manvolnum></citerefentry>. + Systemd installs <filename>/usr/lib/sysctl.d/50-coredump.conf</filename> which configures + <varname>kernel.core_pattern</varname> to invoke <command>systemd-coredump</command>. + This file may be masked or overridden to use a different setting following normal + <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> + rules.</para> <para>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 @@ <citerefentry><refentrytitle>systemd.exec</refentrytitle><manvolnum>5</manvolnum></citerefentry>). </para> - <para><command>systemd-coredump</command> 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 - <filename>/var/lib/systemd/coredump</filename>, or directly in - the journal. This behavior may be modified using - <citerefentry><refentrytitle>coredump.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>.</para> - - <para>Apart from the - <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> - log viewer, + <para>The behaviour of <command>systemd-coredump</command> is configured through + <filename>/etc/systemd/coredump.conf</filename> and other configuration files. See + <citerefentry><refentrytitle>coredump.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> + for details. By default, <command>systemd-coredump</command> 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 <filename>/var/lib/systemd/coredump</filename>.</para> + + <para>When the kernel invokes <command>systemd-coredump</command> to handle a coredump, + it will connect to the socket created by the <filename>systemd-coredump.socket</filename> + unit, which in turn will spawn a <filename>systemd-coredump@.service</filename> instance + to process the coredump. Hence <filename>systemd-coredump.socket</filename> + and <filename>systemd-coredump@.service</filename> are helper units which do the actual + processing of coredumps and are subject to normal service management.</para> + + <para>The log entry and a backtrace are stored in the journal, and can be viewed with + <citerefentry><refentrytitle>journalctl</refentrytitle><manvolnum>1</manvolnum></citerefentry>. <citerefentry><refentrytitle>coredumpctl</refentrytitle><manvolnum>1</manvolnum></citerefentry> - may be used to list and extract coredumps.</para> + may be used to list and extract coredumps or load them in + <citerefentry project='man-pages'><refentrytitle>gdb</refentrytitle><manvolnum>1</manvolnum></citerefentry>. + </para> + + <para>The coredump helper is invoked anew each time. Therefore, any configuration + changes will take effect on the invocation of <command>systemd-coredump</command>. + If the sysctl configuration is modified, it must be updated in the kernel before + it takes effect, see + <citerefentry><refentrytitle>systemd-sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> + and + <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry>. + </para> </refsect1> <refsect1> 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 @@ <para><filename>systemd-sysctl.service</filename> is an early boot service that configures <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> - kernel parameters.</para> + kernel parameters by invoking <command>/usr/lib/systemd/systemd-sysctl</command>.</para> - <para>If invoked with no arguments, it applies all directives from - all configuration files in - <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> - 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. - </para> + <para>When invoked with no arguments, <command>/usr/lib/systemd/systemd-sysctl</command> applies + all directives from configuration files listed in + <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry>. + If one or more filenames are passed on the command line, only the directives in these files are + applied.</para> + + <para>In addition, <option>--prefix=</option> option may be used to limit which sysctl + settings are applied.</para> <para>See <citerefentry project='man-pages'><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> - for information about the configuration of this service.</para> + for information about the configuration of sysctl settings. After sysctl configuration is + changed on disk, it must be written to the files in <filename>/proc/sys</filename> before it + takes effect. It is possible to update specific settings, or simply to reload all configuration, + see Examples below.</para> </refsect1> <refsect1><title>Options</title> <variablelist> - <varlistentry id='path'> - <term><option>--path=</option></term> + <varlistentry id='prefix'> + <term><option>--prefix=</option></term> <listitem> <para>Only apply rules with the specified prefix.</para> </listitem> @@ -92,6 +97,50 @@ </refsect1> <refsect1> + <title>Examples</title> + + <example> + <title>Reset all sysctl settings</title> + + <programlisting>systemctl restart systemd-sysctl</programlisting> + </example> + + <example> + <title>View coredump handler configuration</title> + + <programlisting># sysctl kernel.core_pattern +kernel.core_pattern = |/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t %P %I +</programlisting> + </example> + + <example> + <title>Update coredump handler configuration</title> + + <programlisting># /usr/lib/systemd/systemd-sysctl --prefix kernel.core_pattern</programlisting> + + <para>This searches all the directories listed in + <citerefentry><refentrytitle>sysctl.d</refentrytitle><manvolnum>5</manvolnum></citerefentry> + for configuration files and writes <filename>/proc/sys/kernel/core_pattern</filename>.</para> + </example> + + <example> + <title>Update coredump handler configuration according to a specific file</title> + + <programlisting># /usr/lib/systemd/systemd-sysctl 50-coredump.conf</programlisting> + + <para>This applies all the settings found in <filename>50-coredump.conf</filename>. + Either <filename>/etc/sysctl.d/50-coredump.conf</filename>, or + <filename>/run/sysctl.d/50-coredump.conf</filename>, or + <filename>/usr/lib/sysctl.d/50-coredump.conf</filename> will be used, in the order + of preference.</para> + </example> + + <para>See + <citerefentry project='man-pages'><refentrytitle>sysctl</refentrytitle><manvolnum>8</manvolnum></citerefentry> + for various ways to directly apply sysctl settings.</para> + </refsect1> + + <refsect1> <title>See Also</title> <para> <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>, 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 @@ </varlistentry> <varlistentry> - <term><option>KillSignal=</option></term> + <term><varname>KillSignal=</varname></term> <listitem><para>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 <http://www.gnu.org/licenses/>. # The contents of this are an example to be copied into systemd.spec. +# +# Minimum rpm version supported: 4.13.0 %transfiletriggerin -P 900900 -p <lua> -- @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 } |