[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] xen/sysfs: Use XENVER_guest_handle to query UUID
On Thu, Aug 16, 2012 at 11:25:15AM -0700, Daniel De Graaf wrote: > The /sys/hypervisor/uuid path relies on Xenstore to query the domain's > UUID (handle) even when the hypervisor exposes an interface to more > directly and efficiently query this. The xenstore path /vm/UUID which is > used for the current query is being discussed for possible removal as > most of the information under this path is only useful for the > toolstack, not the VM. > > The UUID fetched from xenstore may also not be properly formatted as a > UUID for the domain if the UUID has been reused (this is most often seen > in domain 0, which if xenstored does not clean up /vm properly, can end > up with a UUID field like "00000000-0000-0000-0000-000000000000-5"). > > ----8<----------------------------------------------------- > > This hypercall has been present since Xen 3.1, and is the preferred > method for a domain to obtain its UUID. Hi Daniel, What do you think about retaining a fallback of looking in xenstore if the hypercall fails? Matt > Signed-off-by: Daniel De Graaf <dgdegra@xxxxxxxxxxxxx> > --- > drivers/xen/sys-hypervisor.c | 20 +++++--------------- > include/xen/interface/version.h | 3 +++ > 2 files changed, 8 insertions(+), 15 deletions(-) > > diff --git a/drivers/xen/sys-hypervisor.c b/drivers/xen/sys-hypervisor.c > index 4c7db7d..416fa01 100644 > --- a/drivers/xen/sys-hypervisor.c > +++ b/drivers/xen/sys-hypervisor.c > @@ -116,22 +116,12 @@ static void xen_sysfs_version_destroy(void) > > static ssize_t uuid_show(struct hyp_sysfs_attr *attr, char *buffer) > { > - char *vm, *val; > + xen_domain_handle_t uuid; > int ret; > - extern int xenstored_ready; > - > - if (!xenstored_ready) > - return -EBUSY; > - > - vm = xenbus_read(XBT_NIL, "vm", "", NULL); > - if (IS_ERR(vm)) > - return PTR_ERR(vm); > - val = xenbus_read(XBT_NIL, vm, "uuid", NULL); > - kfree(vm); > - if (IS_ERR(val)) > - return PTR_ERR(val); > - ret = sprintf(buffer, "%s\n", val); > - kfree(val); > + ret = HYPERVISOR_xen_version(XENVER_guest_handle, uuid); > + if (ret) > + return ret; > + ret = sprintf(buffer, "%pU\n", uuid); > return ret; > } > > diff --git a/include/xen/interface/version.h b/include/xen/interface/version.h > index e8b6519..dd58cf5 100644 > --- a/include/xen/interface/version.h > +++ b/include/xen/interface/version.h > @@ -60,4 +60,7 @@ struct xen_feature_info { > /* arg == NULL; returns host memory page size. */ > #define XENVER_pagesize 7 > > +/* arg == xen_domain_handle_t. */ > +#define XENVER_guest_handle 8 > + > #endif /* __XEN_PUBLIC_VERSION_H__ */ _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |