[libvirt] [PATCH 15/40] Simplify the Xen domain get OS type driver method
Jim Fehlig
jfehlig at suse.com
Mon May 6 21:57:52 UTC 2013
Jim Fehlig wrote:
> Daniel P. Berrange wrote:
>
>> From: "Daniel P. Berrange" <berrange at redhat.com>
>>
>> Make xenUnifiedDomainGetOSType directly call either the
>> xenHypervisorDomainGetOSType or xenDaemonDomainGetOSType
>> method depending on whether the domain is active or not.
>>
>>
>
> Useful to add a note about removing the unused code in the xenstore
> driver, as you did in the other patches.
>
>
>> Signed-off-by: Daniel P. Berrange <berrange at redhat.com>
>> ---
>> src/xen/xen_driver.c | 19 ++++++-----
>> src/xen/xen_driver.h | 1 -
>> src/xen/xen_hypervisor.c | 5 +--
>> src/xen/xend_internal.c | 7 +---
>> src/xen/xend_internal.h | 2 ++
>> src/xen/xs_internal.c | 85 ------------------------------------------------
>> 6 files changed, 15 insertions(+), 104 deletions(-)
>>
>>
>
> ACK.
>
Forgot to mention one little nit below
>
>> diff --git a/src/xen/xen_driver.c b/src/xen/xen_driver.c
>> index 7827d70..8ee3c4c 100644
>> --- a/src/xen/xen_driver.c
>> +++ b/src/xen/xen_driver.c
>> @@ -782,18 +782,21 @@ static char *
>> xenUnifiedDomainGetOSType(virDomainPtr dom)
>> {
>> xenUnifiedPrivatePtr priv = dom->conn->privateData;
>> - int i;
>> - char *ret;
>>
>> - for (i = 0; i < XEN_UNIFIED_NR_DRIVERS; ++i)
>> - if (priv->opened[i] && drivers[i]->xenDomainGetOSType) {
>> - ret = drivers[i]->xenDomainGetOSType(dom);
>> - if (ret) return ret;
>> + if (dom->id < 0) {
>> + if (priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4) {
>> + virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> + _("Unable to query OS type for inactive domain"));
>> + return NULL;
>> + } else {
>> + return xenDaemonDomainGetOSType(dom);
>> }
>> -
>> - return NULL;
>> + } else {
>> + return xenHypervisorDomainGetOSType(dom);
>> + }
>> }
>>
>> +
>>
Spurious whitespace.
Regards,
Jim
>> static unsigned long long
>> xenUnifiedDomainGetMaxMemory(virDomainPtr dom)
>> {
>> diff --git a/src/xen/xen_driver.h b/src/xen/xen_driver.h
>> index aff68f2..3ac2912 100644
>> --- a/src/xen/xen_driver.h
>> +++ b/src/xen/xen_driver.h
>> @@ -94,7 +94,6 @@ extern int xenRegister (void);
>> */
>> struct xenUnifiedDriver {
>> virDrvConnectGetHostname xenGetHostname;
>> - virDrvDomainGetOSType xenDomainGetOSType;
>> virDrvDomainGetMaxMemory xenDomainGetMaxMemory;
>> virDrvDomainSetMaxMemory xenDomainSetMaxMemory;
>> virDrvDomainSetMemory xenDomainSetMemory;
>> diff --git a/src/xen/xen_hypervisor.c b/src/xen/xen_hypervisor.c
>> index 244bdee..8636d52 100644
>> --- a/src/xen/xen_hypervisor.c
>> +++ b/src/xen/xen_hypervisor.c
>> @@ -873,7 +873,6 @@ typedef struct xen_op_v2_dom xen_op_v2_dom;
>> static unsigned long long xenHypervisorGetMaxMemory(virDomainPtr domain);
>>
>> struct xenUnifiedDriver xenHypervisorDriver = {
>> - .xenDomainGetOSType = xenHypervisorDomainGetOSType,
>> .xenDomainGetMaxMemory = xenHypervisorGetMaxMemory,
>> .xenDomainSetMaxMemory = xenHypervisorSetMaxMemory,
>> .xenDomainGetInfo = xenHypervisorGetDomainInfo,
>> @@ -2613,9 +2612,7 @@ xenHypervisorDomainGetOSType(virDomainPtr dom)
>> /* HV's earlier than 3.1.0 don't include the HVM flags in guests status*/
>> if (hv_versions.hypervisor < 2 ||
>> hv_versions.dom_interface < 4) {
>> - virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
>> - _("unsupported in dom interface < 4"));
>> - return NULL;
>> + return xenDaemonDomainGetOSType(dom);
>> }
>>
>> XEN_GETDOMAININFO_CLEAR(dominfo);
>> diff --git a/src/xen/xend_internal.c b/src/xen/xend_internal.c
>> index c759636..75c1514 100644
>> --- a/src/xen/xend_internal.c
>> +++ b/src/xen/xend_internal.c
>> @@ -1373,15 +1373,11 @@ xenDaemonDomainDestroy(virDomainPtr domain)
>> * Returns the new string or NULL in case of error, the string must be
>> * freed by the caller.
>> */
>> -static char *
>> +char *
>> xenDaemonDomainGetOSType(virDomainPtr domain)
>> {
>> char *type;
>> struct sexpr *root;
>> - xenUnifiedPrivatePtr priv = domain->conn->privateData;
>> -
>> - if (domain->id < 0 && priv->xendConfigVersion < XEND_CONFIG_VERSION_3_0_4)
>> - return NULL;
>>
>> /* can we ask for a subset ? worth it ? */
>> root = sexpr_get(domain->conn, "/xend/domain/%s?detail=1", domain->name);
>> @@ -3441,7 +3437,6 @@ xenDaemonDomainBlockPeek(virDomainPtr domain,
>> }
>>
>> struct xenUnifiedDriver xenDaemonDriver = {
>> - .xenDomainGetOSType = xenDaemonDomainGetOSType,
>> .xenDomainGetMaxMemory = xenDaemonDomainGetMaxMemory,
>> .xenDomainSetMaxMemory = xenDaemonDomainSetMaxMemory,
>> .xenDomainSetMemory = xenDaemonDomainSetMemory,
>> diff --git a/src/xen/xend_internal.h b/src/xen/xend_internal.h
>> index d393ec8..9681068 100644
>> --- a/src/xen/xend_internal.h
>> +++ b/src/xen/xend_internal.h
>> @@ -108,6 +108,8 @@ char *xenDaemonDomainGetXMLDesc(virDomainPtr domain, unsigned int flags,
>> unsigned long long xenDaemonDomainGetMaxMemory(virDomainPtr domain);
>> char **xenDaemonListDomainsOld(virConnectPtr xend);
>>
>> +char *xenDaemonDomainGetOSType(virDomainPtr domain);
>> +
>> virDomainPtr xenDaemonDomainDefineXML(virConnectPtr xend, const char *sexpr);
>> int xenDaemonDomainCreate(virDomainPtr domain);
>> int xenDaemonDomainUndefine(virDomainPtr domain);
>> diff --git a/src/xen/xs_internal.c b/src/xen/xs_internal.c
>> index a7a8d15..40d0be2 100644
>> --- a/src/xen/xs_internal.c
>> +++ b/src/xen/xs_internal.c
>> @@ -53,12 +53,10 @@
>>
>> #define VIR_FROM_THIS VIR_FROM_XEN
>>
>> -static char *xenStoreDomainGetOSType(virDomainPtr domain);
>> static void xenStoreWatchEvent(int watch, int fd, int events, void *data);
>> static void xenStoreWatchListFree(xenStoreWatchListPtr list);
>>
>> struct xenUnifiedDriver xenStoreDriver = {
>> - .xenDomainGetOSType = xenStoreDomainGetOSType,
>> .xenDomainGetMaxMemory = xenStoreDomainGetMaxMemory,
>> .xenDomainSetMemory = xenStoreDomainSetMemory,
>> .xenDomainGetInfo = xenStoreGetDomainInfo,
>> @@ -142,63 +140,6 @@ virDomainDoStoreWrite(virDomainPtr domain, const char *path, const char *value)
>> return ret;
>> }
>>
>> -/**
>> - * virDomainGetVM:
>> - * @domain: a domain object
>> - *
>> - * Internal API extracting a xenstore vm path.
>> - *
>> - * Returns the new string or NULL in case of error
>> - */
>> -static char *
>> -virDomainGetVM(virDomainPtr domain)
>> -{
>> - char *vm;
>> - char query[200];
>> - unsigned int len;
>> - xenUnifiedPrivatePtr priv = domain->conn->privateData;
>> -
>> - if (priv->xshandle == NULL)
>> - return NULL;
>> -
>> - snprintf(query, 199, "/local/domain/%d/vm", virDomainGetID(domain));
>> - query[199] = 0;
>> -
>> - vm = xs_read(priv->xshandle, 0, &query[0], &len);
>> -
>> - return vm;
>> -}
>> -
>> -/**
>> - * virDomainGetVMInfo:
>> - * @domain: a domain object
>> - * @vm: the xenstore vm path
>> - * @name: the value's path
>> - *
>> - * Internal API extracting one information the device used
>> - * by the domain from xensttore
>> - *
>> - * Returns the new string or NULL in case of error
>> - */
>> -static char *
>> -virDomainGetVMInfo(virDomainPtr domain, const char *vm, const char *name)
>> -{
>> - char s[256];
>> - char *ret = NULL;
>> - unsigned int len = 0;
>> - xenUnifiedPrivatePtr priv = domain->conn->privateData;
>> -
>> - if (priv->xshandle == NULL)
>> - return NULL;
>> -
>> - snprintf(s, 255, "%s/%s", vm, name);
>> - s[255] = 0;
>> -
>> - ret = xs_read(priv->xshandle, 0, &s[0], &len);
>> -
>> - return ret;
>> -}
>> -
>>
>> /************************************************************************
>> * *
>> @@ -579,32 +520,6 @@ xenStoreListDomains(virConnectPtr conn, int *ids, int maxids)
>> }
>>
>>
>> -/*
>> - * xenStoreDomainGetOSType:
>> - * @domain: a domain object
>> - *
>> - * Get the type of domain operation system.
>> - *
>> - * Returns the new string or NULL in case of error, the string must be
>> - * freed by the caller.
>> - */
>> -static char *
>> -xenStoreDomainGetOSType(virDomainPtr domain)
>> -{
>> - char *vm, *str = NULL;
>> -
>> - vm = virDomainGetVM(domain);
>> - if (vm) {
>> - xenUnifiedPrivatePtr priv = domain->conn->privateData;
>> - xenUnifiedLock(priv);
>> - str = virDomainGetVMInfo(domain, vm, "image/ostype");
>> - xenUnifiedUnlock(priv);
>> - VIR_FREE(vm);
>> - }
>> -
>> - return str;
>> -}
>> -
>> /**
>> * xenStoreDomainGetVNCPort:
>> * @conn: the hypervisor connection
>>
>>
>
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
>
>
More information about the libvir-list
mailing list