Evgeny Vereshchagin [Sun, 8 Nov 2015 22:00:34 +0000 (22:00 +0000)]
tests: various fixes
* remove journal flushing (systemd-journal-flush.service runs journalctl --flush on boot)
* use sh -c and PATH instead of @SYSTEMCTL@ expansion
* remove unnecessary semicolons etc
Daniel Mack [Sat, 7 Nov 2015 11:31:34 +0000 (12:31 +0100)]
Merge pull request #1801 from chuyd/fix-typos
test: Fix typo in TEST-03-JOBS/test-jobs.sh
Daniel Mack [Sat, 7 Nov 2015 11:31:23 +0000 (12:31 +0100)]
Merge pull request #1803 from phomes/unused-var
core: remove unused variable
Thomas Hindoe Paaboel Andersen [Sat, 7 Nov 2015 10:03:11 +0000 (11:03 +0100)]
core: remove unused variable
unused since
7b2313f5
Jesus Ornelas Aguayo [Fri, 6 Nov 2015 19:01:21 +0000 (13:01 -0600)]
test: Fix typo in TEST-03-JOBS/test-jobs.sh
Fix typo s/enqueueing/enqueuing/
Signed-off-by: Jesus Ornelas Aguayo <jesus.ornelas.aguayo@intel.com>
Ronny Chevalier [Fri, 6 Nov 2015 17:14:24 +0000 (18:14 +0100)]
Merge pull request #1795 from msekletar/networkd-forward
networkd: fix option name in log message
Ronny Chevalier [Fri, 6 Nov 2015 15:59:05 +0000 (16:59 +0100)]
Merge pull request #1800 from evverx/fix-test-execute
test-execute: don't use /usr/bin/uname. use sh and PATH
Evgeny Vereshchagin [Fri, 6 Nov 2015 15:42:06 +0000 (15:42 +0000)]
test-execute: don't use /usr/bin/uname. use sh and PATH
Michal Sekletar [Fri, 6 Nov 2015 09:51:34 +0000 (10:51 +0100)]
networkd: fix option name in log message
Lennart Poettering [Wed, 4 Nov 2015 19:16:14 +0000 (20:16 +0100)]
Merge pull request #1761 from ssahani/word
core: parse socket port to extract_first_word
Lennart Poettering [Wed, 4 Nov 2015 19:11:17 +0000 (20:11 +0100)]
Merge pull request #1778 from rhdrjones/detect-virt
detect-virt: one fix and arm/aarch64 dmi detection
Ronny Chevalier [Wed, 4 Nov 2015 19:07:23 +0000 (20:07 +0100)]
Merge pull request #1780 from evverx/fix-install-dbus
test-functions: fix dbus-1 installation
Evgeny Vereshchagin [Wed, 4 Nov 2015 18:33:37 +0000 (18:33 +0000)]
test-functions: fix dbus-1 installation
The basic setup for the well-known system and session buses is
now done in read-only files in ${datadir} (normally /usr/share).
See the NEWS entry for 1.9.18 for details.
http://cgit.freedesktop.org/dbus/dbus/tree/NEWS
Andrew Jones [Tue, 3 Nov 2015 19:31:03 +0000 (13:31 -0600)]
detect-virt: dmi: look for KVM
Some guests (ARM, AArch64, x86-RHEL) have 'KVM' in the product name.
Look for that first in order to more precisely report "kvm" when
detecting a QEMU/KVM guest. Without this patch we report "qemu",
even if KVM acceleration is in use on ARM/AArch64 guests.
I've only tested a backported version of this and the previous
patch on an AArch64 guest (which worked). Of course it would be
nice to get regression testing on all guest types that depend on
dmi done.
Andrew Jones [Tue, 3 Nov 2015 18:10:13 +0000 (12:10 -0600)]
arm/aarch64: detect-virt: check dmi
ARM/AArch64 guests now have SMBIOS tables populated (when boot
with a late enough QEMU and a late enough AAVMF is used as the
bootloader). Furthermore, when booting ARM/AArch64 guests with
ACPI, the DT detection obviously no longer works, so we need
dmi detection.
Andrew Jones [Tue, 3 Nov 2015 20:49:38 +0000 (14:49 -0600)]
detect-virt: detect in best-heuristic order
afaict, this will fix a regression caused by commit
75f86906c5.
Where we used to report "kvm" before that patch, without this patch,
we would only report "qemu". The reason is because cpuid detection
must come before dmi detection. Also, both can safely come before
other xen heuristics. Untested.
Lennart Poettering [Wed, 4 Nov 2015 16:52:50 +0000 (17:52 +0100)]
Merge pull request #1775 from fbuihuu/set-property-completion
bash-completion: add minimal support fpr 'set-property' command
Lennart Poettering [Wed, 4 Nov 2015 16:50:20 +0000 (17:50 +0100)]
Merge pull request #1776 from marktheunissen/master
systemctl: update documentation for --plain option
Daniel Mack [Wed, 4 Nov 2015 13:13:12 +0000 (14:13 +0100)]
Merge pull request #1777 from torstehu/fix-typo2
core: fix typo
Torstein Husebø [Wed, 4 Nov 2015 12:18:59 +0000 (13:18 +0100)]
core: fix typo
Daniel Mack [Wed, 4 Nov 2015 11:17:18 +0000 (12:17 +0100)]
Merge pull request #1773 from evverx/dont-hide-enomem
core: small fixes to parse_namespace
Mark Theunissen [Wed, 4 Nov 2015 11:10:26 +0000 (13:10 +0200)]
systemctl: update documentation for --plain option
- Existing documentation did not mention that --plain omits the bullets and works on list-units and list-machines.
Lennart Poettering [Wed, 4 Nov 2015 10:55:40 +0000 (11:55 +0100)]
Merge pull request #1768 from vcaputo/sd-daemon-listen-fds-overflow-bis
sd-daemon: fix potential LISTEN_FDS overflow in sd_listen_fds()
Franck Bui [Tue, 3 Nov 2015 17:42:10 +0000 (18:42 +0100)]
bash-completion: add minimal support fpr 'set-property' command
'set-property' was missing from the list of known command.
Also a list of unit names will be proposed as next argument.
However no support on property names is provided since it would
require a hard coded list of them.
Evgeny Vereshchagin [Tue, 3 Nov 2015 21:32:34 +0000 (00:32 +0300)]
core: small fixes to parse_namespace
* don't hide ENOMEM
* log r instead of 0
Vito Caputo [Tue, 3 Nov 2015 07:05:44 +0000 (23:05 -0800)]
sd-daemon: fix potential LISTEN_FDS overflow in sd_listen_fds()
Susant Sahani [Tue, 3 Nov 2015 17:19:05 +0000 (22:49 +0530)]
core: parse socket port to extract_first_word
Daniel Mack [Tue, 3 Nov 2015 16:53:15 +0000 (17:53 +0100)]
Merge pull request #1767 from poettering/journald-watchdog
restore journald watchdog
Lennart Poettering [Tue, 3 Nov 2015 11:28:19 +0000 (12:28 +0100)]
journal: restore watchdog support
Lennart Poettering [Tue, 3 Nov 2015 11:27:12 +0000 (12:27 +0100)]
sd-daemon: explicitly filter out -1 when parsing watchdog timeout
We already filter out 0, and as -1 is usually special (meaning infinity,
as in USEC_INFINITY) we should better not accept it either. Better safe
than sorry...
Lennart Poettering [Tue, 3 Nov 2015 11:26:12 +0000 (12:26 +0100)]
util-lib: move CONF_DIRS_NULSTR definition to def.h
After all, this is not some compiler or C magic, but something very
specific to how systemd works, hence let's move it into def.h, and out
of macro.h
Lennart Poettering [Tue, 3 Nov 2015 11:25:29 +0000 (12:25 +0100)]
util-lib: move character class definitions to string-util.h
Lennart Poettering [Tue, 3 Nov 2015 16:38:22 +0000 (17:38 +0100)]
Merge pull request #1764 from ssahani/jiffies-1
(V2) networkd: bridge convert to jiffies
Susant Sahani [Tue, 3 Nov 2015 16:29:42 +0000 (21:59 +0530)]
networkd: bridge prop convert to jiffies
Susant Sahani [Tue, 3 Nov 2015 16:28:42 +0000 (21:58 +0530)]
Time-util: introduce usec to jiffies
Daniel Mack [Tue, 3 Nov 2015 15:22:17 +0000 (16:22 +0100)]
Merge pull request #1765 from teg/pppoe-removal
sd-pppoe: drop
Tom Gundersen [Tue, 3 Nov 2015 15:13:47 +0000 (16:13 +0100)]
sd-pppoe: drop
It is really unclear if we want to / have the resources to support this fully, so drop it
for now. It can easily be brought back if a killer usecase emerges.
Note that this code was never hooked up, so this does not remove any features.
Daniel Mack [Tue, 3 Nov 2015 14:03:50 +0000 (15:03 +0100)]
Merge pull request #1726 from teg/networkd-2
networkd: (de)serialize more state and support expiring routes
Daniel Mack [Tue, 3 Nov 2015 13:47:55 +0000 (14:47 +0100)]
Merge pull request #1763 from endocode/kayrus/fix_man_chattr
Fixed link to chattr man page
kayrus [Tue, 3 Nov 2015 13:39:47 +0000 (14:39 +0100)]
Fixed link to chattr man page
Martin Pitt [Tue, 3 Nov 2015 12:06:56 +0000 (06:06 -0600)]
build-sys: temporarily lower libmount version check
util-linux 2.27.1's configure.ac still claims to be 2.27.0, which breaks our
version check. Lower it back to 2.27.0 until util-linux gets a fixed tarball.
See #1754
Lennart Poettering [Tue, 3 Nov 2015 12:04:06 +0000 (13:04 +0100)]
Merge pull request #1744 from evverx/fix-debug-generator
debug-generator: respect kernel parameters for default unit setting
Evgeny Vereshchagin [Tue, 3 Nov 2015 11:45:56 +0000 (14:45 +0300)]
debug-generator: respect kernel parameters for default unit setting
Evgeny Vereshchagin [Tue, 3 Nov 2015 11:24:52 +0000 (14:24 +0300)]
core: use runlevel_to_target for /proc/cmdline parsing
Evgeny Vereshchagin [Tue, 3 Nov 2015 11:09:03 +0000 (14:09 +0300)]
proc-cmdline: add runlevel to target mapping
Daniel Mack [Tue, 3 Nov 2015 06:24:02 +0000 (07:24 +0100)]
Merge pull request #1754 from martinpitt/master
core: drop check for /etc/mtab
Daniel Mack [Tue, 3 Nov 2015 06:16:35 +0000 (07:16 +0100)]
Merge pull request #1759 from davidstrauss/master
man: Drop "internally," which is misleading
Daniel Mack [Tue, 3 Nov 2015 06:15:44 +0000 (07:15 +0100)]
Merge pull request #1758 from poettering/varietygalore
A grab bag of stuff
David Strauss [Tue, 3 Nov 2015 01:19:26 +0000 (17:19 -0800)]
man: Drop "internally," which is misleading
The existing text misleads readers into thinking how the notify socket protocol is "internals" and that they can only use the functions. However, the socket is part of the Interface Stability Promise. So, we should drop "internally" from the description so the man page both indicates both how the functions work and how one would talk to the socket directly.
Zbigniew Jędrzejewski-Szmek [Sun, 25 Oct 2015 03:28:07 +0000 (23:28 -0400)]
log-generator: add option to generate easily compressible data
This is useful to check that compression actually works, and how
compression influences file size in the best-case-scenario for
compression. (The answer is that not as much as one would hope:
there's still a big overhead of the indexing and since every field
is compressed separately, even fields that compress very well
contribute to the file size. This overhead becomes negligible only
for very big fields.)
Lennart Poettering [Mon, 2 Nov 2015 22:57:21 +0000 (23:57 +0100)]
parse-util: introduce parse_ifindex() and make use of it everywhere
We have enough places where we parse an ifindex, hence introduce a
proper parsing function for it, that verifies all parameters.
Lennart Poettering [Mon, 2 Nov 2015 22:47:38 +0000 (23:47 +0100)]
machine: when we fail to extract a network interface from the machine state, don't try again
If we failed to extract a word, then that's how it is, we shouldn't try
to extract it again and again, it's unlikely to work, and we just
deadlock.
This is a fix-up for
52278ad31d92dffa9029c8a171b9e9348f5dcc8f.
Lennart Poettering [Mon, 2 Nov 2015 22:37:05 +0000 (23:37 +0100)]
journalctl: when we fail to open a journal file, print why
When we enumerate journal files and encounter an invalid one, remember
which this, and show it to the user.
Note the possibly slightly surprising logic here: we store only one path
per error code. This means we show all error kinds but not every actual
error we encounter. This has the benefit of not requiring us to keep a
potentially unbounded list of errors with their sources around, but can
still provide a pretty complete overview on the errors we encountered.
Fixes #1669.
Lennart Poettering [Mon, 2 Nov 2015 22:14:30 +0000 (23:14 +0100)]
sd-journal: various clean-ups and modernizations
- Always print a debug log message about files and directories we cannot
open right when it happens instead of the caller, thus reducing the
number of places where we need to generate the debug message.
- Always push the errors we encounter immediately into the error set,
when we run into them, instead of in the caller. Thus, we never forget
to push them in.
- Use stack instead of heap memory where we can.
- Make remove_file() void, since it cannot fail anyway and always
returned 0.
- Make local machine check of journal directories explicit in a
function, to make things more readable.
- Port to all directory listing loops FOREACH_DIRENT_ALL()
- sd-daemon is library code, hence never log at higher log levels than
LOG_DEBUG.
Lennart Poettering [Mon, 2 Nov 2015 22:13:01 +0000 (23:13 +0100)]
journalctl: continue operation, even if we run into an invalid file
Zbigniew Jędrzejewski-Szmek [Sun, 25 Oct 2015 04:09:44 +0000 (00:09 -0400)]
journal: return better error for empty files
When reading stuff, we should only return EIO when an actual read error
occured, not when we don't like the data for whatever reason.
We already return ENODATA for all other kinds of file truncation, hence
do the same for the most obvious kind, so that callers know what ENODATA
means.
Lennart Poettering [Mon, 2 Nov 2015 22:09:06 +0000 (23:09 +0100)]
core: expose number of file descriptors in fd store on the bus
For each service expose how many file descriptors there are currently in
the fd store.
(Also, fix the exporting of the fdstore limit, given that the field is
just an "unsigned" but we exported it as "uint32_t". Not that there way
any effective difference, but let's make this clean...)
Lennart Poettering [Mon, 2 Nov 2015 22:07:58 +0000 (23:07 +0100)]
proc-cmdline: return proper errors from shall_restore_state()
Let's not eat up errors in shall_restore_state(), but in the consumers
instead, just for the sake of keeping the library calls generic.
Lennart Poettering [Mon, 2 Nov 2015 08:34:05 +0000 (09:34 +0100)]
core: bump net.unix.max_dgram_qlen really early during boot
Only that way it actually has an effect on all our sockets, including
$NOTIFY_SOCKET.
Ronny Chevalier [Mon, 2 Nov 2015 22:27:49 +0000 (23:27 +0100)]
Merge pull request #1757 from phomes/minor-fixes
Minor fixes
Thomas Hindoe Paaboel Andersen [Mon, 2 Nov 2015 21:52:05 +0000 (22:52 +0100)]
sysv-generator: remove duplicate const
I assume this was a typo in
c279613f861636c816f2f7df051b02c2f55a5134
Thomas Hindoe Paaboel Andersen [Mon, 2 Nov 2015 21:50:57 +0000 (22:50 +0100)]
man: various typos
Lennart Poettering [Sun, 1 Nov 2015 19:28:55 +0000 (20:28 +0100)]
string-util: rework memory_erase() so that it cannot be optimized away
memory_erase() so far just called memset(), which the compiler might
optimize away under certain conditions if it feels there's benefit in
it. C11 knows a new memset_s() call that is like memset(), but may not
be optimized away. Ideally, we'd just use that call, but glibc currently
does not support it. Hence, implement our own simplistic version of it.
We use a GCC pragma to turn off optimization for this call, and also use
the "volatile" keyword on the pointers to ensure that gcc will use the
pointers as-is. According to a variety of internet sources, either one
does the trick. However, there are also reports that at least the
volatile thing isn't fully correct, hence let's add some snake oil and
employ both techniques.
https://news.ycombinator.com/item?id=4711346
Lennart Poettering [Mon, 2 Nov 2015 19:16:18 +0000 (20:16 +0100)]
Merge pull request #1690 from evverx/run-runtime-directory
systemd-run can launch units with RuntimeDirectory
Lennart Poettering [Mon, 2 Nov 2015 19:06:48 +0000 (20:06 +0100)]
Merge pull request #1736 from ronnychevalier/rc/test_execute_more_tests2
test-execute: add more tests
Lennart Poettering [Mon, 2 Nov 2015 18:52:00 +0000 (19:52 +0100)]
Merge pull request #1753 from fbuihuu/teach-delegate-for-runtime
Teach bus_append_unit_property_assignment() about 'Delegate' property
Lennart Poettering [Mon, 2 Nov 2015 18:50:51 +0000 (19:50 +0100)]
Merge pull request #1755 from ssahani/word-systemctl
systemctl: port to extract_first_word
Susant Sahani [Mon, 2 Nov 2015 16:17:40 +0000 (21:47 +0530)]
systemctl: port to extract_first_word
Martin Pitt [Mon, 2 Nov 2015 16:05:20 +0000 (10:05 -0600)]
core: drop check for /etc/mtab
util-linux 2.27.1 now entirely stops looking at /etc/mtab, so we don't need to
verify /etc/mtab during early boot any more. Later on, tmpfiles.d/etc.conf will
fix /etc/mtab anyway, so there's not even a point in warning about it.
Drop test_mtab() and bump the util-linux dependency to >= 2.17.1.
Fixes #1495
Daniel Mack [Mon, 2 Nov 2015 11:38:24 +0000 (12:38 +0100)]
Merge pull request #1751 from ssahani/word-machine
machine: fix #1739
Franck Bui [Mon, 2 Nov 2015 10:12:41 +0000 (11:12 +0100)]
Teach bus_append_unit_property_assignment() about 'Delegate' property
Susant Sahani [Mon, 2 Nov 2015 11:25:59 +0000 (16:55 +0530)]
machine: fix extract_first_word
Daniel Mack [Mon, 2 Nov 2015 10:45:06 +0000 (11:45 +0100)]
Merge pull request #1722 from evverx/port-cap-bounding-set-to-extract-first-word
Port capabiliy bounding set parsing to extract_first_word
Daniel Mack [Mon, 2 Nov 2015 10:31:10 +0000 (11:31 +0100)]
Merge pull request #1750 from systemd/revert-1740-master
Revert "utf8.[ch]: use char32_t and char16_t instead of int, int32_t,…
Daniel Mack [Mon, 2 Nov 2015 10:23:32 +0000 (11:23 +0100)]
Merge pull request #1725 from ssahani/word-journal
sd-journal.c: port to extract_first_word
Lennart Poettering [Mon, 2 Nov 2015 10:21:25 +0000 (11:21 +0100)]
Revert "utf8.[ch]: use char32_t and char16_t instead of int, int32_t, int16_t"
Daniel Mack [Mon, 2 Nov 2015 10:21:18 +0000 (11:21 +0100)]
Merge pull request #1739 from ssahani/word-machine
machine: : port to extract_first_word
Daniel Mack [Mon, 2 Nov 2015 09:57:38 +0000 (10:57 +0100)]
Merge pull request #1740 from shawnl/master
utf8.[ch]: use char32_t and char16_t instead of int, int32_t, int16_t
Daniel Mack [Mon, 2 Nov 2015 09:43:16 +0000 (10:43 +0100)]
Merge pull request #1738 from evverx/fix-paths-lookup-test
tests: lookup_paths_init depends on SYSTEMD_UNIT_PATH. Test it
Lennart Poettering [Mon, 2 Nov 2015 09:31:24 +0000 (10:31 +0100)]
Merge pull request #1749 from zonque/cmsg
core: two trivial debug/error message improvements
Daniel Mack [Mon, 2 Nov 2015 09:17:24 +0000 (10:17 +0100)]
Merge pull request #1711 from mustrumr/network-use-after-free
network: fix use-after-free in link_free
Daniel Mack [Mon, 2 Nov 2015 09:16:04 +0000 (10:16 +0100)]
Merge pull request #1748 from karelzak/todo
update TODO
Daniel Mack [Thu, 15 Oct 2015 15:39:14 +0000 (17:39 +0200)]
core: be more verbose when NameOwnerChanged subscriptions fail
Daniel Mack [Tue, 13 Oct 2015 16:04:13 +0000 (18:04 +0200)]
core: service: fix error message
The directive is called FileDescriptorStoreMax=, not FDStoreMax=.
Daniel Mack [Mon, 2 Nov 2015 09:10:44 +0000 (10:10 +0100)]
Merge pull request #1745 from poettering/journal-deadlock
Make sure journald never blocks on sd_notify() to PID 1
Karel Zak [Mon, 2 Nov 2015 08:59:27 +0000 (09:59 +0100)]
update TODO
- inotify utab has been removed and we use libmount now
- x-systemd.requires= fstab option has been implemented to specify
dependencies in fstab
Lennart Poettering [Sun, 1 Nov 2015 20:59:17 +0000 (21:59 +0100)]
journal-remote: remove unused variable warning when building without GNUTLS.
Lennart Poettering [Sun, 1 Nov 2015 20:50:24 +0000 (21:50 +0100)]
journald: never block when sending messages on NOTIFY_SOCKET socket
Otherwise we might run into deadlocks, when journald blocks on the
notify socket on PID 1, and PID 1 blocks on IPC to dbus-daemon and
dbus-daemon blocks on logging to journald. Break this cycle by making
sure that journald never ever blocks on PID 1.
Note that this change disables support for event loop watchdog support,
as these messages are sent in blocking style by sd-event. That should
not be a big loss though, as people reported frequent problems with the
watchdog hitting journald on excessively slow IO.
Fixes: #1505.
Lennart Poettering [Sun, 1 Nov 2015 20:49:19 +0000 (21:49 +0100)]
sd-daemon: verify NOTIFY_SOCKET path length
Better generate a real error then simply connect to the wrong socket.
Shawn Landden [Sun, 1 Nov 2015 03:39:15 +0000 (20:39 -0700)]
utf8.[ch]: use char32_t and char16_t instead of int, int32_t, int16_t
rework C11 utf8.[ch] to use char32_t instead of uint32_t when referring
to unicode chars, to make things more expressive.
Susant Sahani [Sat, 31 Oct 2015 22:06:07 +0000 (03:36 +0530)]
machine: : port to extract_first_word
Susant Sahani [Sat, 31 Oct 2015 22:02:45 +0000 (03:32 +0530)]
sd-journal.c: port to extract_first_word
Evgeny Vereshchagin [Sat, 31 Oct 2015 20:07:47 +0000 (23:07 +0300)]
man: MANAGER_SYSTEM understands SYSTEMD_UNIT_PATH too
Evgeny Vereshchagin [Sat, 31 Oct 2015 19:00:32 +0000 (22:00 +0300)]
tests: lookup_paths_init depends on SYSTEMD_UNIT_PATH. Test it
Lennart Poettering [Fri, 30 Oct 2015 10:27:29 +0000 (11:27 +0100)]
sd-daemon: increase sd_notify() socket buffer size
Let's make sure we don't start blocking on sd_notify() earlier than
necessary, let's bump the socket buffer sizes to 8M.
We already do something similar for our logging socket buffers, hence
apply a similar bump here.
Lennart Poettering [Fri, 30 Oct 2015 10:25:00 +0000 (11:25 +0100)]
sysctl.d: bump number of queueable AF_UNIX/SOCK_DGRAM datagrams
The default of 16 is pretty low, let's bump this to accomodate for more
queued datagrams. This is useful for AF_UNIX/SOCK_DGRAM logging and
sd_notify() sockets as this allows queuing more datagrams before things
start to block, thus improving parallelization and logging performance.
Lennart Poettering [Wed, 28 Oct 2015 23:19:31 +0000 (00:19 +0100)]
sysv-generator: modernize
- Make sure we log each error at least once, and at most once
- Replace FOREACH_WORD loops by extract_first_word() loops
- Use FOREACH_DIRENT() for directory loops
- Use free_and_strdup() where appropriate
- Do not operate on half-loaded SysV files
- Always properly free all memory
Lennart Poettering [Wed, 28 Oct 2015 17:23:26 +0000 (18:23 +0100)]
core: bail our earlier when doing audit
Let's make sure we don't even try to create the audit socket
Lennart Poettering [Wed, 28 Oct 2015 17:23:07 +0000 (18:23 +0100)]
core,nspawn: minor coding style fixes
Lennart Poettering [Wed, 28 Oct 2015 17:22:23 +0000 (18:22 +0100)]
nspawn: fix minor memory leak
When rebooting nspawn containers about 400 times we'd otherwise hit the
fd limit and refuse further reboots.