]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(multipath): check if mpathconf is available
authorMartin Wilck <mwilck@suse.com>
Tue, 7 Dec 2021 17:30:16 +0000 (18:30 +0100)
committerJóhann B. Guðmundsson <johannbg@gmail.com>
Wed, 2 Feb 2022 22:47:25 +0000 (22:47 +0000)
Not all distributions utilize and ship the mpathconf utilitiy.
Avoid error messages and systemd complaints about
multipathd-configure.service in this case.

modules.d/90multipath/module-setup.sh

index 05222389e21e82834b587349ec82afc3f4e43c62..541e243aa6985258ff2115bbdb44c4290aab1561 100755 (executable)
@@ -60,6 +60,10 @@ installkernel() {
     hostonly='' dracut_instmods -o -s "$_funcs" "=drivers/scsi" "=drivers/md" ${_s390drivers:+"$_s390drivers"}
 }
 
+mpathconf_installed() {
+    command -v mpathconf &> /dev/null
+}
+
 # called by dracut
 install() {
     local -A _allow
@@ -104,7 +108,8 @@ install() {
         /etc/multipath/* \
         "$config_dir"/*
 
-    [[ $hostonly ]] && [[ $hostonly_mode == "strict" ]] && {
+    mpathconf_installed \
+        && [[ $hostonly ]] && [[ $hostonly_mode == "strict" ]] && {
         for_each_host_dev_and_slaves_all add_hostonly_mpath_conf
         if ((${#_allow[@]} > 0)); then
             local -a _args
@@ -128,9 +133,11 @@ install() {
     fi
 
     if dracut_module_included "systemd"; then
-        inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service"
+        if mpathconf_installed; then
+            inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service"
+            $SYSTEMCTL -q --root "$initdir" enable multipathd-configure.service
+        fi
         inst_simple "${moddir}/multipathd.service" "${systemdsystemunitdir}/multipathd.service"
-        $SYSTEMCTL -q --root "$initdir" enable multipathd-configure.service
         $SYSTEMCTL -q --root "$initdir" enable multipathd.service
     else
         inst_hook pre-trigger 02 "$moddir/multipathd.sh"