Yu Watanabe [Mon, 20 May 2019 05:13:11 +0000 (14:13 +0900)]
network: deprecate OneQueue= for tun or tap devices
IFF_ONE_QUEUE has no effect since kernel-3.8. See kernel's commit
5d097109257c03a71845729f8db6b5770c4bbedc.
Yu Watanabe [Mon, 20 May 2019 04:59:34 +0000 (13:59 +0900)]
test-network: add tests for flags of tun or tap devices
Yu Watanabe [Mon, 20 May 2019 04:38:01 +0000 (13:38 +0900)]
network: extend warning messages
Yu Watanabe [Mon, 20 May 2019 04:27:20 +0000 (13:27 +0900)]
network: Allow IFF_VNET_HDR to also be set for tun devices
f5f07dbf06f6df9d12e092c05ad8cfbe244d203f adds VnetHeader= for tap
devices, but the flag is also used for tun devices.
This adds VnetHeader= setting in [Tun] section.
Yu Watanabe [Mon, 20 May 2019 04:16:55 +0000 (13:16 +0900)]
test-network: add tests for LinkLocalAddressing= on ipvlan or friends
Yu Watanabe [Mon, 20 May 2019 04:15:02 +0000 (13:15 +0900)]
network: disable IPv4LL for ipvlan with L3 or L3S mode
As L3 or L3S mode do not support ARP.
Yu Watanabe [Mon, 20 May 2019 03:48:05 +0000 (12:48 +0900)]
test-network: add tests for Flags= in [IPVTAP]
Yu Watanabe [Mon, 20 May 2019 03:47:31 +0000 (12:47 +0900)]
test-network: add tests for Flags= in [IPVLAN]
Yu Watanabe [Mon, 20 May 2019 02:47:24 +0000 (11:47 +0900)]
test-network: add tests for Mode= setting in [MACVTAP] section
Yu Watanabe [Mon, 20 May 2019 02:39:05 +0000 (11:39 +0900)]
test-network: add tests for Mode= setting in [MACVLAN] section
Yu Watanabe [Mon, 20 May 2019 01:43:50 +0000 (10:43 +0900)]
test-network: convert jiffies to sec
Yu Watanabe [Mon, 20 May 2019 01:23:28 +0000 (10:23 +0900)]
test-network: show interface status when wait_online() fails
Yu Watanabe [Mon, 20 May 2019 01:18:26 +0000 (10:18 +0900)]
test-network: use wait_online() more
Yu Watanabe [Mon, 20 May 2019 01:05:50 +0000 (10:05 +0900)]
test-network: introduce check_link_exists()
Yu Watanabe [Mon, 20 May 2019 01:02:29 +0000 (10:02 +0900)]
test-network: use wait_online() more
Yu Watanabe [Mon, 20 May 2019 00:40:30 +0000 (09:40 +0900)]
test-network: use splitlines() at one more place
ven [Wed, 22 May 2019 06:24:28 +0000 (14:24 +0800)]
bus_open leak sd_event_source when udevadm trigger。
On my host, when executing the udevadm trigger, I only receive the change event, which causes memleak
Zhang Xianwei [Mon, 13 May 2019 10:41:55 +0000 (18:41 +0800)]
udev/scsi_id: fix incorrect page length when get device identification VPD page
The length of device identification VPD page is filled with two bytes,
but scsi_id only gets the low byte. Fix it.
Signed-off-by: Zhang Xianwei <zhang.xianwei8@zte.com.cn>
Yu Watanabe [Tue, 21 May 2019 17:35:06 +0000 (02:35 +0900)]
Merge pull request #12629 from ssahani/networkctl
networkctl: MTU enhancements
Lennart Poettering [Tue, 21 May 2019 16:29:01 +0000 (18:29 +0200)]
Merge pull request #12626 from keszybz/oompolicy-check
Make the check if oom-killer fired more robust
Susant Sahani [Tue, 21 May 2019 12:14:36 +0000 (17:44 +0530)]
networkctl: Add support to display min and max MTU
(networkctl)⚡ % ./networkctl status enp0s31f6 ~/tt/networkctl/build
● 4: enp0s31f6
Link File: /usr/lib/systemd/network/99-default.link
Network File: n/a
Type: ether
State: n/a (unmanaged)
Path: pci-0000:00:1f.6
Driver: e1000e
Vendor: Intel Corporation
Model: Ethernet Connection (2) I219-LM
HW Address: 8c:16:45:6c:83:b9 (LCFC(HeFei) Electronics Technology co., ltd)
MTU: 1500
Minimum MTU: 68
Maximum MTU: 9000
Susant Sahani [Tue, 21 May 2019 12:13:56 +0000 (17:43 +0530)]
sd-netlink: Add netlink property IFLA_MIN_MTU and IFLA_MAX_MTU,
Susant Sahani [Tue, 21 May 2019 11:59:18 +0000 (17:29 +0530)]
networkctl: Display MTU
Now the MTU is not displayed. with this patch it's fixed.
(networkctl)⚡ % ./networkctl status enp0s31f6 ~/tt/networkctl/build
WARNING: systemd-networkd is not running, output will be incomplete.
● 4: enp0s31f6
Link File: /usr/lib/systemd/network/99-default.link
Network File: n/a
Type: ether
State: n/a (unmanaged)
Path: pci-0000:00:1f.6
Driver: e1000e
Vendor: Intel Corporation
Model: Ethernet Connection (2) I219-LM
HW Address: 8c:16:45:6c:83:b9 (LCFC(HeFei) Electronics Technology co., ltd)
MTU: 1500
Yu Watanabe [Mon, 20 May 2019 23:35:10 +0000 (08:35 +0900)]
Merge pull request #12510 from keszybz/test-directives
test: run check-directives.sh as part of the test suite
Yu Watanabe [Mon, 20 May 2019 23:25:26 +0000 (08:25 +0900)]
Merge pull request #12519 from keszybz/man-on-demand
Build man pages on demand only
Joe Lin [Fri, 10 May 2019 08:58:08 +0000 (08:58 +0000)]
meson-vcs-tag: enhance version info generation
When build from release tarball and where there is parent .git dir,
this situtaion will get wrong version info. (build with buildroot)
The systemd running show wrong version in dmesg log:
systemd[1]: systemd 2019.02-1086-gf5f17c4 running in system mode.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Shoule be:
systemd[1]: systemd 241 running in system mode. (-PAM -AUDIT -SEL
^^^^^^^^^^^
Kashyap Chamarthy [Mon, 20 May 2019 15:08:04 +0000 (17:08 +0200)]
man: systemd-nspawn: Update syntax to launch an image
To access a shell on a disk image, the man page on Fedora-29 says to
run: `systemd-nspawn -M Fedora-Cloud-Base-28-1.1.x86_64.raw`. Let's
try.
List existing images:
$> machinectl list-images | awk '{print $1,$2}';
NAME TYPE
Fedora-Cloud-Base-30… raw
1 images
Now invoke `systemd-nspawn` as noted in the man page:
$> systemd-nspawn -M Fedora-Cloud-Base-30-1.2.x86_64.raw
No image for machine 'Fedora-Cloud-Base-30-1.2.x86_64.raw'.
Removing the ".raw" extension launches the image and gives a shell.
Update the man page to reflect that.
Frantisek Sumsal on #systemd (Freenode) noted the reason: "In older
versions systemd -M accepted both image-name.raw and image-name as a
valid image names, however, on Fedora 29 (systemd-239) with all the
BTRFS stuff around it accepts only -M image-name (without the
extension)"
- - -
While at it, update the fedora_{latest_version, cloud_release}
variables.
Signed-off-by: Kashyap Chamarthy <kchamart@redhat.com>
Yu Watanabe [Mon, 20 May 2019 22:45:12 +0000 (07:45 +0900)]
Merge pull request #12612 from keszybz/bootctl-column
Rename TEST-31-OOMPOLICY to avoid conflict and look in $BOOT for kernels
Yu Watanabe [Sun, 19 May 2019 13:55:35 +0000 (22:55 +0900)]
sysctl: bump pid range only on 64-bit systems
Closes #12604.
Lennart Poettering [Mon, 20 May 2019 14:15:40 +0000 (16:15 +0200)]
json: fix minor memory leak on error path
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 13:52:02 +0000 (15:52 +0200)]
core: do an extra check if oom was triggered when handling sigchild
Should fix #12425.
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 11:44:41 +0000 (13:44 +0200)]
core/service: drop {}
Topi Miettinen [Mon, 20 May 2019 11:37:03 +0000 (14:37 +0300)]
small fixes: make get_process_state() static and fix typo
Lennart Poettering [Mon, 20 May 2019 14:22:57 +0000 (16:22 +0200)]
Merge pull request #12602 from keszybz/two-man-page-tweaks
Two man page tweaks
Zbigniew Jędrzejewski-Szmek [Mon, 20 May 2019 13:48:05 +0000 (15:48 +0200)]
travis: use variable to avoid one call
Zbigniew Jędrzejewski-Szmek [Fri, 10 May 2019 08:33:37 +0000 (10:33 +0200)]
tests: install perl for CI
It is useful for various tests (test-directives, test-udev, …).
Zbigniew Jędrzejewski-Szmek [Tue, 7 May 2019 18:46:36 +0000 (20:46 +0200)]
test: run check-directives.sh as part of the test suite
Yu Watanabe [Sun, 19 May 2019 14:19:27 +0000 (23:19 +0900)]
Merge pull request #12603 from ssahani/ndisc-blacklist
networkd: Ability to selectively ignore IPv6 prefixes supplied via ro…
Yu Watanabe [Sat, 18 May 2019 21:18:00 +0000 (06:18 +0900)]
efivars: allow plus in the entry name
Closes #12572.
Susant Sahani [Fri, 17 May 2019 16:21:20 +0000 (21:51 +0530)]
networkd: Ability to selectively ignore IPv6 prefixes supplied via router advertisement
Closes https://github.com/systemd/systemd/issues/10647
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 11:03:21 +0000 (13:03 +0200)]
TEST-32-OOMPOLICY: drop unneeded headers
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 11:00:00 +0000 (13:00 +0200)]
test: rename TEST-31-OOMPOLICY to TEST-32-OOMPOLICY
TEST-31-DEVICE-ENUMERATION got merged first.
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 10:05:21 +0000 (12:05 +0200)]
test: search $BOOT for kernel+initrd
$BOOT is the preferred location for kernel images. If $BOOT does not
exist, -x will print the path to ESP, so well fall back to previous
behaviour.
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 10:01:32 +0000 (12:01 +0200)]
bootctl: do not allow -x and -p to be used together
-x already prints the path to ESP in some circumstances, and allowing
both to be printed seems confusing.
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 09:55:36 +0000 (11:55 +0200)]
bootctl: add -x shortcut for --print-boot-path
It's a quite useful option, let's match -p.
Evgeny Vereshchagin [Thu, 16 May 2019 03:48:06 +0000 (05:48 +0200)]
tests: catch broken fuzz targets as early as possible
See https://github.com/google/oss-fuzz/pull/2419.
Zbigniew Jędrzejewski-Szmek [Sun, 19 May 2019 09:31:19 +0000 (11:31 +0200)]
bootclt: add missing column
This got broken somehow in
44e6a5ef825.
Yu Watanabe [Sun, 19 May 2019 00:26:14 +0000 (09:26 +0900)]
Merge pull request #12577 from yuwata/test-network-issue-12344
test-network: fix test_bond_operstate
Yu Watanabe [Fri, 17 May 2019 00:14:59 +0000 (09:14 +0900)]
network: tighten the condition whether link has carrier
ip command requires that IFF_RUNNING is set for that the link has
carrier.
Yu Watanabe [Wed, 15 May 2019 09:46:41 +0000 (18:46 +0900)]
test-network: wait for bond interface to be no-carrier operational state
Yu Watanabe [Sat, 18 May 2019 20:39:15 +0000 (05:39 +0900)]
test-network: enable universal_newline= flag for subprocess.check_output()
Yu Watanabe [Fri, 17 May 2019 06:54:50 +0000 (15:54 +0900)]
test-network: remove unnecessary links
Yu Watanabe [Thu, 16 May 2019 23:40:55 +0000 (08:40 +0900)]
test-network: fix underlying device name
Yu Watanabe [Wed, 15 May 2019 09:40:49 +0000 (18:40 +0900)]
test-network: use check_operstate() helper function where applicable
Yu Watanabe [Wed, 15 May 2019 09:25:30 +0000 (18:25 +0900)]
test-network: add get_operstate() and check_operstate() helper functions
David Tardon [Thu, 16 May 2019 14:10:10 +0000 (16:10 +0200)]
timer: simplify computation of unit activation time
Yu Watanabe [Sat, 18 May 2019 03:46:02 +0000 (12:46 +0900)]
network: set_put() here does not returns -EEXIST
Yu Watanabe [Sat, 18 May 2019 03:29:40 +0000 (12:29 +0900)]
network: use in6_addr_hash_ops
Yu Watanabe [Sat, 18 May 2019 03:26:59 +0000 (12:26 +0900)]
util: introduce in6_addr_hash_ops
Yu Watanabe [Sat, 18 May 2019 03:23:01 +0000 (12:23 +0900)]
man: move Blacklist= in [DHCP] section
Yu Watanabe [Sat, 18 May 2019 01:31:37 +0000 (10:31 +0900)]
Merge pull request #12586 from ssahani/route-properties
Route properties
Susant Sahani [Thu, 16 May 2019 09:49:08 +0000 (15:19 +0530)]
networkd: route add MPLS TTL propagate
Yu Watanabe [Sat, 18 May 2019 01:25:59 +0000 (10:25 +0900)]
Merge pull request #12593 from AdrianBunk/master
Small changes from Yocto/musl builds
Susant Sahani [Thu, 16 May 2019 06:46:19 +0000 (12:16 +0530)]
networkd: FOU netdev add support to configure peer port
Zbigniew Jędrzejewski-Szmek [Fri, 17 May 2019 13:40:44 +0000 (15:40 +0200)]
man: rework forward/reverse table in systemd.unit(5)
Fixes #12600.
Zbigniew Jędrzejewski-Szmek [Fri, 17 May 2019 13:14:49 +0000 (15:14 +0200)]
man: add missing =
Fixes #12598.
Zbigniew Jędrzejewski-Szmek [Fri, 17 May 2019 11:35:18 +0000 (13:35 +0200)]
shared/varlink: add missing setting of output_buffer_allocated
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14708,
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14735,
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14725,
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14720,
and probably others.
Susant Sahani [Thu, 16 May 2019 09:48:35 +0000 (15:18 +0530)]
sd-netlink: add route netlink properties
Martin Pitt [Thu, 16 May 2019 20:26:21 +0000 (22:26 +0200)]
semaphore: switch to Debian experimental packaging branch
Debian unstable is frozen for the Debian 9 release, current development
happens in experimental. After the release, this can be switched back to
master, and the branch set through the `$BRANCH` env variable in the
semaphore config.
Andrej Valek [Thu, 18 Apr 2019 08:47:11 +0000 (10:47 +0200)]
fs-util.h: add missing sys/stat include
fix error:
| error: passing argument 5 of 'chase_symlinks_and_stat' from incompatible pointer type [-Werror=incompatible-pointer-types]
Adrian Bunk [Thu, 16 May 2019 19:20:07 +0000 (22:20 +0300)]
Replace the legacy ULONG_LONG_MAX with the C99 ULLONG_MAX
Chen Qi [Mon, 25 Feb 2019 08:37:19 +0000 (16:37 +0800)]
socket-util.h: include string.h
Fix the following compile error:
src/basic/socket-util.h:187:30: error: implicit declaration of function 'strnlen'; did you mean 'strlen'? [-Werror=implicit-function-declaration]
Adrian Bunk [Thu, 16 May 2019 19:09:46 +0000 (22:09 +0300)]
src/udev/udev-event.c must #include <sys/wait.h>
Fixes the following build failure with musl:
../git/src/udev/udev-event.c: In function 'spawn_wait':
../git/src/udev/udev-event.c:600:53: error: 'WEXITED' undeclared (first use in this function); did you mean 'WIFEXITED'?
r = sd_event_add_child(e, NULL, spawn->pid, WEXITED, on_spawn_sigchld, spawn);
^~~~~~~
This looks like a bug in udev-event.c that could also have broken
the compilation after some future glibc header reshuffle.
Michael Biebl [Fri, 17 May 2019 06:02:46 +0000 (08:02 +0200)]
meson: stop creating .wants directories for {multi-user,getty}.target (#12569)
Since preset is supposed to be used to enable the services, there is no
need to pre-create those directories either.
Follow-up for #12164
Franck Bui [Mon, 6 May 2019 13:49:23 +0000 (15:49 +0200)]
udevd: change the default value of udev.children-max (again)
Follow-up for
faae64fa3dc22738b3af669579a33055b9d71432, which increased the
default number of udev workers per cpu regardless of how big the system is.
It's not really clear from the commit message if the new number of workers
improved the overall time for the boot process or only reduced the number of
times the max number of children limit was reached (and in this case
5406c36844b3 commit might have been more appropriate in the first place).
But systems with ~1000 CPUs are not rare these days and the worker numbers get
quite large with CPU factor of 8. Spawning more than 2000 workers can't be
healthy on any system, no matter how big.
Indeed the main mistake is the belief that udev is CPU-intensive, and thus the
number of allowed workers has to increase with the number of CPUs. It is not,
at probably has never been. It's I/O bound, and sometimes, bound by resources
such as locks.
This is an argument to:
- scale only weakly with the number of CPUs, and the rationale to switch back
to a scale factor C=2 but with a higher offset number which should affect
systems with a small number of CPUs only. With this patch applied the offset
is increased from O=8 to O=16.
- put an absolute maximum limit to make sure no more than 2048 workers are
spawned no matter how big the system is.
This still provides more workers for the laptop cases (where the number of CPUs
is limited), while avoiding sky-rocketing numbers for big systems.
Note that on most desktop systems, the memory limit will kick in. The following
table collects numbers about children-max. For each scenario, the first column
is the "cpu_limit" limit, and the second number is the minimum amount of memory
for the "cpu_limit" limit to become relevant (with less RAM, memory will limit
the number of children thus "mem_limit" will become the active limit).
| > v240 | < v240 | this patch |
CPUs | C = 8, O = 8 | C = 2, O = 8 | C = 2, O = 16 |
-------------------------------------------------------
1 | 16 2 | 10 1.3 | 18 2 |
2 | 24 3 | 12 1.5 | 20 2 |
4 | 40 5 | 16 2 | 24 3 |
8 | 72 9 | 24 3 | 32 4 |
16 | 136 17 | 40 5 | 48 5 |
64 | 520 65 | 136 17 | 144 18 |
1024 | 8200 1025 | 2056 263 | 2048 256 |
2048 |16392 2049 | 4104 513 | 2048 256 |
This patch is mainly based on Martin Wilck's analyze and comments.
Zbigniew Jędrzejewski-Szmek [Thu, 16 May 2019 21:04:45 +0000 (23:04 +0200)]
Merge pull request #12515 from evverx/fix-fuzzers-in-local-mode
travis: make sure the fuzzers can be built in "local" mode
Zbigniew Jędrzejewski-Szmek [Thu, 16 May 2019 19:15:06 +0000 (21:15 +0200)]
Merge pull request #12535 from poettering/color-grey
redefine how we select the ANSI color grey
Lennart Poettering [Mon, 13 May 2019 13:23:47 +0000 (15:23 +0200)]
docs: add comment about high 32bit range and signed uids
Lennart Poettering [Tue, 14 May 2019 13:11:40 +0000 (15:11 +0200)]
random-util: add a longer comment explaining our RDRAND use
Evgeny Vereshchagin [Thu, 16 May 2019 15:53:57 +0000 (17:53 +0200)]
tests: make docker-run and helper.py happy by not using colons in filenames
This should address https://github.com/google/oss-fuzz/issues/2428
Frantisek Sumsal [Wed, 15 May 2019 17:28:09 +0000 (19:28 +0200)]
journalctl: return a non-zero EC when --grep returns no matches
When journalctl is compiled with PCRE2 support, let's return a non-zero
exit code when --grep is used and no match for given pattern is found.
This should allow users to use journalctl --grep in scripts instead of
piping journalctl into grep
Fixes #8152
Yu Watanabe [Thu, 16 May 2019 03:35:10 +0000 (12:35 +0900)]
varlink: initialize Varlink with 0
Closes oss-fuzz#14688.
Lennart Poettering [Thu, 16 May 2019 14:39:38 +0000 (16:39 +0200)]
Merge pull request #12378 from rbalint/vt-kbd-reset-check
VT kbd reset check
Yu Watanabe [Thu, 16 May 2019 06:25:48 +0000 (08:25 +0200)]
Merge pull request #12574 from yuwata/network-mtu-issue-12552
network: do not always bump MTU with additional 4bytes
Yu Watanabe [Sun, 12 May 2019 20:40:31 +0000 (05:40 +0900)]
network: do not use ordered_set_printf() for DOMAINS= or ROUTE_DOMAINS=
This partially reverts
5e2a51d588dde4b52c6017ea80b75c16e6e23431.
Fixes #12531.
Yu Watanabe [Thu, 16 May 2019 03:11:05 +0000 (05:11 +0200)]
Merge pull request #12549 from yuwata/network-sittun-disable-link-local-addressing-12547
network: disable LinkLocalAddressing on sit devices
Yu Watanabe [Thu, 16 May 2019 03:10:35 +0000 (05:10 +0200)]
Merge pull request #12576 from ssahani/fou
networkd: FOU tunnel support Local and Peer tunnel addresses
Yu Watanabe [Thu, 16 May 2019 03:01:35 +0000 (05:01 +0200)]
Merge pull request #12578 from ssahani/ipvtap
networkd: introduce netdev ipvtap
Yu Watanabe [Thu, 16 May 2019 02:49:13 +0000 (11:49 +0900)]
test-network: adjust mtu
Yu Watanabe [Thu, 16 May 2019 02:42:46 +0000 (11:42 +0900)]
network: bump MTU bytes only when MTUByte= is not set
Yu Watanabe [Wed, 15 May 2019 07:02:06 +0000 (16:02 +0900)]
network: honor MTUBytes= setting
Closes #12552.
Yu Watanabe [Sun, 12 May 2019 21:55:16 +0000 (06:55 +0900)]
test-network: check tunnel netdevs become operstate 'routable'
Susant Sahani [Wed, 15 May 2019 09:17:18 +0000 (14:47 +0530)]
networkd: FOU tunnel support Local and Peer tunnel addresses
Susant Sahani [Wed, 15 May 2019 09:16:01 +0000 (14:46 +0530)]
sd-netlink: Add Fou properties FOU_ATTR_LOCAL_V4/FOU_ATTR_PEER_V4
FOU_ATTR_LOCAL_V6
FOU_ATTR_PEER_V6
FOU_ATTR_PEER_PORT
FOU_ATTR_IFINDEX
Yu Watanabe [Thu, 16 May 2019 01:19:08 +0000 (10:19 +0900)]
linux: update headers from current kernel master
Yu Watanabe [Thu, 16 May 2019 00:48:34 +0000 (09:48 +0900)]
test-network: add a basic test for ipvtap
Susant Sahani [Wed, 15 May 2019 10:12:30 +0000 (15:42 +0530)]
networkd: introduce netdev ipvtap
This patch adds netdev ipvtap that is based on the
IP-VLAN network interface, called ipvtap. An ipvtap device can be created
in the same way as an ipvlan device, using 'kind ipvtap', and then accessed
using the tap user space interface.
Yu Watanabe [Sun, 12 May 2019 21:51:54 +0000 (06:51 +0900)]
network: disable link local addressing on ipip, gre, sit, and vti netdevs
Closes #12547.
Yu Watanabe [Wed, 15 May 2019 04:15:16 +0000 (13:15 +0900)]
wait-online: ignore -ENODATA on updating link information
When netdev is not created yet, the -ENODATA is returned.
Yu Watanabe [Sun, 12 May 2019 21:48:31 +0000 (06:48 +0900)]
network: link_check_ready() returns earlier if routes are not configured yet
link_request_set_routes() calls link_check_ready(), so it is not
necessary to continue that here.