reassign 899002 ifupdown 0.8.19
thanks

Hi Michael,

Am Freitag, den 18.05.2018, 21:23 +0200 schrieb Michael Biebl:
> Am 18.05.2018 um 19:22 schrieb Benjamin Drung:
> > Am Freitag, den 18.05.2018, 13:14 -0400 schrieb Felipe Sateler:
> > > Control: tags -1 moreinfo
> > > On Fri, May 18, 2018 at 8:57 AM Benjamin Drung <benjamin.drung@pr
> > > ofit
> > > bricks.com> wrote:
> > > > $ systemctl cat [email protected]
> > > > # /lib/systemd/system/[email protected]
> > > > Before=sysinit.target
> 
> 
> > > > Before=network-pre.target
> 
> 
> > > > # Orders all kernel module startup before rdma-hw.target can
> > > > become
> > > > # ready
> > > > Before=rdma-hw.target
> 
> All those Before orderings can not be guaranteed, if
> [email protected] is started via a udev rule (dynamically).
> 
> udev can trigger the start of that service at any time during boot
> when
> those targets are already active and systemd can't know that it has
> to
> wait for [email protected] as it doesn't have that
> information when it computes the initial boot transaction.
> 
> So this is really a problem of how [email protected] and
> rdma-hw.target are implemented. They are not going to work like you
> expected it to work, i.e. having a rdma-hw.target which other units
> can
> order itself against reliably.

Thanks for the explanation.

The networking service starts before [email protected] which
is triggered by udev. The networking service should not attempt to do
udevadm settle internally, but it must depend on systemd-udev-
settle.service.

The reason is due to how systemd scheduals ordering. Once it starts
running networking.service 'ExecStartPre' it will not re-consider
order past that point. So any activations done by udev while settling
have no impact on networking.service at all.

So ifupdown's networking.service should depend on systemd-udev-
settle.service. A successfully tested patch is attached and a merge
proposed is opened for it:
https://salsa.debian.org/debian/ifupdown/merge_requests/1

-- 
Benjamin Drung
System Developer
Debian & Ubuntu Developer

ProfitBricks GmbH
Greifswalder Str. 207
10405 Berlin

Email: [email protected]
URL: https://www.profitbricks.de

Sitz der Gesellschaft: Berlin
Registergericht: Amtsgericht Charlottenburg, HRB 125506 B
Geschäftsführer: Achim Weiss, Matthias Steinberg, Christoph Steffens
From 07f2b7303f02ffc40ac7768f69cf9002990be204 Mon Sep 17 00:00:00 2001
From: Benjamin Drung <[email protected]>
Date: Tue, 22 May 2018 11:52:24 +0200
Subject: [PATCH] Depend on systemd-udev-settle.service in networking.service

udev rules trigger [email protected] (which loads the
ib_ipoib kernel module) which should run before networking.service.
The networking service should not attempt to do udevadm settle
internally, but it must depend on systemd-udev-settle.service instead.

The reason is due to how systemd scheduals ordering. Once it starts
running networking.service 'ExecStartPre' it will not re-consider
order past that point. So any activations done by udev while settling
have no impact on networking.service at all.

Closes: #899002
Signed-off-by: Benjamin Drung <[email protected]>
---
 debian/networking.service | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/debian/networking.service b/debian/networking.service
index f5e5bcd..1d72d42 100644
--- a/debian/networking.service
+++ b/debian/networking.service
@@ -2,8 +2,9 @@
 Description=Raise network interfaces
 Documentation=man:interfaces(5)
 DefaultDependencies=no
+Requires=systemd-udev-settle.service
 Wants=network.target
-After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service
+After=local-fs.target network-pre.target apparmor.service systemd-sysctl.service systemd-modules-load.service systemd-udev-settle.service
 Before=network.target shutdown.target network-online.target
 Conflicts=shutdown.target
 
@@ -14,7 +15,6 @@ WantedBy=network-online.target
 [Service]
 Type=oneshot
 EnvironmentFile=-/etc/default/networking
-ExecStartPre=-/bin/sh -c 'if [ "$CONFIGURE_INTERFACES" != "no" ] && [ -n "$(ifquery --read-environment --list --exclude=lo)" ]; then udevadm settle; fi'
 ExecStart=/sbin/ifup -a --read-environment
 ExecStop=/sbin/ifdown -a --read-environment --exclude=lo
 RemainAfterExit=true
-- 
2.17.0

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Pkg-systemd-maintainers mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-systemd-maintainers

Reply via email to