The blockdev-snapshot-sync command uses bdrv_append() to update all parents to point at the external snapshot node. This breaks BlockBackend's blk_add/remove_aio_context_notifier(), which doesn't expect a BDS change.
Patch 1 fixes this by tracking AioContext notifiers in BlockBackend. See the test case in Patch 2 for a reproducer. Stefan Hajnoczi (2): block: let blk_add/remove_aio_context_notifier() tolerate BDS changes iotests: add 208 nbd-server + blockdev-snapshot-sync test case block/block-backend.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++ block/trace-events | 2 ++ tests/qemu-iotests/208 | 55 ++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/208.out | 9 +++++++ tests/qemu-iotests/group | 1 + 5 files changed, 130 insertions(+) create mode 100755 tests/qemu-iotests/208 create mode 100644 tests/qemu-iotests/208.out -- 2.14.3