[Libvir] [RFC][PATCH 1/2] NUMA memory and topology patches

beth kon eak at us.ibm.com
Wed Sep 26 17:58:04 UTC 2007


Daniel Veillard wrote:

>On Mon, Sep 24, 2007 at 11:29:07PM -0400, beth kon wrote:
>  
>
>>[PATCH 1/2] - add capability to access free memory information on each 
>>NUMA cell.
>>    
>>
>[...]
>  
>
>>diff -urpN libvirt.danielpatch/src/xen_internal.c libvirt.cellsMemory/src/xen_internal.c
>>--- libvirt.danielpatch/src/xen_internal.c	2007-09-11 15:29:44.000000000 -0400
>>+++ libvirt.cellsMemory/src/xen_internal.c	2007-09-24 22:04:05.000000000 -0400
>>    
>>
>[...]
>  
>
>>  * Returns the number of entries filled in freeMems, or -1 in case of error.
>>  */
>> int
>>-xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn, unsigned long *freeMems,
>>-                                    int nbCells)
>>+xenHypervisorNodeGetCellsFreeMemory(virConnectPtr conn, long long *freeMems,
>>+                                    int startCell, int maxCells)
>> {
>>-    if ((conn == NULL) || (freeMems == NULL) || (nbCells < 0))
>>-        return -1;
>>+    xen_op_v2_sys op_sys;
>>+    int i, j, ret;
>>+    xenUnifiedPrivatePtr priv;
>>+    
>> 
>>+    if ((conn == NULL) || (maxCells < 1) || (startCell > nbNodeCells)) {
>>+        virXenErrorFunc (VIR_ERR_INVALID_ARG, __FUNCTION__,
>>+                        "invalid argument", 0);
>>+        return -1;
>>+    }
>>     /*
>>-     * TODO:
>>-     *   - get the number of cell in the node
>>-     *   - if not NUMA returns the available memeoy directly in freeMems[0]
>>-     *     return 1
>>-     *   - if NUMA iterates over the cells using a specific hypercall
>>-     *     filling up entries until full or at the end of the NUMA cells
>>+     * Support only sys_interface_version >=4
>>      */
>>-    return(-1);
>>+    if (sys_interface_version < 4) {
>>+        virXenErrorFunc (VIR_ERR_NO_XEN, __FUNCTION__,
>>+                        "unsupported in sys interface < 4", 0);
>>+        return -1;
>>+    }
>>    
>>
>
>   I found out that using VIR_ERR_NO_XEN here isn't a good idea, first
>it's not that Xen hypervisoris not found but that this specific call is not
>available, and second virsh filter out automatically VIR_ERR_NO_XEN. It
>is better to use VIR_ERR_XEN_CALL , you then get:
>
>[root at test2 src]# ./virsh freecell 1
>libvir: Xen error : failed Xen syscall xenHypervisorNodeGetCellsFreeMemory: unsupported in sys interface < 4 0
>
>[root at test2 src]# echo $?
>1
>[root at test2 src]# 
>
>  Which is a correct error report IMHO.
>
>Daniel
>
>  
>
Ok, that sounds good.

-- 
Elizabeth Kon (Beth)
IBM Linux Technology Center
Open Hypervisor Team
email: eak at us.ibm.com




More information about the libvir-list mailing list