From: Jan Kiszka <jan.kiszka@web.de>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: aliguori@us.ibm.com, qemu-devel@nongnu.org,
Luiz Capitulino <lcapitulino@redhat.com>
Subject: [Qemu-devel] Re: [PATCH 5/9] Monitor: Return before exiting with 'quit'
Date: Mon, 26 Apr 2010 21:10:18 +0200 [thread overview]
Message-ID: <4BD5E51A.9070402@web.de> (raw)
In-Reply-To: <4BD5E2BB.8000105@codemonkey.ws>
[-- Attachment #1: Type: text/plain, Size: 3734 bytes --]
Anthony Liguori wrote:
> On 04/26/2010 01:53 PM, Luiz Capitulino wrote:
>> On Mon, 26 Apr 2010 13:25:38 -0500
>> Anthony Liguori<anthony@codemonkey.ws> wrote:
>>
>>
>>> On 04/26/2010 01:22 PM, Luiz Capitulino wrote:
>>>
>>>> On Mon, 26 Apr 2010 12:49:40 -0500
>>>> Anthony Liguori<anthony@codemonkey.ws> wrote:
>>>>
>>>>
>>>>
>>>>> On 04/26/2010 10:47 AM, Luiz Capitulino wrote:
>>>>>
>>>>>
>>>>>> The 'quit' Monitor command (implemented by do_quit()) calls
>>>>>> exit() directly, this is problematic under QMP because QEMU
>>>>>> exits before having a chance to send the ok response.
>>>>>>
>>>>>> Clients don't know if QEMU exited because of a problem or
>>>>>> because the 'quit' command has been executed.
>>>>>>
>>>>>> This commit fixes that by moving the exit() call to the main
>>>>>> loop, so that do_quit() requests the system to quit, instead
>>>>>> of calling exit() directly.
>>>>>>
>>>>>>
>>>>>>
>>>>> Does this also have the effect of printing out a (qemu) prompt after
>>>>> quit before an EOF appears on that socket?
>>>>>
>>>>>
>>>> Ah, right..
>>>>
>>>>
>>> It's not necessarily a bad thing if it does. I just wanted to raise
>>> that because it's possible that someone depends on the behavior.
>>>
>> Yes, and it's also a bit ugly if you do '-monitor stdio':
>>
>> ~/stuff/virt/ ./qemu-qmp -monitor stdio
>> QEMU 0.12.50 monitor - type 'help' for more information
>> (qemu) quit
>> (qemu) ~/stuff/virt/
>>
>> So, I'd like to fix it.
>>
>>
>>> I'm not sure it matters to me if we change this behavior though.
>>>
>> It's very easy to fix, the following patch does it.
>>
>> I have (tested and) rebased the for-anthony branch with it.
>>
>> From 14ecef47d1989f9b646fc0fe7a4bf42c091d1432 Mon Sep 17 00:00:00 2001
>> From: Luiz Capitulino<lcapitulino@redhat.com>
>> Date: Tue, 6 Apr 2010 18:55:54 -0300
>> Subject: [PATCH 5/9] Monitor: Return before exiting with 'quit'
>>
>> The 'quit' Monitor command (implemented by do_quit()) calls
>> exit() directly, this is problematic under QMP because QEMU
>> exits before having a chance to send the ok response.
>>
>> Clients don't know if QEMU exited because of a problem or
>> because the 'quit' command has been executed.
>>
>> This commit fixes that by moving the exit() call to the main
>> loop, so that do_quit() requests the system to quit, instead
>> of calling exit() directly.
>>
>> Signed-off-by: Luiz Capitulino<lcapitulino@redhat.com>
>> ---
>> monitor.c | 7 ++++++-
>> sysemu.h | 2 ++
>> vl.c | 18 ++++++++++++++++++
>> 3 files changed, 26 insertions(+), 1 deletions(-)
>>
>> diff --git a/monitor.c b/monitor.c
>> index ef84298..5b0258f 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -1017,7 +1017,12 @@ static void do_info_cpu_stats(Monitor *mon)
>> */
>> static int do_quit(Monitor *mon, const QDict *qdict, QObject
>> **ret_data)
>> {
>> - exit(0);
>> + if (monitor_ctrl_mode(mon)) {
>> + qemu_system_exit_request();
>> + } else {
>> + exit(0);
>> + }
>> +
>>
>
> Now they have different behaviors though because
> qemu_system_exit_request() actually exits gracefully.
>
> For instance, now in QMP mode, an ifdown script will be executed when
> the 'quit' command is invoked whereas it won't be executed when done
> through the human monitor.
>
> I honestly don't mind the weird print outs with -monitor stdio. I think
> exiting gracefully in both cases is better.
Just suspend the monitor before leaving for termination. That should
have both the proper visual and functional effect.
Jan
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 257 bytes --]
next prev parent reply other threads:[~2010-04-26 19:10 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-26 15:47 [Qemu-devel] [PATCH 0/9][PULL]: QMP/Monitor queue Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 1/9] QError: New QERR_QMP_BAD_INPUT_OBJECT_MEMBER Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 2/9] QMP: Use QERR_QMP_BAD_INPUT_OBJECT_MEMBER Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 3/9] QError: Improve QERR_QMP_BAD_INPUT_OBJECT desc Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 4/9] QMP: Check "arguments" member's type Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 5/9] Monitor: Return before exiting with 'quit' Luiz Capitulino
2010-04-26 17:49 ` Anthony Liguori
2010-04-26 18:22 ` Luiz Capitulino
2010-04-26 18:25 ` Anthony Liguori
2010-04-26 18:53 ` Luiz Capitulino
2010-04-26 19:00 ` Anthony Liguori
2010-04-26 19:10 ` Jan Kiszka [this message]
2010-04-26 19:13 ` [Qemu-devel] " Anthony Liguori
2010-04-26 19:44 ` Luiz Capitulino
2010-04-27 11:52 ` Paolo Bonzini
2010-04-27 13:20 ` Luiz Capitulino
2010-04-27 13:52 ` Paolo Bonzini
2010-04-26 15:47 ` [Qemu-devel] [PATCH 6/9] monitor: Cleanup ID assignment for compat switch Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 7/9] monitor: Reorder intialization to drop initial mux focus Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 8/9] chardev: Document mux option Luiz Capitulino
2010-04-26 15:47 ` [Qemu-devel] [PATCH 9/9] stash away SCM_RIGHTS fd until a getfd command arrives Luiz Capitulino
2010-04-26 21:32 ` [Qemu-devel] [PATCH 0/9][PULL]: QMP/Monitor queue Anthony Liguori
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=4BD5E51A.9070402@web.de \
--to=jan.kiszka@web.de \
--cc=aliguori@us.ibm.com \
--cc=anthony@codemonkey.ws \
--cc=lcapitulino@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.