qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Max Reitz <mreitz@redhat.com>
To: qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>,
	qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>
Subject: [PATCH v4 01/19] blockdev: Allow external snapshots everywhere
Date: Tue, 18 Feb 2020 11:34:36 +0100	[thread overview]
Message-ID: <20200218103454.296704-2-mreitz@redhat.com> (raw)
In-Reply-To: <20200218103454.296704-1-mreitz@redhat.com>

There is no good reason why we would allow external snapshots only on
the first non-filter node in a chain.  Parent BDSs should not care
whether their child is replaced by a snapshot.  (If they do care, they
should announce that via freezing the chain, which is checked in
bdrv_append() through bdrv_set_backing_hd().)

Before we had bdrv_is_first_non_filter() here (since 212a5a8f095), there
was a special function bdrv_check_ext_snapshot() that allowed snapshots
by default, but block drivers could override this.  Only blkverify did
so, however.

It is not clear to me why blkverify would do so; maybe just so that the
testee block driver would not be replaced.  The introducing commit
f6186f49e2c does not explain why.  Maybe because 08b24cfe376 would have
been the correct solution?  (Which adds a .supports_backing check.)

Signed-off-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
---
 blockdev.c | 5 -----
 1 file changed, 5 deletions(-)

diff --git a/blockdev.c b/blockdev.c
index 43d931fd79..1745d740ec 100644
--- a/blockdev.c
+++ b/blockdev.c
@@ -1592,11 +1592,6 @@ static void external_snapshot_prepare(BlkActionState *common,
         }
     }
 
-    if (!bdrv_is_first_non_filter(state->old_bs)) {
-        error_setg(errp, QERR_FEATURE_DISABLED, "snapshot");
-        goto out;
-    }
-
     if (action->type == TRANSACTION_ACTION_KIND_BLOCKDEV_SNAPSHOT_SYNC) {
         BlockdevSnapshotSync *s = action->u.blockdev_snapshot_sync.data;
         const char *format = s->has_format ? s->format : "qcow2";
-- 
2.24.1



  reply	other threads:[~2020-02-18 10:36 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-18 10:34 [PATCH v4 00/19] block: Fix check_to_replace_node() Max Reitz
2020-02-18 10:34 ` Max Reitz [this message]
2020-02-18 10:34 ` [PATCH v4 02/19] blockdev: Allow resizing everywhere Max Reitz
2020-02-18 10:34 ` [PATCH v4 03/19] block: Drop bdrv_is_first_non_filter() Max Reitz
2020-02-18 10:34 ` [PATCH v4 04/19] iotests: Let 041 use -blockdev for quorum children Max Reitz
2020-02-18 10:34 ` [PATCH v4 05/19] quorum: Fix child permissions Max Reitz
2020-02-18 10:34 ` [PATCH v4 06/19] block: Add bdrv_recurse_can_replace() Max Reitz
2020-02-18 10:34 ` [PATCH v4 07/19] blkverify: Implement .bdrv_recurse_can_replace() Max Reitz
2020-02-18 10:34 ` [PATCH v4 08/19] quorum: " Max Reitz
2020-02-18 10:34 ` [PATCH v4 09/19] block: Use bdrv_recurse_can_replace() Max Reitz
2020-02-18 10:34 ` [PATCH v4 10/19] block: Remove bdrv_recurse_is_first_non_filter() Max Reitz
2020-02-18 10:34 ` [PATCH v4 11/19] mirror: Double-check immediately before replacing Max Reitz
2020-02-18 10:34 ` [PATCH v4 12/19] quorum: Stop marking it as a filter Max Reitz
2020-02-18 10:34 ` [PATCH v4 13/19] iotests: Use complete_and_wait() in 155 Max Reitz
2020-02-18 10:34 ` [PATCH v4 14/19] iotests: Add VM.assert_block_path() Max Reitz
2020-02-18 10:34 ` [PATCH v4 15/19] iotests/041: Drop superfluous shutdowns Max Reitz
2020-02-18 10:34 ` [PATCH v4 16/19] iotests: Resolve TODOs in 041 Max Reitz
2020-02-18 10:34 ` [PATCH v4 17/19] iotests: Use self.image_len in TestRepairQuorum Max Reitz
2020-02-18 10:34 ` [PATCH v4 18/19] iotests: Add tests for invalid Quorum @replaces Max Reitz
2020-02-18 12:38   ` Kevin Wolf
2020-02-18 12:49     ` Max Reitz
2020-02-18 13:29       ` Kevin Wolf
2020-02-18 10:34 ` [PATCH v4 19/19] iotests: Check that @replaces can replace filters Max Reitz
2020-02-18 13:53 ` [PATCH v4 00/19] block: Fix check_to_replace_node() Kevin Wolf

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=20200218103454.296704-2-mreitz@redhat.com \
    --to=mreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=vsementsov@virtuozzo.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 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).