On Wed, Aug 12, 2020 at 01:35:10PM +0200, mwilck@xxxxxxxx wrote: > From: Martin Wilck <mwilck@xxxxxxxx> > > Treat this like a WWID mismatch. > Reviewed-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > --- > libmultipath/structs_vec.c | 33 +++++++++++++++++++++++++++++++++ > 1 file changed, 33 insertions(+) > > diff --git a/libmultipath/structs_vec.c b/libmultipath/structs_vec.c > index bd2d13b..e7a8d53 100644 > --- a/libmultipath/structs_vec.c > +++ b/libmultipath/structs_vec.c > @@ -123,6 +123,23 @@ bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp, > goto delete_pg; > > vector_foreach_slot(pgp->paths, pp, j) { > + > + if (pp->mpp && pp->mpp != mpp) { > + condlog(0, "BUG: %s: found path %s which is already in %s", > + mpp->alias, pp->dev, pp->mpp->alias); > + > + /* > + * Either we added this path to the other mpp > + * explicitly, or we came by here earlier and > + * decided it belonged there. In both cases, > + * the path should remain in the other map, > + * and be deleted here. > + */ > + must_reload = true; > + dm_fail_path(mpp->alias, pp->dev_t); > + vector_del_slot(pgp->paths, j--); > + continue; > + } > pp->mpp = mpp; > > /* > @@ -170,6 +187,22 @@ bool update_pathvec_from_dm(vector pathvec, struct multipath *mpp, > vector_del_slot(pgp->paths, j--); > free_path(pp); > must_reload = true; > + } else if (mpp_has_wwid && pp->wwid[0] != '\0' > + && strcmp(mpp->wwid, pp->wwid)) { > + condlog(0, "%s: path %s WWID %s doesn't match, removing from map", > + mpp->wwid, pp->dev_t, pp->wwid); > + /* > + * This path exists, but in the wrong map. > + * We can't reload the map from here. > + * Make sure it isn't used in this map > + * any more, and let the checker re-add > + * it as it sees fit. > + */ > + dm_fail_path(mpp->alias, pp->dev_t); > + vector_del_slot(pgp->paths, j--); > + orphan_path(pp, "WWID mismatch"); > + pp->tick = 1; > + must_reload = true; > } else { > if (mpp_has_wwid && !strlen(pp->wwid)) { > condlog(3, "%s: setting wwid from map: %s", > -- > 2.28.0 -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel