[libvirt] [PATCH 2/2] libxl: allow an <emulator> to be selected in the domain config XML
Jim Fehlig
jfehlig at suse.com
Mon Apr 29 19:02:01 UTC 2013
Jim Fehlig wrote:
> David Scott wrote:
>
>> We cross-check the given path against the capabilties, and translate
>> it into a libxl_device_model_version.
>>
>> Signed-off-by: David Scott <dave.scott at eu.citrix.com>
>> ---
>> src/libxl/libxl_conf.c | 41 +++++++++++++++++++++++++++++++++++++++++
>> 1 files changed, 41 insertions(+), 0 deletions(-)
>>
>> diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
>> index 472d116..868d0cf 100644
>> --- a/src/libxl/libxl_conf.c
>> +++ b/src/libxl/libxl_conf.c
>> @@ -75,6 +75,11 @@ static const char* emulator_lib32_path [] = {
>> EMULATOR_LIB32 EMULATOR_UPSTREAM,
>> };
>>
>> +static const libxl_device_model_version emulator_to_device_model [] = {
>> + LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN_TRADITIONAL,
>> + LIBXL_DEVICE_MODEL_VERSION_QEMU_XEN,
>> +};
>> +
>> struct guest_arch {
>> virArch arch;
>> int bits;
>> @@ -833,6 +838,38 @@ libxlMakeCapabilities(libxl_ctx *ctx)
>> }
>>
>> int
>> +libxlMakeEmulator(virDomainDefPtr def, libxl_domain_config *d_config)
>> +{
>> + virArch hostarch;
>> + const char *path;
>> + int i;
>> +
>> + /* No explicit override means use the default */
>> + if (!def->emulator) {
>> + return 0;
>> + }
>> +
>> + hostarch = virArchFromHost();
>> +
>> + for (i = 0; i < emulator_last; ++i) {
>> + path = ((hostarch == VIR_ARCH_X86_64) ?
>> + emulator_lib64_path[i] :
>> + emulator_lib32_path[i]);
>> + if (STREQ(path, def->emulator)) {
>>
>>
>
> I thought there was a virCapabilitiesSupportsGuestEmulator() or similar,
> but I don't see it in src/conf/capabilities.c. I think it makes sense
> to add such a function to the capabilities and then just call it here,
> passing the requested emulator. Perhaps other libvirt developers can
> comment on the usefulness of virCapabilitiesSupportGuestEmulator().
>
Daniel already clarified this, so no need to do even more work David :).
As mentioned in my other response [1], your original patch (with a check
to verify the requested emulator exists) should be sufficient.
Regards,
Jim
[1] https://www.redhat.com/archives/libvir-list/2013-April/msg02087.html
More information about the libvir-list
mailing list