Re: [PATCH RESEND 4/5] qemuVirtioFSStop: Simplify daemon kill

2020-03-23 Thread Marc-André Lureau
On Mon, Mar 23, 2020 at 5:14 PM Michal Privoznik  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 

Reviewed-by: Marc-André Lureau 


> ---
>  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




[PATCH RESEND 4/5] qemuVirtioFSStop: Simplify daemon kill

2020-03-23 Thread Michal Privoznik
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 
---
 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