Hi all
I try virsh dominfo in upstream libvirt on xen machine,
the commands returns -1 as follows:
[r...@vmi20 ~]# virsh dominfo rhel53rc2_pv_sdb3
Id: 1
Name: rhel53rc2_pv_sdb3
UUID: 05ba9be8-f4e9-e208-11c7-fc936655cd8e
OS Type: linux
State: idle
CPU(s): 2
CPU time: 8.8s
Max memory: 1048576 kB
Used memory: 716800 kB
Autostart: disable
error: this function is not supported by the hypervisor:
virNodeGetSecurityModel
[r...@vmi20 ~]# echo $?
1
The explanation of virNodeGetSecurityModel() and
virNodeGetSecurityModel() in libvirt.c is return -2
when hypervisor drivers don't support these operations.
But these functions return -1 in this case, and so
cmdDominfo() in virsh.c returns FALSE.
I make a patch.
- virNodeGetSecurityModel() and virNodeGetSecurityModel()
return -2 when drivers don't supprted these operations.
- In CmdDominfo(), it is no operation when virNodeGetSecurityModel()
and virNodeGetSecurityModel() return -2.
Signed-off-by: Tatsuro Enokura <[email protected]>
Thanks
Tatsuro Enokura
Index: src/libvirt.c
===================================================================
RCS file: /data/cvs/libvirt/src/libvirt.c,v
retrieving revision 1.214
diff -u -r1.214 libvirt.c
--- src/libvirt.c 12 Jun 2009 13:20:13 -0000 1.214
+++ src/libvirt.c 18 Jun 2009 02:51:23 -0000
@@ -4412,8 +4412,9 @@
if (conn->driver->domainGetSecurityLabel)
return conn->driver->domainGetSecurityLabel(domain, seclabel);
+ /* the operation is not supported */
virLibConnWarning(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
- return -1;
+ return -2;
}
/**
@@ -4442,8 +4443,9 @@
if (conn->driver->nodeGetSecurityModel)
return conn->driver->nodeGetSecurityModel(conn, secmodel);
+ /* the operation is not supported */
virLibConnWarning(conn, VIR_ERR_NO_SUPPORT, __FUNCTION__);
- return -1;
+ return -2;
}
/**
Index: src/virsh.c
===================================================================
RCS file: /data/cvs/libvirt/src/virsh.c,v
retrieving revision 1.210
diff -u -r1.210 virsh.c
--- src/virsh.c 3 Jun 2009 12:13:52 -0000 1.210
+++ src/virsh.c 18 Jun 2009 02:51:25 -0000
@@ -1582,7 +1582,7 @@
virDomainPtr dom;
virSecurityModel secmodel;
virSecurityLabel seclabel;
- int ret = TRUE, autostart;
+ int ret = TRUE, ret_code, autostart;
unsigned int id;
char *str, uuid[VIR_UUID_STRING_BUFLEN];
@@ -1642,9 +1642,13 @@
/* Security model and label information */
memset(&secmodel, 0, sizeof secmodel);
- if (virNodeGetSecurityModel(ctl->conn, &secmodel) == -1) {
+ ret_code = virNodeGetSecurityModel(ctl->conn, &secmodel);
+ if (ret_code == -1) {
+ /* operation failure */
virDomainFree(dom);
return FALSE;
+ } else if (ret_code == -2) {
+ /* operation is not supported. noop */
} else {
/* Only print something if a security model is active */
if (secmodel.model[0] != '\0') {
@@ -1653,9 +1657,13 @@
/* Security labels are only valid for active domains */
memset(&seclabel, 0, sizeof seclabel);
- if (virDomainGetSecurityLabel(dom, &seclabel) == -1) {
+ ret_code = virDomainGetSecurityLabel(dom, &seclabel);
+ if (ret == -1) {
+ /* operation failure */
virDomainFree(dom);
return FALSE;
+ } else if (ret == -2) {
+ /* operation is not supported. noop */
} else {
if (seclabel.label[0] != '\0')
vshPrint(ctl, "%-15s %s (%s)\n", _("Security label:"),
--
Libvir-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libvir-list