[libvirt] [PATCH] libxl: add discard support to libxl_device_disk

Olaf Hering olaf at aepfle.de
Fri May 30 11:03:29 UTC 2014


Translate libvirt discard settings into libxl-4.5 discard settings.

Signed-off-by: Olaf Hering <olaf at aepfle.de>
---

default means leave decision to libxl.
Not sure if that is what "default" in libvirt terms really means.


 src/libxl/libxl_conf.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index b7fed7f..4cb062e 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -713,6 +713,33 @@ libxlMakeDomBuildInfo(virDomainObjPtr vm, libxl_domain_config *d_config)
     return -1;
 }
 
+static void
+libxlDiskSetDiscard(libxl_device_disk *x_disk, int discard)
+{
+    if (!x_disk->readwrite)
+        return;
+#if defined(LIBXL_HAVE_LIBXL_DEVICE_DISK_DISCARD_ENABLE)
+    switch (discard) {
+    case VIR_DOMAIN_DISK_DISCARD_DEFAULT:
+        break;
+    case VIR_DOMAIN_DISK_DISCARD_UNMAP:
+        libxl_defbool_set(&x_disk->discard_enable, true);
+        break;
+    default:
+    case VIR_DOMAIN_DISK_DISCARD_IGNORE:
+        libxl_defbool_set(&x_disk->discard_enable, false);
+        break;
+    }
+#else
+    if (discard == VIR_DOMAIN_DISK_DISCARD_DEFAULT)
+        return;
+    virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                   _("This version of libxenlight does not support "
+                     "discard= option passing"));
+#endif
+}
+
+
 int
 libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
 {
@@ -827,6 +854,7 @@ libxlMakeDisk(virDomainDiskDefPtr l_disk, libxl_device_disk *x_disk)
     x_disk->removable = 1;
     x_disk->readwrite = !l_disk->readonly;
     x_disk->is_cdrom = l_disk->device == VIR_DOMAIN_DISK_DEVICE_CDROM ? 1 : 0;
+    libxlDiskSetDiscard(x_disk, l_disk->discard);
     /* 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;




More information about the libvir-list mailing list