qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v4 12/47] Handle bi-directional communication fo


From: David Gibson
Subject: Re: [Qemu-devel] [PATCH v4 12/47] Handle bi-directional communication for fd migration
Date: Mon, 3 Nov 2014 14:12:44 +1100
User-agent: Mutt/1.5.23 (2014-03-12)

On Fri, Oct 03, 2014 at 06:47:18PM +0100, Dr. David Alan Gilbert (git) wrote:
> From: Cristian Klein <address@hidden>

This patch really, really requires a rationale in the commit message.
The reason it's necessary is certainly not obvious.

> 
> Signed-off-by: Cristian Klein <address@hidden>
> ---
>  migration-fd.c | 24 ++++++++++++++++++++++--
>  1 file changed, 22 insertions(+), 2 deletions(-)
> 
> diff --git a/migration-fd.c b/migration-fd.c
> index d2e523a..129da99 100644
> --- a/migration-fd.c
> +++ b/migration-fd.c
> @@ -31,13 +31,29 @@
>      do { } while (0)
>  #endif
>  
> +static bool fd_is_socket(int fd)
> +{
> +    struct stat stat;
> +    int ret = fstat(fd, &stat);
> +    if (ret == -1) {
> +        /* When in doubt say no */
> +        return false;
> +    }
> +    return S_ISSOCK(stat.st_mode);
> +}
> +
>  void fd_start_outgoing_migration(MigrationState *s, const char *fdname, 
> Error **errp)
>  {
>      int fd = monitor_get_fd(cur_mon, fdname, errp);
>      if (fd == -1) {
>          return;
>      }
> -    s->file = qemu_fdopen(fd, "wb");
> +
> +    if (fd_is_socket(fd)) {
> +        s->file = qemu_fopen_socket(fd, "wb");
> +    } else {
> +        s->file = qemu_fdopen(fd, "wb");
> +    }
>  
>      migrate_fd_connect(s);
>  }
> @@ -58,7 +74,11 @@ void fd_start_incoming_migration(const char *infd, Error 
> **errp)
>      DPRINTF("Attempting to start an incoming migration via fd\n");
>  
>      fd = strtol(infd, NULL, 0);
> -    f = qemu_fdopen(fd, "rb");
> +    if (fd_is_socket(fd)) {
> +        f = qemu_fopen_socket(fd, "rb");
> +    } else {
> +        f = qemu_fdopen(fd, "rb");
> +    }
>      if(f == NULL) {
>          error_setg_errno(errp, errno, "failed to open the source 
> descriptor");
>          return;

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: pgpdRodQpyFnP.pgp
Description: PGP signature


reply via email to

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