[PATCH 0/9] block: Managing inactive nodes (QSD migration)

Kevin Wolf posted 9 patches 1 year ago
Failed in applying to current master (apply log)
There is a newer version of this series
qapi/block-core.json                          |  38 +++++
qapi/block-export.json                        |  10 +-
include/block/block-common.h                  |   1 +
include/block/block-global-state.h            |   6 +
include/block/export.h                        |   3 +
block.c                                       |  50 ++++++-
block/block-backend.c                         |  14 +-
block/export/export.c                         |  29 +++-
blockdev.c                                    |  32 +++++
nbd/server.c                                  |  17 +++
tests/qemu-iotests/iotests.py                 |   4 +
tests/qemu-iotests/041                        |   4 +-
tests/qemu-iotests/165                        |   4 +-
tests/qemu-iotests/tests/copy-before-write    |   3 +-
tests/qemu-iotests/tests/migrate-bitmaps-test |   7 +-
tests/qemu-iotests/tests/qsd-migrate          | 132 ++++++++++++++++++
tests/qemu-iotests/tests/qsd-migrate.out      |  51 +++++++
17 files changed, 379 insertions(+), 26 deletions(-)
create mode 100755 tests/qemu-iotests/tests/qsd-migrate
create mode 100644 tests/qemu-iotests/tests/qsd-migrate.out
[PATCH 0/9] block: Managing inactive nodes (QSD migration)
Posted by Kevin Wolf 1 year ago
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.

Kevin Wolf (9):
  block: Allow inactivating already inactive nodes
  block: Add option to create inactive nodes
  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
  block: Add blockdev-set-active QMP command
  iotests: Add filter_qtest()
  iotests: Add qsd-migrate case

 qapi/block-core.json                          |  38 +++++
 qapi/block-export.json                        |  10 +-
 include/block/block-common.h                  |   1 +
 include/block/block-global-state.h            |   6 +
 include/block/export.h                        |   3 +
 block.c                                       |  50 ++++++-
 block/block-backend.c                         |  14 +-
 block/export/export.c                         |  29 +++-
 blockdev.c                                    |  32 +++++
 nbd/server.c                                  |  17 +++
 tests/qemu-iotests/iotests.py                 |   4 +
 tests/qemu-iotests/041                        |   4 +-
 tests/qemu-iotests/165                        |   4 +-
 tests/qemu-iotests/tests/copy-before-write    |   3 +-
 tests/qemu-iotests/tests/migrate-bitmaps-test |   7 +-
 tests/qemu-iotests/tests/qsd-migrate          | 132 ++++++++++++++++++
 tests/qemu-iotests/tests/qsd-migrate.out      |  51 +++++++
 17 files changed, 379 insertions(+), 26 deletions(-)
 create mode 100755 tests/qemu-iotests/tests/qsd-migrate
 create mode 100644 tests/qemu-iotests/tests/qsd-migrate.out

-- 
2.48.1
Re: [PATCH 0/9] block: Managing inactive nodes (QSD migration)
Posted by Eric Blake 1 year ago
On Wed, Jan 22, 2025 at 12:50:37PM +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.
> 
> Kevin Wolf (9):
>   block: Allow inactivating already inactive nodes
>   block: Add option to create inactive nodes
>   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
>   block: Add blockdev-set-active QMP command
>   iotests: Add filter_qtest()
>   iotests: Add qsd-migrate case

I started reviewing this, but see v2 now, so I'll resume my review there.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.
Virtualization:  qemu.org | libguestfs.org