1. Testing restart on package upgrade $ lxc launch ubuntu:jammy j --vm $ lxc shell j # pidof multipathd 2444 # echo "deb http://archive.ubuntu.com/ubuntu $(lsb_release -cs)-proposed restricted main multiverse universe" | sudo tee /etc/apt/sources.list.d/ubuntu-$(lsb_release -cs)-proposed.list $ apt update -y && apt install -y multipath-tools -t $(lsb_release -cs)-proposed Preparing to unpack .../kpartx_0.8.8-1ubuntu1.22.04.3_amd64.deb ... Unpacking kpartx (0.8.8-1ubuntu1.22.04.3) over (0.8.8-1ubuntu1.22.04.1) ... Preparing to unpack .../multipath-tools_0.8.8-1ubuntu1.22.04.3_amd64.deb ... Unpacking multipath-tools (0.8.8-1ubuntu1.22.04.3) over (0.8.8-1ubuntu1.22.04.1) ... Setting up kpartx (0.8.8-1ubuntu1.22.04.3) ... Setting up multipath-tools (0.8.8-1ubuntu1.22.04.3) ... The warning about having to reload systemd units can be safely ignored. Please see LP: #203509 8 for details. Warning: The unit file, source configuration file or drop-ins of multipathd.service changed on disk. Run 'systemctl daemon-reload' to reload units. Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 142. Removing obsolete conffile /etc/init.d/multipath-tools ... < cut here> # pidof multipathd 3118 # systemctl status multipathd.{service,socket} | grep Active -B2 ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-10-16 14:59:19 UTC; 37s ago -- ○ multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; vendor preset: enabled) Active: inactive (dead) since Mon 2023-10-16 14:59:18 UTC; 38s ago 2. Downgrading # apt install -y multipath-tools=0.8.8-1ubuntu1.22.04.1 --allow-downgrades # pidof multipathd 3512 # systemctl status multipathd.{service,socket} | grep Active -B2 ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-10-16 15:01:30 UTC; 29s ago -- ● multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-10-16 15:01:29 UTC; 29s ago 3. Installing a fresh package (no warning message here because dpkg is lt-nl) # apt purge multipath-tools -y # apt install -y multipath-tools -t $(lsb_release -cs)-proposed Reading package lists... Done Building dependency tree... Done Reading state information... Done Suggested packages: multipath-tools-boot The following NEW packages will be installed: multipath-tools 0 upgraded, 1 newly installed, 0 to remove and 53 not upgraded. Need to get 331 kB of archives. After this operation, 1252 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu jammy-proposed/main amd64 multipath-tools amd64 0.8.8-1ubuntu1.22.04.3 [331 kB] Fetched 331 kB in 1s (461 kB/s) Selecting previously unselected package multipath-tools. (Reading database ... 56636 files and directories currently installed.) Preparing to unpack .../multipath-tools_0.8.8-1ubuntu1.22.04.3_amd64.deb ... Unpacking multipath-tools (0.8.8-1ubuntu1.22.04.3) ... Setting up multipath-tools (0.8.8-1ubuntu1.22.04.3) ... Created symlink /etc/systemd/system/multipath-tools.service → /lib/systemd/system/multipathd.s ervice. Created symlink /etc/systemd/system/sysinit.target.wants/multipathd.service → /lib/systemd/sys tem/multipathd.service. Created symlink /etc/systemd/system/sockets.target.wants/multipathd.socket → /lib/systemd/syst em/multipathd.socket. Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 142. Processing triggers for man-db (2.10.2-1) ... Processing triggers for libc-bin (2.35-0ubuntu3.4) ... Scanning processes... Scanning linux images... Running kernel seems to be up-to-date. No services need to be restarted. No containers need to be restarted. No user sessions are running outdated binaries. No VM guests are running outdated hypervisor (qemu) binaries on this host. # systemctl status multipathd.{service,socket} | grep Active -B2 ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-10-16 15:03:20 UTC; 15min ago -- ○ multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; vendor preset: enabled) Active: inactive (dead) 4. Upgrading to a future package # wget https://launchpad.net/ubuntu/+archive/primary/+files/kpartx_0.8.8-1ubuntu1.22.04.3_amd64.deb # wget https://launchpad.net/ubuntu/+archive/primary/+files/multipath-tools_0.8.8-1ubuntu1.22.04.3_amd64.deb # mkdir tmp # dpkg-deb -R multipath-tools_0.8.8-1ubuntu1.22.04.3_amd64.deb tmp/ # sed -i s/1ubuntu1.22.04.3/1ubuntu1.22.04.4/g tmp/DEBIAN/control # dpkg-deb -b tmp/ mpath22.04.4.deb # mkdir kpartxtmp # dpkg-deb -R kpartx_0.8.8-1ubuntu1.22.04.3_amd64.deb kpartxtmp/ # sed -i s/1ubuntu1.22.04.3/1ubuntu1.22.04.4/g kpartxtmp/DEBIAN/control # dpkg-deb -b kpartxtmp/ kpartx22.04.4.deb # dpkg -i kpartx22.04.4.deb # dpkg -i mpath22.04.4.deb # dpkg -l multipath-tools | grep multipath-tools | awk '{print $3}' 0.8.8-1ubuntu1.22.04.4 # systemctl status multipathd.{service,socket} | grep Active -B2 ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2023-10-16 15:33:03 UTC; 5s ago -- ○ multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; vendor preset: enabled) Active: inactive (dead) 5. Testing multipath-tools functionality after upgading from current main # apt purge multipath-tools # apt install -y multipath-tools=0.8.8-1ubuntu1.22.04.1 # apt install -y lsscsi open-iscsi tgt Copy the following lines to a script and execute it ``` targetname="iqn.2016-11.foo.com:target.iscsi" cwd=$(pwd) testdir="/mnt/tgtmpathtest" localhost="127.0.0.1" portal="${localhost}:3260" maxpaths=4 backfn="backingfile" expectwwid="60000000000000000e00000000010001" testdisk="/dev/disk/by-id/wwn-0x${expectwwid}" ### Setup mpath devices # Restart tgtd to make sure modules are all loaded service tgt restart || echo "Failed to restart tgt" >&2 # prep SINGLE test file truncate --size 100M ${backfn} # create target tgtadm --lld iscsi --op new --mode target --tid 1 -T "${targetname}" # allow all to bind the target tgtadm --lld iscsi --op bind --mode target --tid 1 -I ALL # set backing file tgtadm --lld iscsi --op new --mode logicalunit --tid 1 --lun 1 -b "${cwd}/${backfn}" # scan for targets (locally) iscsiadm --mode discovery --type sendtargets --portal ${localhost} # login echo "login #1" iscsiadm --mode node --targetname "${targetname}" --portal ${portal} --login # duplicate this session (always 1) for i in $(seq 2 ${maxpaths}) do     echo "extra login #${i}"     iscsiadm --mode session -r 1 --op new done udevadm settle sleep 5 # sleep a bit to allow device to be created. # status summary echo "Status after initial setup" tgtadm --lld iscsi --mode target --op show tgtadm --lld iscsi --op show --mode conn --tid 1 iscsiadm --mode session -P 1 lsscsi -liv multipath -v3 -ll dmsetup table echo "Test WWN should now point to DM" readlink "${testdisk}" | grep dm ``` # multipath -ll mpatha (360000000000000000e00000000010001) dm-0 IET,VIRTUAL-DISK size=100M features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 8:0:0:1 sdc 8:32 active ready running |-+- policy='service-time 0' prio=1 status=enabled | `- 7:0:0:1 sdb 8:16 active ready running |-+- policy='service-time 0' prio=1 status=enabled | `- 10:0:0:1 sde 8:64 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 9:0:0:1 sdd 8:48 active ready running # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 40.8M 1 loop /snap/snapd/20092 loop1 7:1 0 111.9M 1 loop /snap/lxd/24322 loop2 7:2 0 63.5M 1 loop /snap/core20/2015 sda 8:0 0 10G 0 disk ├─sda1 8:1 0 9.9G 0 part / ├─sda14 8:14 0 4M 0 part └─sda15 8:15 0 106M 0 part /boot/efi sdb 8:16 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath sdc 8:32 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath sdd 8:48 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath sde 8:64 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath # apt install -y multipath-tools -t $(lsb_release -cs)-proposed # dpkg -l multipath-tools | grep multipath-tools | awk '{print $3}' 0.8.8-1ubuntu1.22.04.3 # multipath -ll mpatha (360000000000000000e00000000010001) dm-0 IET,VIRTUAL-DISK size=100M features='0' hwhandler='0' wp=rw |-+- policy='service-time 0' prio=1 status=active | `- 8:0:0:1 sdc 8:32 active ready running |-+- policy='service-time 0' prio=1 status=enabled | `- 7:0:0:1 sdb 8:16 active ready running |-+- policy='service-time 0' prio=1 status=enabled | `- 10:0:0:1 sde 8:64 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 9:0:0:1 sdd 8:48 active ready running root@j:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 40.8M 1 loop /snap/snapd/20092 loop1 7:1 0 111.9M 1 loop /snap/lxd/24322 loop2 7:2 0 63.5M 1 loop /snap/core20/2015 sda 8:0 0 10G 0 disk ├─sda1 8:1 0 9.9G 0 part / ├─sda14 8:14 0 4M 0 part └─sda15 8:15 0 106M 0 part /boot/efi sdb 8:16 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath sdc 8:32 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath sdd 8:48 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath sde 8:64 0 100M 0 disk └─mpatha 253:0 0 100M 0 mpath