If reload_and_sync_map() removes the multipath device,
deferred_failback_tick() needs to decrement the counter so that it
doesn't skip the following device.

Signed-off-by: Benjamin Marzinski <bmarz...@redhat.com>
---
 multipathd/main.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/multipathd/main.c b/multipathd/main.c
index 18632c7d..5e68e470 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -2098,9 +2098,12 @@ deferred_failback_tick (struct vectors *vecs)
 
                        if (!mpp->failback_tick &&
                            need_switch_pathgroup(mpp, &need_reload)) {
-                               if (need_reload)
-                                       reload_and_sync_map(mpp, vecs);
-                               else
+                               if (need_reload) {
+                                       if (reload_and_sync_map(mpp, vecs) == 
2) {
+                                               /* multipath device removed */
+                                               i--;
+                                       }
+                               } else
                                        switch_pathgroup(mpp);
                        }
                }
-- 
2.45.0


Reply via email to