qemu-pr-helper: use new libmultipath API
libmultipath has recently changed its API. The new API supports multi-threaded clients better. Unfortunately there is no backwards-compatibility, so we just switch to the new one. Running QEMU compiled with the new library on the old library will likely crash, while doing the opposite will cause QEMU not to start at all (because udev, get_multipath_config and put_multipath_config are undefined). Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
306526b5de
commit
b3f1c8c413
12
configure
vendored
12
configure
vendored
@ -3312,9 +3312,17 @@ if test "$mpath" != "no" ; then
|
||||
#include <mpath_persist.h>
|
||||
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
|
||||
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user