mirror of https://github.com/xemu-project/xemu.git
dataplane: fix implicit IOThread refcount
When creating an IOThread implicitly (the user did not specify x-iothread=<id>) remember that iothread_find() does not return the object with an incremented refcount. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
20fccb187c
commit
198fd05c35
|
@ -393,7 +393,6 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
|
||||||
if (blk->iothread) {
|
if (blk->iothread) {
|
||||||
s->internal_iothread = false;
|
s->internal_iothread = false;
|
||||||
s->iothread = blk->iothread;
|
s->iothread = blk->iothread;
|
||||||
object_ref(OBJECT(s->iothread));
|
|
||||||
} else {
|
} else {
|
||||||
/* Create per-device IOThread if none specified */
|
/* Create per-device IOThread if none specified */
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
|
@ -408,6 +407,7 @@ void virtio_blk_data_plane_create(VirtIODevice *vdev, VirtIOBlkConf *blk,
|
||||||
s->iothread = iothread_find(vdev->name);
|
s->iothread = iothread_find(vdev->name);
|
||||||
assert(s->iothread);
|
assert(s->iothread);
|
||||||
}
|
}
|
||||||
|
object_ref(OBJECT(s->iothread));
|
||||||
s->ctx = iothread_get_aio_context(s->iothread);
|
s->ctx = iothread_get_aio_context(s->iothread);
|
||||||
|
|
||||||
/* Prevent block operations that conflict with data plane thread */
|
/* Prevent block operations that conflict with data plane thread */
|
||||||
|
|
Loading…
Reference in New Issue