mirror of https://github.com/xemu-project/xemu.git
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>
This commit is contained in:
parent
bc79c87bcd
commit
2b7d06c452
|
@ -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
|
* other code perform its own cleanup sequence using vhost_dev data
|
||||||
* (e.g. vhost_dev_set_log).
|
* (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
|
* A close event may happen during a read/write, but vhost
|
||||||
* code assumes the vhost_dev remains setup, so delay the
|
* code assumes the vhost_dev remains setup, so delay the
|
||||||
|
|
Loading…
Reference in New Issue