forked from pool/libvirt
The openSUSE Xen package provides and supports several block-*
scripts. libvirt should support them too. - libxl: Add support for block-{dmmd,drbd,npiv} scripts libxl-support-block-script.patch bsc#954872 OBS-URL: https://build.opensuse.org/package/show/Virtualization/libvirt?expand=0&rev=511
This commit is contained in:
parent
ead8cd12f9
commit
83ea398b7d
@ -1,3 +1,10 @@
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 18 16:49:00 UTC 2016 - jfehlig@suse.com
|
||||
|
||||
- libxl: Add support for block-{dmmd,drbd,npiv} scripts
|
||||
libxl-support-block-script.patch
|
||||
bsc#954872
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sat Jan 23 01:19:22 UTC 2016 - jfehlig@suse.com
|
||||
|
||||
|
10
libvirt.spec
10
libvirt.spec
@ -475,10 +475,11 @@ Patch205: suse-qemu-conf.patch
|
||||
Patch206: support-managed-pci-xen-driver.patch
|
||||
Patch207: systemd-service-xen.patch
|
||||
Patch208: xen-sxpr-disk-type.patch
|
||||
Patch209: apparmor-no-mount.patch
|
||||
Patch210: qemu-apparmor-screenshot.patch
|
||||
Patch211: libvirt-suse-netcontrol.patch
|
||||
Patch212: lxc-wait-after-eth-del.patch
|
||||
Patch209: libxl-support-block-script.patch
|
||||
Patch210: apparmor-no-mount.patch
|
||||
Patch211: qemu-apparmor-screenshot.patch
|
||||
Patch212: libvirt-suse-netcontrol.patch
|
||||
Patch213: lxc-wait-after-eth-del.patch
|
||||
# SocketUser and SocketGroup settings were added to systemd.socket in
|
||||
# version 214. Patch the setting away in earlier systemd
|
||||
%if 0%{systemd_version} < 214
|
||||
@ -992,6 +993,7 @@ Wireshark dissector plugin for better analysis of libvirt RPC traffic.
|
||||
%patch210 -p1
|
||||
%patch211 -p1
|
||||
%patch212 -p1
|
||||
%patch213 -p1
|
||||
%if 0%{systemd_version} < 214
|
||||
%patch300 -p1
|
||||
%endif
|
||||
|
61
libxl-support-block-script.patch
Normal file
61
libxl-support-block-script.patch
Normal file
@ -0,0 +1,61 @@
|
||||
libxl: set script field of libxl_device_disk
|
||||
|
||||
Add a hack to the libvirt libxl driver to set
|
||||
libxl_device_disk->script when the disk configuration starts
|
||||
with some well-known Xen external block scripts: dmmd, drbd,
|
||||
and npiv.
|
||||
|
||||
For more details, see bsc#954872 and FATE#319810
|
||||
|
||||
Index: libvirt-1.3.1/src/libxl/libxl_conf.c
|
||||
===================================================================
|
||||
--- libvirt-1.3.1.orig/src/libxl/libxl_conf.c
|
||||
+++ libvirt-1.3.1/src/libxl/libxl_conf.c
|
||||
@@ -887,6 +887,22 @@ libxlDiskSetDiscard(libxl_device_disk *x
|
||||
}
|
||||
|
||||
|
||||
+static int
|
||||
+libxlDiskSetScript(libxl_device_disk *x_disk, const char *disk_spec)
|
||||
+{
|
||||
+ if (STRPREFIX(disk_spec, "dmmd:")) {
|
||||
+ if (VIR_STRDUP(x_disk->script, "block-dmmd") < 0)
|
||||
+ return -1;
|
||||
+ } else if (STRPREFIX(disk_spec, "drbd:")) {
|
||||
+ if (VIR_STRDUP(x_disk->script, "block-drbd") < 0)
|
||||
+ return -1;
|
||||
+ } else if (STRPREFIX(disk_spec, "npiv:")) {
|
||||
+ if (VIR_STRDUP(x_disk->script, "block-npiv") < 0)
|
||||
+ return -1;
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
#define LIBXL_QEMU_DM_STR "Options specific to the Xen version:"
|
||||
|
||||
int
|
||||
@@ -921,12 +937,13 @@ libxlDomainGetEmulatorType(const virDoma
|
||||
int
|
||||
libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
|
||||
{
|
||||
+ const char *src = virDomainDiskGetSource(l_disk);
|
||||
const char *driver;
|
||||
int format;
|
||||
|
||||
libxl_device_disk_init(x_disk);
|
||||
|
||||
- if (VIR_STRDUP(x_disk->pdev_path, virDomainDiskGetSource(l_disk)) < 0)
|
||||
+ if (VIR_STRDUP(x_disk->pdev_path, src) < 0)
|
||||
return -1;
|
||||
|
||||
if (VIR_STRDUP(x_disk->vdev, l_disk->dst) < 0)
|
||||
@@ -1034,6 +1051,9 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk
|
||||
x_disk->is_cdrom = l_disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ? 1 : 0;
|
||||
if (libxlDiskSetDiscard(x_disk, l_disk->discard) < 0)
|
||||
return -1;
|
||||
+ if (libxlDiskSetScript(x_disk, src) < 0)
|
||||
+ return -1;
|
||||
+
|
||||
/* An empty CDROM must have the empty format, otherwise libxl fails. */
|
||||
if (x_disk->is_cdrom && !x_disk->pdev_path)
|
||||
x_disk->format = LIBXL_DISK_FORMAT_EMPTY;
|
Loading…
Reference in New Issue
Block a user