Skip to content

Commit

Permalink
multipath: add automatic configuration for multipath
Browse files Browse the repository at this point in the history
Add support for 'rd.multipath=default' for using the default
configuration on boot. The intended purpose for this is to help support
ostree-based image boots from multipathed devices (such as Fedora and
Red Hat CoreOS).
  • Loading branch information
Ben Howard authored and haraldh committed Apr 3, 2020
1 parent 3a043fe commit b8a92b7
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 2 deletions.
3 changes: 3 additions & 0 deletions dracut.cmdline.7.asc
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,9 @@ MULTIPATH
**rd.multipath=0**::
disable multipath detection
**rd.multipath=default**::
use default multipath settings
FIPS
~~~~
**rd.fips**::
Expand Down
7 changes: 5 additions & 2 deletions modules.d/90multipath/module-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,12 @@ install() {
dmsetup \
kpartx \
mpath_wait \
mpathconf \
mpathpersist \
multipath \
multipathd \
mpathpersist \
xdrgetuid \
xdrgetprio \
xdrgetuid \
/etc/xdrdevices.conf \
/etc/multipath.conf \
/etc/multipath/* \
Expand All @@ -109,7 +110,9 @@ install() {
fi

if dracut_module_included "systemd"; then
inst_simple "${moddir}/multipathd-configure.service" "${systemdsystemunitdir}/multipathd-configure.service"
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"
Expand Down
19 changes: 19 additions & 0 deletions modules.d/90multipath/multipathd-configure.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
[Unit]
Description=Device-Mapper Multipath Default Configuration
Before=iscsi.service iscsid.service lvm2-activation-early.service
Wants=systemd-udev-trigger.service systemd-udev-settle.service local-fs-pre.target
After=systemd-udev-trigger.service systemd-udev-settle.service
Before=local-fs-pre.target multipathd.service
DefaultDependencies=no
Conflicts=shutdown.target

ConditionKernelCommandLine=rd.multipath=default
ConditionPathExists=!/etc/multipath.conf

[Service]
Type=oneshot
ExecStartPre=-/usr/bin/mkdir -p /etc/multipath/multipath.conf.d
ExecStart=/usr/sbin/mpathconf --enable

[Install]
WantedBy=sysinit.target
5 changes: 5 additions & 0 deletions modules.d/90multipath/multipathd.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
#!/bin/sh

if [ "$(getarg rd.multipath)x" == "default" ] && [ ! -e /etc/multipath.conf ]; then
mkdir -p /etc/multipath/multipath.conf.d
mpathconf --enable
fi

if getargbool 1 rd.multipath -d -n rd_NO_MULTIPATH && [ -e /etc/multipath.conf ]; then
modprobe dm-multipath
multipathd -B || multipathd
Expand Down

0 comments on commit b8a92b7

Please sign in to comment.