Skip to content

"BindsTo=" must confirm that a device exists before enqueuing a start job on that device. #4413

@thx1111

Description

@thx1111
  • Bug report

systemd 231-4

Arch

In case of bug report: Steps to reproduce the problem

Given a template service unit file with BindsTo and WantedBy dependencies:

[Unit]
BindsTo= sys-subsystem-net-devices-%i.device
[Service]
ExecStart= /usr/bin/wpa_supplicant ...
[Install]
WantedBy= sys-subsystem-net-devices-%i.device

Where there are:
$ ls -1 sys-subsystem-net-devices-wlp0s3f3u1.device.wants
[email protected]

and
$ ls -1 sys-subsystem-net-devices-wlp0s3f3u2.device.wants
[email protected]

and where the two interface names are the names generated for the same device plugged into either one of two different USB sockets.

Plugging the USB network device into either socket, creating just one of either wlp0s3f3u1 or wlp0s3f3u2, causes the supplicant to be started for both interface names, wlp0s3f3u1 and wlp0s3f3u2.

Ultimately, the error is tolerable because the supplicant will fail for the nonexistent network device interface, and then the corresponding service unit will time-out and fail.

But still, the service unit for the nonexistent device interface should not have been started at all.

It appears that systemd is unable to distinguish USB network device interface names.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions