qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL v2 0/2] Qio next patches
@ 2018-06-28 12:08 Daniel P. Berrangé
  2018-06-28 12:08 ` [Qemu-devel] [PULL v2 1/2] socket: dont't free msgfds if error equals EAGAIN Daniel P. Berrangé
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Daniel P. Berrangé @ 2018-06-28 12:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: Daniel P. Berrangé, Paolo Bonzini, Gerd Hoffmann,
	Peter Maydell, Marc-André Lureau

The following changes since commit 00928a421d47f49691cace1207481b7aad31b1f1:

  Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20180626' into staging (2018-06-26 18:23:49 +0100)

are available in the Git repository at:

  https://github.com/berrange/qemu tags/qio-next-pull-request

for you to fetch changes up to 10aef3e986b4ae3fd909308bdd41c4e7ee1d1d04:

  Delete AF_UNIX socket after close (2018-06-28 13:06:44 +0100)

----------------------------------------------------------------
Merge qio 2018-06-28 v2

Misc bug fixes for sockets channels

----------------------------------------------------------------

Pavel Balaev (1):
  Delete AF_UNIX socket after close

linzhecheng (1):
  socket: dont't free msgfds if error equals EAGAIN

 chardev/char-socket.c |  4 ++--
 io/channel-socket.c   | 18 +++++++++++++++++-
 2 files changed, 19 insertions(+), 3 deletions(-)

-- 
2.17.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PULL v2 1/2] socket: dont't free msgfds if error equals EAGAIN
  2018-06-28 12:08 [Qemu-devel] [PULL v2 0/2] Qio next patches Daniel P. Berrangé
@ 2018-06-28 12:08 ` Daniel P. Berrangé
  2018-06-28 12:08 ` [Qemu-devel] [PULL v2 2/2] Delete AF_UNIX socket after close Daniel P. Berrangé
  2018-06-28 12:21 ` [Qemu-devel] [PULL v2 0/2] Qio next patches Eric Blake
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel P. Berrangé @ 2018-06-28 12:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: Daniel P. Berrangé, Paolo Bonzini, Gerd Hoffmann,
	Peter Maydell, Marc-André Lureau, linzhecheng

From: linzhecheng <linzhecheng@huawei.com>

If we see EAGAIN, no data was sent over the socket, so we still have to
retry sending of msgfds next time.

Signed-off-by: linzhecheng <linzhecheng@huawei.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 chardev/char-socket.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/chardev/char-socket.c b/chardev/char-socket.c
index 159e69c3b1..17519ec589 100644
--- a/chardev/char-socket.c
+++ b/chardev/char-socket.c
@@ -134,8 +134,8 @@ static int tcp_chr_write(Chardev *chr, const uint8_t *buf, int len)
                                         s->write_msgfds,
                                         s->write_msgfds_num);
 
-        /* free the written msgfds, no matter what */
-        if (s->write_msgfds_num) {
+        /* free the written msgfds in any cases other than errno==EAGAIN */
+        if (EAGAIN != errno && s->write_msgfds_num) {
             g_free(s->write_msgfds);
             s->write_msgfds = 0;
             s->write_msgfds_num = 0;
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PULL v2 2/2] Delete AF_UNIX socket after close
  2018-06-28 12:08 [Qemu-devel] [PULL v2 0/2] Qio next patches Daniel P. Berrangé
  2018-06-28 12:08 ` [Qemu-devel] [PULL v2 1/2] socket: dont't free msgfds if error equals EAGAIN Daniel P. Berrangé
@ 2018-06-28 12:08 ` Daniel P. Berrangé
  2018-06-28 12:21 ` [Qemu-devel] [PULL v2 0/2] Qio next patches Eric Blake
  2 siblings, 0 replies; 4+ messages in thread
From: Daniel P. Berrangé @ 2018-06-28 12:08 UTC (permalink / raw)
  To: qemu-devel
  Cc: Daniel P. Berrangé, Paolo Bonzini, Gerd Hoffmann,
	Peter Maydell, Marc-André Lureau, Pavel Balaev

From: Pavel Balaev <mail@void.so>

Since version 2.12.0 AF_UNIX socket created for QMP exchange is not
deleted on instance shutdown.

This is due to the fact that function qio_channel_socket_finalize() is
called after qio_channel_socket_close().

Signed-off-by: Pavel Balaev <mail@void.so>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 io/channel-socket.c | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/io/channel-socket.c b/io/channel-socket.c
index 57cfb4d3a6..b50e63a053 100644
--- a/io/channel-socket.c
+++ b/io/channel-socket.c
@@ -685,8 +685,10 @@ qio_channel_socket_close(QIOChannel *ioc,
                          Error **errp)
 {
     QIOChannelSocket *sioc = QIO_CHANNEL_SOCKET(ioc);
+    int rc = 0;
 
     if (sioc->fd != -1) {
+        SocketAddress *addr = socket_local_address(sioc->fd, errp);
 #ifdef WIN32
         WSAEventSelect(sioc->fd, NULL, 0);
 #endif
@@ -697,8 +699,22 @@ qio_channel_socket_close(QIOChannel *ioc,
             return -1;
         }
         sioc->fd = -1;
+
+        if (addr && addr->type == SOCKET_ADDRESS_TYPE_UNIX
+            && addr->u.q_unix.path) {
+            if (unlink(addr->u.q_unix.path) < 0 && errno != ENOENT) {
+                error_setg_errno(errp, errno,
+                                 "Failed to unlink socket %s",
+                                 addr->u.q_unix.path);
+                rc = -1;
+            }
+        }
+
+        if (addr) {
+            qapi_free_SocketAddress(addr);
+        }
     }
-    return 0;
+    return rc;
 }
 
 static int
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PULL v2 0/2] Qio next patches
  2018-06-28 12:08 [Qemu-devel] [PULL v2 0/2] Qio next patches Daniel P. Berrangé
  2018-06-28 12:08 ` [Qemu-devel] [PULL v2 1/2] socket: dont't free msgfds if error equals EAGAIN Daniel P. Berrangé
  2018-06-28 12:08 ` [Qemu-devel] [PULL v2 2/2] Delete AF_UNIX socket after close Daniel P. Berrangé
@ 2018-06-28 12:21 ` Eric Blake
  2 siblings, 0 replies; 4+ messages in thread
From: Eric Blake @ 2018-06-28 12:21 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel
  Cc: Paolo Bonzini, Gerd Hoffmann, Marc-André Lureau,
	Peter Maydell

On 06/28/2018 07:08 AM, Daniel P. Berrangé wrote:
> The following changes since commit 00928a421d47f49691cace1207481b7aad31b1f1:
> 
>    Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20180626' into staging (2018-06-26 18:23:49 +0100)
> 
> are available in the Git repository at:
> 
>    https://github.com/berrange/qemu tags/qio-next-pull-request
> 
> for you to fetch changes up to 10aef3e986b4ae3fd909308bdd41c4e7ee1d1d04:
> 
>    Delete AF_UNIX socket after close (2018-06-28 13:06:44 +0100)
> 
> ----------------------------------------------------------------
> Merge qio 2018-06-28 v2
> 
> Misc bug fixes for sockets channels
> 
> ----------------------------------------------------------------
> 
> Pavel Balaev (1):
>    Delete AF_UNIX socket after close
> 
> linzhecheng (1):
>    socket: dont't free msgfds if error equals EAGAIN

Our mails crossed. Do you want a v3 that fixes the typo in the subject 
line of 1/2?

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2018-06-28 12:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-28 12:08 [Qemu-devel] [PULL v2 0/2] Qio next patches Daniel P. Berrangé
2018-06-28 12:08 ` [Qemu-devel] [PULL v2 1/2] socket: dont't free msgfds if error equals EAGAIN Daniel P. Berrangé
2018-06-28 12:08 ` [Qemu-devel] [PULL v2 2/2] Delete AF_UNIX socket after close Daniel P. Berrangé
2018-06-28 12:21 ` [Qemu-devel] [PULL v2 0/2] Qio next patches Eric Blake

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).