[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
- [PATCH 1/2] storage-daemon: add opt to print when initialized,
Raphael Norwitz <=