On Wed, Jul 19, 2017 at 12:19:17PM +0200, Jiri Denemark wrote: > On Mon, Jul 10, 2017 at 14:46:49 +0200, Pavel Hrdina wrote: > > The switch contains considerable amount of changes: > > > > virQEMUCapsRememberCached() is removed because this is now handled > > by virFileCacheSave(). > > > > virQEMUCapsInitCached() is removed because this is now handled by > > virFileCacheLoad(). > > > > virQEMUCapsNewForBinary() is split into two functions, > > virQEMUCapsNewData() which creates new data if there is nothing > > cached and virQEMUCapsLoadFile() which loads the cached data. > > This is now handled by virFileCacheNewData(). > > > > virQEMUCapsCacheValidate() is removed because this is now handled by > > virFileCacheValidate(). > > > > virQEMUCapsCacheFree() is removed because it's no longer required. > > > > Add virCapsPtr into virQEMUCapsCachePriv because for each call of > > virFileCacheLookup*() we need to use current virCapsPtr. > > > > Signed-off-by: Pavel Hrdina <phrdina@xxxxxxxxxx> > > --- > > src/qemu/qemu_capabilities.c | 322 ++++++++++++------------------------------- > > src/qemu/qemu_capabilities.h | 17 +-- > > src/qemu/qemu_capspriv.h | 8 +- > > src/qemu/qemu_conf.h | 3 +- > > src/qemu/qemu_driver.c | 2 +- > > tests/testutilsqemu.c | 9 +- > > tests/testutilsqemu.h | 3 +- > > 7 files changed, 102 insertions(+), 262 deletions(-) > > > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > > index e190cfa8b1..c3e09616de 100644 > > --- a/src/qemu/qemu_capabilities.c > > +++ b/src/qemu/qemu_capabilities.c > ... > > virQEMUCapsPtr > > virQEMUCapsCacheLookup(virCapsPtr caps, > > - virQEMUCapsCachePtr cache, > > + virFileCachePtr cache, > > const char *binary) > > { > > virQEMUCapsPtr ret = NULL; > > + virQEMUCapsCachePrivPtr priv = virFileCacheGetPriv(cache); > > > > - virMutexLock(&cache->lock); > > - > > - ret = virHashLookup(cache->binaries, binary); > > - virQEMUCapsCacheValidate(cache, binary, caps, &ret); > > - virObjectRef(ret); > > - > > - virMutexUnlock(&cache->lock); > > + priv->caps = caps; > > + ret = virFileCacheLookup(cache, binary); > > + priv->caps = NULL; > > This is not safe anymore since the cache is locked only inside > virFileCacheLookup. I think you will need to use a new parameter for > passing the capabilities to virFileCacheLookup. Right, I thought that this might be an issue, I'll fix both cases. Thanks, Pavel
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list