diff -Nru partman-iscsi-40ubuntu3/debian/changelog partman-iscsi-40ubuntu4.18.10.1/debian/changelog --- partman-iscsi-40ubuntu3/debian/changelog 2016-03-02 14:55:00.000000000 -0300 +++ partman-iscsi-40ubuntu4.18.10.1/debian/changelog 2019-03-07 15:53:09.000000000 -0300 @@ -1,3 +1,13 @@ +partman-iscsi (40ubuntu4.18.10.1) cosmic; urgency=medium + + * Add support for different network interfaces and iscsi_auto for iBFT. (LP: #1817321) + - debian/partman-iscsi.template: add partman-iscsi/iscsi_auto option. + - finish.d/iscsi_settings: handle non-default interface for iSCSI. + - finish.d/iscsi_settings: check option to include ISCSI_AUTO=true + instead of ISCSI_* variables in /etc/iscsi/iscsi.initramfs. + + -- Mauricio Faria de Oliveira Thu, 07 Mar 2019 15:53:09 -0300 + partman-iscsi (40ubuntu3) xenial; urgency=medium * choose_partition/iscsi/do_option: make use of iscsi_start rather than just diff -Nru partman-iscsi-40ubuntu3/debian/partman-iscsi.templates partman-iscsi-40ubuntu4.18.10.1/debian/partman-iscsi.templates --- partman-iscsi-40ubuntu3/debian/partman-iscsi.templates 2016-03-01 17:42:15.000000000 -0300 +++ partman-iscsi-40ubuntu4.18.10.1/debian/partman-iscsi.templates 2019-03-07 15:53:09.000000000 -0300 @@ -104,3 +104,10 @@ Logging into the iSCSI target ${TARGET} on ${PORTAL} failed. . Check /var/log/syslog or see virtual console 4 for the details. + +Template: partman-iscsi/iscsi_auto +Type: boolean +Default: false +Description: for internal use; can be preseeded + Use ISCSI_AUTO=true instead of the ISCSI_* variables + in the /etc/iscsi/iscsi.initramfs configuration file. diff -Nru partman-iscsi-40ubuntu3/finish.d/iscsi_settings partman-iscsi-40ubuntu4.18.10.1/finish.d/iscsi_settings --- partman-iscsi-40ubuntu3/finish.d/iscsi_settings 2015-12-02 14:26:47.000000000 -0200 +++ partman-iscsi-40ubuntu4.18.10.1/finish.d/iscsi_settings 2019-03-07 15:53:09.000000000 -0300 @@ -15,6 +15,17 @@ fi } +get_address_interface () { + local address="$1" + [ -n "$address" ] || return 1 + + local dev="$(ip route get "$address" 2>/dev/null | \ + grep -w dev | tr -s ' ' | cut -d' ' -f3)" + [ -d "/sys/class/net/$dev" ] || return 1 + + address_interface="$dev" +} + have_iscsi= portal= target= @@ -64,28 +75,48 @@ ip="${portal%%:*}" port="${portal#*:}" mkdir -p /target/etc/iscsi - get_default_interface - if [ -f "/sys/class/net/$default_interface/address" ]; then + + # The network interface for iSCSI may not be the default interface. + # Try to detect it based on iSCSI portal IP address, and prefer it. + if get_address_interface "$ip"; then + iscsi_interface="$address_interface" + elif get_default_interface; then + iscsi_interface="$default_interface" + else + iscsi_interface="" + fi + + db_get partman-iscsi/iscsi_auto || RET="false" + if [ "$RET" = true ]; then cat >>/target/etc/iscsi/iscsi.initramfs <>/target/etc/iscsi/iscsi.initramfs <>/target/etc/iscsi/iscsi.initramfs <>/target/etc/iscsi/iscsi.initramfs <>/target/etc/iscsi/iscsi.initramfs <>/target/etc/iscsi/iscsi.initramfs <>/target/etc/iscsi/iscsi.initramfs <>/target/etc/iscsi/iscsi.initramfs <