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
102 lines
4.4 KiB
Diff
102 lines
4.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Benjamin Marzinski <bmarzins@redhat.com>
|
|
Date: Wed, 2 Jul 2014 12:49:53 -0500
|
|
Subject: [PATCH] RH: Remove the property blacklist exception builtin
|
|
|
|
Multipath set the default property blacklist exceptions to
|
|
(ID_SCSI_VPD|ID_WWN). This has the effect of blacklisting some internal
|
|
devices. These devices may never have multiple paths, but it is nice
|
|
to be able to set multipath up on them all the same. This patch simply
|
|
removes the default, and makes it so that if no property
|
|
blacklist_exception is given, then devices aren't failed for not matching
|
|
it.
|
|
|
|
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
|
|
---
|
|
libmultipath/blacklist.c | 6 ++----
|
|
multipath/multipath.conf.5 | 11 ++++++-----
|
|
tests/blacklist.c | 7 ++-----
|
|
3 files changed, 10 insertions(+), 14 deletions(-)
|
|
|
|
diff --git a/libmultipath/blacklist.c b/libmultipath/blacklist.c
|
|
index 8d15d2ea..eff690fd 100644
|
|
--- a/libmultipath/blacklist.c
|
|
+++ b/libmultipath/blacklist.c
|
|
@@ -201,9 +201,6 @@ setup_default_blist (struct config * conf)
|
|
if (store_ble(conf->blist_devnode, "!^(sd[a-z]|dasd[a-z]|nvme[0-9])", ORIGIN_DEFAULT))
|
|
return 1;
|
|
|
|
- if (store_ble(conf->elist_property, "(SCSI_IDENT_|ID_WWN)", ORIGIN_DEFAULT))
|
|
- return 1;
|
|
-
|
|
vector_foreach_slot (conf->hwtable, hwe, i) {
|
|
if (hwe->bl_product) {
|
|
if (find_blacklist_device(conf->blist_device,
|
|
@@ -409,7 +406,8 @@ filter_property(const struct config *conf, struct udev_device *udev,
|
|
*uid_attribute != '\0';
|
|
bool uid_attr_seen = false;
|
|
|
|
- r = MATCH_PROPERTY_BLIST_MISSING;
|
|
+ if (VECTOR_SIZE(conf->elist_property))
|
|
+ r = MATCH_PROPERTY_BLIST_MISSING;
|
|
udev_list_entry_foreach(list_entry,
|
|
udev_device_get_properties_list_entry(udev)) {
|
|
|
|
diff --git a/multipath/multipath.conf.5 b/multipath/multipath.conf.5
|
|
index 1fea9d5a..eef3c605 100644
|
|
--- a/multipath/multipath.conf.5
|
|
+++ b/multipath/multipath.conf.5
|
|
@@ -1353,9 +1353,14 @@ keywords. Both are regular expressions. For a full description of these keywords
|
|
Regular expression for an udev property. All
|
|
devices that have matching udev properties will be excluded/included.
|
|
The handling of the \fIproperty\fR keyword is special,
|
|
-because devices \fBmust\fR have at least one whitelisted udev property;
|
|
+because if a property blacklist_exception is set, devices \fBmust\fR have at
|
|
+least one whitelisted udev property;
|
|
otherwise they're treated as blacklisted, and the message
|
|
"\fIblacklisted, udev property missing\fR" is displayed in the logs.
|
|
+For example, setting the property blacklist_exception to
|
|
+\fB(SCSI_IDENT_|ID_WWN)\fR, will cause well-behaved SCSI devices and devices
|
|
+that provide a WWN (World Wide Number) to be included, and all others to be
|
|
+excluded. This works to exclude most non-multipathable devices.
|
|
.
|
|
.RS
|
|
.PP
|
|
@@ -1366,10 +1371,6 @@ Blacklisting by missing properties is only applied to devices which do have the
|
|
property specified by \fIuid_attribute\fR (e.g. \fIID_SERIAL\fR)
|
|
set. Previously, it was applied to every device, possibly causing devices to be
|
|
blacklisted because of temporary I/O error conditions.
|
|
-.PP
|
|
-The default \fIblacklist exception\fR is: \fB(SCSI_IDENT_|ID_WWN)\fR, causing
|
|
-well-behaved SCSI devices and devices that provide a WWN (World Wide Number)
|
|
-to be included, and all others to be excluded.
|
|
.RE
|
|
.TP
|
|
.B protocol
|
|
diff --git a/tests/blacklist.c b/tests/blacklist.c
|
|
index 882aa3a1..6a22b660 100644
|
|
--- a/tests/blacklist.c
|
|
+++ b/tests/blacklist.c
|
|
@@ -375,9 +375,8 @@ static void test_property_missing(void **state)
|
|
{
|
|
static struct udev_device udev = { "sdb", { "ID_FOO", "ID_BAZ", "ID_BAR", "ID_SERIAL", NULL } };
|
|
conf.blist_property = blist_property_wwn;
|
|
- expect_condlog(3, "sdb: blacklisted, udev property missing\n");
|
|
assert_int_equal(filter_property(&conf, &udev, 3, "ID_SERIAL"),
|
|
- MATCH_PROPERTY_BLIST_MISSING);
|
|
+ MATCH_NOTHING);
|
|
assert_int_equal(filter_property(&conf, &udev, 3, "ID_BLAH"),
|
|
MATCH_NOTHING);
|
|
assert_int_equal(filter_property(&conf, &udev, 3, ""),
|
|
@@ -469,9 +468,7 @@ static void test_filter_path_missing1(void **state)
|
|
conf.blist_device = blist_device_foo_bar;
|
|
conf.blist_protocol = blist_protocol_fcp;
|
|
conf.blist_wwid = blist_wwid_xyzzy;
|
|
- expect_condlog(3, "sdb: blacklisted, udev property missing\n");
|
|
- assert_int_equal(filter_path(&conf, &miss1_pp),
|
|
- MATCH_PROPERTY_BLIST_MISSING);
|
|
+ assert_int_equal(filter_path(&conf, &miss1_pp), MATCH_NOTHING);
|
|
}
|
|
|
|
/* This one matches the property whitelist, to test the other missing
|