|
|
d88bf6 |
---
|
|
|
d88bf6 |
libmultipath/discovery.c | 15 +++++++++++----
|
|
|
d88bf6 |
multipathd/main.c | 10 ++++++++++
|
|
|
d88bf6 |
2 files changed, 21 insertions(+), 4 deletions(-)
|
|
|
d88bf6 |
|
|
|
d88bf6 |
Index: multipath-tools-130222/libmultipath/discovery.c
|
|
|
d88bf6 |
===================================================================
|
|
|
d88bf6 |
--- multipath-tools-130222.orig/libmultipath/discovery.c
|
|
|
d88bf6 |
+++ multipath-tools-130222/libmultipath/discovery.c
|
|
|
d88bf6 |
@@ -84,10 +84,6 @@ path_discover (vector pathvec, struct co
|
|
|
d88bf6 |
if (!devname)
|
|
|
d88bf6 |
return PATHINFO_FAILED;
|
|
|
d88bf6 |
|
|
|
d88bf6 |
- if (filter_devnode(conf->blist_devnode, conf->elist_devnode,
|
|
|
d88bf6 |
- (char *)devname) > 0)
|
|
|
d88bf6 |
- return PATHINFO_SKIPPED;
|
|
|
d88bf6 |
-
|
|
|
d88bf6 |
pp = find_path_by_dev(pathvec, (char *)devname);
|
|
|
d88bf6 |
if (!pp) {
|
|
|
d88bf6 |
return store_pathinfo(pathvec, conf->hwtable,
|
|
|
d88bf6 |
@@ -1286,6 +1282,17 @@ pathinfo (struct path *pp, vector hwtabl
|
|
|
d88bf6 |
if (!pp)
|
|
|
d88bf6 |
return PATHINFO_FAILED;
|
|
|
d88bf6 |
|
|
|
d88bf6 |
+ /*
|
|
|
d88bf6 |
+ * For behavior backward-compatibility with multipathd,
|
|
|
d88bf6 |
+ * the blacklisting by filter_devnode() is not
|
|
|
d88bf6 |
+ * limited by DI_BLACKLIST and occurs before this debug
|
|
|
d88bf6 |
+ * message with the mask value.
|
|
|
d88bf6 |
+ */
|
|
|
d88bf6 |
+ if (filter_devnode(conf->blist_devnode,
|
|
|
d88bf6 |
+ conf->elist_devnode,
|
|
|
d88bf6 |
+ pp->dev) > 0)
|
|
|
d88bf6 |
+ return PATHINFO_SKIPPED;
|
|
|
d88bf6 |
+
|
|
|
d88bf6 |
condlog(3, "%s: mask = 0x%x", pp->dev, mask);
|
|
|
d88bf6 |
|
|
|
d88bf6 |
/*
|
|
|
d88bf6 |
Index: multipath-tools-130222/multipathd/main.c
|
|
|
d88bf6 |
===================================================================
|
|
|
d88bf6 |
--- multipath-tools-130222.orig/multipathd/main.c
|
|
|
d88bf6 |
+++ multipath-tools-130222/multipathd/main.c
|
|
|
d88bf6 |
@@ -776,6 +776,16 @@ uev_update_path (struct uevent *uev, str
|
|
|
d88bf6 |
|
|
|
d88bf6 |
pp = find_path_by_dev(vecs->pathvec, uev->kernel);
|
|
|
d88bf6 |
if (!pp) {
|
|
|
d88bf6 |
+ /* If the path is blacklisted, print a debug/non-default verbosity message. */
|
|
|
d88bf6 |
+ if (uev->udev) {
|
|
|
d88bf6 |
+ int flag = DI_SYSFS | DI_WWID;
|
|
|
d88bf6 |
+
|
|
|
d88bf6 |
+ if (store_pathinfo(NULL, conf->hwtable, uev->udev, flag, NULL) == PATHINFO_SKIPPED) {
|
|
|
d88bf6 |
+ condlog(3, "%s: spurious uevent, path is blacklisted", uev->kernel);
|
|
|
d88bf6 |
+ return 0;
|
|
|
d88bf6 |
+ }
|
|
|
d88bf6 |
+ }
|
|
|
d88bf6 |
+
|
|
|
d88bf6 |
condlog(0, "%s: spurious uevent, path not found",
|
|
|
d88bf6 |
uev->kernel);
|
|
|
d88bf6 |
return 1;
|