[PATCH] qemu: migration: don't open storage driver too early
Daniel P. Berrangé
berrange at redhat.com
Mon Oct 12 09:05:26 UTC 2020
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.
|: 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 :|
More information about the libvir-list