summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorMichael Tokarev <mjt@tls.msk.ru>2016-11-02 17:18:50 +0300
committerPaolo Bonzini <pbonzini@redhat.com>2016-11-09 14:08:17 +0100
commit004c8e0090025b4fde4e99fbc5a81049be8f79d1 (patch)
tree75acefe8753f94a3e4f99b78448097994bb0c0a9
parentf5c052b973b0b2b3aa15e6cb0b0ac48ab763a9b0 (diff)
downloadfocaccia-qemu-004c8e0090025b4fde4e99fbc5a81049be8f79d1.tar.gz
focaccia-qemu-004c8e0090025b4fde4e99fbc5a81049be8f79d1.zip
vl.c: move pidfile creation up the line
With current code, pid file is open after various
sockets, chardevs, fsdevs and the like.  This causes
interesting effects, for example when monitor is a
unix-socket, and another qemu instance is already
running, new qemu first "damages" the socket and
next complain that it can't acquire the pid file and
exits, making running qemu unreachable.

Move pid file creation earlier, right after the call
to os_daemonize(), where we know our process id (pid).

Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Message-Id: <1478096330-18081-1-git-send-email-mjt@msgid.tls.msk.ru>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--vl.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/vl.c b/vl.c
index 319f6413f2..d77dd862f9 100644
--- a/vl.c
+++ b/vl.c
@@ -4063,6 +4063,11 @@ int main(int argc, char **argv, char **envp)
 
     os_daemonize();
 
+    if (pid_file && qemu_create_pidfile(pid_file) != 0) {
+        error_report("could not acquire pid file: %s", strerror(errno));
+        exit(1);
+    }
+
     if (qemu_init_main_loop(&main_loop_err)) {
         error_report_err(main_loop_err);
         exit(1);
@@ -4340,11 +4345,6 @@ int main(int argc, char **argv, char **envp)
     }
 #endif
 
-    if (pid_file && qemu_create_pidfile(pid_file) != 0) {
-        error_report("could not acquire pid file: %s", strerror(errno));
-        exit(1);
-    }
-
     if (qemu_opts_foreach(qemu_find_opts("device"),
                           device_help_func, NULL, NULL)) {
         exit(0);