Message ID | 20250204211407.381505-1-kwolf@redhat.com (mailing list archive) |
---|---|
Headers | show |
Series | block: Managing inactive nodes (QSD migration) | expand |
On Tue, Feb 04, 2025 at 10:13:51PM +0100, Kevin Wolf wrote: > This series adds a mechanism that allows the user or management tool to > manually activate and inactivate block nodes instead of fully relying on > the automatic management in the migration code. > > One case where this is needed is for migration with shared storage and > devices backed by qemu-storage-daemon, which as an external process is > not involved in the VM migration. Management tools can manually > orchestrate the handover in this scenario. The new qemu-iotests case > qsd-migrate demonstrates this. > > There are other cases without qemu-storage-daemon where manual > management is necessary. For example, after migration, the destination > VM only activates images on 'cont', but after migrating a paused VM, the > user may want to perform operations on a block node while the VM is > still paused. > > This series adds support for block exports on an inactive node (needed > for shared storage migration with qemu-storage-daemon) only to NBD. > Adding it to other export types will be done in a future series. > > v3: > - Moved bdrv_is_inactive() to patch 1 to fix the build [Fabiano] > - Patch 5 ('block: Allow inactivating already inactive nodes') has > become patch 2 to fix the logical ordering [Eric] > - Patch 8: Fixed typo in the documentation [Eric] > - Patch 10: Fixed typo in the commit message [Stefan] > - Added Patch 11: Drain nodes for setting inactive flag [Stefan] > - Patch 14: Test reading inactive images from both sides [Eric] > - Patch 16: Fix typo in a comment [Eric] > > v2: > - Added a comprehensive test case that tests how inactive nodes > interoperate with many operations > - Added a couple of fixes for bugs uncovered by the tests (that would > usually lead to crashes when an unsupported operation is performed on > inactive nodes) > - Added 'active' status to query-block information > > Kevin Wolf (16): > block: Add 'active' field to BlockDeviceInfo > block: Allow inactivating already inactive nodes > block: Inactivate external snapshot overlays when necessary > migration/block-active: Remove global active flag > block: Don't attach inactive child to active node > block: Fix crash on block_resize on inactive node > block: Add option to create inactive nodes > block: Add blockdev-set-active QMP command > block: Support inactive nodes in blk_insert_bs() > block/export: Don't ignore image activation error in blk_exp_add() > block: Drain nodes before inactivating them > block/export: Add option to allow export of inactive nodes > nbd/server: Support inactive nodes > iotests: Add filter_qtest() > iotests: Add qsd-migrate case > iotests: Add (NBD-based) tests for inactive nodes > > qapi/block-core.json | 44 ++- > qapi/block-export.json | 10 +- > include/block/block-common.h | 1 + > include/block/block-global-state.h | 6 + > include/block/export.h | 3 + > migration/migration.h | 3 - > block.c | 64 +++- > block/block-backend.c | 16 +- > block/export/export.c | 29 +- > block/monitor/block-hmp-cmds.c | 5 +- > block/qapi.c | 1 + > blockdev.c | 48 +++ > migration/block-active.c | 46 --- > migration/migration.c | 8 - > nbd/server.c | 17 + > tests/qemu-iotests/iotests.py | 8 + > tests/qemu-iotests/041 | 4 +- > tests/qemu-iotests/165 | 4 +- > tests/qemu-iotests/184.out | 2 + > tests/qemu-iotests/191.out | 16 + > tests/qemu-iotests/273.out | 5 + > tests/qemu-iotests/tests/copy-before-write | 3 +- > tests/qemu-iotests/tests/inactive-node-nbd | 303 ++++++++++++++++++ > .../qemu-iotests/tests/inactive-node-nbd.out | 239 ++++++++++++++ > tests/qemu-iotests/tests/migrate-bitmaps-test | 7 +- > tests/qemu-iotests/tests/qsd-migrate | 140 ++++++++ > tests/qemu-iotests/tests/qsd-migrate.out | 59 ++++ > 27 files changed, 1004 insertions(+), 87 deletions(-) > create mode 100755 tests/qemu-iotests/tests/inactive-node-nbd > create mode 100644 tests/qemu-iotests/tests/inactive-node-nbd.out > create mode 100755 tests/qemu-iotests/tests/qsd-migrate > create mode 100644 tests/qemu-iotests/tests/qsd-migrate.out > > -- > 2.48.1 > Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>