All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: "Marc-André Lureau" <marcandre.lureau@redhat.com>
Cc: qemu-devel@nongnu.org, armbru@redhat.com, peterx@redhat.com
Subject: Re: [Qemu-devel] [PATCH 05/12] monitor: no need to save need_resume
Date: Tue, 17 Jul 2018 07:38:32 +0200	[thread overview]
Message-ID: <87va9eh15z.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20180706121354.2021-6-marcandre.lureau@redhat.com> ("Marc-André Lureau"'s message of "Fri, 6 Jul 2018 14:13:47 +0200")

Marc-André Lureau <marcandre.lureau@redhat.com> writes:

> There is no need for per-command need_resume granularity, it should
> resume after running an non-oob command on oob-disabled monitor.
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  monitor.c | 12 +++---------
>  1 file changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index 462cf96f7b..ec40a80d81 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -257,12 +257,6 @@ struct QMPRequest {
>       */
>      QObject *req;
>      Error *err;
> -    /*
> -     * Whether we need to resume the monitor afterward.  This flag is
> -     * used to emulate the old QMP server behavior that the current
> -     * command must be completed before execution of the next one.
> -     */
> -    bool need_resume;

Note for later: this comment goes away without a replacement.

>  };
>  typedef struct QMPRequest QMPRequest;
>  
> @@ -4079,11 +4073,13 @@ static void monitor_qmp_bh_dispatcher(void *data)
>  {
>      QMPRequest *req_obj = monitor_qmp_requests_pop_any();
>      QDict *rsp;
> +    bool need_resume;
>  
>      if (!req_obj) {
>          return;
>      }
>  
> +    need_resume = !qmp_oob_enabled(req_obj->mon);
>      if (req_obj->req) {
>          trace_monitor_qmp_cmd_in_band(qobject_get_try_str(req_obj->id) ?: "");
>          monitor_qmp_dispatch(req_obj->mon, req_obj->req, req_obj->id);
> @@ -4094,7 +4090,7 @@ static void monitor_qmp_bh_dispatcher(void *data)
>          qobject_unref(rsp);
>      }
>  
> -    if (req_obj->need_resume) {
> +    if (need_resume) {
>          /* Pairs with the monitor_suspend() in handle_qmp_command() */

Why not

       if (!qmp_oob_enabled(req_obj->mon)) {

and drop the variable?  Perhaps you keep the variable to have its name
provide a hint on why we resume.  But even with that hint and the "pairs
with" comment, it's still less than clear.  What about...

>          monitor_resume(req_obj->mon);
>      }
> @@ -4146,7 +4142,6 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
>      req_obj->id = id;
>      req_obj->req = req;
>      req_obj->err = err;
> -    req_obj->need_resume = false;
>  
>      /* Protect qmp_requests and fetching its length. */
>      qemu_mutex_lock(&mon->qmp.qmp_queue_lock);
> @@ -4159,7 +4154,6 @@ static void handle_qmp_command(JSONMessageParser *parser, GQueue *tokens)
>       */
>      if (!qmp_oob_enabled(mon)) {

... adding a replacement for the deleted comment here, say

           /*
           * Emulate traditional QMP server behavior: read next command
           * only after current command completed.  Pairs with
           * monitor_resume() in monitor_qmp_bh_dispatcher().
           */

Would you then be okay with cutting out the variable?

>          monitor_suspend(mon);
> -        req_obj->need_resume = true;
>      } else {
>          /* Drop the request if queue is full. */
>          if (mon->qmp.qmp_requests->length >= QMP_REQ_QUEUE_LEN_MAX) {

Your patch works fine as far as I can tell, so
Reviewed-by: Markus Armbruster <armbru@redhat.com>

  reply	other threads:[~2018-07-17  5:38 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-06 12:13 [Qemu-devel] [PATCH 00/12] RFC: monitor: various code simplification and fixes Marc-André Lureau
2018-07-06 12:13 ` [Qemu-devel] [PATCH 01/12] tests: change /0.15/* tests to /qmp/* Marc-André Lureau
2018-07-06 12:13 ` [Qemu-devel] [PATCH 02/12] monitor: consitify qmp_send_response() QDict argument Marc-André Lureau
2018-07-12 12:27   ` Markus Armbruster
2018-07-06 12:13 ` [Qemu-devel] [PATCH 03/12] qmp: constify qmp_is_oob() Marc-André Lureau
2018-07-12 12:27   ` Markus Armbruster
2018-07-06 12:13 ` [Qemu-devel] [PATCH 04/12] Revert "qmp: isolate responses into io thread" Marc-André Lureau
2018-07-12 13:14   ` Markus Armbruster
2018-07-12 13:32     ` Marc-André Lureau
2018-07-12 14:27       ` Peter Xu
2018-07-06 12:13 ` [Qemu-devel] [PATCH 05/12] monitor: no need to save need_resume Marc-André Lureau
2018-07-17  5:38   ` Markus Armbruster [this message]
2018-07-17  6:05     ` Peter Xu
2018-07-06 12:13 ` [Qemu-devel] [PATCH 06/12] qga: process_event() simplification and leak fix Marc-André Lureau
2018-07-17  5:53   ` Markus Armbruster
2018-07-17  9:27     ` Marc-André Lureau
2018-07-17 12:14       ` Markus Armbruster
2018-07-06 12:13 ` [Qemu-devel] [PATCH 07/12] json-parser: always set an error if return NULL Marc-André Lureau
2018-07-17  7:06   ` Markus Armbruster
2018-07-19 16:59     ` Marc-André Lureau
2018-07-20  6:03       ` Markus Armbruster
2018-07-06 12:13 ` [Qemu-devel] [PATCH 08/12] json-lexer: make it safe to call multiple times Marc-André Lureau
2018-07-17  7:22   ` Markus Armbruster
2018-07-06 12:13 ` [Qemu-devel] [PATCH 09/12] tests: add a few qemu-qmp tests Marc-André Lureau
2018-07-17  8:01   ` Markus Armbruster
2018-07-17  9:57     ` Marc-André Lureau
2018-07-17 13:15       ` Markus Armbruster
2018-07-19 17:20         ` Marc-André Lureau
2018-07-06 12:13 ` [Qemu-devel] [PATCH 10/12] tests: add a qmp success-response test Marc-André Lureau
2018-07-17 15:12   ` Markus Armbruster
2018-07-06 12:13 ` [Qemu-devel] [PATCH 11/12] qga: process_event() simplification Marc-André Lureau
2018-07-17 15:25   ` Markus Armbruster
2018-07-06 12:13 ` [Qemu-devel] [PATCH 12/12] RFC: qmp: rework 'id' handling Marc-André Lureau
2018-07-17 16:05   ` Markus Armbruster
2018-07-19 17:45     ` Marc-André Lureau

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=87va9eh15z.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=marcandre.lureau@redhat.com \
    --cc=peterx@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.