qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 1/2] storage-daemon: add opt to print when initialized


From: Raphael Norwitz
Subject: [PATCH 1/2] storage-daemon: add opt to print when initialized
Date: Fri, 27 Aug 2021 16:50:35 +0000

This change adds a command line option to print a line to standard out
when the storage daemon has completed initialization and is ready to
serve client connections.

This option will be used to resolve a hang in the vhost-user-blk-test.

Signed-off-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
---
 storage-daemon/qemu-storage-daemon.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/storage-daemon/qemu-storage-daemon.c 
b/storage-daemon/qemu-storage-daemon.c
index fc8b150629..c4f76d1564 100644
--- a/storage-daemon/qemu-storage-daemon.c
+++ b/storage-daemon/qemu-storage-daemon.c
@@ -61,6 +61,9 @@
 
 static const char *pid_file;
 static volatile bool exit_requested = false;
+static bool print_setup;
+
+const char *init_msg = "Block exports setup\n";
 
 void qemu_system_killed(int signal, pid_t pid)
 {
@@ -82,6 +85,7 @@ static void help(void)
 "  -T, --trace [[enable=]<pattern>][,events=<file>][,file=<file>]\n"
 "                         specify tracing options\n"
 "  -V, --version          output version information and exit\n"
+"  -P, --printset         print to stdout once server is fully initialized\n"
 "\n"
 "  --blockdev [driver=]<driver>[,node-name=<N>][,discard=ignore|unmap]\n"
 "             [,cache.direct=on|off][,cache.no-flush=on|off]\n"
@@ -174,6 +178,7 @@ static void process_options(int argc, char *argv[])
         {"nbd-server", required_argument, NULL, OPTION_NBD_SERVER},
         {"object", required_argument, NULL, OPTION_OBJECT},
         {"pidfile", required_argument, NULL, OPTION_PIDFILE},
+        {"printset", no_argument, NULL, 'P'},
         {"trace", required_argument, NULL, 'T'},
         {"version", no_argument, NULL, 'V'},
         {0, 0, 0, 0}
@@ -195,6 +200,9 @@ static void process_options(int argc, char *argv[])
             trace_opt_parse(optarg);
             trace_init_file();
             break;
+        case 'P':
+            print_setup = true;
+            break;
         case 'V':
             printf("qemu-storage-daemon version "
                    QEMU_FULL_VERSION "\n" QEMU_COPYRIGHT "\n");
@@ -310,6 +318,7 @@ static void pid_file_init(void)
 
 int main(int argc, char *argv[])
 {
+    int err;
 #ifdef CONFIG_POSIX
     signal(SIGPIPE, SIG_IGN);
 #endif
@@ -341,6 +350,18 @@ int main(int argc, char *argv[])
      */
     pid_file_init();
 
+    /*
+     * If requested to pipe output once exports are initialized, print to
+     * stdout.
+     */
+    if (print_setup) {
+        err = write(1, init_msg, strlen(init_msg));
+        if (err == -1) {
+            fprintf(stderr, "Write to pipe failed: %m\n");
+            return -1;
+        }
+    }
+
     while (!exit_requested) {
         main_loop_wait(false);
     }
-- 
2.20.1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]