On Thu, Jan 18, 2018 at 17:04:36 +0100, Michal Privoznik wrote:
This is an extended definition of virStoragePRDef because it
contains runtime information (like path to pr helper socket, its
pid and alias). Since these are driver dependant we should have a
driver specific structure instead of putting all of that into
driver agnostic structure.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/qemu/qemu_domain.c | 120 +++++++++++++++++++++++++++++++++++++++++++++++++
src/qemu/qemu_domain.h | 18 ++++++++
2 files changed, 138 insertions(+)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index e8539dcab..7fa8c93b7 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -65,6 +65,7 @@
#endif
#include <sys/time.h>
#include <fcntl.h>
+#include <signal.h>
#if defined(HAVE_SYS_MOUNT_H)
# include <sys/mount.h>
#endif
@@ -1829,6 +1830,9 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivatePtr priv)
virBitmapFree(priv->migrationCaps);
priv->migrationCaps = NULL;
+
+ virHashFree(priv->prHelpers);
+ priv->prHelpers = NULL;
}
@@ -10917,6 +10921,122 @@ qemuDomainCheckMigrationCapabilities(virQEMUDriverPtr driver,
}
+static void
+qemuDomainDiskPRObjectHashFree(void *payload,
+ const void *name)
+{
+ qemuDomainDiskPRObjectPtr tmp = payload;
+
+ if (tmp->managed &&
+ tmp->pid != (pid_t) -1) {
+ VIR_DEBUG("Forcibly killing pr-manager: %s", (const char *) name);
+ virProcessKillPainfully(tmp->pid, true);
Is this really a good idea? If you restart libvirtd gracefully, this
will kill all the PR daemons.
Also I'd prefer if all the process management code would be in
qemu_process.c.