device-mapper-multipath/0002-libmultipath-fix-detect-alua-corner-case.patch
Benjamin Marzinski c79ce3480d device-mapper-multipath-0.7.7-4.gitef6d98b
Update Source to latest upstream commit
  * Previous patches 0001-0018 are included in this commit
Rename files
  * Previous patches 0019-0028 are now patches 0002-0003 & 0012-0019
Add 0001-libmultipath-remove-last-of-rbd-code.patch
Add 0004-mpathpersist-add-param-alltgpt-option.patch
  * mpathpersist now accepts --param-alltgpt
Add 0005-libmutipath-remove-unused-IDE-bus-type.patch
Add 0006-multipathd-add-new-protocol-path-wildcard.patch
  * multipathd show paths format now accepts %P for the path
  * protocol/transport
Add 0007-libmultipath-add-protocol-blacklist-option.patch
  * You can now use the "protocol" blacklist section parameter to
  * blacklist
    by protocol/transport
Add 0008-libmultipath-remove-_filter_-blacklist-functions.patch
Add 0009-multipath-tests-change-to-work-with-old-make-version.patch
Add 0010-multipath-tests-add-blacklist-tests.patch
Add 0011-mpathpersist-add-missing-param-rk-usage-info.patch
Refresh 0013-RH-Remove-the-property-blacklist-exception-builtin.patch
Modify 0016-RH-add-mpathconf.patch
  * improve usage message and man page
2018-07-17 14:55:00 -05:00

36 lines
1.2 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Benjamin Marzinski <bmarzins@redhat.com>
Date: Fri, 8 Jun 2018 17:12:37 -0500
Subject: [PATCH] libmultipath: fix detect alua corner case
If retain_attach_hw_handler = no, then the paths tpgs state will never
be checked, and the multipath device will always select the alua
handler, if no other handler is selected. the paths tpgs state
should be checked, regardless of the retain_hwhandler value.
Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
---
libmultipath/propsel.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c
index af3ed62..fdb5953 100644
--- a/libmultipath/propsel.c
+++ b/libmultipath/propsel.c
@@ -420,9 +420,11 @@ int select_hwhandler(struct config *conf, struct multipath *mp)
bool all_tpgs = true;
dh_state = &handler[2];
+
+ vector_foreach_slot(mp->paths, pp, i)
+ all_tpgs = all_tpgs && (pp->tpgs > 0);
if (mp->retain_hwhandler != RETAIN_HWHANDLER_OFF) {
vector_foreach_slot(mp->paths, pp, i) {
- all_tpgs = all_tpgs && (pp->tpgs > 0);
if (get_dh_state(pp, dh_state, sizeof(handler) - 2) > 0
&& strcmp(dh_state, "detached")) {
memcpy(handler, "1 ", 2);
--
2.7.4