提交 d575a83f 编写于 作者: D Daniel P. Berrange

Fix nodeinfo compat with Xen 3.2.0

上级 1be1fe69
Mon Dec 17 18:03:00 UTC 2007 Daniel P. Berrange <berrange@redhat.com>
* src/xend_internal.c: Compatability with Xen 3.2.0 changed
fields for physinfo data used by virNodeInfoPtr.
Mon Dec 17 17:38:00 UTC 2007 Richard W.M. Jones <rjones@redhat.com>
Fix remote_internal.c error handling of qparam_get_query
......
......@@ -1288,6 +1288,8 @@ xend_parse_sexp_desc_os(virConnectPtr xend, struct sexpr *node, virBufferPtr buf
if (hvm) {
virBufferVSprintf(buf, " <type>hvm</type>\n");
tmp = sexpr_node(node, "domain/image/hvm/kernel");
if (tmp == NULL)
tmp = sexpr_node(node, "domain/image/hvm/loader");
if (tmp == NULL && !bootloader) {
virXendError(xend, VIR_ERR_INTERNAL_ERROR,
_("domain information incomplete, missing kernel & bootloader"));
......@@ -1893,11 +1895,11 @@ sexpr_to_xend_node_info(struct sexpr *root, virNodeInfoPtr info)
return (-1);
machine = sexpr_node(root, "node/machine");
if (machine == NULL)
if (machine == NULL) {
info->model[0] = 0;
else {
} else {
snprintf(&info->model[0], sizeof(info->model) - 1, "%s", machine);
info->model[sizeof(info->model) - 1] = 0;
info->model[sizeof(info->model) - 1] = 0;
}
info->memory = (unsigned long) sexpr_u64(root, "node/total_memory") << 10;
......@@ -1905,6 +1907,20 @@ sexpr_to_xend_node_info(struct sexpr *root, virNodeInfoPtr info)
info->mhz = sexpr_int(root, "node/cpu_mhz");
info->nodes = sexpr_int(root, "node/nr_nodes");
info->sockets = sexpr_int(root, "node/sockets_per_node");
/* Xen 3.2.0 replaces sockets_per_node with 'nr_cpus'.
* Old Xen calculated sockets_per_node using its internal
* nr_cpus / (nodes*cores*threads), so fake it ourselves
* in the same way
*/
if (info->sockets == 0) {
int nr_cpus = sexpr_int(root, "node/nr_cpus");
info->sockets = nr_cpus / (info->nodes * info->cores * info->threads);
/* Should already be fine, but for sanity make
* sure we have at least one socket
*/
if (info->sockets == 0)
info->sockets = 1;
}
info->cores = sexpr_int(root, "node/cores_per_socket");
info->threads = sexpr_int(root, "node/threads_per_core");
return (0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册