Package: multipath-tools
Version: 0.9.4-3+deb12u1
Severity: important

Dear Maintainer,

I had to do some minor changes to multipath-tools to fresh install a new system on SAN disks only.

These I want to report. The changes are:

1. Add conflict= lines to multipathd.socket file for systemd
2. ln -s /lib/multipath /lib64

Installation image was debian-12.6.0-amd64-netinst.iso

Host bus adapter is Fibre Channel: Emulex Corporation LPe31000/LPe32000

SAN Storage is a Dell Compellant with 5 LUNs, used as:
 - /boot + EFI Partition
 - /
 - /tmp
 - /var
 - swap

1. I decided not to use the default initramfs-tools as it seems to miss code that checks /etc/fstab and waits for all required FC LUN's to appear (which usually takes up to 7-9s at my site), so system start always fails.

Instead I installed dracut as initrd. To my observations it waits reliable for the required LUN's to appear but afterwards hangs forever in initrd-cleanup.

After some investigation it seems that dracut stops multipathd after LUN detection completes, but it immediately gets restarted again by multipathd.socket so blocking the state transition of initrd-cleanup.

After adding the same conflict= lines from multipathd.service to multipathd.socket and doing a dracut -f this does not happen any more.

--- lib/systemd/system/multipathd.socket.orig 2024-08-08 15:29:15.193540154 +0200 +++ lib/systemd/system/multipathd.socket 2024-08-08 15:29:21.417542212 +0200
@@ -1,6 +1,8 @@
 [Unit]
 Description=multipathd control socket
 DefaultDependencies=no
+Conflicts=shutdown.target
+Conflicts=initrd-cleanup.service
 ConditionKernelCommandLine=!nompath
 ConditionKernelCommandLine=!multipath=off
 ConditionVirtualization=!container

Keeping Logfiles from inside the hanging initrd was very difficult for me, I tried to put

rd.debug rd.info rd.break

to kernel cmdline and somehow managed to save some log information to an extra partition. If you need more logs please let me know.

Some output from the logfile I managed to keep:

multipathd get's stopped:

[ 9.029421] localhost systemd[1]: multipathd.service: Job 156 multipathd.service/stop finished, result=done

multipathd.socket changes to listening:

[ 9.029454] localhost systemd[1]: multipathd.socket: Changed running -> listening

And systemd gets traffic on the socket and starts the service again:

[    9.029535] localhost systemd[1]: multipathd.socket: Incoming traffic
[ 9.029549] localhost systemd[1]: multipathd.service: Trying to enqueue job multipathd.service/start/replace [ 9.029590] localhost systemd[1]: multipathd.service: Installed new job multipathd.service/start as 157 [ 9.029603] localhost systemd[1]: multipathd.service: Enqueued job multipathd.service/start as 157 [ 9.029616] localhost systemd[1]: multipathd.socket: Changed listening -> running


This is the output from "grep multipathd logfile". Let me know if you need the whole file.

[ 2.076017] localhost systemd[1]: unit_file_build_name_map: normal unit file: /lib/systemd/system/multipathd.socket [ 2.076025] localhost systemd[1]: unit_file_build_name_map: normal unit file: /lib/systemd/system/multipathd.service [ 2.101366] localhost systemd[1]: multipathd.service: Installed new job multipathd.service/start as 27 [ 2.361731] localhost (modp[229]: multipathd.service: Executing: /sbin/modprobe dm-multipath
[    2.574658] localhost multipathd[287]: multipathd v0.9.4: start up
[ 2.574658] localhost multipathd[287]: reconfigure: setting up paths and maps [ 3.763827] localhost (ltip[287]: multipathd.service: Executing: /sbin/multipathd -d -s [ 3.764262] localhost systemd[1]: multipathd.service: Got notification message from PID 287 (STATUS=startup) [ 3.764275] localhost systemd[1]: multipathd.service: Got notification message from PID 287 (STATUS=configure) [ 3.765260] localhost systemd[1]: multipathd.service: Got notification message from PID 287 (STATUS=up) [ 3.765272] localhost systemd[1]: multipathd.service: Got notification message from PID 287 (READY=1) [ 3.765285] localhost systemd[1]: multipathd.service: Changed start -> running [ 3.765298] localhost systemd[1]: multipathd.service: Job 27 multipathd.service/start finished, result=done [ 3.765312] localhost systemd[1]: Started multipathd.service - Device-Mapper Multipath Device Controller. [ 3.765448] localhost systemd[1]: multipathd.socket: Changed listening -> running [ 6.725648] localhost multipathd[287]: mail6_tmp: addmap [0 20971520 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 1 1 8:48 1] [ 6.823606] localhost multipathd[287]: sdd [8:48]: path added to devmap mail6_tmp [ 6.823606] localhost multipathd[287]: mail6_var: addmap [0 155189248 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 1 1 8:64 1] [ 6.856524] localhost multipathd[287]: sde [8:64]: path added to devmap mail6_var [ 6.861086] localhost multipathd[287]: mail6_boot: addmap [0 2097152 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 1 1 8:0 1] [ 6.932086] localhost multipathd[287]: sda [8:0]: path added to devmap mail6_boot [ 6.932086] localhost multipathd[287]: mail6_swap: addmap [0 4194304 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 1 1 8:32 1] [ 6.968139] localhost multipathd[287]: sdc [8:32]: path added to devmap mail6_swap [ 7.466211] localhost multipathd[287]: mail6_boot: reload [0 2097152 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:0 1 8:80 1] [ 7.508901] localhost multipathd[287]: sdf [8:80]: path added to devmap mail6_boot [ 7.516745] localhost multipathd[287]: mail6_tmp: reload [0 20971520 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:48 1 8:128 1] [ 7.569157] localhost multipathd[287]: sdi [8:128]: path added to devmap mail6_tmp [ 7.577696] localhost multipathd[287]: mail6_swap: reload [0 4194304 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:32 1 8:112 1] [ 7.634478] localhost multipathd[287]: sdh [8:112]: path added to devmap mail6_swap [ 7.663410] localhost multipathd[287]: mail6_root: addmap [0 33554432 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:16 1 8:96 1] [ 7.706075] localhost multipathd[287]: sdg [8:96]: path added to devmap mail6_root [ 7.728204] localhost multipathd[287]: mail6_var: reload [0 155189248 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:64 1 8:144 1] [ 7.752941] localhost multipathd[287]: sdj [8:144]: path added to devmap mail6_var [ 8.773304] localhost systemd[1]: multipathd.service: Installed new job multipathd.service/stop as 156 [ 8.773684] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=5 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.773782] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=6 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
[    8.774157] localhost systemd[1]: multipathd.service: Thawing unit.
[ 8.774210] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=9 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a
[    8.774257] localhost multipathd[287]: multipathd: shut down
[ 8.775151] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=10 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.775360] localhost systemd[1]: multipathd.service: Changed running -> stop-sigterm [ 8.775452] localhost systemd[1]: Stopping multipathd.service - Device-Mapper Multipath Device Controller... [ 8.777035] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=11 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.777214] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=12 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.777322] localhost systemd[1]: multipathd.service: Got notification message from PID 287 (STATUS=shutdown) [ 8.777376] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=14 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.777421] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=15 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.777481] localhost systemd[1]: multipathd.service: Got notification message from PID 287 (STOPPING=1) [ 8.777528] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=16 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.777576] localhost systemd[1]: Sent message type=signal sender=org.freedesktop.systemd1 destination=n/a path=/org/freedesktop/systemd1/unit/multipathd_2eservice interface=org.freedesktop.DBus.Properties member=PropertiesChanged cookie=17 reply_cookie=0 signature=sa{sv}as error-name=n/a error-message=n/a [ 8.777619] localhost systemd[1]: multipathd.service: Got notification message from PID 287 (ERRNO=0) [ 8.980593] localhost systemd[1]: Received SIGCHLD from PID 287 (multipathd). [ 8.988095] localhost systemd[1]: Child 287 (multipathd) died (code=exited, status=0/SUCCESS) [ 8.988190] localhost dracut-pre-pivot[950]: + [ -e //lib/dracut/hooks/cleanup/80-multipathd-needshutdown.sh ] [ 8.988190] localhost dracut-pre-pivot[950]: + . //lib/dracut/hooks/cleanup/80-multipathd-needshutdown.sh [ 9.027334] localhost systemd[1]: multipathd.service: Child 287 belongs to multipathd.service.
[    9.027367] localhost multipathd[962]: multipathd v0.9.4: start up
[ 9.027367] localhost multipathd[962]: reconfigure: setting up paths and maps [ 9.027367] localhost multipathd[962]: mail6_boot: reload [0 2097152 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:0 1 8:80 1] [ 9.029347] localhost systemd[1]: multipathd.service: Main process exited, code=exited, status=0/SUCCESS (success) [ 9.029371] localhost systemd[1]: multipathd.service: Deactivated successfully. [ 9.029391] localhost systemd[1]: multipathd.service: Service restart not allowed. [ 9.029406] localhost systemd[1]: multipathd.service: Changed stop-sigterm -> dead [ 9.029421] localhost systemd[1]: multipathd.service: Job 156 multipathd.service/stop finished, result=done [ 9.029436] localhost systemd[1]: Stopped multipathd.service - Device-Mapper Multipath Device Controller. [ 9.029454] localhost systemd[1]: multipathd.socket: Changed running -> listening [ 9.029470] localhost systemd[1]: multipathd.service: Consumed 273ms CPU time. [ 9.029488] localhost systemd[1]: Cannot stat /run/credentials/multipathd.service: No such file or directory [ 9.029503] localhost systemd[1]: multipathd.service: Control group is empty.
[    9.029535] localhost systemd[1]: multipathd.socket: Incoming traffic
[ 9.029549] localhost systemd[1]: multipathd.service: Trying to enqueue job multipathd.service/start/replace [ 9.029590] localhost systemd[1]: multipathd.service: Installed new job multipathd.service/start as 157 [ 9.029603] localhost systemd[1]: multipathd.service: Enqueued job multipathd.service/start as 157 [ 9.029616] localhost systemd[1]: multipathd.socket: Changed listening -> running [ 9.029644] localhost systemd[1]: multipathd.service: ConditionVirtualization=!container succeeded. [ 9.029658] localhost systemd[1]: multipathd.service: ConditionKernelCommandLine=!multipath=off succeeded. [ 9.029671] localhost systemd[1]: multipathd.service: ConditionKernelCommandLine=!rd_NO_MULTIPATH succeeded. [ 9.029684] localhost systemd[1]: multipathd.service: ConditionKernelCommandLine=!rd.multipath=0 succeeded. [ 9.029696] localhost systemd[1]: multipathd.service: ConditionKernelCommandLine=!nompath succeeded. [ 9.029709] localhost systemd[1]: multipathd.service: Will spawn child (service_enter_start_pre): /sbin/modprobe [ 9.029726] localhost systemd[1]: multipathd.service: About to execute /sbin/modprobe dm-multipath [ 9.029743] localhost systemd[1]: multipathd.service: Forked /sbin/modprobe as 961 [ 9.029757] localhost systemd[1]: multipathd.service: Changed dead -> start-pre [ 9.029769] localhost systemd[1]: Starting multipathd.service - Device-Mapper Multipath Device Controller... [ 9.029785] localhost (modp[961]: multipathd.service: Executing: /sbin/modprobe dm-multipath [ 9.029846] localhost systemd[1]: multipathd.service: Child 961 belongs to multipathd.service. [ 9.029862] localhost systemd[1]: multipathd.service: Control process exited, code=exited, status=0/SUCCESS (success) [ 9.029878] localhost systemd[1]: multipathd.service: Got final SIGCHLD for state start-pre. [ 9.029893] localhost systemd[1]: multipathd.service: Will spawn child (service_enter_start): /sbin/multipathd [ 9.029906] localhost systemd[1]: multipathd.service: Passing 1 fds to service [ 9.029920] localhost systemd[1]: multipathd.service: About to execute /sbin/multipathd -d -s [ 9.029933] localhost systemd[1]: multipathd.service: Forked /sbin/multipathd as 962 [ 9.029946] localhost systemd[1]: multipathd.service: Changed start-pre -> start [ 9.029958] localhost (ltip[962]: multipathd.service: Executing: /sbin/multipathd -d -s [ 9.029978] localhost systemd[1]: multipathd.service: Got notification message from PID 962 (STATUS=startup) [ 9.029992] localhost systemd[1]: multipathd.service: Got notification message from PID 962 (STATUS=configure) [ 9.037776] localhost multipathd[962]: mail6_root: reload [0 33554432 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:16 1 8:96 1] [ 9.093797] localhost multipathd[962]: mail6_swap: reload [0 4194304 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:32 1 8:112 1] [ 9.146576] localhost multipathd[962]: mail6_tmp: reload [0 20971520 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:48 1 8:128 1] [ 9.213730] localhost multipathd[962]: mail6_var: reload [0 155189248 multipath 1 queue_if_no_path 1 alua 1 1 service-time 0 2 1 8:64 1 8:144 1] [ 9.253482] localhost systemd[1]: multipathd.service: Got notification message from PID 962 (STATUS=up) [ 9.253561] localhost systemd[1]: multipathd.service: Got notification message from PID 962 (READY=1) [ 9.253622] localhost systemd[1]: multipathd.service: Changed start -> running [ 9.253683] localhost systemd[1]: multipathd.service: Job 157 multipathd.service/start finished, result=done [ 9.253799] localhost systemd[1]: Started multipathd.service - Device-Mapper Multipath Device Controller.

2. dracut does not search for the shared libraries for multipathd at
 /lib/multipath
but at
 /lib64/multipath
so the initrd does not contain the required shared libraries.

I'm unsure if it's a bug of dracut or multipath-tools.
Setting a softlink /lib64/multipath -> /lib/multipath/ solves it.

Best regards,
  Th. Schlichting

Reply via email to