On Mon, Mar 23, 2020 at 5:14 PM Michal Privoznik <mprivozn@xxxxxxxxxx> 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@xxxxxxxxxx> Reviewed-by: Marc-André Lureau <marcandre.lureau@xxxxxxxxxx> > --- > 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