On Thu, 2018-02-08 at 17:56 -0600, Benjamin Marzinski wrote: > If ev_add_map is called for a multipath device that doesn't exist in > device-mapper, it will call coalesce_paths to add it. This doesn't > work > and hasn't for years. It doesn't add the map to the mpvec, or start > up > waiters, or do any of the necessary things that do get done when you > call ev_add_map for a map that does exist in device mapper. > > Fortunately, there are only two things that call ev_add_map. > uev_add_map > makes sure that the device does exist in device-mapper before calling > ev_add_map, and cli_add_map creates the device first and then calls > ev_add_map, if the device doesn't exist. > > So, there is no reason for coalesce_paths to be in ev_add_map. This > removes it. > > Cc: Martin Wilck <mwilck@xxxxxxxx> > Signed-off-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> Reviewed-by: Martin Wilck <mwilck@xxxxxxxx> > --- > multipathd/main.c | 46 ++++++++++++++------------------------------- > - > 1 file changed, 14 insertions(+), 32 deletions(-) > > diff --git a/multipathd/main.c b/multipathd/main.c > index 27cf234..dbf9890 100644 > --- a/multipathd/main.c > +++ b/multipathd/main.c > @@ -412,18 +412,19 @@ uev_add_map (struct uevent * uev, struct > vectors * vecs) > return rc; > } > > +/* > + * ev_add_map expects that the multipath device already exists in > kernel > + * before it is called. It just adds a device to multipathd or > updates an > + * existing device. > + */ > int > ev_add_map (char * dev, char * alias, struct vectors * vecs) > { > - char * refwwid; > struct multipath * mpp; > - int map_present; > - int r = 1, delayed_reconfig, reassign_maps; > + int delayed_reconfig, reassign_maps; > struct config *conf; > > - map_present = dm_map_present(alias); > - > - if (map_present && !dm_is_mpath(alias)) { > + if (!dm_is_mpath(alias)) { > condlog(4, "%s: not a multipath map", alias); > return 0; > } > @@ -468,33 +469,14 @@ ev_add_map (char * dev, char * alias, struct > vectors * vecs) > /* > * now we can register the map > */ > - if (map_present) { > - if ((mpp = add_map_without_path(vecs, alias))) { > - sync_map_state(mpp); > - condlog(2, "%s: devmap %s registered", > alias, dev); > - return 0; > - } else { > - condlog(2, "%s: uev_add_map failed", dev); > - return 1; > - } > - } > - r = get_refwwid(CMD_NONE, dev, DEV_DEVMAP, vecs->pathvec, > &refwwid); > - > - if (refwwid) { > - r = coalesce_paths(vecs, NULL, refwwid, > FORCE_RELOAD_NONE, > - CMD_NONE); > - dm_lib_release(); > + if ((mpp = add_map_without_path(vecs, alias))) { > + sync_map_state(mpp); > + condlog(2, "%s: devmap %s registered", alias, dev); > + return 0; > + } else { > + condlog(2, "%s: ev_add_map failed", dev); > + return 1; > } > - > - if (!r) > - condlog(2, "%s: devmap %s added", alias, dev); > - else if (r == 2) > - condlog(2, "%s: uev_add_map %s blacklisted", alias, > dev); > - else > - condlog(0, "%s: uev_add_map %s failed", alias, dev); > - > - FREE(refwwid); > - return r; > } > > static int -- Dr. Martin Wilck <mwilck@xxxxxxxx>, Tel. +49 (0)911 74053 2107 SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton HRB 21284 (AG Nürnberg) -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel