From: tang.junhui <tang.jun...@zte.com.cn>

Move calling filter_devnode() from uev_trigger() to uevent_can_discard()
since they do the similar work.

Change-Id: I0322443fa551b21aa3211bf1ce3fad7d37aeeab4
Signed-off-by: tang.junhui <tang.jun...@zte.com.cn>
---
 libmultipath/uevent.c | 20 ++++++++++++++++++++
 multipathd/main.c     |  9 ---------
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/libmultipath/uevent.c b/libmultipath/uevent.c
index d6c02a6..b560a50 100644
--- a/libmultipath/uevent.c
+++ b/libmultipath/uevent.c
@@ -47,6 +47,9 @@
 #include "list.h"
 #include "uevent.h"
 #include "vector.h"
+#include "structs.h"
+#include "config.h"
+#include "blacklist.h"
 
 typedef int (uev_trigger)(struct uevent *, void * trigger_data);
 
@@ -86,6 +89,7 @@ uevent_can_discard(struct uevent *uev)
 {
        char *tmp;
        char a[11], b[11];
+       struct config * conf;
 
        /*
         * keep only block devices, discard partitions
@@ -101,6 +105,22 @@ uevent_can_discard(struct uevent *uev)
                return true;
        }
 
+       /* 
+        * do not filter dm devices by devnode
+        */
+       if (!strncmp(uev->kernel, "dm-", 3))
+               return false;
+       /* 
+        * filter paths devices by devnode
+        */
+       conf = get_multipath_config();
+       if (filter_devnode(conf->blist_devnode, conf->elist_devnode,
+                          uev->kernel) > 0) {
+               put_multipath_config(conf);
+               return true;
+       }
+       put_multipath_config(conf);
+
        return false;
 }
 
diff --git a/multipathd/main.c b/multipathd/main.c
index 66d5c3d..24116e3 100644
--- a/multipathd/main.c
+++ b/multipathd/main.c
@@ -1120,7 +1120,6 @@ uev_trigger (struct uevent * uev, void * trigger_data)
 {
        int r = 0;
        struct vectors * vecs;
-       struct config *conf;
 
        vecs = (struct vectors *)trigger_data;
 
@@ -1154,14 +1153,6 @@ uev_trigger (struct uevent * uev, void * trigger_data)
        /*
         * path add/remove event
         */
-       conf = get_multipath_config();
-       if (filter_devnode(conf->blist_devnode, conf->elist_devnode,
-                          uev->kernel) > 0) {
-               put_multipath_config(conf);
-               goto out;
-       }
-       put_multipath_config(conf);
-
        if (!strncmp(uev->action, "add", 3)) {
                r = uev_add_path(uev, vecs, 1);
                goto out;
-- 
2.8.1.windows.1


--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel

Reply via email to