[dm-devel] [PATCH] libmpathpersist: use extern struct udev from main program

Martin Wilck mwilck at suse.com
Sun Mar 26 13:49:47 UTC 2017


Use the global variable "udev" - the internal one is not
initialized, causing current libudev calls to fail.
In the main program "mpathpersist", use a globally visible
variable "udev" rather than a local variable in main().
This imitates the way the global variable "udev" is used
in multipath and multipathd.

Removed the "udev" parameter from mpath_lib_init() to
clarify that it isn't used.

Fixes: b87454988 "libmultipath: separate out 'udev' config entry"
Signed-off-by: Martin Wilck <mwilck at suse.com>
---
 libmpathpersist/mpath_persist.c | 4 ++--
 libmpathpersist/mpath_persist.h | 2 +-
 mpathpersist/main.c             | 5 +++--
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/libmpathpersist/mpath_persist.c b/libmpathpersist/mpath_persist.c
index 982c7954..9bca7764 100644
--- a/libmpathpersist/mpath_persist.c
+++ b/libmpathpersist/mpath_persist.c
@@ -34,10 +34,10 @@
 
 #define __STDC_FORMAT_MACROS 1
 
-struct udev *udev;
+extern struct udev *udev;
 
 struct config *
-mpath_lib_init (struct udev *udev)
+mpath_lib_init (void)
 {
 	struct config *conf;
 
diff --git a/libmpathpersist/mpath_persist.h b/libmpathpersist/mpath_persist.h
index 79de5b5b..7422322d 100644
--- a/libmpathpersist/mpath_persist.h
+++ b/libmpathpersist/mpath_persist.h
@@ -174,7 +174,7 @@ struct prout_param_descriptor {		/* PROUT parameter descriptor */
  *
  * RETURNS: struct config ->Success, NULL->Failed.
  */
-extern struct config * mpath_lib_init (struct udev *udev);
+extern struct config * mpath_lib_init (void);
 
 
 /*
diff --git a/mpathpersist/main.c b/mpathpersist/main.c
index 2e0aba3c..e1aac8fa 100644
--- a/mpathpersist/main.c
+++ b/mpathpersist/main.c
@@ -57,6 +57,8 @@ void rcu_register_thread_memb(void) {}
 
 void rcu_unregister_thread_memb(void) {}
 
+struct udev *udev;
+
 int main (int argc, char * argv[])
 {
 	int fd, c, res;
@@ -86,7 +88,6 @@ int main (int argc, char * argv[])
 	int num_transport =0;
 	void *resp = NULL;
 	struct transportid * tmp;
-	struct udev *udev = NULL;
 	struct config *conf;
 
 	if (optind == argc)
@@ -104,7 +105,7 @@ int main (int argc, char * argv[])
 	}
 
 	udev = udev_new();
-	conf = mpath_lib_init(udev);
+	conf = mpath_lib_init();
 	if(!conf) {
 		udev_unref(udev);
 		exit(1);
-- 
2.12.0




More information about the dm-devel mailing list