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 <[email protected]>
> ---
>  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



Reply via email to