diff options
| author | Denis Plotnikov <den-plotnikov@yandex-team.ru> | 2021-03-25 18:12:17 +0300 |
|---|---|---|
| committer | Michael S. Tsirkin <mst@redhat.com> | 2021-04-01 11:39:12 -0400 |
| commit | 2b7d06c452014c88a13eec3a13b996aa3e9e2331 (patch) | |
| tree | ef988274646d505d642c7164165a3776fccfcefa | |
| parent | bc79c87bcde6587a37347f81332fbb0cd6b14b85 (diff) | |
| download | focaccia-qemu-2b7d06c452014c88a13eec3a13b996aa3e9e2331.tar.gz focaccia-qemu-2b7d06c452014c88a13eec3a13b996aa3e9e2331.zip | |
vhost-user-blk: add immediate cleanup on shutdown
Qemu crashes on shutdown if the chardev used by vhost-user-blk has been finalized before the vhost-user-blk. This happens with char-socket chardev operating in the listening mode (server). The char-socket chardev emits "close" event at the end of finalizing when its internal data is destroyed. This calls vhost-user-blk event handler which in turn tries to manipulate with destroyed chardev by setting an empty event handler for vhost-user-blk cleanup postponing. This patch separates the shutdown case from the cleanup postponing removing the need to set an event handler. Signed-off-by: Denis Plotnikov <den-plotnikov@yandex-team.ru> Message-Id: <20210325151217.262793-4-den-plotnikov@yandex-team.ru> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
| -rw-r--r-- | hw/block/vhost-user-blk.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 4e215f71f1..0b5b9d44cd 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -411,7 +411,7 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event, * other code perform its own cleanup sequence using vhost_dev data * (e.g. vhost_dev_set_log). */ - if (realized) { + if (realized && !runstate_check(RUN_STATE_SHUTDOWN)) { /* * A close event may happen during a read/write, but vhost * code assumes the vhost_dev remains setup, so delay the |