[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 21/38] char: move front end handlers in CharBack
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 21/38] char: move front end handlers in CharBackend |
Date: |
Mon, 24 Oct 2016 15:40:02 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
On 22/10/2016 11:53, Marc-André Lureau wrote:
> - if (chr->chr_can_read || chr->chr_read ||
> - chr->chr_event || chr->handler_opaque) {
> + if (chr->be) {
> error_setg(errp, "Chardev '%s' is busy", id);
This doesn't work with the mux chardev. To some extent a preexisting
bug, but made worse by this patch. But it can be fixed easily:
diff --git a/qemu-char.c b/qemu-char.c
index b9330f3..6dd779f 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -915,6 +915,16 @@ unavailable:
return false;
}
+static bool qemu_chr_is_busy(CharDriverState *s)
+{
+ if (s->is_mux) {
+ MuxDriver *d = s->opaque;
+ return d->mux_cnt >= 0;
+ } else {
+ return s->be != NULL;
+ }
+}
+
void qemu_chr_fe_deinit(CharBackend *b)
{
assert(b);
@@ -4807,7 +4817,7 @@ void qmp_chardev_remove(const char *id, Error **errp)
error_setg(errp, "Chardev '%s' not found", id);
return;
}
- if (chr->be) {
+ if (qemu_chr_is_busy(chr)) {
error_setg(errp, "Chardev '%s' is busy", id);
return;
}
- [Qemu-devel] [PATCH 14/38] colo: claim in find_and_check_chardev, (continued)
- [Qemu-devel] [PATCH 14/38] colo: claim in find_and_check_chardev, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 12/38] char: remaining switch to CharBackend in frontend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 13/38] char: rename some frontend functions, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 16/38] char: fold qemu_chr_set_handlers in qemu_chr_fe_set_handlers, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 17/38] vhost-user: only initialize queue 0 CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 15/38] char: use qemu_chr_fe* functions with CharBackend argument, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 18/38] char: replace qemu_chr_claim/release with qemu_chr_fe_init/deinit, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 19/38] char: make some qemu_chr_fe skip if no driver, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 20/38] tests: start chardev unit tests, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 21/38] char: move front end handlers in CharBackend, Marc-André Lureau, 2016/10/22
- Re: [Qemu-devel] [PATCH 21/38] char: move front end handlers in CharBackend,
Paolo Bonzini <=
- [Qemu-devel] [PATCH 22/38] char: rename chr_close/chr_free, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 23/38] char: remove explicit_fe_open, use a set_handlers argument, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 24/38] char: move fe_open in CharBackend, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 25/38] char: remove unused CHR_EVENT_FOCUS, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 26/38] char: use an enum for CHR_EVENT, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 27/38] char: remove unused qemu_chr_fe_event, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 28/38] char: replace avail_connections, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 29/38] char: use common error path in qmp_chardev_add, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 30/38] char: remove explicit_be_open from CharDriverState, Marc-André Lureau, 2016/10/22
- [Qemu-devel] [PATCH 31/38] char: use a const CharDriver, Marc-André Lureau, 2016/10/22