You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.8 KiB
54 lines
1.8 KiB
--- |
|
multipath/main.c | 25 ++++++++++++++++++++++++- |
|
1 file changed, 24 insertions(+), 1 deletion(-) |
|
|
|
Index: multipath-tools-130222/multipath/main.c |
|
=================================================================== |
|
--- multipath-tools-130222.orig/multipath/main.c |
|
+++ multipath-tools-130222/multipath/main.c |
|
@@ -198,6 +198,9 @@ get_dm_mpvec (vector curmp, vector pathv |
|
continue; |
|
} |
|
|
|
+ if (conf->cmd == CMD_VALID_PATH) |
|
+ continue; |
|
+ |
|
dm_get_map(mpp->alias, &mpp->size, params); |
|
condlog(3, "params = %s", params); |
|
dm_get_status(mpp->alias, status); |
|
@@ -308,7 +311,13 @@ configure (void) |
|
goto out; |
|
} |
|
condlog(3, "scope limited to %s", refwwid); |
|
- if (conf->cmd == CMD_VALID_PATH) { |
|
+ /* If you are ignoring the wwids file and find_multipaths is |
|
+ * set, you need to actually check if there are two available |
|
+ * paths to determine if this path should be multipathed. To |
|
+ * do this, we put off the check until after discovering all |
|
+ * the paths */ |
|
+ if (conf->cmd == CMD_VALID_PATH && |
|
+ (!conf->find_multipaths || !conf->ignore_wwids)) { |
|
if (conf->ignore_wwids || |
|
check_wwids_file(refwwid, 0) == 0) |
|
r = 0; |
|
@@ -348,6 +357,20 @@ configure (void) |
|
|
|
filter_pathvec(pathvec, refwwid); |
|
|
|
+ |
|
+ if (conf->cmd == CMD_VALID_PATH) { |
|
+ /* This only happens if find_multipaths is and |
|
+ * ignore_wwids is set. |
|
+ * If there is currently a multipath device matching |
|
+ * the refwwid, or there is more than one path matching |
|
+ * the refwwid, then the path is valid */ |
|
+ if (VECTOR_SIZE(curmp) != 0 || VECTOR_SIZE(pathvec) > 1) |
|
+ r = 0; |
|
+ printf("%s %s a valid multipath device path\n", |
|
+ conf->dev, r == 0 ? "is" : "is not"); |
|
+ goto out; |
|
+ } |
|
+ |
|
if (conf->cmd != CMD_CREATE && conf->cmd != CMD_DRY_RUN) { |
|
r = 0; |
|
goto out;
|
|
|