On Mon, Oct 12, 2020 at 09:12:50AM -0400, Cole Robinson wrote: > On 10/12/20 5:05 AM, Daniel P. Berrangé wrote: > > On Mon, Oct 12, 2020 at 10:55:52AM +0200, Michal Privoznik wrote: > >> On 10/12/20 10:50 AM, Daniel P. Berrangé wrote: > >>> On Sun, Oct 11, 2020 at 07:44:36PM -0400, Cole Robinson wrote: > >>>> If storage migration is requested, and the destination storage does > >>>> not exist on the remote host, qemu's migration support will call > >>>> into the libvirt storage driver to precreate the destination storage. > >>>> > >>>> The storage driver virConnectPtr is opened too early though, adding > >>>> an unnecessary dependency on the storage driver for several cases > >>>> that don't require it. This currently requires kubevirt to install > >>>> the storage driver even though they aren't actually using it. > >>>> > >>>> Push the virGetConnectStorage calls to right before the cases they are > >>>> actually needed. > >>> > >>> This pushes the connection open attempts inside a loop body. So if the > >>> VM has multiple disks, then we're going to be repeatedly opening and > >>> closing the connection which is not desirable. > >>> > >>> I think we need a global connection across all disks, which is lazy > >>> opened on first access. > >> > >> Doesn't virGetConnectStorage() cache the connection? > > > > Yes & no. > > > > You can call virSetConnectStorage(conn) to populate the cache with a > > pre-opened connection. If you haven't done that, then a new connection > > will be opened every time. The ltter is what this code will be doing. > > > > What is the use case for not caching the connection by default? It is a matter of figuring out an invalidation strategy, so we don't keep the other daemons running continuously when no client is actually triggering their usage. > virSetConnect* has very few users, but virGetConnect* is sprinkled in > many places, including multiple uses in generic code in domain_conf.c. > Can this be done as part of virGetConnect*? Regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|