Kevin Wolf <kw...@redhat.com> writes: > monitor_qmp_dispatcher_co() used to check whether shutdown is requested
"used to": until when? > only when it would have to wait for new requests. If there were still > some queued requests, it would try to execute all of them before > shutting down. > > This can be surprising when the queued QMP commands take long or hang > because Ctrl-C may not actually exit QEMU as soon as possible. > > Change monitor_qmp_dispatcher_co() so that it additionally checks > whether shutdown is request before it gets a new request from the queue. > > Signed-off-by: Kevin Wolf <kw...@redhat.com> > --- > monitor/qmp.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/monitor/qmp.c b/monitor/qmp.c > index 43880fa623..2326bd7f9b 100644 > --- a/monitor/qmp.c > +++ b/monitor/qmp.c > @@ -227,6 +227,11 @@ void coroutine_fn monitor_qmp_dispatcher_co(void *data) > */ > qatomic_mb_set(&qmp_dispatcher_co_busy, false); > > + /* On shutdown, don't take any more requests from the queue */ > + if (qmp_dispatcher_co_shutdown) { > + return; > + } > + > while (!(req_obj = monitor_qmp_requests_pop_any_with_lock())) { > /* > * No more requests to process. Wait to be reentered from