@@ -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);
- dm_flush_map_nosync(mpp->alias);
+ dm_device_remove(mpp->alias, 0);
}
if (err != EROFS) {
condlog(3, "%s: failed to load map, error %d",
@@ -174,7 +174,6 @@ enum {
int dm_flush_map__ (const char *mapname, int flags, int retries);
#define dm_flush_map(mapname) dm_flush_map__(mapname, DMFL_NEED_SYNC, 0)
-#define dm_flush_map_nosync(mapname) dm_flush_map__(mapname, DMFL_NONE, 0)
#define dm_suspend_and_flush_map(mapname, retries) \
dm_flush_map__(mapname, DMFL_NEED_SYNC|DMFL_SUSPEND, retries)
int dm_flush_map_nopaths(const char * mapname, int deferred_remove);