This should help us find cases where pp->mpp isn't properly set
to begin with.

Signed-off-by: Martin Wilck <[email protected]>
---
 libmultipath/structs_vec.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
index 7185038..9384de0 100644
--- a/libmultipath/structs_vec.c
+++ b/libmultipath/structs_vec.c
@@ -639,7 +639,11 @@ void sync_paths(struct multipath *mpp, vector pathvec)
        check_removed_paths(mpp, pathvec);
        update_mpp_paths(mpp, pathvec);
        vector_foreach_slot (mpp->paths, pp, i)
-               pp->mpp = mpp;
+               if (pp->mpp != mpp) {
+                       condlog(2, "%s: %s: mpp of %s was %p, fixing to %p",
+                               __func__, mpp->alias, pp->dev_t, pp->mpp, mpp);
+                       pp->mpp = mpp;
+               };
 }
 
 /* This function may free paths. See check_removed_paths(). */
-- 
2.52.0


Reply via email to