On Thu, May 09, 2013 at 02:56:50PM +0800, Fam Zheng wrote: > On Thu, 05/09 08:41, Stefan Hajnoczi wrote: > > On Fri, May 03, 2013 at 04:00:09PM +0800, Fam Zheng wrote: > > > + cache = curl_find_cache(s, aio_base, aio_bytes); > > > + if (cache) { > > > + curl_complete_io(s, acb, cache); > > > + return; > > > } > > > > What is the point of the cache? Can you split it into a separate patch? > > The cache is for prefetch. Data is fetched by 256k chunks using libcurl > and stored in cache to fill future io request, reducing overall http > request overhead.
That sounds like a performance optimization which is not part of fixing broken block/curl.c :). But why bother doing this - the guest kernel uses read-ahead anyway to fetch more data than the userspace read(2) requested? This cache amplifies the read-ahead and potentially wastes (e.g. random-read workload). Let the guest decide how much read-ahead is appropriate. Stefan