libmpathpersist: use extern struct udev from main program
authorMartin Wilck <mwilck@suse.com>
Sun, 26 Mar 2017 13:49:47 +0000 (15:49 +0200)
committerChristophe Varoqui <christophe.varoqui@opensvc.com>
Wed, 21 Jun 2017 10:23:41 +0000 (12:23 +0200)
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@suse.com>
libmpathpersist/mpath_persist.c
libmpathpersist/mpath_persist.h
mpathpersist/main.c

index 7fd4cb8..aab6d95 100644 (file)
 
 #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;
 
index 3fad69b..9a84bc9 100644 (file)
@@ -179,7 +179,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);
 
 
 /*
index 9de52b9..79b89e5 100644 (file)
@@ -56,6 +56,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;
@@ -85,7 +87,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)
@@ -103,7 +104,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);