[systemd-devel] network/openvswitch dependency loop/deadlock

Thomas Graf tgraf at redhat.com
Tue Feb 12 23:49:34 PST 2013

On 02/13/2013 04:06 AM, Lennart Poettering wrote:
> Well, there still is a dep loop, that is unfixed, right?
> I mean, you want your service to run as part of bringing up some
> networks, but also after the network is up. So what do you want now?
> Start it after or at the same time, that's contradicting.
> a) if you want to start it only after then, you should drop those
>     callouts from ifup.
> b) if you want to start it as part of the network config, then you
>     should drop any reference to network.target.
> To me it appears that you aren't entirely clear which way you want it,
> and try to use --ignore-dependencies as a work-around for that... But I
> really think the first step needs to be: what it's gonna be?

Let's put it in another way, there is two ways to run OVS:

a) _not_ part of the network config. OVS will load the config from
    its database when the unit is started, configures itself and
    then runs. This is a no brainer and requires After=network.target

b) As part of the network config scripts. Each virtual bridge, port,
    tunnel, mirror, and bond has its ifcfg file. This is to allow to
    ifdown/ifup virtual bridges and ports using a well known interface
    and persistent storage method.

      1. interfaces listed in OVSREQUIRES= in each OVS ifcfg must be
         brought up first to bring up the uplink interfaces for bonds,
         tunnels, or native uplinks. We do this within ifup.
      2. openvswitch unit must be started with After=syslog. The
         dependency on network.target is already resolved in the first
      3. OVS gets configured
      4. Any remaining interfaces get brought up

So essentially we need both.

More information about the systemd-devel mailing list