From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Benjamin Marzinski 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 --- libmultipath/propsel.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libmultipath/propsel.c b/libmultipath/propsel.c index 62a6893..f626c74 100644 --- a/libmultipath/propsel.c +++ b/libmultipath/propsel.c @@ -403,9 +403,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