Message ID | 20191219085106.22309-2-vsementsov@virtuozzo.com |
---|---|
State | New |
Headers | show |
Series | fix migration with bitmaps and mirror | expand |
On 12/19/19 2:51 AM, Vladimir Sementsov-Ogievskiy wrote: > From: Max Reitz <mreitz@redhat.com> > > The commit and mirror block nodes are filters, so they should be marked > as such. > > Signed-off-by: Max Reitz <mreitz@redhat.com> > Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > [squash comment fix from another Max's patch and adjust commit msg] > --- > include/block/block_int.h | 8 +++++--- > block/commit.c | 2 ++ > block/mirror.c | 2 ++ > 3 files changed, 9 insertions(+), 3 deletions(-) Reviewed-by: Eric Blake <eblake@redhat.com>
On 1/31/20 1:23 PM, Eric Blake wrote: > On 12/19/19 2:51 AM, Vladimir Sementsov-Ogievskiy wrote: >> From: Max Reitz <mreitz@redhat.com> >> >> The commit and mirror block nodes are filters, so they should be marked >> as such. >> >> Signed-off-by: Max Reitz <mreitz@redhat.com> >> Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> >> [squash comment fix from another Max's patch and adjust commit msg] >> --- >> include/block/block_int.h | 8 +++++--- >> block/commit.c | 2 ++ >> block/mirror.c | 2 ++ >> 3 files changed, 9 insertions(+), 3 deletions(-) > > Reviewed-by: Eric Blake <eblake@redhat.com> It looks like this patch has been updated and is now on Kevin's block branch: https://lists.gnu.org/archive/html/qemu-devel/2020-05/msg03271.html
diff --git a/include/block/block_int.h b/include/block/block_int.h index dd033d0b37..964ce58481 100644 --- a/include/block/block_int.h +++ b/include/block/block_int.h @@ -89,9 +89,11 @@ struct BlockDriver { int instance_size; /* set to true if the BlockDriver is a block filter. Block filters pass - * certain callbacks that refer to data (see block.c) to their bs->file if - * the driver doesn't implement them. Drivers that do not wish to forward - * must implement them and return -ENOTSUP. + * certain callbacks that refer to data (see block.c) to their bs->file + * or bs->backing (whichever one exists) if the driver doesn't implement + * them. Drivers that do not wish to forward must implement them and return + * -ENOTSUP. + * Note that filters are not allowed to modify data. */ bool is_filter; /* for snapshots block filter like Quorum can implement the diff --git a/block/commit.c b/block/commit.c index 23c90b3b91..9b455c4285 100644 --- a/block/commit.c +++ b/block/commit.c @@ -253,6 +253,8 @@ static BlockDriver bdrv_commit_top = { .bdrv_co_block_status = bdrv_co_block_status_from_backing, .bdrv_refresh_filename = bdrv_commit_top_refresh_filename, .bdrv_child_perm = bdrv_commit_top_child_perm, + + .is_filter = true, }; void commit_start(const char *job_id, BlockDriverState *bs, diff --git a/block/mirror.c b/block/mirror.c index f0f2d9dff1..8cbbe1e065 100644 --- a/block/mirror.c +++ b/block/mirror.c @@ -1505,6 +1505,8 @@ static BlockDriver bdrv_mirror_top = { .bdrv_co_block_status = bdrv_co_block_status_from_backing, .bdrv_refresh_filename = bdrv_mirror_top_refresh_filename, .bdrv_child_perm = bdrv_mirror_top_child_perm, + + .is_filter = true, }; static BlockJob *mirror_start_job(