From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:41292) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uf5PE-00077a-1a for qemu-devel@nongnu.org; Wed, 22 May 2013 05:32:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uf5PA-0003OB-JG for qemu-devel@nongnu.org; Wed, 22 May 2013 05:32:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45816) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uf5PA-0003Nz-AU for qemu-devel@nongnu.org; Wed, 22 May 2013 05:32:20 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r4M9WJdQ017263 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 22 May 2013 05:32:19 -0400 Date: Wed, 22 May 2013 17:32:15 +0800 From: Fam Zheng Message-ID: <20130522093215.GB11408@localhost.nay.redhat.com> References: <1369192610-25003-1-git-send-email-famz@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1369192610-25003-1-git-send-email-famz@redhat.com> Subject: Re: [Qemu-devel] [PATCH v4 00/10] curl: fix curl read List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, rjones@redhat.com Cc: kwolf@redhat.com, jcody@redhat.com, famz@redhat.com, stefanha@redhat.com Rich, Please try this version with libguestfs. Thanks. (missing CC due to improper git send-email config) On Wed, 05/22 11:16, Fam Zheng wrote: > CURL library API has changed, the current curl driver is not working. > This patch rewrites the use of API as well as the structure of internal > states. > > BDRVCURLState holds the pointer to curl multi interface (man 3 > libcurl-multi), and 4 lists for internal states: > - CURLState holds state for libcurl connection (man 3 libcurl-easy) > - CURLSockInfo holds information for libcurl socket interface (man 3 > curl_multi_socket_action). > - CURLDataCache holds the user data read from libcurl, it is in a list > ordered by access, the used cache is moved to list head on access, so > the tail element is freed first. BDRVCURLState.cache_quota is the > threshold to start freeing cache. > - CURLAIOCB holds ongoing aio information. > > Changes from v3: > 01, 06, 07: Add QLIST_INIT in qemu_open to initialize each list. > 07: Move clean up for s->acbs from later patch to here. Use qemu_aio_relase instead of g_free on acb. > Fix use-after-free bug. [Rich] > > Changes from v2: > 00: Removed previous 09, since changes are included in previous > commits. > previous 09: curl: release everything on curl close. > 01: Add commit message for introducing CURLSockInfo. Remove > unnecessary pointer type cast. > 02: Use sizeof instead of macro for s->range len. > 04: Use pstrcpy and strncasecmp. > 06: Add commit message for why is there a cache in curl.c. > > Changes from v1: > Split to multiple patches. The final status should be identical to v1. > > Fam Zheng (10): > curl: introduce CURLSockInfo to BDRVCURLState. > curl: change magic number to sizeof > curl: change curl_multi_do to curl_fd_handler > curl: fix curl_open > curl: add timer to BDRVCURLState > curl: introduce CURLDataCache > curl: make use of CURLDataCache. > curl: use list to store CURLState > curl: add cache quota. > curl: introduce ssl_no_cert runtime option. > > block/curl.c | 574 +++++++++++++++++++++++++++++++++++++---------------------- > 1 file changed, 361 insertions(+), 213 deletions(-) > > -- > 1.8.2.3 > > -- Fam