update_pathvec_from_dm() may set mpp->need_reload if it finds
inconsistent settings. In this case, the map should be reloaded, but so
far we don't do this reliably. Add a call to reload_and_sync_map()
when updating the maps at the end of a loop in checkerloop().

Suggested-by: Martin Wilck <mwi...@suse.com>
Signed-off-by: Benjamin Marzinski <bmarz...@redhat.com>
---
 multipathd/main.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/multipathd/main.c b/multipathd/main.c
index fcab1ed3..c1ae44f2 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -3038,7 +3038,10 @@ checkerloop (void *ap)
                                                             start_time.tv_sec);
                        if (checker_state == CHECKER_FINISHED) {
                                vector_foreach_slot(vecs->mpvec, mpp, i) {
-                                       if (update_mpp_prio(vecs, mpp) == 2) {
+                                       if (update_mpp_prio(vecs, mpp) == 2 ||
+                                           (mpp->need_reload &&
+                                            mpp->synced_count > 0 &&
+                                            reload_and_sync_map(mpp, vecs) == 
2)) {
                                                /* multipath device deleted */
                                                i--;
                                        }
-- 
2.46.2


Reply via email to