I've adjusted the description, including SRU template of this bug to better fit what we found out and the solution that was applied.
** Description changed: + === Begin SRU Template === + [Impact] + The systemd networking.service unit will bring down the loopback device (lo) + when it is stopped. This behavior differs from the behavior in other + Ubuntu releases (upstart's networking.conf), where 'lo' is not taken down. + + The problem that was seen was that iscsi root over ipv6 would hang on + shutdown. + + [Test Case] + Test is fairly simple and can be demonstrated in lxc container. + The key is really that the lo device should not have its link set down + after stopping networking.service. So, below: + out=$(ip address show dev lo up); [ -n "$out" ] && echo "$out" || echo empty + + should not show 'empty', but should have LOOPBACK,UP,LOWER in its + output. + + $ release=yakkety; name=y1 + $ lxc launch ubuntu-daily:$release $name + $ sleep 10 + $ lxc exec $name /bin/bash + + ## show only things that are up (note output has LOOPBACK,UP,LOWER_UP) + % ip link show dev lo + 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + + % ip address show dev lo up + 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + + ## Stop the service and show lo link is down (no 'UP' or 'LOWER_UP'). + % systemctl stop networking.service + % ip link show dev lo + 1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + % out=$(ip address show dev lo up); [ -n "$out" ] && echo "$out" || echo empty + empty + + ## Now enable proposed, install update, reboot and show. + % rel=$(lsb_release -sc) + % echo "deb http://archive.ubuntu.com/ubuntu $rel-proposed main" | + sudo tee /etc/apt/sources.list.d/proposed.list + % sudo apt update -qy && sudo apt install -qy ifupdown </dev/null + % dpkg-query --show ifupdown + ifupdown 0.8.13ubuntu3 + % sudo reboot + + ## in rebooted system + % ip link show dev lo + 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + % ip address show dev lo up + 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + % systemctl stop networking.service + % ip link show dev lo + 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + % out=$(ip address show dev lo up); [ -n "$out" ] && echo "$out" || echo empty + 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 + link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 + inet 127.0.0.1/8 scope host lo + valid_lft forever preferred_lft forever + inet6 ::1/128 scope host + valid_lft forever preferred_lft forever + + + [Regression Potential] + Should be pretty low. zesty and yakkety-proposed have this. + Taking down 'lo' is often cause of problems, and never the solution to + problems as far as I'm aware. + + [Other Info] + + === End SRU Template === + With the switch to systemd, all support for iscsi root (and other) filesystems disappeared, since shutdown yanks the rug out from under us. Rather than just relying on /etc/iscsi/iscsi.initramfs (which d-i creates..), the DEV check should be expanded to include iscsi devices, and networking.service ExecStop should honor those checks. Related bugs: - * bug 1229458: grub2 needed changes - * bug 1621615: network not configured when ipv6 netbooted into cloud-init - * bug 1621507: ipv6 network boot does not work - - [Impact] - - With the changes from the above, the iscsi root (at least in the ipv6 - case) gets disconneceted prior to clean shutdown (ifdown downs the - interface), resulting in a failure to enlist, commission, or deploy - cleanly under MAAS. (and a failure to cleanly unmount the root - filesystem when it is over iscsi.) - - [Test Case] - - Given a MAAS 2.0 installation, and the packages in the other bugs, - attempt to enlist, commission, or deploy a host with xenial. - - [Regression potential] - - This restores the pre-xenial behavior of not shutting down the interface - if there are network drives at the time that neworking is stopped - (making it a no-op.) The additional change is to detect "/dev/disk/by- - path/*-iscsi-*" as a network disk, replacing the check for the existence - of /etc/iscsi/iscsi.initramfs, which was only created by debian- - installer (and maas until recently). + * bug 1229458: grub2 needed changes + * bug 1621615: network not configured when ipv6 netbooted into cloud-init + * bug 1621507: ipv6 network boot does not work -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to ifupdown in Ubuntu. https://bugs.launchpad.net/bugs/1629972 Title: networking stop incorrectly disconnects from (network) root filesystem Status in MAAS: Triaged Status in ifupdown package in Ubuntu: Fix Released Status in ifupdown source package in Xenial: In Progress Status in ifupdown source package in Yakkety: Fix Committed Status in ifupdown package in Debian: New Bug description: === Begin SRU Template === [Impact] The systemd networking.service unit will bring down the loopback device (lo) when it is stopped. This behavior differs from the behavior in other Ubuntu releases (upstart's networking.conf), where 'lo' is not taken down. The problem that was seen was that iscsi root over ipv6 would hang on shutdown. [Test Case] Test is fairly simple and can be demonstrated in lxc container. The key is really that the lo device should not have its link set down after stopping networking.service. So, below: out=$(ip address show dev lo up); [ -n "$out" ] && echo "$out" || echo empty should not show 'empty', but should have LOOPBACK,UP,LOWER in its output. $ release=yakkety; name=y1 $ lxc launch ubuntu-daily:$release $name $ sleep 10 $ lxc exec $name /bin/bash ## show only things that are up (note output has LOOPBACK,UP,LOWER_UP) % ip link show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 % ip address show dev lo up 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever ## Stop the service and show lo link is down (no 'UP' or 'LOWER_UP'). % systemctl stop networking.service % ip link show dev lo 1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 % out=$(ip address show dev lo up); [ -n "$out" ] && echo "$out" || echo empty empty ## Now enable proposed, install update, reboot and show. % rel=$(lsb_release -sc) % echo "deb http://archive.ubuntu.com/ubuntu $rel-proposed main" | sudo tee /etc/apt/sources.list.d/proposed.list % sudo apt update -qy && sudo apt install -qy ifupdown </dev/null % dpkg-query --show ifupdown ifupdown 0.8.13ubuntu3 % sudo reboot ## in rebooted system % ip link show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 % ip address show dev lo up 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever % systemctl stop networking.service % ip link show dev lo 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 % out=$(ip address show dev lo up); [ -n "$out" ] && echo "$out" || echo empty 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever [Regression Potential] Should be pretty low. zesty and yakkety-proposed have this. Taking down 'lo' is often cause of problems, and never the solution to problems as far as I'm aware. [Other Info] === End SRU Template === With the switch to systemd, all support for iscsi root (and other) filesystems disappeared, since shutdown yanks the rug out from under us. Rather than just relying on /etc/iscsi/iscsi.initramfs (which d-i creates..), the DEV check should be expanded to include iscsi devices, and networking.service ExecStop should honor those checks. Related bugs: * bug 1229458: grub2 needed changes * bug 1621615: network not configured when ipv6 netbooted into cloud-init * bug 1621507: ipv6 network boot does not work To manage notifications about this bug go to: https://bugs.launchpad.net/maas/+bug/1629972/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp