[libvirt] [PATCH 0/3] add disk driver metadata_cache_size option

Kevin Wolf kwolf at redhat.com
Fri Nov 2 10:11:50 UTC 2018


Am 01.11.2018 um 12:32 hat Nikolay Shirokovskiy geschrieben:
> Hi, all.
> 
> This is a patch series after offlist agreement on introducing
> metadata-cache-size option for disks. The options itself is described in 2nd
> patch of the series.
> 
> There is a plenty of attempts to add option to set qcow2 metadata cache sizes in
> past, see [1] [2] to name recent that has comments I tried to address or has
> work I reused to some extent.
> 
> I would like to address Peter's comment in [1] that this option is image's
> option rather then disk's here. While this makes sense if we set specific cache
> value that covers disk only partially, here when we have maximum policy that
> covers whole disk it makes sense to set same value for all images. The setted
> value is only upper limit on cache size and thus cache for every image will
> grow proportionally to image data size "visible from top" eventually I guess.
> And these sizes are changing during guest lifetime - thus we need set whole
> disk limit for every image for 'maxium' effect.
> 
> On the other hand if we add policies different from 'maximum' it may require
> per image option. Well I can't imagine name for element for backing chain that
> will have cache size attribute better then 'driver'). And driver is already
> used for top image so I leave it this way.
> 
>   KNOWN ISSUES
> 
> 1. when using -driver to configure disks in command line cache size does not
>    get propagated thru backing chain
> 
> 2. when making external disk snapshot cache size sneak into backing file
>    filename and thus cache size for backing image became remembered there
> 
> 3. blockcommit after such snapshot will not work because libvirt is not ready
>    for backing file name is reported as json sometimes
> 
> Looks like 1 can be addressed in qemu.

I don't think we want to add inheritance of driver-specific options.
Option inheritance is already a bit messy with options that every driver
understands.

And -drive is the obsolete interface anyway, when you use -blockdev you
specify all nodes explicitly.

> The reason for behaviour in 2 I do not understand honestly.

QEMU doesn't recognise that the cache size option doesn't affect which
data you're accessing. Max had a series that should probably fix it.
Maybe we should finally get it merged.

Anyway, I suppose if you use libvirt in -blockdev mode, it doesn't make
a difference anyway, because libvirt should then manually call
blockdev-create for the overlay and therefore specify the backing file
string explicitly.

Can you confirm this in practice?

> And 3 will be naturally addessed after blockjobs starts working with
> blockdev configuration I guess.

Hopefully (Peter?), but depending on 2. it might not even be necessary
if libvirt doesn't explicitly store json: pseudo-filenames.

Kevin




More information about the libvir-list mailing list