[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 24/36] blkverify: Implement .bdrv_recurse_can_replace()
From: |
Kevin Wolf |
Subject: |
[PULL 24/36] blkverify: Implement .bdrv_recurse_can_replace() |
Date: |
Tue, 18 Feb 2020 15:07:10 +0100 |
From: Max Reitz <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>
---
block/blkverify.c | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/block/blkverify.c b/block/blkverify.c
index 304b0a1368..0add3ab483 100644
--- a/block/blkverify.c
+++ b/block/blkverify.c
@@ -282,6 +282,20 @@ static bool
blkverify_recurse_is_first_non_filter(BlockDriverState *bs,
return bdrv_recurse_is_first_non_filter(s->test_file->bs, candidate);
}
+static bool blkverify_recurse_can_replace(BlockDriverState *bs,
+ BlockDriverState *to_replace)
+{
+ BDRVBlkverifyState *s = bs->opaque;
+
+ /*
+ * blkverify quits the whole qemu process if there is a mismatch
+ * between bs->file->bs and s->test_file->bs. Therefore, we know
+ * know that both must match bs and we can recurse down to either.
+ */
+ return bdrv_recurse_can_replace(bs->file->bs, to_replace) ||
+ bdrv_recurse_can_replace(s->test_file->bs, to_replace);
+}
+
static void blkverify_refresh_filename(BlockDriverState *bs)
{
BDRVBlkverifyState *s = bs->opaque;
@@ -328,6 +342,7 @@ static BlockDriver bdrv_blkverify = {
.is_filter = true,
.bdrv_recurse_is_first_non_filter = blkverify_recurse_is_first_non_filter,
+ .bdrv_recurse_can_replace = blkverify_recurse_can_replace,
};
static void bdrv_blkverify_init(void)
--
2.20.1
- [PULL 10/36] commit: Remove unused bytes_written, (continued)
- [PULL 10/36] commit: Remove unused bytes_written, Kevin Wolf, 2020/02/18
- [PULL 14/36] commit: Expose on-error option in QMP, Kevin Wolf, 2020/02/18
- [PULL 17/36] block/io_uring: Remove superfluous semicolon, Kevin Wolf, 2020/02/18
- [PULL 16/36] block: Remove superfluous semicolons, Kevin Wolf, 2020/02/18
- [PULL 19/36] blockdev: Allow resizing everywhere, Kevin Wolf, 2020/02/18
- [PULL 18/36] blockdev: Allow external snapshots everywhere, Kevin Wolf, 2020/02/18
- [PULL 21/36] iotests: Let 041 use -blockdev for quorum children, Kevin Wolf, 2020/02/18
- [PULL 15/36] iotests: Test error handling policies with block-commit, Kevin Wolf, 2020/02/18
- [PULL 22/36] quorum: Fix child permissions, Kevin Wolf, 2020/02/18
- [PULL 20/36] block: Drop bdrv_is_first_non_filter(), Kevin Wolf, 2020/02/18
- [PULL 24/36] blkverify: Implement .bdrv_recurse_can_replace(),
Kevin Wolf <=
- [PULL 25/36] quorum: Implement .bdrv_recurse_can_replace(), Kevin Wolf, 2020/02/18
- [PULL 26/36] block: Use bdrv_recurse_can_replace(), Kevin Wolf, 2020/02/18
- [PULL 23/36] block: Add bdrv_recurse_can_replace(), Kevin Wolf, 2020/02/18
- [PULL 29/36] quorum: Stop marking it as a filter, Kevin Wolf, 2020/02/18
- [PULL 27/36] block: Remove bdrv_recurse_is_first_non_filter(), Kevin Wolf, 2020/02/18
- [PULL 28/36] mirror: Double-check immediately before replacing, Kevin Wolf, 2020/02/18
- [PULL 31/36] iotests: Add VM.assert_block_path(), Kevin Wolf, 2020/02/18
- [PULL 30/36] iotests: Use complete_and_wait() in 155, Kevin Wolf, 2020/02/18
- [PULL 33/36] iotests: Resolve TODOs in 041, Kevin Wolf, 2020/02/18
- [PULL 35/36] iotests: Add tests for invalid Quorum @replaces, Kevin Wolf, 2020/02/18