c5432960d9
Update to the head of the upstream staging branch * Previous patches 0001-0042 are included in the source tarball * Patches 0001-0032 are from the upstream staging branch Rename redhat patches * Previous patches 0043-0053 are now patches 0033-0043 Change back to using readline instead of libedit * The code the uses readline has been isolated from the code that is licensed gpl v2 only. Add libmpathutil libraries to spec file Add multipathc program to spec file Add multipath.conf systemd tempfile configuration to spec file Misc spec file cleanups
108 lines
3.9 KiB
Diff
108 lines
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
Date: Wed, 15 Oct 2014 10:39:30 -0500
|
|
Subject: [PATCH] RH: don't start without a config file
|
|
|
|
If /etc/multipath.conf doesn't exist, don't start multipathd and blacklist
|
|
all devices when running multipath. A completely blank configuration file
|
|
is almost never what users want. Also, people may have the multipath
|
|
packages installed but don't want to use them. This patch provides a
|
|
simple way to disable multipath. Simply removing or renaming
|
|
/etc/multipath.conf will keep multipath from doing anything.
|
|
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
libmultipath/config.c | 13 +++++++++++++
|
|
libmultipath/config.h | 1 +
|
|
multipath/multipath.rules.in | 1 +
|
|
multipathd/multipathd.8 | 2 ++
|
|
multipathd/multipathd.service | 1 +
|
|
multipathd/multipathd.socket | 1 +
|
|
6 files changed, 19 insertions(+)
|
|
|
|
diff --git a/libmultipath/config.c b/libmultipath/config.c
|
|
index 5c5c0726..183b319d 100644
|
|
--- a/libmultipath/config.c
|
|
+++ b/libmultipath/config.c
|
|
@@ -966,6 +966,19 @@ int _init_config (const char *file, struct config *conf)
|
|
}
|
|
factorize_hwtable(conf->hwtable, builtin_hwtable_size, file);
|
|
validate_pctable(conf->overrides, 0, file);
|
|
+ } else {
|
|
+ condlog(0, "/etc/multipath.conf does not exist, blacklisting all devices.");
|
|
+ if (conf->blist_devnode == NULL) {
|
|
+ conf->blist_devnode = vector_alloc();
|
|
+ if (!conf->blist_devnode) {
|
|
+ condlog(0, "cannot allocate blacklist\n");
|
|
+ goto out;
|
|
+ }
|
|
+ }
|
|
+ if (store_ble(conf->blist_devnode, ".*", ORIGIN_NO_CONFIG)) {
|
|
+ condlog(0, "cannot store default no-config blacklist\n");
|
|
+ goto out;
|
|
+ }
|
|
}
|
|
|
|
conf->processed_main_config = 1;
|
|
diff --git a/libmultipath/config.h b/libmultipath/config.h
|
|
index 87947469..0dc89c16 100644
|
|
--- a/libmultipath/config.h
|
|
+++ b/libmultipath/config.h
|
|
@@ -10,6 +10,7 @@
|
|
|
|
#define ORIGIN_DEFAULT 0
|
|
#define ORIGIN_CONFIG 1
|
|
+#define ORIGIN_NO_CONFIG 2
|
|
|
|
enum devtypes {
|
|
DEV_NONE,
|
|
diff --git a/multipath/multipath.rules.in b/multipath/multipath.rules.in
|
|
index 8d3cf33a..5c4447a2 100644
|
|
--- a/multipath/multipath.rules.in
|
|
+++ b/multipath/multipath.rules.in
|
|
@@ -9,6 +9,7 @@ IMPORT{cmdline}="nompath"
|
|
ENV{nompath}=="?*", GOTO="end_mpath"
|
|
IMPORT{cmdline}="multipath"
|
|
ENV{multipath}=="off", GOTO="end_mpath"
|
|
+TEST!="/etc/multipath.conf", GOTO="end_mpath"
|
|
|
|
ENV{DEVTYPE}!="partition", GOTO="test_dev"
|
|
IMPORT{parent}="DM_MULTIPATH_DEVICE_PATH"
|
|
diff --git a/multipathd/multipathd.8 b/multipathd/multipathd.8
|
|
index bdf102eb..a16a0bd5 100644
|
|
--- a/multipathd/multipathd.8
|
|
+++ b/multipathd/multipathd.8
|
|
@@ -48,6 +48,8 @@ map regains its maximum performance and redundancy.
|
|
With the \fB-k\fR option, \fBmultipathd\fR acts as a client utility that
|
|
sends commands to a running instance of the multipathd daemon (see
|
|
\fBCOMMANDS\fR below).
|
|
+
|
|
+In this Linux distribution, multipathd does not run unless a /etc/multipath.conf file exists.
|
|
.
|
|
.
|
|
.\" ----------------------------------------------------------------------------
|
|
diff --git a/multipathd/multipathd.service b/multipathd/multipathd.service
|
|
index aec62dbb..d76f94f9 100644
|
|
--- a/multipathd/multipathd.service
|
|
+++ b/multipathd/multipathd.service
|
|
@@ -6,6 +6,7 @@ Wants=systemd-udevd-kernel.socket
|
|
After=systemd-udevd-kernel.socket
|
|
After=multipathd.socket systemd-remount-fs.service
|
|
Before=initrd-cleanup.service
|
|
+ConditionPathExists=/etc/multipath.conf
|
|
DefaultDependencies=no
|
|
Conflicts=shutdown.target
|
|
Conflicts=initrd-cleanup.service
|
|
diff --git a/multipathd/multipathd.socket b/multipathd/multipathd.socket
|
|
index c777e5e3..3c20a2ff 100644
|
|
--- a/multipathd/multipathd.socket
|
|
+++ b/multipathd/multipathd.socket
|
|
@@ -1,6 +1,7 @@
|
|
[Unit]
|
|
Description=multipathd control socket
|
|
DefaultDependencies=no
|
|
+ConditionPathExists=/etc/multipath.conf
|
|
ConditionKernelCommandLine=!nompath
|
|
ConditionKernelCommandLine=!multipath=off
|
|
ConditionVirtualization=!container
|