1. Testing restart on package upgrade $ lxc launch ubuntu:lunar l --vm $ lxc shell l # pidof multipathd 136 # 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-1ubuntu2.2_amd64.deb ... Unpacking kpartx (0.8.8-1ubuntu2.2) over (0.8.8-1ubuntu2) ... Preparing to unpack .../multipath-tools_0.8.8-1ubuntu2.2_amd64.deb ... Unpacking multipath-tools (0.8.8-1ubuntu2.2) over (0.8.8-1ubuntu2) ... Setting up kpartx (0.8.8-1ubuntu2.2) ... Setting up multipath-tools (0.8.8-1ubuntu2.2) ... The warning about having to reload systemd units can be safely ignored. Please see LP: #2035098 for detail s. 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 145. Removing obsolete conffile /etc/init.d/multipath-tools ... Processing triggers for man-db (2.11.2-1) ... Processing triggers for libc-bin (2.37-0ubuntu2.1) ... < cut here> # pidof multipathd 1622 # systemctl status multipathd.{service,socket} | grep Active -B2 ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/lib/systemd/system/multipathd.service; enabled; preset: enabled) Active: active (running) since Mon 2023-10-16 15:51:49 UTC; 36s ago -- ○ multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; preset: enabled) Active: inactive (dead) since Mon 2023-10-16 15:51:47 UTC; 37s ago 2. Downgrading # apt install -y multipath-tools=0.8.8-1ubuntu2 --allow-downgrades # pidof multipathd 1866 # systemctl status multipathd.{service,socket} | grep Active -B2 ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/lib/systemd/system/multipathd.service; enabled; preset: enabled) Active: active (running) since Mon 2023-10-16 15:52:57 UTC; 13s ago -- ● multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; preset: enabled) Active: active (running) since Mon 2023-10-16 15:52:57 UTC; 13s 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 40 not upgraded. Need to get 328 kB of archives. After this operation, 1231 kB of additional disk space will be used. Get:1 http://archive.ubuntu.com/ubuntu lunar-proposed/main amd64 multipath-tools amd64 0.8.8-1ubuntu2.2 [328 kB] Fetched 328 kB in 1s (588 kB/s) Selecting previously unselected package multipath-tools. (Reading database ... 57514 files and directories currently installed.) Preparing to unpack .../multipath-tools_0.8.8-1ubuntu2.2_amd64.deb ... Unpacking multipath-tools (0.8.8-1ubuntu2.2) ... Setting up multipath-tools (0.8.8-1ubuntu2.2) ... Created symlink /etc/systemd/system/multipath-tools.service → /lib/systemd/system/multipathd.service. Created symlink /etc/systemd/system/sysinit.target.wants/multipathd.service → /lib/systemd/system/multipat hd.service. Created symlink /etc/systemd/system/sockets.target.wants/multipathd.socket → /lib/systemd/system/multipath d.socket. Could not execute systemctl: at /usr/bin/deb-systemd-invoke line 145. Processing triggers for man-db (2.11.2-1) ... Processing triggers for libc-bin (2.37-0ubuntu2.1) ... 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; preset: enabled) Active: active (running) since Mon 2023-10-16 15:54:03 UTC; 35s ago -- ○ multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; preset: enabled) Active: inactive (dead) 4. Upgrading to a future package # wget https://launchpad.net/ubuntu/+archive/primary/+files/kpartx_0.8.8-1ubuntu2.2_amd64.deb # wget https://launchpad.net/ubuntu/+archive/primary/+files/multipath-tools_0.8.8-1ubuntu2.2_amd64.deb # mkdir tmp # dpkg-deb -R multipath-tools_0.8.8-1ubuntu2.2_amd64.deb tmp/ # sed -i s/1ubuntu2.2/1ubuntu2.3/g tmp/DEBIAN/control # dpkg-deb -b tmp/ mpath2.3.deb # mkdir kpartxtmp # dpkg-deb -R kpartx_0.8.8-1ubuntu2.2_amd64.deb kpartxtmp/ # sed -i s/1ubuntu2.2/1ubuntu2.3/g kpartxtmp/DEBIAN/control # dpkg-deb -b kpartxtmp/ kpartx2.3.deb # dpkg -i kpartx2.3.deb # dpkg -i mpath2.3.deb # dpkg -l multipath-tools | grep multipath-tools | awk '{print $3}' 0.8.8-1ubuntu2.3 # systemctl status multipathd.{service,socket} | grep Active -B2 ● multipathd.service - Device-Mapper Multipath Device Controller Loaded: loaded (/lib/systemd/system/multipathd.service; enabled; preset: enabled) Active: active (running) since Mon 2023-10-16 15:59:08 UTC; 11s ago -- ○ multipathd.socket - multipathd control socket Loaded: loaded (/lib/systemd/system/multipathd.socket; enabled; preset: enabled) Active: inactive (dead) 5. Testing multipath-tools functionality after upgading from current main # apt purge multipath-tools kpartx # apt install -y multipath-tools=0.8.8-1ubuntu2 # apt install -y lsscsi open-iscsi tgt # dpkg -l multipath-tools | grep multipath-tools | awk '{print $3}' 0.8.8-1ubuntu2 Copy the following lines to a script called “setup.sh” anywhere ``` 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 ``` # chmod +x setup.sh # ./setup.sh # 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 | `- 9:0:0:1 sdd 8:48 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 | `- 8:0:0:1 sdc 8:32 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 10:0:0:1 sde 8:64 active ready running # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 73.9M 1 loop /snap/core22/864 loop1 7:1 0 180.9M 1 loop /snap/lxd/25846 loop2 7:2 0 40.8M 1 loop /snap/snapd/20092 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 0s 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-1ubuntu2.2 # 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 | `- 9:0:0:1 sdd 8:48 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 | `- 8:0:0:1 sdc 8:32 active ready running `-+- policy='service-time 0' prio=1 status=enabled `- 10:0:0:1 sde 8:64 active ready running root@j:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 73.9M 1 loop /snap/core22/864 loop1 7:1 0 180.9M 1 loop /snap/lxd/25846 loop2 7:2 0 40.8M 1 loop /snap/snapd/20092 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