qemu-block
[Top][All Lists]
Advanced

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

Re: [PATCH 2/2] nbd: disable signals and forking on Windows builds


From: Thomas Huth
Subject: Re: [PATCH 2/2] nbd: disable signals and forking on Windows builds
Date: Tue, 25 Aug 2020 07:35:27 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0

On 24/08/2020 19.02, Daniel P. Berrangé wrote:
Disabling these parts are sufficient to get the qemu-nbd program
compiling in a Windows build.

Maybe add:
"This also enables compilation of qemu-nbd on macOS again (which got disabled by accident during the conversion to the meson build system)"

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
  meson.build |  7 ++-----
  qemu-nbd.c  | 10 +++++++++-
  2 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/meson.build b/meson.build
index df5bf728b5..1071871605 100644
--- a/meson.build
+++ b/meson.build
@@ -1074,12 +1074,9 @@ if have_tools
               dependencies: [authz, block, crypto, io, qom, qemuutil], 
install: true)
    qemu_io = executable('qemu-io', files('qemu-io.c'),
               dependencies: [block, qemuutil], install: true)
-  qemu_block_tools += [qemu_img, qemu_io]
-  if targetos == 'linux' or targetos == 'sunos' or targetos.endswith('bsd')
-    qemu_nbd = executable('qemu-nbd', files('qemu-nbd.c'),
+  qemu_nbd = executable('qemu-nbd', files('qemu-nbd.c'),
                 dependencies: [block, qemuutil], install: true)
-    qemu_block_tools += [qemu_nbd]
-  endif
+  qemu_block_tools += [qemu_img, qemu_io, qemu_nbd]
subdir('storage-daemon')
    subdir('contrib/rdmacm-mux')
diff --git a/qemu-nbd.c b/qemu-nbd.c
index b102874f0f..c6fd6524d3 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -155,12 +155,13 @@ QEMU_COPYRIGHT "\n"
      , name);
  }
+#ifndef WIN32
  static void termsig_handler(int signum)
  {
      atomic_cmpxchg(&state, RUNNING, TERMINATE);
      qemu_notify_event();
  }
-
+#endif
static int qemu_nbd_client_list(SocketAddress *saddr, QCryptoTLSCreds *tls,
                                  const char *hostname)
@@ -587,6 +588,7 @@ int main(int argc, char **argv)
      unsigned socket_activation;
      const char *pid_file_name = NULL;
+#ifndef WIN32
      /* The client thread uses SIGTERM to interrupt the server.  A signal
       * handler ensures that "qemu-nbd -v -c" exits with a nice status code.
       */
@@ -594,6 +596,7 @@ int main(int argc, char **argv)
      memset(&sa_sigterm, 0, sizeof(sa_sigterm));
      sa_sigterm.sa_handler = termsig_handler;
      sigaction(SIGTERM, &sa_sigterm, NULL);
+#endif
#ifdef CONFIG_POSIX

I wonder why the CONFIG_POSIX does not simply start earlier here ... I think you could replace your #ifndef WIN32 with #ifdef CONFIG_POSIX that way?

      signal(SIGPIPE, SIG_IGN);
@@ -896,6 +899,7 @@ int main(int argc, char **argv)
  #endif
if ((device && !verbose) || fork_process) {
+#ifndef WIN32
          int stderr_fd[2];
          pid_t pid;
          int ret;
@@ -959,6 +963,10 @@ int main(int argc, char **argv)
               */
              exit(errors);
          }
+#else /* WIN32 */
+        error_report("Unable to fork into background on Windows hosts");
+        exit(EXIT_FAILURE);
+#endif /* WIN32 */
      }
if (device != NULL && sockpath == NULL) {


 Thomas




reply via email to

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