On Wed, May 15, 2019 at 05:58:27PM -0500, Eric Blake wrote:
On 5/15/19 5:39 PM, Martin Kletzander wrote:
This filter caches the last result of the extents() call and offers a nice speed-up for clients that only support req_on=1 in combination with plugins like vddk, which has no overhead for returning information for multiple extents in one call, but that call is very time-consuming.
Quick test showed that on a fast connection and a sparsely allocated 16G disk with a OS installed `qemu-img map` runs 16s instead of 33s (out of which it takes 5s to the first extents request). For 100G disk with no data on it, that is one hole extent spanning the whole disk (where there is no space for improvement) this does not add any noticeable overhead.
Signed-off-by: Martin Kletzander <mkletzan@redhat.com> --- v2: - Errors are set in _add and _fill functions - Return values are checked for only -1 - Added a test - Indentation fixed - Fixed access before lock
+ +/* This lock protects the global state. */ +static pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; + +/* The real size of the underlying plugin. */ +static uint64_t size; +
We recently just fixed the truncate filter to NOT cache this globally (as doing so is too risky); instead, it needs to be cached per-connection. See commit b3a43ccd.
Oh, this should not be here, it is not used at all, just a leftover from previous version where I cached it, but then figured I'm better off not using it.
-- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org