Lennart Poettering [Tue, 30 Oct 2018 14:36:52 +0000 (15:36 +0100)]
Merge pull request #10559 from yuwata/sd-device-prototype-change
sd-device: change prototype of sd_device_get_is_initialized()
Franck Bui [Tue, 30 Oct 2018 07:05:02 +0000 (08:05 +0100)]
core: skip unit deserialization and move to the next one when unit_deserialize() fails
If unit_deserialize() fails (because one read line is overly long), it returns
an error and we would have assumed that the next read would point to the next
unit to deserialize.
But instead unit_deserialize() can leave the file offset in the middle of a
line.
Therefore we need to ignore and skip the current unit in this case too.
While at it, move unit deserialization in a dedicated functions. That should
make the code easier to read.
Lennart Poettering [Tue, 30 Oct 2018 13:51:55 +0000 (14:51 +0100)]
Merge pull request #10563 from keszybz/lz4-quickfix-quickfix
journal: adapt for new improved LZ4_decompress_safe_partial()
Zbigniew Jędrzejewski-Szmek [Tue, 30 Oct 2018 08:02:26 +0000 (09:02 +0100)]
fuzz-compress: add fuzzer for compression and decompression
Zbigniew Jędrzejewski-Szmek [Mon, 29 Oct 2018 13:55:33 +0000 (14:55 +0100)]
journal: adapt for new improved LZ4_decompress_safe_partial()
With lz4 1.8.3, this function can now decompress partial results into a smaller
buffer. The release news don't say anything interesting, but the test case that
was previously failing now works OK.
Fixes #10259.
A test is added. It shows that with *older* lz4, a partial decompression can
occur with the returned size smaller then the requested number of bytes _and_
smaller then the size of the compressed data:
(lz4-libs-1.8.2-1.fc29.x86_64)
Compressed 4194304 → 16464
Decompressed → 4194304
Decompressed partial 12/4194304 → 4194304
Decompressed partial 1/1 → -2 (bad)
Decompressed partial 2/2 → -2 (bad)
Decompressed partial 3/3 → -2 (bad)
Decompressed partial 4/4 → -2 (bad)
Decompressed partial 5/5 → -2 (bad)
Decompressed partial 6/6 → 6 (good)
Decompressed partial 7/7 → 6 (good)
Decompressed partial 8/8 → 6 (good)
Decompressed partial 9/9 → 6 (good)
Decompressed partial 10/10 → 6 (good)
Decompressed partial 11/11 → 6 (good)
Decompressed partial 12/12 → 6 (good)
Decompressed partial 13/13 → 6 (good)
Decompressed partial 14/14 → 6 (good)
Decompressed partial 15/15 → 6 (good)
Decompressed partial 16/16 → 6 (good)
Decompressed partial 17/17 → 6 (good)
Decompressed partial 18/18 → -16459 (bad)
(lz4-libs-1.8.3-1.fc29.x86_64)
Compressed 4194304 → 16464
Decompressed → 4194304
Decompressed partial 12/4194304 → 12
Decompressed partial 1/1 → 1 (good)
Decompressed partial 2/2 → 2 (good)
Decompressed partial 3/3 → 3 (good)
Decompressed partial 4/4 → 4 (good)
...
If we got such a short "successful" decompression in decompress_startswith() as
implemented before this patch, we could be confused and return a false negative
result. But it turns out that this only occurs with small output buffer
sizes. We use greedy_realloc() to manager the buffer, so it is always at least
64 bytes. I couldn't hit a case where decompress_startswith() would actually
return a bogus result. But since the lack of proof is not conclusive, the code
for *older* lz4 is changed too, just to be safe. We cannot rule out that on a
different architecture or with some unlucky compressed string we could hit this
corner case.
The fallback code is guarded by a version check. The check uses a function not
the compile-time define, because there was no soversion bump in lz4 or new
symbols, and we could be compiled against a newer lz4 and linked at runtime
with an older one. (This happens routinely e.g. when somebody upgrades a subset
of distro packages.)
Bastien Nocera [Mon, 29 Oct 2018 13:31:39 +0000 (13:31 +0000)]
hwdb: Apply the same quirk to all the lis3lv02d devices
HP laptops and desktop containing the lis3lv02d device (as supported by
the drivers/platform/x86/hp_accel.c driver) are supposed to output their
values according to their "standard" orientation, one that
corresponds to "can play neverball".
For all those devices, we need to convert that "neverball" orientation
to a "Windows 8" orientation. We will not accept quirks for HP machines
that use the lis3lv02d device, they should go in the hp_accel.c driver
instead.
Closes: #5160
Peter Hutterer [Mon, 29 Oct 2018 03:45:45 +0000 (13:45 +1000)]
hwdb: add a click angle entry for the Logitech MX Anywhere 2s
Zbigniew Jędrzejewski-Szmek [Mon, 29 Oct 2018 21:21:28 +0000 (22:21 +0100)]
test-compress: add test for short decompress_startswith calls
I thought this might fail with lz4 < 1.8.3, but it seems that because of
greedy_realloc, we always use a buffer that is large enough, and it always
passes.
Yu Watanabe [Mon, 29 Oct 2018 22:54:20 +0000 (07:54 +0900)]
Merge pull request #10564 from evverx/lldp-fuzzer
tests: add an lldp fuzzer
Zbigniew Jędrzejewski-Szmek [Mon, 29 Oct 2018 17:32:51 +0000 (18:32 +0100)]
Drop support for lz4 < 1.3.0
lz4-r130 was released on May 29th, 2015. Let's drop the work-around for older
versions. In particular, we won't test any new code against those ancient
releases, so we shouldn't pretend they are supported.
dkg [Mon, 29 Oct 2018 17:28:11 +0000 (13:28 -0400)]
doc: spell initramfs properly (#10566)
Evgeny Vereshchagin [Mon, 29 Oct 2018 15:24:16 +0000 (15:24 +0000)]
tests: add an lldp fuzzer
I went through my antique collection of fuzzers the other day
to see which ones I hadn't sent upstream yet. This one
seems to be nice to have and ready to be merged. As far as I can
tell, it hasn't managed to find anything useful yet,
but it's better to be safe than sorry especially when it comes to networking
code :-)
Evgeny Vereshchagin [Mon, 29 Oct 2018 15:21:58 +0000 (15:21 +0000)]
journal: drop an unused variable clang is complaining about
../../src/systemd/src/journal/journal-file.c:3592:30: warning: unused variable 'p' [-Wunused-variable]
_cleanup_free_ char *p = NULL;
^
1 warning generated.
This is a follow-up to
681276589159fa08e0a.
TJ [Mon, 29 Oct 2018 02:06:03 +0000 (02:06 +0000)]
hwdb: Add Asus T300CHI accelerator matrix
Yu Watanabe [Mon, 29 Oct 2018 08:32:21 +0000 (17:32 +0900)]
sd-device: make sd_device_get_is_initialized() returns is_initialized by return value
Yu Watanabe [Mon, 29 Oct 2018 08:17:57 +0000 (17:17 +0900)]
sd-device: make several sd_device_get_*() accepts NULL pointer for buffer of returned value
When only the existence of the value are important, then we can set
NULL now.
Yu Watanabe [Mon, 29 Oct 2018 03:03:27 +0000 (12:03 +0900)]
Merge pull request #10551 from keszybz/two-trivial-cleanups
Two trivial cleanups
Yu Watanabe [Mon, 29 Oct 2018 01:41:35 +0000 (10:41 +0900)]
util: do not assign return value if it is not used (#10552)
Zbigniew Jędrzejewski-Szmek [Sun, 28 Oct 2018 22:28:34 +0000 (23:28 +0100)]
test-chown-rec: use logging helper here too
Zbigniew Jędrzejewski-Szmek [Sun, 28 Oct 2018 17:27:48 +0000 (18:27 +0100)]
test-network-tables: remove duplicate line
Zbigniew Jędrzejewski-Szmek [Sun, 28 Oct 2018 12:00:14 +0000 (13:00 +0100)]
Merge pull request #10512 from yuwata/udev-event-cleanup
udev-event: replace udev_device by sd_device
Piotr Drąg [Fri, 26 Oct 2018 19:18:15 +0000 (21:18 +0200)]
po: update Polish translation
Dave Reisner [Sat, 27 Oct 2018 03:46:49 +0000 (23:46 -0400)]
curl-util: fix error code check from curl_multi_socket_action
After curl 7.20.0, this function never returns negative error codes.
Make this consistent with the other call to this function and only
compare against CURLM_OK.
Yu Watanabe [Fri, 26 Oct 2018 22:42:11 +0000 (07:42 +0900)]
po: update Japanese translation
Yu Watanabe [Fri, 26 Oct 2018 22:49:28 +0000 (07:49 +0900)]
Merge pull request #10537 from poettering/sentinelimania
add some missing _sentinel_ decorators
Yu Watanabe [Thu, 25 Oct 2018 04:59:03 +0000 (13:59 +0900)]
udev-event: replace udev_device in subst_format_var() by sd_device
Yu Watanabe [Thu, 25 Oct 2018 05:00:36 +0000 (14:00 +0900)]
udev-event: drop prototype of nonexistent function
Yu Watanabe [Thu, 25 Oct 2018 04:07:09 +0000 (13:07 +0900)]
udev-event: move definition of struct subst_map
Yu Watanabe [Thu, 25 Oct 2018 02:14:11 +0000 (11:14 +0900)]
udev-event: replace udev_device in udev_event_execute_rules() by sd_device
Also, this adds many logs.
Yu Watanabe [Thu, 25 Oct 2018 01:32:35 +0000 (10:32 +0900)]
udev-event: move devnode handling logic to a new function
Also, replace udev_device by sd_device.
Yu Watanabe [Wed, 24 Oct 2018 22:45:48 +0000 (07:45 +0900)]
udev-event: move conditions to rename network interface into rename_netif()
Also, replace udev_device by sd_device.
Yu Watanabe [Wed, 24 Oct 2018 22:04:59 +0000 (07:04 +0900)]
udev-event: rename udev_event_unref() to udev_event_free()
As struct udev_event does not have a reference counter.
Yu Watanabe [Wed, 24 Oct 2018 22:03:24 +0000 (07:03 +0900)]
udev-event: fix memleak in udev_event
The leak was introduced by
29448498c724da7ade1b5efb20d7472c1b128d2c.
Yu Watanabe [Wed, 24 Oct 2018 22:02:03 +0000 (07:02 +0900)]
udev-event: use structured initializer at one more place
Yu Watanabe [Wed, 24 Oct 2018 21:39:48 +0000 (06:39 +0900)]
udev-event: add more assert()
Yu Watanabe [Wed, 24 Oct 2018 21:35:16 +0000 (06:35 +0900)]
udev-event: check command is not empty before executing
Yu Watanabe [Wed, 24 Oct 2018 21:33:26 +0000 (06:33 +0900)]
udev-event: include device name in error message one more place
Yu Watanabe [Thu, 25 Oct 2018 01:09:19 +0000 (10:09 +0900)]
network,udev: drop unnecessary check whether ifindex is positive
As sd_device_get_ifindex() now returns positive ifindex when it
succeeds.
Yu Watanabe [Thu, 25 Oct 2018 01:04:19 +0000 (10:04 +0900)]
test: check sd_device_get_ifindex() returns positive ifindex when it succeeds
Yu Watanabe [Thu, 25 Oct 2018 00:56:15 +0000 (09:56 +0900)]
sd-device: return positive ifindex when sd_device_get_ifindex() succeeds
As valid ifindex is positive value, not non-negative value.
Follow-up for
dcfbde3a43d632ff6e286c77e1081087eca59d8e.
Lennart Poettering [Fri, 26 Oct 2018 18:16:50 +0000 (20:16 +0200)]
Merge pull request #10506 from poettering/cgroup-mini-fixes
various cgroups mini fixes
Lennart Poettering [Fri, 26 Oct 2018 17:33:10 +0000 (19:33 +0200)]
core: add free_and_replace() at one more place
Lennart Poettering [Fri, 26 Oct 2018 17:32:43 +0000 (19:32 +0200)]
tree-wide: add a few missing _sentinel_ decorators
Lennart Poettering [Fri, 26 Oct 2018 13:31:30 +0000 (15:31 +0200)]
cgroup-util: make definition of CGROUP_CONTROLLER_TO_MASK() unsigned
Otherwise doing comparing a CGroupMask (which is unsigned in effect)
with the result of CGROUP_CONTROLLER_TO_MASK() will result in warnings
about signedness differences.
Lennart Poettering [Fri, 26 Oct 2018 13:25:21 +0000 (15:25 +0200)]
cgroup-util: FLAGS_SET()ify all things
Lennart Poettering [Wed, 24 Oct 2018 15:35:19 +0000 (17:35 +0200)]
cgroup: when discovering which controllers the kernel supports mask with what we support
Let's use our new CGROUP_MASK_V1 and CGROUP_MASK_V2 definitions for
this.
Lennart Poettering [Wed, 24 Oct 2018 15:31:51 +0000 (17:31 +0200)]
cgroup-util: before operating on a mounted cgroup controller check if it actually can be mounted
We now have the "BPF" pseudo-controllers. These should never be assumed
to be accessible as /sys/fs/cgroup/<controller> and not through
"cgroup.subtree_control" either, hence always check explicitly before we
go to the file system. We do this through our new CGROUP_MASK_V1 and
CGROUP_MASK_V2 definitions.
Lennart Poettering [Wed, 24 Oct 2018 15:30:46 +0000 (17:30 +0200)]
cgroup-util: add mask definitions for sets of controllers supported by cgroupsv1 vs. cgroupsv2
Lennart Poettering [Wed, 24 Oct 2018 15:28:17 +0000 (17:28 +0200)]
cgroup-util: disable buffering for cg_enable_everywhere() when writing to cgroup attributes
Let's better be safe than sorry.
Lennart Poettering [Wed, 24 Oct 2018 15:25:51 +0000 (17:25 +0200)]
cgroup-util: don't expect cg_mask_from_string()'s return value to be initialized
Also, when we fail, don't clobber the return value.
This brings the call more in-line with our usual coding style, and
removes surprises.
None of the callers seemed to care about this behaviour.
Lennart Poettering [Wed, 24 Oct 2018 15:25:11 +0000 (17:25 +0200)]
cgroup-util: debug log if /proc/self/ns/cgroup is not available for unexpected reasons
Lennart Poettering [Fri, 26 Oct 2018 15:56:43 +0000 (17:56 +0200)]
Merge pull request #10536 from keszybz/serialize-fixes
Tests for the new serialization functions
Lennart Poettering [Fri, 26 Oct 2018 14:26:20 +0000 (16:26 +0200)]
Merge pull request #10517 from poettering/chown-rec-fixes
recursive chowning fixes
Lennart Poettering [Fri, 19 Oct 2018 09:31:37 +0000 (11:31 +0200)]
test: add test case for recursive chown()ing
Lennart Poettering [Fri, 19 Oct 2018 09:42:11 +0000 (11:42 +0200)]
chown-recursive: TAKE_FD() is your friend
Lennart Poettering [Fri, 19 Oct 2018 09:28:40 +0000 (11:28 +0200)]
chown-recursive: also drop ACLs when recursively chown()ing
Let's better be safe than sorry and also drop ACLs.
Lennart Poettering [Fri, 19 Oct 2018 09:26:59 +0000 (11:26 +0200)]
chown-recursive: let's rework the recursive logic to use O_PATH
That way we can pin a specific inode and analyze it and manipulate it
without it being swapped out beneath our hands.
Fixes a vulnerability originally found by Jann Horn from Google.
CVE-2018-15687
LP: #1796692
https://bugzilla.redhat.com/show_bug.cgi?id=1639076
Evgeny Vereshchagin [Fri, 26 Oct 2018 10:25:36 +0000 (10:25 +0000)]
lgtm: drop redundant newlines
Lennart Poettering [Fri, 26 Oct 2018 12:50:17 +0000 (14:50 +0200)]
Merge pull request #10508 from poettering/watchdog-original-fix
various service watchdog fixes
Lennart Poettering [Fri, 26 Oct 2018 12:49:53 +0000 (14:49 +0200)]
Merge pull request #10534 from poettering/cmdline-fixlets
proc-cmdline.c fixlets
Zbigniew Jędrzejewski-Szmek [Fri, 26 Oct 2018 10:30:04 +0000 (12:30 +0200)]
Move tests for *serialize_environment into test-serialize.c
The implementation is in serialize.c.
Zbigniew Jędrzejewski-Szmek [Fri, 26 Oct 2018 11:17:44 +0000 (13:17 +0200)]
test-serialize: allocate long_string dynamically
Lennart Poettering [Wed, 24 Oct 2018 17:04:41 +0000 (19:04 +0200)]
service: when starting a service make a copy of the watchdog timeout and use that
When we start a service process we pass the selected watchdog timeout to
it with the $WATCHDOG_USEC environment variable. If the unit file is
reconfigured later, we need to make sure to continue to honour the
original timeout, i.e. watch $WATCHDOG_USEC was set to, otherwise we'll
expect the ping at a different time as the service process is sending it
to us.
Hence, whenever we start a unit, save the watchdog timeout, and stick to
that for everything we do.
Fixes: #9467
Lennart Poettering [Wed, 24 Oct 2018 17:03:41 +0000 (19:03 +0200)]
service: continue to use the overriden timeout when forking off again
Let's make sure we always use the right watchdog timeout: when a service
has overwritten it, then stick to it, also for follow-up processes of
the same service.
Lennart Poettering [Wed, 24 Oct 2018 17:03:04 +0000 (19:03 +0200)]
service: rename service_reset_watchdog_timeout() → service_override_watchdog_timeout()
This is what the function really does, hence name it that way.
Lennart Poettering [Wed, 24 Oct 2018 17:02:13 +0000 (19:02 +0200)]
service: rework service_extend_timeout()
Let's unify common code: let's extend the watchdog timeout and the
regular timeout with the same helper function.
Zbigniew Jędrzejewski-Szmek [Tue, 23 Oct 2018 10:00:31 +0000 (12:00 +0200)]
test-serialize: a smoke test for the serialization functions
Zbigniew Jędrzejewski-Szmek [Tue, 23 Oct 2018 08:50:38 +0000 (10:50 +0200)]
test: _cleanup_(unlink_tempfilep) in two more places
Zbigniew Jędrzejewski-Szmek [Tue, 23 Oct 2018 08:50:09 +0000 (10:50 +0200)]
Introduce fmkostemp_safe and use it in tests
No functional change.
Lennart Poettering [Wed, 24 Oct 2018 16:59:03 +0000 (18:59 +0200)]
service: explicit stop the watchdog when we shall not use it
This is useful so that WATCHDOG_USEC=0 sent from a process does the
right thing if turning off the watchdog logic.
Lennart Poettering [Wed, 24 Oct 2018 19:49:52 +0000 (21:49 +0200)]
journalctl: in --follow mode watch stdout for POLLHUP/POLLERR and exit
Fixes: #9374
Evgeny Vereshchagin [Fri, 26 Oct 2018 09:19:09 +0000 (09:19 +0000)]
lgtm: add a custom query for catching the use of fgets
As everybody knows, nodoby really reads CODING_STYLE (especially
the last paragraph :-)) so let's utilize LGTM to help us catch the
use of fgets.
Zbigniew Jędrzejewski-Szmek [Fri, 26 Oct 2018 10:17:13 +0000 (12:17 +0200)]
Merge pull request #10519 from poettering/serialize-fixes
pid1 serialization/deserialization fixes
Lennart Poettering [Fri, 26 Oct 2018 10:02:55 +0000 (12:02 +0200)]
proc-cmdline: teach proc_cmdline_get_key() the same flags magic as proc_cmdline_parse()
Lennart Poettering [Fri, 26 Oct 2018 10:00:37 +0000 (12:00 +0200)]
proc-cmdline: use FLAGS_SET() where appropriate
This was mostly prompted by seeing the expression "in_initrd() && flags
& PROC_CMDLINE_RD_STRICT", which uses & and && without any brackets.
Let's make that a bit more readable and hide all doubts about operator
precedence.
Lennart Poettering [Fri, 26 Oct 2018 10:00:01 +0000 (12:00 +0200)]
proc-cmdline: use our usual syntax for denoting bit mask enums
Lennart Poettering [Fri, 19 Oct 2018 19:56:10 +0000 (21:56 +0200)]
CODING_STYLE: briefly mention that fgets() should not be used anymore
Lennart Poettering [Fri, 19 Oct 2018 19:56:29 +0000 (21:56 +0200)]
fileio: drop FOREACH_LINE(), it's not used anymore
Lennart Poettering [Wed, 17 Oct 2018 18:40:09 +0000 (20:40 +0200)]
core: rework serialization
Let's be more careful with what we serialize: let's ensure we never
serialize strings that are longer than LONG_LINE_MAX, so that we know we
can read them back with read_line(…, LONG_LINE_MAX, …) safely.
In order to implement this all serialization functions are move to
serialize.[ch], and internally will do line size checks. We'd rather
skip a serialization line (with a loud warning) than write an overly
long line out. Of course, this is just a second level protection, after
all the data we serialize shouldn't be this long in the first place.
While we are at it also clean up logging: while serializing make sure to
always log about errors immediately. Also, (void)ify all calls we don't
expect errors in (or catch errors as part of the general
fflush_and_check() at the end.
Lennart Poettering [Wed, 17 Oct 2018 18:35:28 +0000 (20:35 +0200)]
core: make manager_serialize() a bit easier to read by adding predicate function
The predicate function manager_timestamp_shall_serialize() simply says
whether to serialize or not serialize a timestamp, and should make
things a bit easier to read.
Lennart Poettering [Wed, 17 Oct 2018 18:32:20 +0000 (20:32 +0200)]
core: strjoina() in a loop is never OK
Let's use plain strjoin() instead.
Lennart Poettering [Wed, 17 Oct 2018 18:15:26 +0000 (20:15 +0200)]
automount: fix deserialization of dev_t
let's prefer "unsigned long" rather than "unsigned", in case there are
archs that have 32bit int, but 64bit dev_t.
(Also one cast was wrong anyway.)
Lennart Poettering [Wed, 17 Oct 2018 16:37:48 +0000 (18:37 +0200)]
core: enforce a limit on STATUS= texts recvd from services
Let's better be safe than sorry, and put a limit on what we receive.
Lennart Poettering [Wed, 17 Oct 2018 16:36:24 +0000 (18:36 +0200)]
core: when deserializing state always use read_line(…, LONG_LINE_MAX, …)
This should be much better than fgets(), as we can read substantially
longer lines and overly long lines result in proper errors.
Fixes a vulnerability discovered by Jann Horn at Google.
CVE-2018-15686
LP: #1796402
https://bugzilla.redhat.com/show_bug.cgi?id=1639071
Zbigniew Jędrzejewski-Szmek [Fri, 26 Oct 2018 08:36:25 +0000 (10:36 +0200)]
Merge pull request #10525 from poettering/journal-vaccum-all
journald: add ability to vacuum active files too
Zbigniew Jędrzejewski-Szmek [Fri, 26 Oct 2018 08:08:39 +0000 (10:08 +0200)]
Merge pull request #10522 from lnykryn/initrd_debug
Let's make systemd-debug-generator usable also in initrd
Lucas Werkmeister [Thu, 25 Oct 2018 21:34:05 +0000 (23:34 +0200)]
man: journalctl: expand description of --all
In the default journalctl output, unprintable entries are abbreviated as
“[<amount> blob data]”; using the same term in the documentation helps
users to quickly discover the option they need to add in order to see
those entries.
Yu Watanabe [Fri, 26 Oct 2018 01:16:00 +0000 (10:16 +0900)]
sd-device: fix wrong assertion (#10530)
Yu Watanabe [Fri, 26 Oct 2018 00:34:07 +0000 (09:34 +0900)]
Merge pull request #10523 from poettering/fd-get-path-optimize
fd_get_path() optimization
Lennart Poettering [Thu, 25 Oct 2018 21:01:41 +0000 (23:01 +0200)]
core: reword polkit request a bit (#10524)
"killing" is very UNIX terminology, and not really what this is about.
Let's be more correct and say "send a UNIX signal" for the operation.
Otherwise things are really weird if users call "journalctl --rotate"
from the command line, which internally asks systemd to send SIGUSR2 to
to journald: when german locale is selected this asks the user — roughly
transliterated — whether they want to "eliminate" journald, which is
definitely not the intended meaning.
Lennart Poettering [Thu, 25 Oct 2018 19:35:32 +0000 (21:35 +0200)]
journal-file: structured initialization is your friend
Lennart Poettering [Thu, 25 Oct 2018 16:39:27 +0000 (18:39 +0200)]
journald: when we are asked to rotate all files, let's also look at closed files
Before this when asked for rotation we'd only rotate files we have open
anyway. However there might be a number of other files on disk that are
active (i.e. not archived yet) but not open. Let's take care of those
too, so that rotation is always comprehensive, and the user gets the
guarantee that afterthe rotation all stored data is in archived files.
Fixes: #1017
Lennart Poettering [Thu, 25 Oct 2018 19:16:38 +0000 (21:16 +0200)]
man: document the new combined --vacuum*= and --rotate invocation
Lennart Poettering [Thu, 25 Oct 2018 16:38:50 +0000 (18:38 +0200)]
journalctl: fix error number in error message
Lennart Poettering [Thu, 25 Oct 2018 16:36:56 +0000 (18:36 +0200)]
journalctl: add ability to vacuum and rotate in one step
journalctl --vacuum-*= only vacuums archived files. To archive all
active files the rotate operation is used. Let's add a new switch that
combines both, so that the user a single command to first move all
running journal files into archival and then vacuum them.
See: #1017
Lennart Poettering [Thu, 25 Oct 2018 16:35:55 +0000 (18:35 +0200)]
journald: log about an OOM condition
Lennart Poettering [Thu, 25 Oct 2018 16:35:39 +0000 (18:35 +0200)]
journald: debug log when we cannot read the machine ID
Lennart Poettering [Thu, 25 Oct 2018 17:23:23 +0000 (19:23 +0200)]
journal-file: refactor journal_file_open_reliably()
Let's split out the part that actually renames the file in case we can't
open it into a new function journal_file_dispose().
This way we can reuse the function in other cases where we want to open
a file but can't.
Lennart Poettering [Thu, 25 Oct 2018 16:33:11 +0000 (18:33 +0200)]
journal-file: refactor journal_file_rotate()
Let's split the function in three: the part where we archive the old
file into journal_file_archive(), and the part where we initiate the
deferred closing into journal_file_initiate_close().
journal_file_rotate() then simply becomes a wrapper around these two
calls, and the opening of the new journal file.
This useful so that we can archive journal files without having to open
new ones, i.e. to do only the archival part of the rotation, without the
rotation part.
Lennart Poettering [Thu, 25 Oct 2018 15:42:30 +0000 (17:42 +0200)]
journal: refactor out loop that processes deferred closes into its own function