On Wed, Mar 11, 2009 at 10:12:16AM -0700, Kaitlin Rupert wrote:
Daniel P. Berrange wrote:
>On Fri, Feb 13, 2009 at 03:37:22PM -0800, Kaitlin Rupert wrote:
>>Hi,
>>
>>I'm running Fedora 10 with the following libvirt version: libvirt-0.6.0-3
>>
>>I'm calling virDomainGetVcpus() with the following parameters:
>>virDomainGetVcpus(dom, info, max, NULL, 0); where max = 2 and dom and
>>info are both non-NULL.
>>
>>However, I'm getting the following error from libvirt: libvir: Domain
>>error : invalid argument in virDomainGetVcpus
>>
>>I tracked this down, and it's failing the if (cpumaps != NULL &&
maplen
>>< 1) check in libvirt.c because cpumaps is non-NULL. Which is very
>>strange because I'm definitely passing a NULL value.
>
>The qemud/remote.c helper for the virDomainGetVcpus method is just
>doing a totally bogus calculation/allocation for the cpumaps field.
>It needs fixing somehow, but I'm not sure how yet
Any update on this?
I've had another look at it, and believe I have a suitable fix. There were
two problems.
- Not allocating a large enough array for the cpumaps field
- Not respecting a cpumaplen=0, as meaning pass cpumaps=NULL
The latter is what was causing the error message you saw I believe. Can
you try the following patch
Daniel
Index: qemud/remote.c
===================================================================
RCS file: /data/cvs/libvirt/qemud/remote.c,v
retrieving revision 1.64
diff -u -p -r1.64 remote.c
--- qemud/remote.c 3 Mar 2009 09:27:03 -0000 1.64
+++ qemud/remote.c 12 Mar 2009 11:50:58 -0000
@@ -1475,7 +1475,8 @@ remoteDispatchDomainGetVcpus (struct qem
/* Allocate buffers to take the results. */
if (VIR_ALLOC_N(info, args->maxinfo) < 0)
goto oom;
- if (VIR_ALLOC_N(cpumaps, args->maxinfo) < 0)
+ if (args->maplen > 0 &&
+ VIR_ALLOC_N(cpumaps, args->maxinfo * args->maplen) < 0)
goto oom;
info_len = virDomainGetVcpus (dom,
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|