qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
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	[thread overview]
Message-ID: <jeuaou$cul$1@dough.gmane.org> (raw)
In-Reply-To: <20120114114459.493513DE@gandalf.tls.msk.ru>

On 01/14/2012 12:41 PM, Michael Tokarev wrote:
> commit a61c67828dea7c64edaf226cadb45b4ffcc1d411
> Author: Paolo Bonzini<pbonzini@redhat.com>
> 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<mjt@tls.msk.ru>
> ---
>   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	other threads:[~2012-01-15 10:50 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-14 11:41 [Qemu-devel] [PATCH] use different fd variables for device and socket, unbreak qemu-nbd -c Michael Tokarev
2012-01-15 10:45 ` Paolo Bonzini [this message]
2012-01-15 13:01   ` Michael Tokarev

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='jeuaou$cul$1@dough.gmane.org' \
    --to=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).