This patch series includes fixes for various issues related to AioContext mismanagement for various blockdev-initiated actions.
It also adds tests for those actions when executed on drives running on an IOThread AioContext. --- Changelog: v6: - Rename the patch series. - Add "block/backup-top: Don't acquire context while dropping top" - Add "blockdev: Acquire AioContext on dirty bitmap functions" - Add "blockdev: Return bs to the proper context on snapshot abort" - Add "iotests: Test handling of AioContexts with some blockdev actions" (thanks Kevin Wolf) - Fix context release on error. (thanks Kevin Wolf) v5: - Include fix for iotest 141 in patch 2. (thanks Max Reitz) - Also fix iotest 185 and 219 in patch 2. (thanks Max Reitz) - Move error block after context acquisition/release, to we can use goto to bail out and release resources. (thanks Max Reitz) - Properly release old_context in qmp_blockdev_mirror. (thanks Max Reitz) v4: - Unify patches 1-4 and 5-7 to avoid producing broken interim states. (thanks Max Reitz) - Include a fix for iotest 141. (thanks Kevin Wolf) v3: - Rework the whole patch series to fix the issue by consolidating all operations in the transaction model. (thanks Kevin Wolf) v2: - Honor bdrv_try_set_aio_context() context acquisition requirements (thanks Max Reitz). - Release the context at drive_backup_prepare() instead of avoiding re-acquiring it at do_drive_baclup(). (thanks Max Reitz) - Convert a single patch into a two-patch series. --- Sergio Lopez (8): blockdev: fix coding style issues in drive_backup_prepare blockdev: unify qmp_drive_backup and drive-backup transaction paths blockdev: unify qmp_blockdev_backup and blockdev-backup transaction paths blockdev: honor bdrv_try_set_aio_context() context requirements block/backup-top: Don't acquire context while dropping top blockdev: Acquire AioContext on dirty bitmap functions blockdev: Return bs to the proper context on snapshot abort iotests: Test handling of AioContexts with some blockdev actions block/backup-top.c | 5 - block/backup.c | 3 + blockdev.c | 391 ++++++++++++++++++++----------------- tests/qemu-iotests/141.out | 2 + tests/qemu-iotests/185.out | 2 + tests/qemu-iotests/219 | 7 +- tests/qemu-iotests/219.out | 8 + tests/qemu-iotests/281 | 247 +++++++++++++++++++++++ tests/qemu-iotests/281.out | 5 + tests/qemu-iotests/group | 1 + 10 files changed, 484 insertions(+), 187 deletions(-) create mode 100755 tests/qemu-iotests/281 create mode 100644 tests/qemu-iotests/281.out -- 2.23.0