This series relies on refcnt of object used by bh callback to run against unplug.
Open issue: Another choice may be rcu, but I think some issues are hard to resolve. Using rcu, we have two choice: when holding object refcnt, call qemu_bh_delete(); then after grace period, we can release. Or making qemu_bh_delete() sync in the path of DeviceState's finalization. but currently, the callers of qemu_bh_delete() can not satisfy any of the two condition. Liu Ping Fan (3): QEMUBH: introduce canceled member for bh QEMUBH: pin bh's referring object while scheduling virtio-net: set referred object for virtio net's bh async.c | 37 ++++++++++++++++++++++++++++++++----- hw/net/virtio-net.c | 1 + include/block/aio.h | 6 ++++++ stubs/Makefile.objs | 1 + 4 files changed, 40 insertions(+), 5 deletions(-) -- 1.8.1.4