Now that the main rework part of this series is merged, these remaining patches here implement atomic tray/medium operations and add the read-only-mode parameter to change and blockdev-change-medium (which was the original purpose of this series!).
Once again, I'd like to thank all the reviewers for sticking to this long series over many iterations. Thanks a lot! :-) v8: - Dropped first 26 patches (merged to master now) - Patch 1 (orig. 27): Fixed use-after-free [Kevin] - Patch 2 (added): It's ugly, but it will only be a temporary hack, and we need it since we have to update bdrv_states in blockdev.c whenever a BDS is inserted or removed from a BB - Patch 3 (added): Proposed by Kevin - Patch 4 (orig. 28): [Kevin] - Drop BLOCK_OP_TYPE_EJECT check (moved to blockdev-remove-medium) - Call blk_dev_change_media_cb() if @force is true, even if the tray is locked - In the documentation, clarify that you'll have to wait for a DEVICE_TRAY_MOVED event after issuing this command, and that under certain circumstances, this event may never occur at all - Patch 6 (orig. 30): - Add BLOCK_OP_TYPE_EJCT check [Kevin] - Remove BDS from bdrv_states list [Berto] - Note that the tray does not have to be open for device-less BBs - Patch 7 (orig. 31): - Add BDS to bdrv_states list [Berto] - Note that the tray does not have to be open for device-less BBs - Patch 9 (orig. 33): Use functions provided by block/block-backend.c (patch 3) to inherit the root state from the BB [Kevin] - Patch 13 (orig. 37): Rebase conflicts due to the changes to patch 9 - Patch 14 (orig. 38): Add missing \n [Kevin] - Patch 15 (orig. 39): - Add a test which runs a block job on a device after the medium has been removed and a new one has been inserted [Berto] - Do not run the test on another platform than PC git-backport-diff against v7: Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/15:[0002] [FC] 'block: Add blk_remove_bs()' 002/15:[down] 'block: Make bdrv_states public' 003/15:[down] 'block: Add functions for inheriting a BBRS' 004/15:[0038] [FC] 'blockdev: Add blockdev-open-tray' 005/15:[----] [-C] 'blockdev: Add blockdev-close-tray' 006/15:[0030] [FC] 'blockdev: Add blockdev-remove-medium' 007/15:[0010] [FC] 'blockdev: Add blockdev-insert-medium' 008/15:[----] [--] 'blockdev: Implement eject with basic operations' 009/15:[0010] [FC] 'blockdev: Implement change with basic operations' 010/15:[----] [--] 'block: Inquire tray state before tray-moved events' 011/15:[----] [-C] 'qmp: Introduce blockdev-change-medium' 012/15:[----] [--] 'hmp: Use blockdev-change-medium for change command' 013/15:[0007] [FC] 'blockdev: read-only-mode for blockdev-change-medium' 014/15:[0002] [FC] 'hmp: Add read-only-mode option to change command' 015/15:[0086] [FC] 'iotests: Add test for change-related QMP commands' Max Reitz (15): block: Add blk_remove_bs() block: Make bdrv_states public block: Add functions for inheriting a BBRS blockdev: Add blockdev-open-tray blockdev: Add blockdev-close-tray blockdev: Add blockdev-remove-medium blockdev: Add blockdev-insert-medium blockdev: Implement eject with basic operations blockdev: Implement change with basic operations block: Inquire tray state before tray-moved events qmp: Introduce blockdev-change-medium hmp: Use blockdev-change-medium for change command blockdev: read-only-mode for blockdev-change-medium hmp: Add read-only-mode option to change command iotests: Add test for change-related QMP commands block.c | 3 +- block/block-backend.c | 56 +++- blockdev.c | 286 ++++++++++++---- hmp-commands.hx | 20 +- hmp.c | 47 ++- include/block/block_int.h | 2 + include/sysemu/block-backend.h | 3 + include/sysemu/blockdev.h | 2 - qapi-schema.json | 6 +- qapi/block-core.json | 126 ++++++++ qmp-commands.hx | 218 +++++++++++++ qmp.c | 3 +- tests/qemu-iotests/118 | 720 +++++++++++++++++++++++++++++++++++++++++ tests/qemu-iotests/118.out | 5 + tests/qemu-iotests/group | 1 + 15 files changed, 1396 insertions(+), 102 deletions(-) create mode 100755 tests/qemu-iotests/118 create mode 100644 tests/qemu-iotests/118.out -- 2.6.2