mirror of https://gitee.com/openkylin/libvirt.git
libxl: Check for control_d string to decide about dom0
As soon as any guest mounts xenfs to /proc/xen, there is a capabilities file in that directory. However it returns nothing when reading from it. Change the test to actually check the contents of the file. BugLink: http://bugs.launchpad.net/bugs/1248025 Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
This commit is contained in:
parent
03fc0c626d
commit
8c869ad9f9
|
@ -962,6 +962,7 @@ libxlDriverShouldLoad(bool privileged)
|
|||
bool ret = false;
|
||||
virCommandPtr cmd;
|
||||
int status;
|
||||
char *output = NULL;
|
||||
|
||||
/* Don't load if non-root */
|
||||
if (!privileged) {
|
||||
|
@ -969,8 +970,17 @@ libxlDriverShouldLoad(bool privileged)
|
|||
return ret;
|
||||
}
|
||||
|
||||
/* Don't load if not running on a Xen control domain (dom0) */
|
||||
if (!virFileExists("/proc/xen/capabilities")) {
|
||||
/*
|
||||
* 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("/proc/xen/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");
|
||||
|
||||
|
|
Loading…
Reference in New Issue