diff --git a/configure b/configure index 6587e8014b..7766e74125 100755 --- a/configure +++ b/configure @@ -3312,9 +3312,17 @@ if test "$mpath" != "no" ; then #include unsigned mpath_mx_alloc_len = 1024; int logsink; +static struct config *multipath_conf; +extern struct udev *udev; +extern struct config *get_multipath_config(void); +extern void put_multipath_config(struct config *conf); +struct udev *udev; +struct config *get_multipath_config(void) { return multipath_conf; } +void put_multipath_config(struct config *conf) { } + int main(void) { - struct udev *udev = udev_new(); - mpath_lib_init(udev); + udev = udev_new(); + multipath_conf = mpath_lib_init(); return 0; } EOF diff --git a/scsi/qemu-pr-helper.c b/scsi/qemu-pr-helper.c index d58184833f..dd9785143b 100644 --- a/scsi/qemu-pr-helper.c +++ b/scsi/qemu-pr-helper.c @@ -276,15 +276,26 @@ static void dm_init(void) /* Variables required by libmultipath and libmpathpersist. */ QEMU_BUILD_BUG_ON(PR_HELPER_DATA_SIZE > MPATH_MAX_PARAM_LEN); +static struct config *multipath_conf; unsigned mpath_mx_alloc_len = PR_HELPER_DATA_SIZE; int logsink; +struct udev *udev; + +extern struct config *get_multipath_config(void); +struct config *get_multipath_config(void) +{ + return multipath_conf; +} + +extern void put_multipath_config(struct config *conf); +void put_multipath_config(struct config *conf) +{ +} static void multipath_pr_init(void) { - static struct udev *udev; - udev = udev_new(); - mpath_lib_init(udev); + multipath_conf = mpath_lib_init(); } static int is_mpath(int fd)