While we're waiting for active paths to appear when ghost delay is enabled, we do add new paths to multipathd's internal mpp data structure as they are discovered (unlike missing uevent case, where we orphan the paths instead). When the ghost_delay timer expires, it should be sufficient to call the more light-weight reload_and_sync_map() instead of update_map(). Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> --- multipathd/main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/multipathd/main.c b/multipathd/main.c index e48fa79..8cca0ce 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -2932,8 +2932,7 @@ static void checker_finished(struct vectors *vecs) int i; vector_foreach_slot(vecs->mpvec, mpp, i) { - if ((missing_uev_wait_tick(mpp, &uev_timed_out) || - ghost_delay_tick(mpp)) && + if (missing_uev_wait_tick(mpp, &uev_timed_out) && update_map(mpp, vecs, 0)) { /* multipath device deleted */ i--; @@ -2941,7 +2940,8 @@ static void checker_finished(struct vectors *vecs) } if ((update_mpp_prio(mpp) || (mpp->need_reload && mpp->synced_count > 0) || - deferred_failback_tick(mpp)) && + deferred_failback_tick(mpp) || + ghost_delay_tick(mpp)) && reload_and_sync_map(mpp, vecs) == 2) /* multipath device deleted */ i--; -- 2.47.0