On Mon, Mar 23, 2020 at 5:14 PM Michal Privoznik <mprivozn(a)redhat.com> wrote:
Now, that we know that the virtiofsd will have the pidfile open
and locked we can use virPidFileForceCleanupPath() to kill it and
unlink the pidfile.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau(a)redhat.com>
---
src/qemu/qemu_virtiofs.c | 21 +++++++--------------
1 file changed, 7 insertions(+), 14 deletions(-)
diff --git a/src/qemu/qemu_virtiofs.c b/src/qemu/qemu_virtiofs.c
index d579ce1d33..bbe93e0186 100644
--- a/src/qemu/qemu_virtiofs.c
+++ b/src/qemu/qemu_virtiofs.c
@@ -36,6 +36,8 @@
#define VIR_FROM_THIS VIR_FROM_QEMU
+VIR_LOG_INIT("qemu.virtiofs");
+
char *
qemuVirtioFSCreatePidFilename(virDomainObjPtr vm,
@@ -275,28 +277,19 @@ qemuVirtioFSStop(virQEMUDriverPtr driver G_GNUC_UNUSED,
{
g_autofree char *pidfile = NULL;
virErrorPtr orig_err;
- pid_t pid = -1;
- int rc;
virErrorPreserveLast(&orig_err);
if (!(pidfile = qemuVirtioFSCreatePidFilename(vm, fs->info.alias)))
goto cleanup;
- rc = virPidFileReadPathIfAlive(pidfile, &pid, NULL);
- if (rc >= 0 && pid != (pid_t) -1)
- virProcessKillPainfully(pid, true);
-
- if (unlink(pidfile) < 0 &&
- errno != ENOENT) {
- virReportSystemError(errno,
- _("Unable to remove stale pidfile %s"),
- pidfile);
+ if (virPidFileForceCleanupPath(pidfile) < 0) {
+ VIR_WARN("Unable to kill virtiofsd process");
+ } else {
+ if (QEMU_DOMAIN_FS_PRIVATE(fs)->vhostuser_fs_sock)
+ unlink(QEMU_DOMAIN_FS_PRIVATE(fs)->vhostuser_fs_sock);
}
- if (QEMU_DOMAIN_FS_PRIVATE(fs)->vhostuser_fs_sock)
- unlink(QEMU_DOMAIN_FS_PRIVATE(fs)->vhostuser_fs_sock);
-
cleanup:
virErrorRestore(&orig_err);
}
--
2.24.1
--
Marc-André Lureau