qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] use different fd variables for device and socke


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH] use different fd variables for device and socket, unbreak qemu-nbd -c
Date: Sun, 15 Jan 2012 11:45:49 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111222 Thunderbird/9.0

On 01/14/2012 12:41 PM, Michael Tokarev wrote:
commit a61c67828dea7c64edaf226cadb45b4ffcc1d411
Author: Paolo Bonzini<address@hidden>
Date:   Mon Sep 12 17:28:11 2011 +0200

     qemu-nbd: use common main loop

     Using a single main loop for sockets will help yielding from the socket
     coroutine back to the main loop, and later reentering it.

changed code to use local variable "fd" in qemu-nbd.c:main()
in two places: for /dev/nbd device and for control socket.
The result is that qemu-nbd -c $device does not work anymore.

Use two variables - devfs and sockfd - for the two purposes,
instead of one fd.

Signed-Off-By: Michael Tokarev<address@hidden>
---
  qemu-nbd.c |   26 +++++++++++++-------------
  1 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/qemu-nbd.c b/qemu-nbd.c
index eb61c33..e76c782 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -301,7 +301,7 @@ int main(int argc, char **argv)
      int flags = BDRV_O_RDWR;
      int partition = -1;
      int ret;
-    int fd;
+    int sockfd, devfd;
      int persistent = 0;
      pthread_t client_thread;

@@ -401,13 +401,13 @@ int main(int argc, char **argv)
      }

      if (disconnect) {
-        fd = open(argv[optind], O_RDWR);
-        if (fd == -1)
+        sockfd = open(argv[optind], O_RDWR);
+        if (sockfd == -1)
              err(EXIT_FAILURE, "Cannot open %s", argv[optind]);

-        nbd_disconnect(fd);
+        nbd_disconnect(sockfd);

-        close(fd);
+        close(sockfd);

          printf("%s disconnected\n", argv[optind]);


This should be devfd.

@@ -470,8 +470,8 @@ int main(int argc, char **argv)
          /* Open before spawning new threads.  In the future, we may
           * drop privileges after opening.
           */
-        fd = open(device, O_RDWR);
-        if (fd == -1) {
+        devfd = open(device, O_RDWR);
+        if (devfd == -1) {
              err(EXIT_FAILURE, "Failed to open %s", device);
          }

@@ -501,19 +501,19 @@ int main(int argc, char **argv)
      exp = nbd_export_new(bs, dev_offset, fd_size, nbdflags);

      if (sockpath) {
-        fd = unix_socket_incoming(sockpath);
+        sockfd = unix_socket_incoming(sockpath);
      } else {
-        fd = tcp_socket_incoming(bindto, port);
+        sockfd = tcp_socket_incoming(bindto, port);
      }

-    if (fd == -1) {
+    if (sockfd == -1) {
          return 1;
      }

      if (device) {
          int ret;

-        ret = pthread_create(&client_thread, NULL, nbd_client_thread,&fd);
+        ret = pthread_create(&client_thread, NULL, nbd_client_thread,&devfd);
          if (ret != 0) {
              errx(EXIT_FAILURE, "Failed to create client thread: %s",
                   strerror(ret));
@@ -524,8 +524,8 @@ int main(int argc, char **argv)
      }

      qemu_init_main_loop();
-    qemu_set_fd_handler2(fd, nbd_can_accept, nbd_accept, NULL,
-                         (void *)(uintptr_t)fd);
+    qemu_set_fd_handler2(sockfd, nbd_can_accept, nbd_accept, NULL,
+                         (void *)(uintptr_t)sockfd);

      do {
          main_loop_wait(false);

Otherwise looks good, I'll fix up and send for inclusion.

Paolo




reply via email to

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