[Qemu-devel] [PATCH] vhost-vsock: report QMP event when set running

Ning Bo posted 1 patch 4 years, 8 months ago
Test asan passed
Test FreeBSD passed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test checkpatch passed
Test s390x passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1564644533-28850-1-git-send-email-ning.bo9@zte.com.cn
Maintainers: Eric Blake <eblake@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Markus Armbruster <armbru@redhat.com>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>
There is a newer version of this series
hw/virtio/vhost-vsock.c |  3 +++
qapi/char.json          | 22 ++++++++++++++++++++++
2 files changed, 25 insertions(+)
[Qemu-devel] [PATCH] vhost-vsock: report QMP event when set running
Posted by Ning Bo 4 years, 8 months ago
Report vsock running event so that the upper application can
control boot sequence.
see https://github.com/kata-containers/runtime/pull/1918

Signed-off-by: Ning Bo <ning.bo9@zte.com.cn>
---
 hw/virtio/vhost-vsock.c |  3 +++
 qapi/char.json          | 22 ++++++++++++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c
index 0371493..a5920fd 100644
--- a/hw/virtio/vhost-vsock.c
+++ b/hw/virtio/vhost-vsock.c
@@ -22,6 +22,7 @@
 #include "qemu/iov.h"
 #include "qemu/module.h"
 #include "monitor/monitor.h"
+#include "qapi/qapi-events-char.h"
 
 enum {
     VHOST_VSOCK_SAVEVM_VERSION = 0,
@@ -68,6 +69,8 @@ static int vhost_vsock_set_running(VHostVSock *vsock, int start)
     if (ret < 0) {
         return -errno;
     }
+    qapi_event_send_vsock_running(vsock->conf.guest_cid, start != 0);
+
     return 0;
 }
 
diff --git a/qapi/char.json b/qapi/char.json
index a6e81ac..7b746e3 100644
--- a/qapi/char.json
+++ b/qapi/char.json
@@ -570,3 +570,25 @@
 { 'event': 'VSERPORT_CHANGE',
   'data': { 'id': 'str',
             'open': 'bool' } }
+
+##
+# @VSOCK_RUNNING:
+#
+# Emitted when the guest changes the vsock status.
+#
+# @cid: guest context ID
+#
+# @running: true if the vsock is running
+#
+# Since: v4.2
+#
+# Example:
+#
+# <- { "event": "VSOCK_RUNNING",
+#      "data": { "cid": "123456", "running": true },
+#      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
+#
+##
+{ 'event': 'VSOCK_RUNNING',
+  'data': { 'cid': 'uint64',
+            'running': 'bool' } }
-- 
2.9.5


Re: [Qemu-devel] [PATCH] vhost-vsock: report QMP event when set running
Posted by Markus Armbruster 4 years, 8 months ago
Ning Bo <ning.bo9@zte.com.cn> writes:

> Report vsock running event so that the upper application can
> control boot sequence.
> see https://github.com/kata-containers/runtime/pull/1918

Please provide a more complete summary of the use case in the commit
message.  What exactly is the problem?  What is the proposed solution,
and how does it make use of the new event?

> Signed-off-by: Ning Bo <ning.bo9@zte.com.cn>
> ---
>  hw/virtio/vhost-vsock.c |  3 +++
>  qapi/char.json          | 22 ++++++++++++++++++++++
>  2 files changed, 25 insertions(+)
>
> diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c
> index 0371493..a5920fd 100644
> --- a/hw/virtio/vhost-vsock.c
> +++ b/hw/virtio/vhost-vsock.c
> @@ -22,6 +22,7 @@
>  #include "qemu/iov.h"
>  #include "qemu/module.h"
>  #include "monitor/monitor.h"
> +#include "qapi/qapi-events-char.h"
>  
>  enum {
>      VHOST_VSOCK_SAVEVM_VERSION = 0,
> @@ -68,6 +69,8 @@ static int vhost_vsock_set_running(VHostVSock *vsock, int start)
>      if (ret < 0) {
>          return -errno;
>      }
> +    qapi_event_send_vsock_running(vsock->conf.guest_cid, start != 0);
> +
>      return 0;
>  }
>  
> diff --git a/qapi/char.json b/qapi/char.json
> index a6e81ac..7b746e3 100644
> --- a/qapi/char.json
> +++ b/qapi/char.json
> @@ -570,3 +570,25 @@
>  { 'event': 'VSERPORT_CHANGE',
>    'data': { 'id': 'str',
>              'open': 'bool' } }
> +
> +##
> +# @VSOCK_RUNNING:
> +#
> +# Emitted when the guest changes the vsock status.
> +#
> +# @cid: guest context ID
> +#
> +# @running: true if the vsock is running
> +#
> +# Since: v4.2
> +#
> +# Example:
> +#
> +# <- { "event": "VSOCK_RUNNING",
> +#      "data": { "cid": "123456", "running": true },
> +#      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
> +#
> +##
> +{ 'event': 'VSOCK_RUNNING',
> +  'data': { 'cid': 'uint64',
> +            'running': 'bool' } }

Can you explain why you put this into char.json?

The event traces successful calls of vhost_vsock_set_running().  I have
no idea what vhost_vsock_set_running() does (pardon my ignorance).  Can
you point me to a specification?

Its @start parameter is int.  The event's @running is bool.  Zero gets
mapped to false, non-zero to true.  Are you sure all non-zero values are
equivalent, and will remain equivalent?

Re: [Qemu-devel] [PATCH] vhost-vsock: report QMP event when set running
Posted by Michael S. Tsirkin 4 years, 8 months ago
On Thu, Aug 01, 2019 at 05:25:04PM +0200, Markus Armbruster wrote:
> Ning Bo <ning.bo9@zte.com.cn> writes:
> 
> > Report vsock running event so that the upper application can
> > control boot sequence.
> > see https://github.com/kata-containers/runtime/pull/1918
> 
> Please provide a more complete summary of the use case in the commit
> message.  What exactly is the problem?  What is the proposed solution,
> and how does it make use of the new event?
> 
> > Signed-off-by: Ning Bo <ning.bo9@zte.com.cn>


Also it would seem that it should be possible to detect
port listen state change just by trying to connect to it.
Why isn't that an option?



> > ---
> >  hw/virtio/vhost-vsock.c |  3 +++
> >  qapi/char.json          | 22 ++++++++++++++++++++++
> >  2 files changed, 25 insertions(+)
> >
> > diff --git a/hw/virtio/vhost-vsock.c b/hw/virtio/vhost-vsock.c
> > index 0371493..a5920fd 100644
> > --- a/hw/virtio/vhost-vsock.c
> > +++ b/hw/virtio/vhost-vsock.c
> > @@ -22,6 +22,7 @@
> >  #include "qemu/iov.h"
> >  #include "qemu/module.h"
> >  #include "monitor/monitor.h"
> > +#include "qapi/qapi-events-char.h"
> >  
> >  enum {
> >      VHOST_VSOCK_SAVEVM_VERSION = 0,
> > @@ -68,6 +69,8 @@ static int vhost_vsock_set_running(VHostVSock *vsock, int start)
> >      if (ret < 0) {
> >          return -errno;
> >      }
> > +    qapi_event_send_vsock_running(vsock->conf.guest_cid, start != 0);
> > +
> >      return 0;
> >  }
> >  
> > diff --git a/qapi/char.json b/qapi/char.json
> > index a6e81ac..7b746e3 100644
> > --- a/qapi/char.json
> > +++ b/qapi/char.json
> > @@ -570,3 +570,25 @@
> >  { 'event': 'VSERPORT_CHANGE',
> >    'data': { 'id': 'str',
> >              'open': 'bool' } }
> > +
> > +##
> > +# @VSOCK_RUNNING:
> > +#
> > +# Emitted when the guest changes the vsock status.
> > +#
> > +# @cid: guest context ID
> > +#
> > +# @running: true if the vsock is running
> > +#
> > +# Since: v4.2
> > +#
> > +# Example:
> > +#
> > +# <- { "event": "VSOCK_RUNNING",
> > +#      "data": { "cid": "123456", "running": true },
> > +#      "timestamp": { "seconds": 1401385907, "microseconds": 422329 } }
> > +#
> > +##
> > +{ 'event': 'VSOCK_RUNNING',
> > +  'data': { 'cid': 'uint64',
> > +            'running': 'bool' } }
> 
> Can you explain why you put this into char.json?
> 
> The event traces successful calls of vhost_vsock_set_running().  I have
> no idea what vhost_vsock_set_running() does (pardon my ignorance).  Can
> you point me to a specification?
> 
> Its @start parameter is int.  The event's @running is bool.  Zero gets
> mapped to false, non-zero to true.  Are you sure all non-zero values are
> equivalent, and will remain equivalent?


Allowing guest to emit events at a high speed 


Re: [Qemu-devel] [PATCH] vhost-vsock: report QMP event when set running
Posted by Eric Blake 4 years, 8 months ago
On 8/1/19 2:28 AM, Ning Bo wrote:
> Report vsock running event so that the upper application can
> control boot sequence.
> see https://github.com/kata-containers/runtime/pull/1918
> 
> Signed-off-by: Ning Bo <ning.bo9@zte.com.cn>
> ---

Since this is an update to an earlier version you posted, it is helpful
to include 'v2' in the subject line ('git format-patch -v2' or 'git
send-email -v2' can do that on your behalf), as well as to document here
after the --- separator how it differs from v1.

More patch submission hints at https://wiki.qemu.org/Contribute/SubmitAPatch

> +++ b/qapi/char.json
> @@ -570,3 +570,25 @@
>  { 'event': 'VSERPORT_CHANGE',
>    'data': { 'id': 'str',
>              'open': 'bool' } }
> +
> +##
> +# @VSOCK_RUNNING:
> +#
> +# Emitted when the guest changes the vsock status.
> +#
> +# @cid: guest context ID
> +#
> +# @running: true if the vsock is running
> +#
> +# Since: v4.2

Still not consistent with other uses. s/v4.2/4.2/


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