qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/15] block: Managing inactive nodes (QSD migration)
@ 2025-01-30 17:12 Kevin Wolf
  2025-01-30 17:12 ` [PATCH v2 01/15] block: Add 'active' field to BlockDeviceInfo Kevin Wolf
                   ` (15 more replies)
  0 siblings, 16 replies; 51+ messages in thread
From: Kevin Wolf @ 2025-01-30 17:12 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, hreitz, stefanha, pkrempa, peterx, farosas, qemu-devel

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.

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 (15):
  block: Add 'active' field to BlockDeviceInfo
  block: Inactivate external snapshot overlays when necessary
  migration/block-active: Remove global active flag
  block: Don't attach inactive child to active node
  block: Allow inactivating already inactive nodes
  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/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                                       |  62 +++-
 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          | 132 ++++++++
 tests/qemu-iotests/tests/qsd-migrate.out      |  51 +++
 27 files changed, 986 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



^ permalink raw reply	[flat|nested] 51+ messages in thread

end of thread, other threads:[~2025-02-04 17:10 UTC | newest]

Thread overview: 51+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-30 17:12 [PATCH v2 00/15] block: Managing inactive nodes (QSD migration) Kevin Wolf
2025-01-30 17:12 ` [PATCH v2 01/15] block: Add 'active' field to BlockDeviceInfo Kevin Wolf
2025-01-30 19:30   ` Eric Blake
2025-02-03 18:47   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 02/15] block: Inactivate external snapshot overlays when necessary Kevin Wolf
2025-01-30 19:46   ` Eric Blake
2025-02-03 18:48   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 03/15] migration/block-active: Remove global active flag Kevin Wolf
2025-01-30 19:50   ` Eric Blake
2025-02-04 15:50     ` Kevin Wolf
2025-02-03 18:49   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 04/15] block: Don't attach inactive child to active node Kevin Wolf
2025-01-30 20:08   ` Eric Blake
2025-02-03 18:50   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 05/15] block: Allow inactivating already inactive nodes Kevin Wolf
2025-01-30 20:09   ` Eric Blake
2025-02-03 18:51   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 06/15] block: Fix crash on block_resize on inactive node Kevin Wolf
2025-01-30 20:11   ` Eric Blake
2025-02-03 18:52   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 07/15] block: Add option to create inactive nodes Kevin Wolf
2025-01-30 20:17   ` Eric Blake
2025-02-03 18:53   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 08/15] block: Add blockdev-set-active QMP command Kevin Wolf
2025-01-30 20:22   ` Eric Blake
2025-02-03 18:54   ` Stefan Hajnoczi
2025-01-30 17:12 ` [PATCH v2 09/15] block: Support inactive nodes in blk_insert_bs() Kevin Wolf
2025-01-30 20:26   ` Eric Blake
2025-02-03 18:55   ` Stefan Hajnoczi
2025-01-31  9:50 ` [PATCH v2 10/15] block/export: Don't ignore image activation error in blk_exp_add() Kevin Wolf
2025-02-03 16:30   ` Eric Blake
2025-02-03 18:58   ` Stefan Hajnoczi
2025-02-04 15:54     ` Kevin Wolf
2025-01-31  9:50 ` [PATCH v2 11/15] block/export: Add option to allow export of inactive nodes Kevin Wolf
2025-01-31 13:41   ` Fabiano Rosas
2025-02-04 15:44     ` Kevin Wolf
2025-02-03 19:12   ` Eric Blake
2025-02-03 19:17   ` Stefan Hajnoczi
2025-01-31  9:50 ` [PATCH v2 12/15] nbd/server: Support " Kevin Wolf
2025-02-03 19:17   ` Eric Blake
2025-02-03 19:19   ` Stefan Hajnoczi
2025-02-04 17:10     ` Kevin Wolf
2025-01-31  9:50 ` [PATCH v2 13/15] iotests: Add filter_qtest() Kevin Wolf
2025-02-03 19:19   ` Eric Blake
2025-01-31  9:50 ` [PATCH v2 14/15] iotests: Add qsd-migrate case Kevin Wolf
2025-02-03 19:35   ` Eric Blake
2025-02-03 21:09     ` Kevin Wolf
2025-01-31  9:50 ` [PATCH v2 15/15] iotests: Add (NBD-based) tests for inactive nodes Kevin Wolf
2025-02-03 19:49   ` Eric Blake
2025-02-04 16:30     ` Kevin Wolf
2025-01-31 13:53 ` [PATCH v2 00/15] block: Managing inactive nodes (QSD migration) Fabiano Rosas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).