Stefano Stabellini
2012-Apr-20 12:54 UTC
[PATCH 1/1] libxl: use qemu-xen with PV guests by default
qemu-xen offers better disk performances than qemu-xen-traditional because it supports Linux native AIO: use it for PV guests if it is available. Changes in v2: - check for the existence of the qemu-xen binary before setting qemu-xen as the default device model for PV guests. Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> --- tools/libxl/libxl_create.c | 29 ++++++++++++++++++++++++----- 1 files changed, 24 insertions(+), 5 deletions(-) diff --git a/tools/libxl/libxl_create.c b/tools/libxl/libxl_create.c index e63c7bd..b71524e 100644 --- a/tools/libxl/libxl_create.c +++ b/tools/libxl/libxl_create.c @@ -71,9 +71,30 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, b_info->type != LIBXL_DOMAIN_TYPE_PV) return ERROR_INVAL; - if (!b_info->device_model_version) - b_info->device_model_version - LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL; + libxl_defbool_setdefault(&b_info->device_model_stubdomain, false); + + if (!b_info->device_model_version) { + if (b_info->type == LIBXL_DOMAIN_TYPE_HVM) + b_info->device_model_version + LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL; + else { + const char *dm; + struct stat buf; + int rc; + + b_info->device_model_version + LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN; + dm = libxl__domain_device_model(gc, b_info); + rc = stat(dm, &buf); + /* qemu-xen unavailable, use qemu-xen-traditional */ + if (rc != 0) { + LIBXL__LOG(CTX, XTL_VERBOSE, "setting device model to " + "qemu-xen-traditional because qemu-xen is unavailable"); + b_info->device_model_version + LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL; + } + } + } if (b_info->type == LIBXL_DOMAIN_TYPE_HVM) { if (!b_info->u.hvm.bios) @@ -99,8 +120,6 @@ int libxl__domain_build_info_setdefault(libxl__gc *gc, } } - libxl_defbool_setdefault(&b_info->device_model_stubdomain, false); - if (b_info->type == LIBXL_DOMAIN_TYPE_HVM && b_info->device_model_version ! LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL && -- 1.7.2.5
Ian Jackson
2012-Apr-20 13:01 UTC
Re: [PATCH 1/1] libxl: use qemu-xen with PV guests by default
Stefano Stabellini writes ("[PATCH 1/1] libxl: use qemu-xen with PV guests by default"):> qemu-xen offers better disk performances than qemu-xen-traditional > because it supports Linux native AIO: use it for PV guests if it is > available....> + rc = stat(dm, &buf); > + /* qemu-xen unavailable, use qemu-xen-traditional */Firstly, why not use access(2) rather than stat(2) ? Secondly you ignore the errno value. errnos other than ENOENT (or perhaps ENOTDIR) should perhaps cause us to bomb out, and in any case the errno value should be logged. Ian.
Stefano Stabellini
2012-Apr-20 15:28 UTC
Re: [PATCH 1/1] libxl: use qemu-xen with PV guests by default
On Fri, 20 Apr 2012, Ian Jackson wrote:> Stefano Stabellini writes ("[PATCH 1/1] libxl: use qemu-xen with PV guests by default"): > > qemu-xen offers better disk performances than qemu-xen-traditional > > because it supports Linux native AIO: use it for PV guests if it is > > available. > ... > > + rc = stat(dm, &buf); > > + /* qemu-xen unavailable, use qemu-xen-traditional */ > > Firstly, why not use access(2) rather than stat(2) ? > > Secondly you ignore the errno value. errnos other than ENOENT (or > perhaps ENOTDIR) should perhaps cause us to bomb out, and in any case > the errno value should be logged.you have two good points there, I''ll resubmit.