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(a)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