[libvirt] [PATCH] qemu: change monitor.sock from /var/lib/libvirt/qemu/domain-*** to /var/run/libvirt/qemu/domain-***

Martin Kletzander mkletzan at redhat.com
Fri Oct 13 07:21:45 UTC 2017

On Fri, Oct 13, 2017 at 11:36:52AM +0800, xinhua.Cao wrote:
>directory /var/lib alway is Persistence directory, but in redhat system, /var/run is memory directory.
>our running domain xml is saved at /var/run/libvirt/qemu. so if we cold reset system,
>the /var/run/libvirt/qemu directory is clear, but /var/lib/libvirt/qemu/domain-*** is saved. so there
>have same /var/run/libvirt/qemu/domain-*** directory will be left over at system cold reset.

Is that he only problem?  I know it sounds right to have that in a
runtime directory, but for me it would also make sense to have that in a
persistent directory.  Either this or any other file that suggests we
did not clean up a domain yet.  I'm not sure we are currently doing it
or that it's a reason for why libDir was chosen, but it might have been.

> src/qemu/qemu_domain.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
>index ed27a91..1b42ae5 100644
>--- a/src/qemu/qemu_domain.c
>+++ b/src/qemu/qemu_domain.c
>@@ -1646,7 +1646,7 @@ qemuDomainSetPrivatePathsOld(virQEMUDriverPtr driver,
>     if (!priv->libDir &&
>         virAsprintf(&priv->libDir, "%s/domain-%s",
>-                    cfg->libDir, vm->def->name) < 0)
>+                    cfg->stateDir, vm->def->name) < 0)

This is compatibility function that should be left alone so that we
still guess the paths correctly for already launched qemu processes.

>         goto cleanup;
>     if (!priv->channelTargetDir &&
>@@ -1674,7 +1674,7 @@ qemuDomainSetPrivatePaths(virQEMUDriverPtr driver,
>         goto cleanup;
>     if (!priv->libDir &&
>-        virAsprintf(&priv->libDir, "%s/domain-%s", cfg->libDir, domname) < 0)
>+        virAsprintf(&priv->libDir, "%s/domain-%s", cfg->stateDir, domname) < 0)

More so, in both chunks here you are setting the domain's libDir which
is used for more things than just the monitor.  And, similarly to why
the function above exists, you need to make sure we don't lose the track
of some path just in case we did not save them anywhere in order for
upgrades to go smoothly.  Since this one has two versions, I believe I
managed to save this into the stateXML, but I can't say for sure from
the top of my head.

>         goto cleanup;
>     if (!priv->channelTargetDir &&
>libvir-list mailing list
>libvir-list at redhat.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20171013/d84559cf/attachment-0001.sig>

More information about the libvir-list mailing list