From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=45760 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PPjL8-0003Bw-Il for qemu-devel@nongnu.org; Mon, 06 Dec 2010 17:15:23 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PPjL7-0006M1-GX for qemu-devel@nongnu.org; Mon, 06 Dec 2010 17:15:22 -0500 Received: from e9.ny.us.ibm.com ([32.97.182.139]:50466) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PPjL7-0006L2-BS for qemu-devel@nongnu.org; Mon, 06 Dec 2010 17:15:21 -0500 Received: from d01dlp02.pok.ibm.com (d01dlp02.pok.ibm.com [9.56.224.85]) by e9.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id oB6LqY4d031418 for ; Mon, 6 Dec 2010 16:52:34 -0500 Received: from d01relay03.pok.ibm.com (d01relay03.pok.ibm.com [9.56.227.235]) by d01dlp02.pok.ibm.com (Postfix) with ESMTP id 0E9B14DE803E for ; Mon, 6 Dec 2010 17:13:15 -0500 (EST) Received: from d01av01.pok.ibm.com (d01av01.pok.ibm.com [9.56.224.215]) by d01relay03.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id oB6MF3pX067808 for ; Mon, 6 Dec 2010 17:15:03 -0500 Received: from d01av01.pok.ibm.com (loopback [127.0.0.1]) by d01av01.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id oB6MF32i019325 for ; Mon, 6 Dec 2010 17:15:03 -0500 Message-ID: <4CFD6064.6010901@linux.vnet.ibm.com> Date: Mon, 06 Dec 2010 16:15:00 -0600 From: Michael Roth MIME-Version: 1.0 References: <1291399402-20366-1-git-send-email-mdroth@linux.vnet.ibm.com> <1291399402-20366-4-git-send-email-mdroth@linux.vnet.ibm.com> <1291672475.2213.1.camel@aglitke> In-Reply-To: <1291672475.2213.1.camel@aglitke> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [RFC][PATCH v5 03/21] virtagent: common code for managing client/server rpc jobs List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Adam Litke Cc: agl@linux.vnet.ibm.com, stefanha@linux.vnet.ibm.com, Jes.Sorensen@redhat.com, qemu-devel@nongnu.org, aliguori@linux.vnet.ibm.com, ryanh@us.ibm.com, abeekhof@redhat.com On 12/06/2010 03:54 PM, Adam Litke wrote: > On Fri, 2010-12-03 at 12:03 -0600, Michael Roth wrote: >> +/* create new client job and then put it on the queue. this can be >> + * called externally from virtagent. Since there can only be one virtagent >> + * instance we access state via an object-scoped global rather than pass >> + * it around. >> + * >> + * if this is successful virtagent will handle cleanup of req_xml after >> + * making the appropriate callbacks, otherwise callee should handle it >> + */ > > Explain please. Do you mean caller should handle it? Are you trying to > say that this function, when successful, "steals" the reference to > req_xml? > Yup, should be caller. And yes, cleanup duty gets taken over if the call succeeds (after transmitting the request we have no need for the req_xml, so it didn't seem to make sense to carry it around just so the caller can free it when it gets it's call later on) >> +int va_client_job_add(xmlrpc_mem_block *req_xml, VAClientCallback *cb, >> + MonitorCompletion *mon_cb, void *mon_data) >> +{ >> + int ret; >> + VAClientJob *client_job; >> + TRACE("called"); >> + >> + client_job = va_client_job_new(req_xml, cb, mon_cb, mon_data); >> + if (client_job == NULL) { >> + return -EINVAL; >> + } >> + >> + ret = va_push_client_job(client_job); >> + if (ret != 0) { >> + LOG("error adding client to queue: %s", strerror(ret)); >> + qemu_free(client_job); >> + return ret; >> + } >> + >> + return 0; >> +} >