All of lore.kernel.org
 help / color / mirror / Atom feed
From: Fabiano Rosas <farosas@suse.de>
To: Kevin Wolf <kwolf@redhat.com>, qemu-block@nongnu.org
Cc: kwolf@redhat.com, hreitz@redhat.com, stefanha@redhat.com,
	pkrempa@redhat.com, peterx@redhat.com, qemu-devel@nongnu.org
Subject: Re: [PATCH v2 00/15] block: Managing inactive nodes (QSD migration)
Date: Fri, 31 Jan 2025 10:53:36 -0300	[thread overview]
Message-ID: <877c6bgkdb.fsf@suse.de> (raw)
In-Reply-To: <20250130171240.286878-1-kwolf@redhat.com>

Kevin Wolf <kwolf@redhat.com> writes:

> 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

Series:

Acked-by: Fabiano Rosas <farosas@suse.de>

I checked that this series doesn't regress the original double
inactivate issue fixed by Peter Xu [1]. I also ported the tests[2] on
top of this and everything looks good. Thanks!

1- 8597af7615 (migration/block: Rewrite disk activation, 2024-12-06)
2- https://lore.kernel.org/r/20241125144612.16194-6-farosas@suse.de



      parent reply	other threads:[~2025-01-31 13:54 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 ` Fabiano Rosas [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=877c6bgkdb.fsf@suse.de \
    --to=farosas@suse.de \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=peterx@redhat.com \
    --cc=pkrempa@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.