On Fri, 2024-11-15 at 18:22 -0500, Benjamin Marzinski wrote: > dm_flush_nap_nosync() only removes a device if it has a multipath > table. > On failed removes, there is no table, so this function does nothing. > Instead, if libmp_mapinfo() returns DMP_EMPTY, then there is an empty > map, > and it is removed using dm_device_remove(). > > Also, since there are no longer any callers of dm_flush_map_nosync(), > remove it. > > Signed-off-by: Benjamin Marzinski <bmarzins@xxxxxxxxxx> > --- > libmultipath/devmapper.c | 7 +++++-- > libmultipath/devmapper.h | 1 - > 2 files changed, 5 insertions(+), 3 deletions(-) > > diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c > index b718dccf..842e7c80 100644 > --- a/libmultipath/devmapper.c > +++ b/libmultipath/devmapper.c > @@ -557,9 +557,12 @@ int dm_addmap_create (struct multipath *mpp, > char * params) > * Failing the second part leaves an empty map. > Clean it up. > */ > err = errno; > - if (dm_map_present(mpp->alias)) { > + if (libmp_mapinfo(DM_MAP_BY_NAME | > MAPINFO_MPATH_ONLY | > + MAPINFO_CHECK_UUID, > + (mapid_t) { .str = mpp->alias }, > + (mapinfo_t) { .uuid = NULL }) == > DMP_EMPTY) { > condlog(3, "%s: failed to load map (a path > might be in use)", mpp->alias); This error message seems wrong for emtpy tables. Martin