[libvirt] [PATCH v2] libxl: load on FreeBSD

Martin Kletzander mkletzan at redhat.com
Wed May 27 15:06:26 UTC 2015


On Sun, May 24, 2015 at 06:45:02PM +0300, Roman Bogorodskiy wrote:
>The libxl tries to check if it's running in dom0 by parsing
>/proc/xen/capabilities and if that fails it doesn't load.
>
>There's no procfs interface in Xen on FreeBSD, so this check always
>fails.
>
>In addition to checking procfs, check if /dev/xen/xenstored, that's enough to
>check if we're running in dom0 in FreeBSD case.
>---
> src/libxl/libxl_driver.c | 42 ++++++++++++++++++++++--------------------
> 1 file changed, 22 insertions(+), 20 deletions(-)
>
>diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c
>index 12be816..fddafa1 100644
>--- a/src/libxl/libxl_driver.c
>+++ b/src/libxl/libxl_driver.c
>@@ -74,6 +74,7 @@ VIR_LOG_INIT("libxl.libxl_driver");
> #define LIBXL_CONFIG_FORMAT_SEXPR "xen-sxpr"
>
> #define HYPERVISOR_CAPABILITIES "/proc/xen/capabilities"
>+#define HYPERVISOR_XENSTORED "/dev/xen/xenstored"
>
> /* Number of Xen scheduler parameters */
> #define XEN_SCHED_CREDIT_NPARAM   2
>@@ -427,8 +428,6 @@ static bool
> libxlDriverShouldLoad(bool privileged)
> {
>     bool ret = false;
>-    int status;
>-    char *output = NULL;
>
>     /* Don't load if non-root */
>     if (!privileged) {
>@@ -436,24 +435,27 @@ libxlDriverShouldLoad(bool privileged)
>         return ret;
>     }
>
>-    if (!virFileExists(HYPERVISOR_CAPABILITIES)) {
>-        VIR_INFO("Disabling driver as " HYPERVISOR_CAPABILITIES
>-                 " does not exist");
>-        return ret;
>-    }
>-    /*
>-     * Don't load if not running on a Xen control domain (dom0). It is not
>-     * sufficient to check for the file to exist as any guest can mount
>-     * xenfs to /proc/xen.
>-     */
>-    status = virFileReadAll(HYPERVISOR_CAPABILITIES, 10, &output);
>-    if (status >= 0)
>-        status = strncmp(output, "control_d", 9);
>-    VIR_FREE(output);
>-    if (status) {
>-        VIR_INFO("No Xen capabilities detected, probably not running "
>-                 "in a Xen Dom0.  Disabling libxenlight driver");
>-
>+    if (virFileExists(HYPERVISOR_CAPABILITIES)) {
>+        int status;
>+        char *output = NULL;
>+        /*
>+         * Don't load if not running on a Xen control domain (dom0). It is not
>+         * sufficient to check for the file to exist as any guest can mount
>+         * xenfs to /proc/xen.
>+         */
>+        status = virFileReadAll(HYPERVISOR_CAPABILITIES, 10, &output);
>+        if (status >= 0)
>+            status = strncmp(output, "control_d", 9);
>+        VIR_FREE(output);
>+        if (status) {
>+            VIR_INFO("No Xen capabilities detected, probably not running "
>+                     "in a Xen Dom0.  Disabling libxenlight driver");
>+
>+            return ret;
>+        }
>+    } else if (!virFileExists(HYPERVISOR_XENSTORED)) {
>+        VIR_INFO("Disabling driver as neither " HYPERVISOR_CAPABILITIES
>+                 " nor " HYPERVISOR_CAPABILITIES " exist");

s/HYPERVISOR_CAPABILITIES/HYPERVISOR_XENSTORED/

ACK with that changed.

>         return ret;
>     }
>
>--
>2.3.7
>
>--
>libvir-list mailing list
>libvir-list at redhat.com
>https://www.redhat.com/mailman/listinfo/libvir-list
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150527/39b96dfa/attachment-0001.sig>


More information about the libvir-list mailing list