From: Martin Wilck <mwi...@suse.com>

This is anologous to

1f96269 ("multipathd: fix mpp->hwe handling on path removal")
f6839eb ("multipathd: fix mpp->hwe handling when paths are freed")

When paths are removed from a map, we need to make sure that
mpp->hwe doesn't become stale.

Reported-by: Lixiaokeng <lixiaok...@huawei.com>
Signed-off-by: Martin Wilck <mwi...@suse.com>
---
 libmultipath/structs_vec.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c
index 0a73d2a..0519996 100644
--- a/libmultipath/structs_vec.c
+++ b/libmultipath/structs_vec.c
@@ -256,6 +256,8 @@ void sync_paths(struct multipath *mpp, vector pathvec)
                }
                if (!found) {
                        condlog(3, "%s dropped path %s", mpp->alias, pp->dev);
+                       if (mpp->hwe == pp->hwe)
+                               mpp->hwe = NULL;
                        vector_del_slot(mpp->paths, i--);
                        orphan_path(pp, "path removed externally");
                }
@@ -263,6 +265,8 @@ void sync_paths(struct multipath *mpp, vector pathvec)
        update_mpp_paths(mpp, pathvec);
        vector_foreach_slot (mpp->paths, pp, i)
                pp->mpp = mpp;
+       if (mpp->hwe == NULL)
+               extract_hwe_from_path(mpp);
 }
 
 int
-- 
2.26.2


--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to