libmultipath: improve logging from orphan_paths
authorMartin Wilck <mwilck@suse.com>
Mon, 10 Dec 2018 09:49:54 +0000 (10:49 +0100)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Mon, 10 Dec 2018 23:41:03 +0000 (00:41 +0100)
It's a big difference if a map is flushed from DM (changing kernel
state) or just removed from internal multipathd tables. Convey
this information in log messages.

Reviewed-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Martin Wilck <mwilck@suse.com>
libmultipath/structs_vec.c
libmultipath/structs_vec.h
multipathd/main.c

index 5305bd3..03e2b97 100644 (file)
@@ -102,14 +102,14 @@ void orphan_path(struct path *pp, const char *reason)
        pp->fd = -1;
 }
 
-void orphan_paths(vector pathvec, struct multipath *mpp)
+void orphan_paths(vector pathvec, struct multipath *mpp, const char *reason)
 {
        int i;
        struct path * pp;
 
        vector_foreach_slot (pathvec, pp, i) {
                if (pp->mpp == mpp) {
-                       orphan_path(pp, "map flushed");
+                       orphan_path(pp, reason);
                }
        }
 }
@@ -122,7 +122,7 @@ remove_map(struct multipath * mpp, struct vectors * vecs, int purge_vec)
        /*
         * clear references to this map
         */
-       orphan_paths(vecs->pathvec, mpp);
+       orphan_paths(vecs->pathvec, mpp, "map removed internally");
 
        if (purge_vec &&
            (i = find_slot(vecs->mpvec, (void *)mpp)) != -1)
index f7777aa..f8b9f63 100644 (file)
@@ -14,7 +14,8 @@ struct vectors {
 void enter_recovery_mode(struct multipath *mpp);
 
 int adopt_paths (vector pathvec, struct multipath * mpp);
-void orphan_paths (vector pathvec, struct multipath * mpp);
+void orphan_paths(vector pathvec, struct multipath *mpp,
+                 const char *reason);
 void orphan_path (struct path * pp, const char *reason);
 
 int verify_paths(struct multipath * mpp, struct vectors * vecs);
index 5e6c35d..04f02d9 100644 (file)
@@ -654,7 +654,7 @@ flush_map(struct multipath * mpp, struct vectors * vecs, int nopaths)
                condlog(2, "%s: map flushed", mpp->alias);
        }
 
-       orphan_paths(vecs->pathvec, mpp);
+       orphan_paths(vecs->pathvec, mpp, "map flushed");
        remove_map_and_stop_waiter(mpp, vecs);
 
        return 0;