[dm-devel] [PATCH 07/11] multipathd: move calling filter_devnode() from uev_trigger() to uevent_can_discard()
tang.junhui at zte.com.cn
tang.junhui at zte.com.cn
Thu Jan 12 05:52:23 UTC 2017
From: tang.junhui <tang.junhui at 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.junhui at 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
More information about the dm-devel
mailing list