Page MenuHomePhabricator

Unconfigured Ethernet interface discovery partial failure on boot
Confirmed, LowPublicBUG

Description

When installing VyOS 1.2 (current nightly build) as a fresh install on either physical hardware or in a VM with multiple interfaces the system doesn't correctly detect all interfaces and add them to the config. Manually adding interfaces and their hw-id resolves the issue. Upon doing a show interfaces, interfaces missing their hw-id show up as Administratively down.

Still need to figure out the cause.

Details

Difficulty level
Normal (likely a few hours)
Version
1.2
Why the issue appeared?
Will be filled on close

Event Timeline

rps created this task.Mar 7 2018, 10:28 PM
syncer triaged this task as Normal priority.Mar 7 2018, 10:32 PM
rps added a comment.Mar 12 2018, 7:47 PM

A bit more information on this.

It looks like this might be similar or related to T290 . At least it provided me some hints as to what might be happening.

If you start with an empty config.boot each boot will find exactly one new Ethernet interface and add it to the config.boot. In other words if you have 4 interfaces you will need to reboot 3 times for them to be discovered and added to the config.

Digging into it a bit more it looks like the /lib/udev/vyatta_net_name script is called in parallel for each new interface and the logic to obtain an exclusive lock on /run/udev/.vyatta-lock is no longer viable (looking it over I'm not actually sure why it was in there to begin with).

As a quick test commenting out the exclusive lock in sub lock_file seems to have fixed the issue.

If there is a good reason for the lock file perhaps making it generate an interface-specific lock file like .vyatta-lock-eth0 would be an easy fix. We would likely want to update file_unlock to also unlink when done to clean up though.

pasik added a subscriber: pasik.Oct 1 2018, 9:52 AM
syncer changed the task status from Open to On hold.Oct 13 2018, 6:28 PM
syncer added a subscriber: syncer.

please retest

syncer assigned this task to rps.Oct 13 2018, 7:09 PM
syncer changed the task status from On hold to Needs testing.Feb 7 2019, 11:58 PM
syncer reassigned this task from rps to zsdc.
syncer lowered the priority of this task from Normal to Low.
zsdc changed the task status from Needs testing to Confirmed.Feb 25 2019, 5:31 PM
zsdc reassigned this task from zsdc to dmbaturin.
zsdc added a subscriber: zsdc.

Confirmed in 1.2.0-rolling+201902250337. A hw-id is assigned to only one of interfaces per boot.
If this will not lead to a race condition situation, maybe try to implement the solution from T577#12637 proposed by @rps?