resolvconf not updated by /lib/systemd/system/ifup@.service.d/open-iscsi.conf
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| | open-iscsi (Ubuntu) |
High
|
Martin Pitt | ||
Bug Description
I noticed this under MAAS when installing wily.
/etc/resolv.conf (managed by resolvconf) does not get updated by open-iscsi's systemd job.
I can recreate this outside of MAAS with tgt and maas images. tools to help with that are at:
https:/
after system booted:
$ cat /run/initramfs/
eth0
$ cat /run/network/
lo=lo
$ cat /run/net-eth0.conf
DEVICE='eth0'
PROTO='dhcp'
IPV4ADDR=
IPV4BROADCAST=
IPV4NETMASK=
IPV4GATEWAY=
IPV4DNS0=
IPV4DNS1='0.0.0.0'
HOSTNAME=
DNSDOMAIN=''
NISDOMAIN=''
ROOTSERVER=
ROOTPATH=''
filename=''
UPTIME='19'
DHCPLEASETIME=
DOMAINSEARCH=''
$ systemctl status --full open-iscsi
● open-iscsi.service - LSB: Starts and stops the iSCSI initiator services and logs in to default targets
Loaded: loaded (/etc/init.
Active: active (running) since Tue 2015-06-09 15:08:20 UTC; 12min ago
Docs: man:systemd-
Process: 543 ExecStart=
CGroup: /system.
├─573 /usr/sbin/iscsid
└─574 /usr/sbin/iscsid
Jun 09 15:08:20 ubuntu open-iscsi[543]: ...done.
Jun 09 15:08:20 ubuntu systemd[1]: Child 543 belongs to open-iscsi.service
Jun 09 15:08:20 ubuntu systemd[1]: open-iscsi.service: control process exited, code=exited status=0
Jun 09 15:08:20 ubuntu systemd[1]: open-iscsi.service got final SIGCHLD for state start
Jun 09 15:08:20 ubuntu systemd[1]: open-iscsi.service changed start -> running
Jun 09 15:08:20 ubuntu systemd[1]: Job open-iscsi.
Jun 09 15:08:20 ubuntu systemd[1]: Started LSB: Starts and stops the iSCSI initiator services and logs in to default targets.
Jun 09 15:08:21 ubuntu iscsid[573]: iSCSI daemon with pid=574 started!
Jun 09 15:08:21 ubuntu iscsid[573]: Could not read data from db. Using default and currently negotiated values
Jun 09 15:08:23 ubuntu iscsid[573]: connection1:0 is operational after recovery (1 attempts)
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
$ cat /proc/cmdline
nomodeset iscsi_target_
Related bugs:
* bug 1432829: resolv.conf not updated correctly for interfaces configured in initramfs
* bug 1501033: transient error results in /etc/resolv.conf not populated in iscsi root
ProblemType: Bug
DistroRelease: Ubuntu 15.10
Package: open-iscsi 2.0.873-3ubuntu11
ProcVersionSign
Uname: Linux 3.19.0-20-generic x86_64
ApportVersion: 2.17.3-0ubuntu4
Architecture: amd64
Date: Tue Jun 9 15:11:06 2015
ProcEnviron:
TERM=linux
PATH=(custom, no user)
XDG_RUNTIME_
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: open-iscsi
UpgradeStatus: No upgrade log present (probably fresh install)
Related branches
| Scott Moser (smoser) wrote : | #1 |
| Scott Moser (smoser) wrote : | #2 |
| summary: |
- resolvconf not updated by open-iscsi systemd job + resolvconf not updated by /lib/systemd/system/ifup@.service.d/open- + iscsi.conf |
| Changed in open-iscsi (Ubuntu): | |
| status: | New → Confirmed |
| importance: | Undecided → High |
| Martin Pitt (pitti) wrote : | #3 |
I tried this on a virgin wily cloud image. I installed open-iscsi, added the set -x/exec 2>/run/
| Changed in open-iscsi (Ubuntu): | |
| status: | Confirmed → Incomplete |
| tags: | added: systemd-boot |
| Scott Moser (smoser) wrote : | #4 |
Martin,
# systemctl status -l ifup@*.service; echo $?
0
The difference between your scenario and mine is that the NIC has been brougt up in the initramfs and is using iscsi root, so you can't bounce the nic, so ifup doesnt occur.
$ cat /proc/cmdline
nomodeset iscsi_target_
The README at http://
| Scott Moser (smoser) wrote : | #5 |
Just for reference, in vivid (working):
$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 192.168.122.1
$ uname -r
3.19.0-18-generic
$ cat /proc/cmdline
nomodeset iscsi_target_
$ cat /run/initramfs/
eth0
$ cat /run/net-eth0.conf
DEVICE='eth0'
PROTO='dhcp'
IPV4ADDR=
IPV4BROADCAST=
IPV4NETMASK=
IPV4GATEWAY=
IPV4DNS0=
IPV4DNS1='0.0.0.0'
HOSTNAME=
DNSDOMAIN=''
NISDOMAIN=''
ROOTSERVER=
ROOTPATH=''
filename=''
UPTIME='29'
DHCPLEASETIME=
DOMAINSEARCH=''
$ cat /run/network/
eth0=eth0
lo=lo
$ sudo systemctl status -l ifup@*.service
sudo: unable to resolve host ubuntu
● <email address hidden> - ifup for eth0
Loaded: loaded (/lib/systemd/
Drop-In: /lib/systemd/
Active: active (exited) since Wed 2015-06-10 12:56:45 UTC; 3min 52s ago
Process: 514 ExecStart=/bin/sh -ec ifup --allow=hotplug %I; ifup --allow=auto %I; if ifquery %I >/dev/null; then ifquery --state %I >/dev/null; fi (code=exited, status=0/SUCCESS)
Process: 455 ExecStartPre=
Main PID: 514 (code=exited, status=0/SUCCESS)
Jun 10 12:56:45 ubuntu systemd[1]: <email address hidden> changed start-pre -> running
Jun 10 12:56:45 ubuntu systemd[1]: Job <email address hidden>/start finished, result=done
Jun 10 12:56:45 ubuntu systemd[1]: Started ifup for eth0.
Jun 10 12:56:45 ubuntu systemd[514]: Executing: /bin/sh -ec 'ifup --allow=hotplug eth0; ifup --allow=auto eth0; if ifquery eth0 >/dev/null; then ifquery --state eth0 >/dev/null; fi'
Jun 10 12:56:45 ubuntu sh[514]: ifup: interface eth0 already configured
Jun 10 12:56:45 ubuntu sh[514]: ifup: interface eth0 already configured
Jun 10 12:56:45 ubuntu systemd[1]: Child 514 belongs to <email address hidden>
Jun 10 12:56:45 ubuntu systemd[1]: <email address hidden>: main process exited, code=exited, status=0/SUCCESS
Jun 10 12:56:45 ubuntu systemd[1]: <email address hidden> changed running -> exited
Jun 10 12:56:45 ubuntu systemd[1]: <email address hidden>: cgroup is empty
| Changed in open-iscsi (Ubuntu): | |
| status: | Incomplete → Confirmed |
| Martin Pitt (pitti) wrote : | #6 |
I reproduced such a VM. The reason is that /etc/network/
This worked "by accident" in vivid as we called ifup@.service on all interfaces (regardless whether they were actually configured in /e/n/interfaces and auto/allow-
I see that under upstart that wasn't hooked into ifupdown, but came from /etc/init/
| Martin Pitt (pitti) wrote : | #7 |
This works again with adding this udev rule:
$ cat /lib/udev/
SUBSYSTEM=="net", ACTION=="add", RUN+="/
SUBSYSTEM=="net", ACTION=="remove", RUN+="/
In my test I removed /etc/init/
| Changed in open-iscsi (Ubuntu): | |
| status: | Confirmed → In Progress |
| assignee: | nobody → Martin Pitt (pitti) |
| Scott Moser (smoser) wrote : | #8 |
Pitti, that change is fine with me. I can't immediately see a need for someone to ifup or ifdown a device and need that hook to run.
The one thing that is important is that the interface found in /run/initramfs/
/lib/open-
| Martin Pitt (pitti) wrote : | #9 |
> should not be brought down
Ah, then we don't really need to care about ifupdown integration at all. I. e. even if you do call ifdown, we should *not* invoke "net-interface-
| Changed in open-iscsi (Ubuntu): | |
| status: | In Progress → Fix Committed |
| Launchpad Janitor (janitor) wrote : | #10 |
This bug was fixed in the package open-iscsi - 2.0.873-3ubuntu12
---------------
open-iscsi (2.0.873-3ubuntu12) wily; urgency=medium
* Drop debian/
wily and the whole idea of net-interface-
from fiddling with the iscsi interface. Replace with udev rules
(debian/
on ifupdown or a particular init system. (LP: #1463461)
* Drop debian/
now. Also clean it up on upgrades.
-- Martin Pitt <email address hidden> Thu, 11 Jun 2015 11:58:29 +0200
| Changed in open-iscsi (Ubuntu): | |
| status: | Fix Committed → Fix Released |
| description: | updated |


'systemctl status open-iscsi' was of no relevance.
I believe that /lib/systemd/ system/ ifup@.service. d/open- iscsi.conf is supposed to be called but is not being called. iscsi/net- interface- handler which handles updating resolvconf
that calls /lib/open-
I've added code to /lib/open- iscsi/net- interface- handler like: open-iscsi. out 2>&1
exec >>/run/
echo "$(date -R): $*"
set -x
and the file doesn't even exist, so it appears not being run.