From f31801fe4674efcd6e68fbcc63218173ddeaa6c1 Mon Sep 17 00:00:00 2001 From: root Date: Tue, 27 Sep 2005 15:25:09 +0200 Subject: [PATCH] [multipathd] shut a libdevmapper error message when adding paths "device-mapper ioctl cmd 12 failed: No such device or address" was reported upon path add because we tried to submit a device-mapper ioctl before the map is ready to receive it (and loop till it works or timeout). shut the libdevmapper for this case with dm_init_log(&dummy_log) during this operation. --- libmultipath/devmapper.c | 22 +++++++++++++++++++++- multipathd/main.c | 2 +- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/libmultipath/devmapper.c b/libmultipath/devmapper.c index a0489f0..363b25f 100644 --- a/libmultipath/devmapper.c +++ b/libmultipath/devmapper.c @@ -15,6 +15,24 @@ #define MAX_WAIT 5 #define LOOPS_PER_SEC 5 +static void +dm_dummy_log (int level, const char *file, int line, const char *f, ...) +{ + return; +} + +static void +dm_restore_log (void) +{ + dm_log_init(NULL); +} + +static void +dm_shut_log (void) +{ + dm_log_init(&dm_dummy_log); +} + extern int dm_prereq (char * str, int x, int y, int z) { @@ -616,10 +634,12 @@ dm_mapname(int major, int minor) /* * device map might not be ready when we get here from - * uevent trigger + * daemon uev_trigger -> uev_add_map */ while (--loop) { + dm_shut_log(); r = dm_task_run(dmt); + dm_restore_log(); if (r) break; diff --git a/multipathd/main.c b/multipathd/main.c index 083bdf1..674f600 100644 --- a/multipathd/main.c +++ b/multipathd/main.c @@ -1029,7 +1029,7 @@ mpvec_garbage_collector (struct vectors * vecs) int i; vector_foreach_slot (vecs->mpvec, mpp, i) { - if (!dm_map_present(mpp->alias)) { + if (mpp && mpp->alias && !dm_map_present(mpp->alias)) { condlog(2, "%s: remove dead map", mpp->alias); remove_map(mpp, vecs); i--; -- 2.7.4