Instead of exiting after processing all command line options, start a main loop and keep processing events until exit is requested with a signal (e.g. SIGINT).
Now qemu-storage-daemon can be used as an alternative for qemu-nbd that provides a few features that were previously only available from QMP, such as access to options only available with -blockdev and the socket types 'vsock' and 'fd'. Signed-off-by: Kevin Wolf <kw...@redhat.com> --- qemu-storage-daemon.c | 13 +++++++++++++ Makefile.objs | 2 ++ 2 files changed, 15 insertions(+) diff --git a/qemu-storage-daemon.c b/qemu-storage-daemon.c index 9e5f474fd0..099388f645 100644 --- a/qemu-storage-daemon.c +++ b/qemu-storage-daemon.c @@ -45,10 +45,18 @@ #include "qemu/option.h" #include "qom/object_interfaces.h" +#include "sysemu/runstate.h" #include "trace/control.h" #include <getopt.h> +static bool exit_requested = false; + +void qemu_system_killed(int signal, pid_t pid) +{ + exit_requested = true; +} + static void help(void) { printf( @@ -238,6 +246,7 @@ int main(int argc, char *argv[]) error_init(argv[0]); qemu_init_exec_dir(argv[0]); + os_setup_signal_handling(); module_call_init(MODULE_INIT_QOM); module_call_init(MODULE_INIT_TRACE); @@ -256,5 +265,9 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } + while (!exit_requested) { + main_loop_wait(false); + } + return EXIT_SUCCESS; } diff --git a/Makefile.objs b/Makefile.objs index cc262e445f..b667d3f07b 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -43,6 +43,8 @@ io-obj-y = io/ storage-daemon-obj-y = block/ storage-daemon-obj-y += blockdev.o blockdev-nbd.o iothread.o +storage-daemon-obj-$(CONFIG_WIN32) += os-win32.o +storage-daemon-obj-$(CONFIG_POSIX) += os-posix.o ###################################################################### # Target independent part of system emulation. The long term path is to -- 2.20.1